BaseForm.vue 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <template>
  2. <a-card :bordered="false" v-show="visible" class="card" :title="modalTitle">
  3. <a-row :gutter="48" slot="extra">
  4. <a-col :md="48" :sm="48">
  5. <span class="table-page-search-submitButtons" style="float: right">
  6. <a-button :loading="confirmLoading" type="primary" @click="save()">保存</a-button>
  7. <a-button style="margin-left: 8px" type="default" @click="handleCancel()">返回</a-button>
  8. </span>
  9. </a-col>
  10. </a-row>
  11. <a-form :form="form">
  12. <a-form-item v-show="false">
  13. <a-input v-decorator="['id']" type="hidden" />
  14. </a-form-item>
  15. <row-list :col="2">
  16. <row-item>
  17. <a-form-item label="配置类型" :labelCol="BaseTool.Constant.labelCol" :wrapperCol="BaseTool.Constant.wrapperCol">
  18. <a-select v-decorator="['code', {rules: [{required: true, message: '配置类型不能为空'}]}]" placeholder="请选择">
  19. <a-select-option v-for="(label,value) in classNameCodeMap" :key="value" :label="label" :value="value">{{ label }}
  20. </a-select-option>
  21. </a-select>
  22. </a-form-item>
  23. </row-item>
  24. <row-item>
  25. <a-form-item label="配置名称" :labelCol="BaseTool.Constant.labelCol" :wrapperCol="BaseTool.Constant.wrapperCol">
  26. <a-input :disabled="!publicFlag" v-decorator="['title', {rules: [{required: true, message: '名称不能为空'}]}]" />
  27. </a-form-item>
  28. </row-item>
  29. <row-item>
  30. <a-form-item label="自定义处理" :labelCol="BaseTool.Constant.labelCol" :wrapperCol="BaseTool.Constant.wrapperCol">
  31. <a-switch v-decorator="['publicFlag', {initialValue: true, valuePropName: 'checked'}]" @change="changeSwitch" />
  32. </a-form-item>
  33. </row-item>
  34. <row-item>
  35. <a-form-item label="数据表" :labelCol="BaseTool.Constant.labelCol" :wrapperCol="BaseTool.Constant.wrapperCol">
  36. <a-input :disabled="!publicFlag" v-decorator="['titleCode', {rules: [{required: true, message: '名称编码不能为空'}]}]" />
  37. </a-form-item>
  38. </row-item>
  39. <row-item>
  40. <a-form-item label="数据列(中文)" :labelCol="BaseTool.Constant.labelCol" :wrapperCol="BaseTool.Constant.wrapperCol">
  41. <a-input v-decorator="['titleColumnName', {rules: [{required: true, message: '具体列名不能为空'}]}]" />
  42. </a-form-item>
  43. </row-item>
  44. <row-item>
  45. <a-form-item label="数据列(英文)" :labelCol="BaseTool.Constant.labelCol" :wrapperCol="BaseTool.Constant.wrapperCol">
  46. <a-input v-decorator="['titleColumnCode', {rules: [{required: true, message: '具体列编码不能为空'}]}]" />
  47. </a-form-item>
  48. </row-item>
  49. <row-item>
  50. <a-form-item label="数据处理类" :labelCol="BaseTool.Constant.labelCol" :wrapperCol="BaseTool.Constant.wrapperCol">
  51. <a-input :disabled="!publicFlag" v-decorator="['handleName', {rules: [{required: true, message: '处理类不能为空'}]}]" />
  52. </a-form-item>
  53. </row-item>
  54. <row-item>
  55. <a-form-item label="数据处理类编码" :labelCol="BaseTool.Constant.labelCol" :wrapperCol="BaseTool.Constant.wrapperCol">
  56. <a-input :disabled="!publicFlag" v-decorator="['handleCode', {rules: [{required: true, message: '处理类编码不能为空'}]}]" />
  57. </a-form-item>
  58. </row-item>
  59. <row-item>
  60. <a-form-item label="数据处理方法" :labelCol="BaseTool.Constant.labelCol" :wrapperCol="BaseTool.Constant.wrapperCol">
  61. <a-input :disabled="!publicFlag" v-decorator="['methodName', {rules: [{required: true, message: '方法名称不能为空'}]}]" />
  62. </a-form-item>
  63. </row-item>
  64. <row-item>
  65. <a-form-item label="数据处理方法编码" :labelCol="BaseTool.Constant.labelCol" :wrapperCol="BaseTool.Constant.wrapperCol">
  66. <a-input :disabled="!publicFlag" v-decorator="['methodCode', {rules: [{required: true, message: '方法名称编码不能为空'}]}]" />
  67. </a-form-item>
  68. </row-item>
  69. <row-item>
  70. <a-form-item label="备注" :labelCol="BaseTool.Constant.labelCol" :wrapperCol="BaseTool.Constant.wrapperCol">
  71. <a-input v-decorator="['remark']" />
  72. </a-form-item>
  73. </row-item>
  74. </row-list>
  75. </a-form>
  76. </a-card>
  77. </template>
  78. <script>
  79. import pick from 'lodash.pick'
  80. import { addCustomClassName, updateCustomClassName } from '@/api/custom/className'
  81. export default {
  82. name: 'BaseCustomClassName',
  83. data() {
  84. return {
  85. confirmLoading: false,
  86. modalTitle: null,
  87. form: this.$form.createForm(this),
  88. visible: false,
  89. publicFlag: true,
  90. // 下拉框map
  91. classNameCodeMap: {},
  92. }
  93. },
  94. props: {},
  95. created() {
  96. // 下拉框map
  97. this.classNameCodeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.CLASS_NAME_CODE)
  98. },
  99. methods: {
  100. base(record) {
  101. this.visible = true
  102. // 如果是空标识添加
  103. if (this.BaseTool.Object.isBlank(record)) {
  104. this.modalTitle = '添加'
  105. return
  106. }
  107. this.modalTitle = '编辑'
  108. const {
  109. form: { setFieldsValue },
  110. } = this
  111. // 日期处理
  112. record.publicFlag = Boolean(record.publicFlag)
  113. this.$nextTick(() => {
  114. setFieldsValue(
  115. Object.assign(
  116. pick(record, [
  117. 'id',
  118. 'code',
  119. 'title',
  120. 'titleCode',
  121. 'methodName',
  122. 'methodCode',
  123. 'remark',
  124. 'titleColumnName',
  125. 'titleColumnCode',
  126. 'handleName',
  127. 'handleCode',
  128. 'publicFlag',
  129. ])
  130. )
  131. )
  132. })
  133. },
  134. changeSwitch(val) {
  135. this.publicFlag = val
  136. if (!val) {
  137. const {
  138. form: { setFieldsValue },
  139. } = this
  140. this.$nextTick(() => {
  141. setFieldsValue({
  142. title: '公共处理',
  143. titleCode: 't_common',
  144. handleName: '公共处理类',
  145. handleCode: 'common',
  146. methodName: '公共处理方法',
  147. methodCode: 'common_method',
  148. })
  149. })
  150. }
  151. },
  152. save() {
  153. const {
  154. form: { validateFieldsAndScroll },
  155. } = this
  156. this.confirmLoading = true
  157. validateFieldsAndScroll((errors, values) => {
  158. if (errors) {
  159. this.confirmLoading = false
  160. return
  161. }
  162. // 日期处理
  163. values.publicFlag = Number(values.publicFlag)
  164. if (this.BaseTool.String.isBlank(values.id)) {
  165. addCustomClassName(values)
  166. .then(() => {
  167. this.handleCancel(values)
  168. })
  169. .catch(() => {
  170. this.confirmLoading = false
  171. })
  172. } else {
  173. updateCustomClassName(values)
  174. .then(() => {
  175. this.handleCancel(values)
  176. })
  177. .catch(() => {
  178. this.confirmLoading = false
  179. })
  180. }
  181. })
  182. },
  183. handleCancel(values) {
  184. this.visible = false
  185. this.confirmLoading = false
  186. this.publicFlag = true
  187. this.form.resetFields()
  188. if (this.BaseTool.Object.isNotBlank(values)) {
  189. this.$emit('ok', values)
  190. } else {
  191. this.$emit('ok')
  192. }
  193. },
  194. },
  195. }
  196. </script>