sms-config-edit.tsx 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. import {defineComponent, onMounted, reactive, ref} from "vue";
  2. import {NButton, NForm, NFormItem, NFormItemGi, NGrid, NInput, NSpace, useMessage} from "naive-ui";
  3. import {musicSheetApplicationExtendUpdate, smsConfigSave, smsConfigUpdate} from "@views/music-library/api";
  4. export default defineComponent({
  5. name: 'sms-config-edit',
  6. props: {
  7. editMode: {
  8. type: String,
  9. required: true
  10. },
  11. rowData: {
  12. type: Object,
  13. required: false
  14. },
  15. },
  16. emits: ['close', 'getList'],
  17. setup(props, {slots, attrs, emit}) {
  18. const message = useMessage()
  19. const btnLoading = ref(false)
  20. const forms = reactive({
  21. name: null,
  22. sender: null,
  23. accessUrl: null,
  24. account: null,
  25. password: null,
  26. extendData: null,
  27. appId: null,
  28. })
  29. const formsRef = ref()
  30. const state = reactive({
  31. rowData: null as any,
  32. musicSheetCategories: [] as any,
  33. })
  34. onMounted(async () => {
  35. state.rowData = props.rowData
  36. if (props.editMode == 'edit' && props.rowData) {
  37. forms.name = state.rowData.name
  38. forms.sender = state.rowData.sender
  39. forms.accessUrl = state.rowData.accessUrl
  40. forms.account = state.rowData.account
  41. forms.password = state.rowData.password
  42. forms.extendData = state.rowData.extendData
  43. forms.appId = state.rowData.appId
  44. }
  45. })
  46. const onSubmit = async () => {
  47. formsRef.value.validate(async (error: any) => {
  48. if (error) return false
  49. btnLoading.value = true
  50. try {
  51. let res;
  52. if (props.editMode == 'add') {
  53. res = await smsConfigSave(
  54. {
  55. ...forms,
  56. }
  57. ) as any;
  58. } else {
  59. res = await smsConfigUpdate(
  60. {
  61. ...forms,
  62. id: state.rowData.id
  63. }
  64. ) as any;
  65. }
  66. if (res && res.code === 200) {
  67. emit('close')
  68. emit('getList')
  69. }
  70. } catch (error) {
  71. }
  72. btnLoading.value = false
  73. })
  74. }
  75. return () => {
  76. return (
  77. <div style="background: #fff; padding-top: 12px">
  78. <NForm
  79. ref={formsRef}
  80. labelPlacement="top"
  81. model={forms}
  82. label-placement="left"
  83. label-width="100"
  84. >
  85. <NGrid cols={2}>
  86. <NFormItemGi
  87. label="平台名称"
  88. path="name"
  89. rule={[
  90. {
  91. required: true,
  92. message: '请输入平台名称'
  93. }
  94. ]}
  95. >
  96. <NInput
  97. v-model:value={forms.name}
  98. placeholder="请输入平台名称"
  99. clearable
  100. />
  101. </NFormItemGi>
  102. <NFormItemGi
  103. label="平台标识"
  104. path="sender"
  105. rule={[
  106. {
  107. required: true,
  108. message: '请输入平台标识'
  109. }
  110. ]}
  111. >
  112. <NInput
  113. v-model:value={forms.sender}
  114. placeholder="请输入平台标识"
  115. clearable
  116. />
  117. </NFormItemGi>
  118. <NFormItemGi
  119. label="接入地址"
  120. path="accessUrl"
  121. rule={[
  122. {
  123. required: true,
  124. message: '请输入接入地址'
  125. }
  126. ]}
  127. >
  128. <NInput
  129. v-model:value={forms.accessUrl}
  130. placeholder="请输入接入地址"
  131. clearable
  132. />
  133. </NFormItemGi>
  134. <NFormItemGi
  135. label="应用ID"
  136. path="appId"
  137. rule={[
  138. {
  139. required: false,
  140. message: '请输入应用ID'
  141. }
  142. ]}
  143. >
  144. <NInput
  145. v-model:value={forms.appId}
  146. placeholder="请输入应用ID"
  147. clearable
  148. />
  149. </NFormItemGi>
  150. <NFormItemGi
  151. label="接入账号"
  152. path="account"
  153. rule={[
  154. {
  155. required: true,
  156. message: '请输入接入账号'
  157. }
  158. ]}
  159. >
  160. <NInput
  161. v-model:value={forms.account}
  162. placeholder="请输入接入账号"
  163. clearable
  164. />
  165. </NFormItemGi>
  166. <NFormItemGi
  167. label="接入密码"
  168. path="password"
  169. rule={[
  170. {
  171. required: true,
  172. message: '请输入接入密码'
  173. }
  174. ]}
  175. >
  176. <NInput
  177. v-model:value={forms.password}
  178. placeholder="请输入接入密码"
  179. clearable
  180. />
  181. </NFormItemGi>
  182. <NFormItemGi
  183. label="拓展参数"
  184. path="extendData"
  185. rule={[
  186. {
  187. required: false,
  188. message: '请输入拓展参数'
  189. }
  190. ]}
  191. >
  192. <NInput
  193. v-model:value={forms.extendData}
  194. placeholder="请输入拓展参数"
  195. autosize={{minRows: 3}}
  196. type={'textarea'}
  197. clearable
  198. />
  199. </NFormItemGi>
  200. </NGrid>
  201. </NForm>
  202. <NSpace justify="end">
  203. <NButton onClick={() => emit('close')}>取消</NButton>
  204. <NButton type="primary" onClick={onSubmit}
  205. loading={btnLoading.value}
  206. disabled={btnLoading.value}
  207. >
  208. 保存
  209. </NButton>
  210. </NSpace>
  211. </div>
  212. )
  213. }
  214. }
  215. })