Lius
2025-06-30 36183a25c19f8c31ba082592329e7aff3caf97d5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<template>
  <j-modal
    :title="title"
    :width="800"
    :visible="visible"
    :confirmLoading="confirmLoading"
    switchFullscreen
    @ok="handleOk"
    @cancel="handleCancel"
    cancelText="关闭">
 
    <a-spin :spinning="confirmLoading">
      <a-form-model ref="form" :model="model" :rules="validatorRules">
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="businessName" label="业务名称">
          <a-input placeholder="请输入业务名称" v-model="model.businessName" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="businessCode" label="业务编码">
          <a-input placeholder="请输入业务编码" v-model="model.businessCode" :disabled="editable" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="prefix" label="编码前缀">
          <a-input placeholder="请输入编码前缀" v-model="model.prefix" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="yearFormat" label="年份编码格式">
          <a-input placeholder="参考日期年份编码格式" v-model="model.yearFormat" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="monthFormat" label="月份编码格式">
          <a-input placeholder="参考日期月份编码格式" v-model="model.monthFormat" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="dayFormat" label="天编码格式">
          <a-input placeholder="参考日期天的编码格式" v-model="model.dayFormat" />
        </a-form-model-item>
        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="seqLength" label="序号长度">
          <a-input-number v-model="model.seqLength" :min="1" :max="10" :precision="0" />
        </a-form-model-item>
      </a-form-model>
    </a-spin>
  </j-modal>
</template>
 
<script>
import { httpAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
 
export default {
  name: 'SysBusinessCodeRuleModal',
  data() {
    return {
      title: '操作',
      visible: false,
      editable: false,
      model: {},
      labelCol: {
        xs: { span: 24 },
        sm: { span: 5 }
      },
      wrapperCol: {
        xs: { span: 24 },
        sm: { span: 16 }
      },
      confirmLoading: false,
      validatorRules: {
        businessName: [
          { required: true, message: '请输入业务名称!' }
        ],
        businessCode: [
          { required: true, message: '请输入业务编码!' },
          { validator: (rule, value, callback) => validateDuplicateValue('sys_business_code_rule', 'business_code', value, this.model.id, callback) }
        ],
        seqLength: [
          { required: true, message: '请输入序号长度!' }
        ]
      },
      url: {
        add: '/sys/sysBusinessCodeRule/add',
        edit: '/sys/sysBusinessCodeRule/edit'
      }
    }
  },
  created() {
  },
  methods: {
    add() {
      this.model = {};
      this.model.seqLength = 4;
      this.editable = false;
      this.visible = true
    },
    edit(record) {
      this.editable = true;
      this.model = Object.assign({}, record)
      this.visible = true
    },
    close() {
      this.$emit('close')
      this.visible = false
      this.$refs.form.clearValidate()
    },
    handleOk() {
      const that = this
      // 触发表单验证
      this.$refs.form.validate(valid => {
        if (valid) {
          that.confirmLoading = true
          let httpurl = ''
          let method = ''
          if (!this.model.id) {
            httpurl += this.url.add
            method = 'post'
          } else {
            httpurl += this.url.edit
            method = 'put'
          }
          httpAction(httpurl, this.model, method).then((res) => {
            if (res.success) {
              that.$message.success(res.message)
              that.$emit('ok')
            } else {
              that.$message.warning(res.message)
            }
          }).finally(() => {
            that.confirmLoading = false
            that.close()
          })
        } else {
          return false
        }
      })
    },
    handleCancel() {
      this.close()
    }
  }
}
</script>
 
<style lang="less" scoped>
 
</style>