xiangpei
2025-04-18 ccadf9480d4e6a9dcc227a2a0b1f9ae0612e36fd
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<template>
  <div>
    <el-dialog width="35%" :title="dialogTitle" @close="closeDialog" :visible.sync="dialogFormVisible" :destroy-on-close="true" :append-to-body="true" :close-on-click-modal="false">
      <el-form :model="$!{vueInfo.lowerName}Form" :rules="$!{vueInfo.lowerName}Rules" ref="$!{vueInfo.lowerName}Form" size="small">
      #foreach($field in ${formInfo.fields})
        <el-form-item label="${field.comment}" :label-width="formLabelWidth" prop="${field.propertyName}">
          #if(${field.inputWay} == 'input')
          <el-input v-model="$!{vueInfo.lowerName}Form.${field.propertyName}" autocomplete="off"></el-input>
          #elseif(${field.inputWay} == 'textarea')
          <el-input v-model="$!{vueInfo.lowerName}Form.${field.propertyName}" type="textarea" autocomplete="off"></el-input>
          #elseif(${field.inputWay} == 'number')
          <el-input v-model="$!{vueInfo.lowerName}Form.${field.propertyName}" type="number" autocomplete="off"></el-input>
          #elseif(${field.inputWay} == 'select')
          <el-select filterable remote :remote-method="getDictData" reserve-keyword :loading="${field.propertyName}Loading" v-model="$!{vueInfo.lowerName}Form.${field.propertyName}">
            <el-option v-for="type in ${field.propertyName}Select" :key="type.id" :label="type.value" :value="type.id"></el-option>
          </el-select>
          #elseif(${field.inputWay} == 'radio')
            <el-radio v-for="type in ${field.propertyName}Select" :key="type.id"  v-model="$!{vueInfo.lowerName}Form.${field.propertyName}" :label="type.id">{{type.value}}</el-radio>
          #end
        </el-form-item>
      #end
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="closeDialog" size="small">取 消</el-button>
        <el-button type="primary" @click="addOrEdit$!{vueInfo.name}" size="small">确 定</el-button>
      </div>
    </el-dialog>
  </div>
</template>
 
<script>
  import {Message} from "element-ui";
  import {getDictDataByType} from "@/api/dict-data";
  import {add$!{vueInfo.name}, edit$!{vueInfo.name}, get$!{vueInfo.name}s} from "@/api/$!{vueInfo.lowerName}";
  export default {
    name: "$!{vueInfo.name}Dialog",
    data() {
      return {
        #foreach($field in ${vueInfo.useSelectFields})
        ${field.propertyName}Select: [],
        ${field.propertyName}Loading: false,
        #end
        formLabelWidth: '120px',
        $!{vueInfo.lowerName}Rules: {
          #foreach($field in ${formInfo.fields})
            ${field.propertyName}: [
              { required: true, message: '请输入${field.comment}', trigger: 'blur' }
            ],
          #end
      }
      }
    },
    computed: {
      dialogFormVisible: {
        get() {
          return this.#[[$store]]#.state.${vueInfo.lowerName}.dialogFormVisible;
        },
        set(value) {
          this.#[[$store]]#.state.${vueInfo.lowerName}.dialogFormVisible = value;
        }
      },
      dialogTitle: {
        get() {
          return this.#[[$store]]#.state.${vueInfo.lowerName}.dialogTitle;
        },
        set(value) {
          this.#[[$store]]#.state.${vueInfo.lowerName}.dialogTitle = value;
        }
 
      },
      $!{vueInfo.lowerName}Form: {
        get() {
          return this.#[[$store]]#.state.${vueInfo.lowerName}.$!{vueInfo.lowerName}Form;
        },
        set(value) {
          this.#[[$store]]#.state.${vueInfo.lowerName}.$!{vueInfo.lowerName}Form = value;
        }
      }
    },
    mounted() {
      #foreach($field in ${vueInfo.useSelectFields})
      let params = {
        dictTypeId: ${field.dataSourceId},
        current: 1,
        size: 200
      }
      getDictDataByType(params).then(res => {
        this.${field.propertyName}Select = res.data.data
      })
      #end
    },
    methods: {
      getDictData(value) {
        let params = {
          keyword: value,
          dictTypeId: value,
          current: 1,
          size: 200
        }
        getDictDataByType(params).then(res => {
          this.dictTypeList = res.data.data
        })
      },
      refreshData() {
        var params = {
          "current": this.#[[$store]]#.state.$!{vueInfo.lowerName}.currentPage,
          "size": this.#[[$store]]#.state.$!{vueInfo.lowerName}.pageSize
        };
        // 刷新
        get$!{vueInfo.name}s(params).then((res) => {
          this.#[[$store]]#.state.$!{vueInfo.lowerName}.tableData = res.data.data;
          this.#[[$store]]#.state.$!{vueInfo.lowerName}.total = res.data.total;
          this.clearForm();
        })
      },
      clearForm() {
        Object.keys(this.$!{vueInfo.lowerName}Form).forEach((key) => {
          this.$!{vueInfo.lowerName}Form[key] = null;
        })
      },
      closeDialog() {
        this.#[[$store]]#.state.$!{vueInfo.lowerName}.dialogFormVisible = false;
        this.clearForm();
      },
      addOrEdit$!{vueInfo.name}() {
        this.#[[$refs[]]#"$!{vueInfo.lowerName}Form"#[[]]]#.validate((valid) => {
          if (valid) {
            if (this.dialogTitle === "添加$!{table.comment}") {
              add$!{vueInfo.name}(this.$!{vueInfo.lowerName}Form).then((res) => {
                Message.success(res.data.msg);
                this.dialogFormVisible = false;
                this.refreshData();
              })
            } else {
              edit$!{vueInfo.name}(this.$!{vueInfo.lowerName}Form).then((res) => {
                Message.success(res.data.msg);
                this.dialogFormVisible = false;
                this.refreshData();
              })
            }
        } else {
          console.log('error submit!!');
          return false;
        }
        });
      }
    }
  }
</script>
 
<style scoped>
 
</style>