49a478752dafaa420e01c1d94050db117adba748.svn-base 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <template>
  2. <a-modal
  3. :title="title"
  4. :width="800"
  5. :visible="visible"
  6. :maskClosable="false"
  7. :confirmLoading="confirmLoading"
  8. @ok="handleOk"
  9. @cancel="handleCancel"
  10. cancelText="关闭">
  11. <a-spin :spinning="confirmLoading">
  12. <a-form-model ref="form" :model="model" :rules="validatorRules">
  13. <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="规则名称" prop="ruleName">
  14. <a-input placeholder="请输入规则名称" v-model="model.ruleName"/>
  15. </a-form-model-item>
  16. <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="规则Code" prop="ruleCode" >
  17. <a-input placeholder="请输入规则Code" :disabled="disabledCode" v-model="model.ruleCode"/>
  18. </a-form-model-item>
  19. <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="规则实现类" prop="ruleClass" >
  20. <a-input placeholder="请输入规则实现类" v-model="model.ruleClass"/>
  21. </a-form-model-item>
  22. <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="规则参数" prop="ruleParams">
  23. <a-textarea placeholder="请输入规则参数" :rows="5" v-model="model.ruleParams"/>
  24. </a-form-model-item>
  25. </a-form-model>
  26. </a-spin>
  27. </a-modal>
  28. </template>
  29. <script>
  30. import { httpAction } from '@/api/manage'
  31. import { validateDuplicateValue } from '@/utils/util'
  32. export default {
  33. name: 'SysFillRuleModal',
  34. components: {},
  35. data() {
  36. return {
  37. title: '操作',
  38. visible: false,
  39. model: {},
  40. labelCol: { xs: { span: 24 }, sm: { span: 5 } },
  41. wrapperCol: { xs: { span: 24 }, sm: { span: 16 } },
  42. confirmLoading: false,
  43. validatorRules: {
  44. ruleName: [{ required: true, message: '规则名称不能为空' }],
  45. ruleCode: [
  46. { required: true, message: '规则Code不能为空' },
  47. { validator: (rule, value, callback) => validateDuplicateValue('sys_fill_rule', 'rule_code', value, this.model.id, callback) }
  48. ],
  49. ruleClass: [{ required: true, message: '规则实现类不能为空' }],
  50. ruleParams: [{
  51. validator: (rule, value, callback) => {
  52. try {
  53. let json = JSON.parse(value)
  54. if (json instanceof Array) {
  55. callback('只能传递JSON对象,不能传递JSON数组')
  56. } else if (json instanceof Object) {
  57. callback()
  58. } else {
  59. callback('请输入JSON字符串')
  60. }
  61. } catch {
  62. callback('请输入JSON字符串')
  63. }
  64. }
  65. }],
  66. },
  67. url: {
  68. add: '/sys/fillRule/add',
  69. edit: '/sys/fillRule/edit',
  70. },
  71. }
  72. },
  73. computed: {
  74. disabledCode() {
  75. return !!this.model.id
  76. }
  77. },
  78. created() {
  79. },
  80. methods: {
  81. add() {
  82. this.edit({})
  83. },
  84. edit(record) {
  85. this.visible = true
  86. this.$nextTick(() => {
  87. this.$refs.form.resetFields()
  88. this.model = Object.assign({}, record)
  89. })
  90. },
  91. close() {
  92. this.$emit('close')
  93. this.visible = false
  94. },
  95. handleOk() {
  96. const that = this
  97. // 触发表单验证
  98. this.$refs.form.validate((ok, err) => {
  99. if (ok) {
  100. that.confirmLoading = true
  101. let httpUrl = this.url.add, method = 'post'
  102. if (this.model.id) {
  103. httpUrl = this.url.edit
  104. //method = 'put'
  105. }
  106. httpAction(httpUrl, this.model, method).then((res) => {
  107. if (res.success) {
  108. that.$message.success(res.message)
  109. that.$emit('ok')
  110. that.close()
  111. } else {
  112. that.$message.warning(res.message)
  113. }
  114. }).finally(() => {
  115. that.confirmLoading = false
  116. })
  117. }
  118. })
  119. },
  120. handleCancel() {
  121. this.close()
  122. }
  123. }
  124. }
  125. </script>
  126. <style lang="less" scoped>
  127. </style>