addClassifyDictForm.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <template>
  2. <a-modal
  3. :title="modalTitle"
  4. :width="900"
  5. :visible="visible"
  6. :confirmLoading="confirmLoading"
  7. ok-text="保存"
  8. cancel-text="关闭"
  9. @ok="handleSubmit"
  10. @cancel="handleCancel"
  11. :maskClosable="false"
  12. >
  13. <a-spin :spinning="formLoading">
  14. <a-form :form="form">
  15. <a-form-item
  16. :required="true"
  17. label="所属类型"
  18. :labelCol="labelCol"
  19. :wrapperCol="wrapperCol"
  20. has-feedback
  21. >
  22. <a-select
  23. style="width: 100%"
  24. placeholder="请选择所属类型"
  25. v-decorator="['systemDictType', {rules: [{ required: true, message: '请选择所属类型!' }]}]"
  26. >
  27. <a-select-option
  28. v-for="(item,index) in typeList"
  29. :key="index"
  30. :value="item.code"
  31. >{{ item.name }}</a-select-option>
  32. </a-select>
  33. </a-form-item>
  34. <a-form-item label="分类名称" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
  35. <a-input
  36. placeholder="请输入分类名称"
  37. v-decorator="['systemDictClassify', {rules: [{required: true, message: '请输入分类名称!'}]}]"
  38. />
  39. </a-form-item>
  40. <a-form-item label="子分类名称" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
  41. <a-input
  42. placeholder="请输入子分类名称"
  43. v-decorator="['systemDictSubclassify', {rules: [{required: true, message: '请输入子分类名称!'}]}]"
  44. />
  45. </a-form-item>
  46. <a-form-item
  47. :labelCol="labelCol"
  48. :wrapperCol="wrapperCol"
  49. label="排序"
  50. :hasFeedback="true"
  51. :required="true"
  52. >
  53. <a-input
  54. placeholder="请输入排序号"
  55. v-decorator="['systemDictSort', {rules: [{validator: checkSortIndex}]}]"
  56. />
  57. </a-form-item>
  58. <a-form-item label="是否上线" :labelCol="labelCol" :wrapperCol="wrapperCol" :required="true">
  59. <a-radio-group name="systemDictIsLine" v-decorator="['systemDictIsLine',{ initialValue: 1 }]">
  60. <a-radio :value="1">上线</a-radio>
  61. <a-radio :value="0">下线</a-radio>
  62. </a-radio-group>
  63. </a-form-item>
  64. </a-form>
  65. </a-spin>
  66. </a-modal>
  67. </template>
  68. <script>
  69. import homeApi from '@/api/homeApi'
  70. export default {
  71. data () {
  72. return {
  73. modalTitle: '新增类型字典',
  74. typeList: homeApi.systemTypeList,
  75. labelCol: {
  76. xs: { span: 24 },
  77. sm: { span: 5 }
  78. },
  79. wrapperCol: {
  80. xs: { span: 24 },
  81. sm: { span: 15 }
  82. },
  83. visible: false,
  84. confirmLoading: false,
  85. formLoading: false,
  86. form: this.$form.createForm(this)
  87. }
  88. },
  89. mounted () {
  90. },
  91. methods: {
  92. // 初始化方法
  93. add (record) {
  94. this.visible = true
  95. // this.formLoading = true
  96. this.$nextTick(() => {
  97. this.form.setFieldsValue({ 'systemDictType': record.systemDictType })
  98. })
  99. },
  100. handleSubmit () {
  101. const {
  102. form: { validateFields }
  103. } = this
  104. this.confirmLoading = true
  105. validateFields((errors, values) => {
  106. if (!errors) {
  107. values.systemDictSort = parseInt(values.systemDictSort)
  108. homeApi.addSystemDict(values)
  109. .then(res => {
  110. if (res.status === 200) {
  111. this.$message.success('新增成功')
  112. this.visible = false
  113. this.confirmLoading = false
  114. this.$emit('ok', values)
  115. this.form.resetFields()
  116. } else {
  117. this.$message.error('新增失败:' + res.msg)
  118. }
  119. })
  120. .finally(res => {
  121. this.confirmLoading = false
  122. })
  123. } else {
  124. this.confirmLoading = false
  125. }
  126. })
  127. },
  128. handleCancel () {
  129. this.form.resetFields()
  130. this.visible = false
  131. },
  132. checkSortIndex (rule, value, callback) {
  133. var text = '请输入排序号!'
  134. if (!value) {
  135. callback(text)
  136. } else if (/(^[1-9]\d*$)/.test(value)) {
  137. callback()
  138. } else {
  139. text = '请输入数字'
  140. callback(text)
  141. }
  142. }
  143. }
  144. }
  145. </script>