fz 2 лет назад
Родитель
Сommit
8dca5ab3d9
1 измененных файлов: 150 добавлений и 27 удалений
  1. 150
    27
      src/views/officialSeal/components/grabRules.vue

+ 150
- 27
src/views/officialSeal/components/grabRules.vue Просмотреть файл

2
     <div>
2
     <div>
3
         <el-dialog title="设置抓取规则" :visible="rulesVisable" v-if="rulesVisable" @close="cancelRules" width="1000px"
3
         <el-dialog title="设置抓取规则" :visible="rulesVisable" v-if="rulesVisable" @close="cancelRules" width="1000px"
4
             append-to-body :destroy-on-close="true" center>
4
             append-to-body :destroy-on-close="true" center>
5
-            <el-button type="primary" icon="el-icon-plus" style="margin-bottom: 20px;" @click="addForm">新增抓取规则</el-button>
5
+            <el-button type="primary" icon="el-icon-plus" style="margin-bottom: 20px;"
6
+                @click="addForm">新增系统内置抓取规则</el-button>
6
             <div class="formDom">
7
             <div class="formDom">
7
                 <el-form ref="form" :model="formData" label-width="150px">
8
                 <el-form ref="form" :model="formData" label-width="150px">
8
                     <div class="formItem" v-for="(item, index) in formData.forms" :key="item.key">
9
                     <div class="formItem" v-for="(item, index) in formData.forms" :key="item.key">
10
+                        <el-button type="primary" icon="el-icon-delete" style="margin-bottom: 20px;"
11
+                            @click="deleteForm(item)">删除</el-button>
9
                         <el-row>
12
                         <el-row>
10
-                            <el-col :span="12">
13
+                            <!-- <el-col :span="12">
11
                                 <el-form-item label="字段:" :prop="'forms.' + index + '.column'" :rules="[
14
                                 <el-form-item label="字段:" :prop="'forms.' + index + '.column'" :rules="[
12
                                     {
15
                                     {
13
                                         required: true,
16
                                         required: true,
17
                                 ]">
20
                                 ]">
18
                                     <el-input v-model="item.column" placeholder="请输入字段" />
21
                                     <el-input v-model="item.column" placeholder="请输入字段" />
19
                                 </el-form-item>
22
                                 </el-form-item>
23
+                                <el-form-item label="字段:" :prop="'forms.' + index + '.column'" :rules="[
24
+                                    {
25
+                                        required: true,
26
+                                        message: '字段不能为空',
27
+                                    },
28
+                                ]">
29
+                                    <el-select v-model="item.column" placeholder="请选择">
30
+                                        <el-option v-for="dict in selectList" :key="dict.id" :label="dict.column"
31
+                                            :value="dict.column"></el-option>
32
+                                    </el-select>
33
+                                </el-form-item>
34
+                            </el-col> -->
35
+                            <el-col :span="12">
36
+                                <!-- <el-form-item label="字段名:" :prop="'forms.' + index + '.columnName'" :rules="[
37
+                                    {
38
+                                        required: true,
39
+                                        message: '字段名不能为空',
40
+                                        trigger: 'blur',
41
+                                    },
42
+                                ]">
43
+                                    <el-input v-model="item.columnName" placeholder="请输入字段名" />
44
+                                </el-form-item> -->
45
+                                <el-form-item label="字段名:" :prop="'forms.' + index + '.columnName'" :rules="[
46
+                                    {
47
+                                        required: true,
48
+                                        message: '字段名不能为空',
49
+                                    },
50
+                                ]">
51
+                                    <el-select v-model="item.columnName" placeholder="请选择" @change="columnNameChange(item)">
52
+                                        <el-option v-for="dict in dict.type.case_built_type" :key="dict.value"
53
+                                            :label="dict.label" :value="dict.label"></el-option>
54
+                                    </el-select>
55
+                                </el-form-item>
56
+                            </el-col>
57
+                            <el-col :span="12">
58
+                                <el-form-item label="抓取文件名:" :prop="'forms.' + index + '.fileName'" :rules="[
59
+                                    {
60
+                                        required: true,
61
+                                        message: '抓取文件名不能为空',
62
+                                    },
63
+                                ]">
64
+                                    <el-input v-model="item.fileName" placeholder="请输入抓取文件名" />
65
+                                </el-form-item>
66
+                            </el-col>
67
+                            <el-col :span="12">
68
+                                <el-form-item label="开始抓取字段:" :prop="'forms.' + index + '.startContent'" :rules="[
69
+                                    {
70
+                                        required: true,
71
+                                        message: '开始抓取字段不能为空',
72
+                                    },
73
+                                ]">
74
+                                    <el-input v-model="item.startContent" placeholder="请输入开始抓取字段" />
75
+                                </el-form-item>
76
+                            </el-col>
77
+                            <el-col :span="12">
78
+                                <el-form-item label="结束抓取字段:" :prop="'forms.' + index + '.endContent'" :rules="[
79
+                                    {
80
+                                        required: true,
81
+                                        message: '结束抓取字段不能为空',
82
+                                    },
83
+                                ]">
84
+                                    <el-input v-model="item.endContent" placeholder="结束抓取字段" />
85
+                                </el-form-item>
86
+                            </el-col>
87
+                        </el-row>
88
+                    </div>
89
+                </el-form>
90
+            </div>
91
+            <el-button type="primary" icon="el-icon-plus" style="margin-bottom: 20px;"
92
+                @click="addFormCustom">新增自定义抓取规则</el-button>
93
+            <div class="formDom">
94
+                <el-form ref="form_custom" :model="formData_custom" label-width="150px">
95
+                    <div class="formItem" v-for="(item, index) in formData_custom.forms" :key="item.key">
96
+                        <el-button type="primary" icon="el-icon-delete" style="margin-bottom: 20px;"
97
+                            @click="deleteFormCustom(item)">删除</el-button>
98
+                        <el-row>
99
+                            <el-col :span="12">
100
+                                <el-form-item label="字段:" :prop="'forms.' + index + '.column'" :rules="[
101
+                                    {
102
+                                        required: true,
103
+                                        message: '字段不能为空',
104
+                                    },
105
+                                ]">
106
+                                    <el-input v-model="item.column" placeholder="请输入字段" />
107
+                                </el-form-item>
20
                             </el-col>
108
                             </el-col>
21
                             <el-col :span="12">
109
                             <el-col :span="12">
22
                                 <el-form-item label="字段名:" :prop="'forms.' + index + '.columnName'" :rules="[
110
                                 <el-form-item label="字段名:" :prop="'forms.' + index + '.columnName'" :rules="[
23
                                     {
111
                                     {
24
                                         required: true,
112
                                         required: true,
25
                                         message: '字段名不能为空',
113
                                         message: '字段名不能为空',
26
-                                        trigger: 'blur',
27
                                     },
114
                                     },
28
                                 ]">
115
                                 ]">
29
                                     <el-input v-model="item.columnName" placeholder="请输入字段名" />
116
                                     <el-input v-model="item.columnName" placeholder="请输入字段名" />
34
                                     {
121
                                     {
35
                                         required: true,
122
                                         required: true,
36
                                         message: '抓取文件名不能为空',
123
                                         message: '抓取文件名不能为空',
37
-                                        trigger: 'blur',
38
                                     },
124
                                     },
39
                                 ]">
125
                                 ]">
40
                                     <el-input v-model="item.fileName" placeholder="请输入抓取文件名" />
126
                                     <el-input v-model="item.fileName" placeholder="请输入抓取文件名" />
45
                                     {
131
                                     {
46
                                         required: true,
132
                                         required: true,
47
                                         message: '开始抓取字段不能为空',
133
                                         message: '开始抓取字段不能为空',
48
-                                        trigger: 'blur',
49
                                     },
134
                                     },
50
                                 ]">
135
                                 ]">
51
                                     <el-input v-model="item.startContent" placeholder="请输入开始抓取字段" />
136
                                     <el-input v-model="item.startContent" placeholder="请输入开始抓取字段" />
56
                                     {
141
                                     {
57
                                         required: true,
142
                                         required: true,
58
                                         message: '结束抓取字段不能为空',
143
                                         message: '结束抓取字段不能为空',
59
-                                        trigger: 'blur',
60
                                     },
144
                                     },
61
                                 ]">
145
                                 ]">
62
                                     <el-input v-model="item.endContent" placeholder="结束抓取字段" />
146
                                     <el-input v-model="item.endContent" placeholder="结束抓取字段" />
80
 } from "@/api/officialSeal/officialSeal.js";
164
 } from "@/api/officialSeal/officialSeal.js";
81
 export default {
165
 export default {
82
     props: ["rulesVisable", "rulesData", "queryParams"],
166
     props: ["rulesVisable", "rulesData", "queryParams"],
167
+    dicts: ["case_built_type"],
83
     data() {
168
     data() {
84
         return {
169
         return {
85
             formData: {
170
             formData: {
86
                 forms: [{
171
                 forms: [{
87
-                    fileName: "",
88
-                    startContent: '',
89
-                    endContent: '',
90
-                    column: "",
91
-                    columnName: "",
92
-                    key: Date.now()
172
+                    // fileName: "",
173
+                    // startContent: '',
174
+                    // endContent: '',
175
+                    // column: "",
176
+                    // columnName: "",
93
                 }]
177
                 }]
94
             },
178
             },
179
+            formData_custom: {
180
+                forms: []
181
+            },
182
+            // selectList: []
95
         };
183
         };
96
     },
184
     },
97
     watch: {
185
     watch: {
98
         rulesData(val) {
186
         rulesData(val) {
99
             if (val) {
187
             if (val) {
100
-                console.log(val, "llllllllllllllll");
101
-                this.getFatchRuleByTemplateidFn({ id: val.id })
188
+                this.formData.forms = [];
189
+                this.formData_custom.forms = [];
190
+                // this.getFatchRuleByTemplateidFn({ id: val.id })
102
             }
191
             }
103
         }
192
         }
104
     },
193
     },
115
                 startContent: '',
204
                 startContent: '',
116
                 endContent: '',
205
                 endContent: '',
117
                 column: "",
206
                 column: "",
118
-                columnName: ""
207
+                columnName: "",
208
+                isDefault: 0
119
             });
209
             });
120
         },
210
         },
211
+        deleteForm(item) {
212
+            var index = this.formData.forms.indexOf(item)
213
+            if (index !== -1) {
214
+                this.formData.forms.splice(index, 1)
215
+            }
216
+        },
217
+        deleteFormCustom(item) {
218
+            var index = this.formData_custom.forms.indexOf(item)
219
+            if (index !== -1) {
220
+                this.formData_custom.forms.splice(index, 1)
221
+            }
222
+        },
223
+        addFormCustom() {
224
+            this.formData_custom.forms.push({
225
+                fileName: "",
226
+                startContent: '',
227
+                endContent: '',
228
+                column: "",
229
+                columnName: "",
230
+                isDefault: 1
231
+            });
232
+        },
233
+        columnNameChange(item){
234
+            let result = this.dict.type.case_built_type.find((data=>{
235
+                return data.label == item.columnName
236
+            }))
237
+            item.column = result.value;
238
+        },
121
         submitRules() {
239
         submitRules() {
122
             this.$refs['form'].validate((valid) => {
240
             this.$refs['form'].validate((valid) => {
123
                 if (valid) {
241
                 if (valid) {
124
-                   this.saveFatchRulesFn({
125
-                    id:this.rulesData.id,
126
-                    fatchRules:this.formData.forms
127
-                   })
242
+                    this.$refs['form_custom'].validate((valid_custom) => {
243
+                        if (valid_custom) {
244
+                            let paramsList = this.formData.forms.concat(this.formData_custom.forms)
245
+                            this.saveFatchRulesFn({
246
+                                id: this.rulesData.id,
247
+                                fatchRules: paramsList
248
+                            })
249
+                        }
250
+                    })
128
                 }
251
                 }
129
             });
252
             });
130
         },
253
         },
131
         // 根据id获取抓取规则
254
         // 根据id获取抓取规则
132
-        getFatchRuleByTemplateidFn(data) {
133
-            getFatchRuleByTemplateid(data).then(res => {
134
-                this.formData.forms = res.data;
135
-            })
136
-        },
255
+        // getFatchRuleByTemplateidFn(data) {
256
+        //     getFatchRuleByTemplateid(data).then(res => {
257
+        //         // this.formData.forms = res.data;
258
+        //         this.selectList = res.data
259
+        //     })
260
+        // },
137
         // 提交抓取规则
261
         // 提交抓取规则
138
         saveFatchRulesFn(data) {
262
         saveFatchRulesFn(data) {
139
             saveFatchRules(data).then(res => {
263
             saveFatchRules(data).then(res => {
140
                 this.$message.success('提交成功');
264
                 this.$message.success('提交成功');
141
                 this.$emit("cancelRules");
265
                 this.$emit("cancelRules");
142
-                this
143
-                .$emit('getList', that.queryParams);
266
+                this.$emit('getList', that.queryParams);
144
             })
267
             })
145
         }
268
         }
146
     },
269
     },
152
     border: 1px solid #c2bcbc;
275
     border: 1px solid #c2bcbc;
153
     padding: 20px;
276
     padding: 20px;
154
     margin-bottom: 15px;
277
     margin-bottom: 15px;
155
-    max-height: 700px;
278
+    max-height: 300px;
156
     overflow-y: scroll;
279
     overflow-y: scroll;
157
 }
280
 }
158
 </style>
281
 </style>