typeEdit.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. <script>
  2. import axios from "axios";
  3. import {rCode} from "../map/rcodeMap_esm";
  4. import {handle} from "../until/handle";
  5. import InputRow from "./public/form/inputRow.vue";
  6. import RoundedTitle from "./public/roundedTitle.vue";
  7. import dbField_esm from "../map/dbField_esm";
  8. import {FormVerify} from "kind-form-verify";
  9. import {fieldCheck} from "../until/form/fieldVerify";
  10. const emptyType = {
  11. type_name: '',
  12. type_logo: '',
  13. type_sort: 0,
  14. type_key: ''
  15. }
  16. let formVerify = null;
  17. export default {
  18. name: 'typeEdit',
  19. components: {RoundedTitle, InputRow},
  20. props: {
  21. },
  22. data () {
  23. return {
  24. isInitialized: false,
  25. title: '编辑类型',
  26. typeId: '',
  27. formType: {
  28. type_name: {
  29. val: "",
  30. oldVal: "",
  31. init: "",
  32. msg: "",
  33. state: 0,
  34. },
  35. type_logo: {
  36. val: "",
  37. oldVal: "",
  38. init: "",
  39. msg: "",
  40. state: 0,
  41. },
  42. type_sort: {
  43. val: 0,
  44. oldVal: 0,
  45. init: 0,
  46. msg: "",
  47. state: 0,
  48. },
  49. type_key: {
  50. val: "",
  51. oldVal: "",
  52. init: "",
  53. msg: "",
  54. state: 0,
  55. reCheckField: 'type_name',
  56. }
  57. },
  58. api: ''
  59. }
  60. },
  61. mounted() {
  62. // fieldCheck.checkField('type',this.form.type.val)
  63. // formVerify.checkForm(this.form, true);
  64. console.log(formVerify);
  65. },
  66. methods: {
  67. /**
  68. * 初始化编辑器
  69. * @param id
  70. * @param title
  71. * @param api
  72. * @param object
  73. */
  74. init (title, api, object) {
  75. this.api = api
  76. if (!api){
  77. this.$message.error('请设置api地址')
  78. throw new Error('请设置api地址')
  79. }
  80. let type = {
  81. ...emptyType,
  82. ...object
  83. }
  84. if(object) {
  85. this.typeId = object.type_id
  86. this.title = `编辑${title}`
  87. }else{
  88. this.typeId = ''
  89. this.title = `新增${title}`
  90. }
  91. this.formType.type_name.init = type.type_name
  92. this.formType.type_logo.init = type.type_logo
  93. this.formType.type_sort.init = type.type_sort
  94. this.formType.type_key.init = type.type_key
  95. this.isInitialized = true
  96. formVerify = new FormVerify(
  97. this.formType,
  98. fieldCheck,
  99. )
  100. formVerify.init()
  101. formVerify.onLog = (msg) => {
  102. console.log(msg);
  103. };
  104. },
  105. initForm() {
  106. },
  107. close () {
  108. this.isInitialized = false
  109. this.$emit('close')
  110. },
  111. handleSave () {
  112. this.executeSubmitData()
  113. },
  114. handleCancel () {
  115. this.close()
  116. },
  117. handleReset() {
  118. this.initForm()
  119. },
  120. async executeSubmitData(){
  121. if(!this.isInitialized)
  122. {
  123. throw new Error('请先初始化类别编辑器')
  124. }
  125. let url = this.api;
  126. if(this.typeId){
  127. url = url + '?id=' + this.typeId
  128. }
  129. // 检测参数
  130. if(!formVerify.check()) {
  131. return this.$message.error('参数错误')
  132. }
  133. let params = formVerify.getFormData()
  134. let [err, res] = await handle(axios.post(url, params))
  135. if(err){
  136. this.$message.error(`[${this.title}] 失败:${err.message}`)
  137. console.log(err)
  138. return err
  139. }
  140. let result = res.data
  141. if(result.code !== rCode.OK) {
  142. this.$message.error(`[${this.title}] 失败:${res.msg}`)
  143. return result
  144. }
  145. this.$message.success(`[${this.title}] 成功`)
  146. this.close()
  147. }
  148. }
  149. }
  150. </script>
  151. <template>
  152. <div class="w-full ">
  153. <rounded-title class="text-xl">
  154. <span>{{ title }}</span>
  155. </rounded-title>
  156. <input-row class="mt-2" :msg="formType.type_name.msg"
  157. label="类型名称">
  158. <a-input v-model="formType.type_name.val" placeholder="类型名称"></a-input>
  159. </input-row>
  160. <input-row class="mt-2" :msg="formType.type_logo.msg"
  161. label="类型logo">
  162. <a-input v-model="formType.type_logo.val" placeholder="类型logo"></a-input>
  163. </input-row>
  164. <input-row class="mt-2" :msg="formType.type_sort.msg"
  165. label="排序">
  166. <a-input-number v-model="formType.type_sort.val"
  167. placeholder="排序"></a-input-number>
  168. </input-row>
  169. <input-row class="mt-2" :msg="formType.type_key.msg"
  170. label="类型关键字key">
  171. <a-input v-model="formType.type_key.val" placeholder="类型关键字key"></a-input>
  172. </input-row>
  173. <div class="mt-2">
  174. <a-button type="primary" @click="handleReset">重置</a-button>
  175. <a-button type="primary" @click="handleSave">确认</a-button>
  176. </div>
  177. </div>
  178. </template>
  179. <style scoped>
  180. </style>