Blame view

src/views/baseInspectionReport/Form.vue 14.6 KB
c21fb5b0   monkeyhouyi   巡查上报页面
1
  <template>
006cc67a   monkeyhouyi   巡查上报
2
3
4
5
    <el-dialog
      :title="!dataForm.id ? '新建' : isDetail ? '详情' : '编辑'"
      :close-on-click-modal="false"
      :visible.sync="visible"
ff36c85d   monkeyhouyi   1
6
      class="NCC-dialog NCC-dialog_center baseInspectionReportForm"
006cc67a   monkeyhouyi   巡查上报
7
      lock-scroll
ff36c85d   monkeyhouyi   1
8
      width="50%"
73755355   monkeyhouyi   优化
9
      :modal="false"
006cc67a   monkeyhouyi   巡查上报
10
    >
73755355   monkeyhouyi   优化
11
      <el-row :gutter="15" class="NCC-dialog-content" v-if="!isDetail">
006cc67a   monkeyhouyi   巡查上报
12
13
14
15
16
17
18
19
20
        <el-form
          ref="elForm"
          :model="dataForm"
          size="small"
          label-width="100px"
          label-position="right"
          :disabled="!!isDetail"
          :rules="rules"
        >
93186f57   monkeyhouyi   前端整改页面
21
          <el-col :span="23" v-if="false">
006cc67a   monkeyhouyi   巡查上报
22
            <el-form-item label="主键" prop="id">
ff36c85d   monkeyhouyi   1
23
              <el-input v-model="dataForm.id" placeholder="请输入" clearable :style="{ width: '100%' }"></el-input>
006cc67a   monkeyhouyi   巡查上报
24
25
            </el-form-item>
          </el-col>
93186f57   monkeyhouyi   前端整改页面
26
          <el-col :span="23">
94f06e38   monkeyhouyi   优化
27
28
            <el-form-item label="问题来源" prop="reportSource">
              <el-radio-group v-model="dataForm.reportSource">
ff36c85d   monkeyhouyi   1
29
                <el-radio v-for="(item, index) in sourceOptions" :key="index" :label="item.Id">{{ item.FullName }}</el-radio>
61009cfc   monkeyhouyi   2024/8/8
30
              </el-radio-group>
93186f57   monkeyhouyi   前端整改页面
31
32
33
            </el-form-item>
          </el-col>
          <el-col :span="23">
73755355   monkeyhouyi   优化
34
            <el-form-item label="应用名称" prop="platformName">
fcbf44a0   monkeyhouyi   1
35
              <el-select
ff36c85d   monkeyhouyi   1
36
                ref="select"
fcbf44a0   monkeyhouyi   1
37
38
39
40
                v-model="dataForm.platformName"
                filterable
                remote
                reserve-keyword
73755355   monkeyhouyi   优化
41
                placeholder="请输入应用名称"
ff36c85d   monkeyhouyi   1
42
43
44
45
46
47
                @blur.native.capture="selectBlur"
                @visible-change="visibleNameChange"
                @change="(val) => platformNameChange(val, 'change')"
                :loading="name_loading"
                :disabled="!!this.dataForm.id">
                <el-option v-for="item in nameOptions" :key="item.id" :label="item.systemName" :value="item.id"></el-option>
fcbf44a0   monkeyhouyi   1
48
              </el-select>
006cc67a   monkeyhouyi   巡查上报
49
50
            </el-form-item>
          </el-col>
93186f57   monkeyhouyi   前端整改页面
51
          <el-col :span="23">
94f06e38   monkeyhouyi   优化
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
            <el-form-item label="运营主体" prop="company">
              <el-select
                v-model="dataForm.company"
                placeholder="请选择运营主体"
                clearable
                filterable 
                style="width: 100%"
                :disabled='isDisabledTypeByName || !!this.dataForm.id'
              >
                <el-option
                  v-for="item in companyOptions"
                  :key="item.id"
                  :label="item.companyName"
                  :value="item.id"
                >
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="23">
73755355   monkeyhouyi   优化
72
            <el-form-item label="应用类型" prop="platformType">
ff36c85d   monkeyhouyi   1
73
74
              <el-radio-group v-model="dataForm.platformType" :disabled='isDisabledTypeByName || !!this.dataForm.id'>
                <el-radio v-for="(item, index) in platformTypeOptions" :key="index" :label="item.Id">{{ item.FullName }}</el-radio>
93186f57   monkeyhouyi   前端整改页面
75
              </el-radio-group>
006cc67a   monkeyhouyi   巡查上报
76
77
            </el-form-item>
          </el-col>
ff36c85d   monkeyhouyi   1
78
79
          <el-col :span="23" v-show="dataForm.platformType == '580634746028033285' && !isDisabledTypeByName">
            <el-form-item label="归属平台" prop="selfMediaPlatformType">
a2d1a53f   monkeyhouyi   提交
80
81
82
83
84
85
86
87
              <el-radio-group v-model="dataForm.selfMediaPlatformType" :disabled="!!this.dataForm.id">
                <el-radio v-for="(item, index) in mediaPlatList" :key="index" :label="item" >{{ item }}</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="23" v-show="dataForm.selfMediaPlatformType == '其他'">
            <el-form-item label="其他归属平台" prop="selfMediaPlatformTypeOther">
              <el-input v-model="dataForm.selfMediaPlatformTypeOther" placeholder="请输入其他归属平台" clearable :style="{ width: '100%' }" />
ff36c85d   monkeyhouyi   1
88
89
90
            </el-form-item>
          </el-col>
          <el-col :span="23">
006cc67a   monkeyhouyi   巡查上报
91
            <el-form-item label="问题类型" prop="questionType">
ff36c85d   monkeyhouyi   1
92
93
              <el-radio-group v-model="dataForm.questionType">
                <el-radio v-for="(item, index) in questionTypeOptions" :key="index" :label="item.fullName" >{{ item.fullName }}</el-radio>
006cc67a   monkeyhouyi   巡查上报
94
95
96
              </el-radio-group>
            </el-form-item>
          </el-col>
ff36c85d   monkeyhouyi   1
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
          <el-col :span="23" v-show="dataForm.questionType == '其他'">
            <el-form-item label="其他问题类型" prop="otherQuestionType">
              <el-input v-model="dataForm.otherQuestionType" placeholder="请输入其他问题类型" clearable :style="{ width: '100%' }" />
            </el-form-item>
          </el-col>
          <el-col :span="23" v-show="dataForm.questionType == '错误表述'">
            <el-form-item label="正确描述" prop="accurateDescription">
              <el-input v-model="dataForm.accurateDescription" placeholder="请输入正确描述" clearable :style="{ width: '100%' }"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="23" v-show="dataForm.questionType == '错误表述'">
            <el-form-item label="错误描述" prop="incorrectDescription">
              <el-input v-model="dataForm.incorrectDescription" placeholder="请输入错误描述" clearable :style="{ width: '100%' }"></el-input>
            </el-form-item>
          </el-col>
93186f57   monkeyhouyi   前端整改页面
112
          <el-col :span="23">
006cc67a   monkeyhouyi   巡查上报
113
            <el-form-item label="问题内容" prop="questionContent">
ff36c85d   monkeyhouyi   1
114
              <el-input v-model="dataForm.questionContent" placeholder="请输入" show-word-limit :style="{ width: '100%' }" type="textarea" :autosize="{ minRows: 4, maxRows: 4 }" />
006cc67a   monkeyhouyi   巡查上报
115
116
            </el-form-item>
          </el-col>
73755355   monkeyhouyi   优化
117
          <!-- <el-col :span="23">
ff36c85d   monkeyhouyi   1
118
119
            <el-form-item label="链接" prop="link">
              <el-input v-model="dataForm.link" placeholder="请输入链接" clearable :style="{ width: '100%' }"></el-input>
006cc67a   monkeyhouyi   巡查上报
120
            </el-form-item>
73755355   monkeyhouyi   优化
121
          </el-col> -->
93186f57   monkeyhouyi   前端整改页面
122
          <el-col :span="23">
61009cfc   monkeyhouyi   2024/8/8
123
            <el-form-item label="关键词" prop="questionClass">
ff36c85d   monkeyhouyi   1
124
              <el-input v-model="dataForm.questionClass" placeholder="请输入关键词" clearable :style="{ width: '100%' }"></el-input>
61009cfc   monkeyhouyi   2024/8/8
125
126
127
            </el-form-item>
          </el-col>
          <el-col :span="23">
94f06e38   monkeyhouyi   优化
128
129
            <el-form-item label="附件" prop="annex">
              <NCC-UploadFz v-model="dataForm.annex" :fileSize="5" sizeUnit="MB" :limit="9" buttonText="点击上传" />
006cc67a   monkeyhouyi   巡查上报
130
131
132
133
            </el-form-item>
          </el-col>
        </el-form>
      </el-row>
73755355   monkeyhouyi   优化
134
135
      <el-row v-else>
        <el-col class="form-item">
4755ec66   monkeyhouyi   1
136
          <div class="label w-120">问题来源:</div>
a242b994   monkeyhouyi   附件调试
137
          <div class="text">{{ sourceOptions.find(v => v.Id == dataForm.reportSource).FullName || '--' }}</div>
73755355   monkeyhouyi   优化
138
139
        </el-col>
        <el-col class="form-item">
4755ec66   monkeyhouyi   1
140
          <div class="label w-120">应用名称:</div>
a242b994   monkeyhouyi   附件调试
141
          <div class="text">{{ dataForm.platformNameStr || '--' }}</div>
73755355   monkeyhouyi   优化
142
143
        </el-col>
        <el-col class="form-item">
4755ec66   monkeyhouyi   1
144
          <div class="label w-120">运营主体:</div>
a242b994   monkeyhouyi   附件调试
145
          <div class="text">{{ dataForm.companyStr || '--' }}</div>
94f06e38   monkeyhouyi   优化
146
147
        </el-col>
        <el-col class="form-item">
4755ec66   monkeyhouyi   1
148
          <div class="label w-120">应用类型:</div>
a242b994   monkeyhouyi   附件调试
149
          <div class="text">{{ dataForm.platformTypeStr || '--' }}</div>
73755355   monkeyhouyi   优化
150
        </el-col>
a242b994   monkeyhouyi   附件调试
151
        <el-col class="form-item" v-if="dataForm.platformType == '580634746028033285'">
4755ec66   monkeyhouyi   1
152
          <div class="label w-120">归属平台:</div>
73755355   monkeyhouyi   优化
153
154
155
          <div class="text">{{ dataForm.selfMediaPlatformType || '--' }}</div>
        </el-col>
        <el-col class="form-item">
4755ec66   monkeyhouyi   1
156
          <div class="label w-120">问题类型:</div>
73755355   monkeyhouyi   优化
157
158
159
          <div class="text">{{ dataForm.questionType || '--' }}</div>
        </el-col>
        <el-col class="form-item" v-show="dataForm.questionType == '错误表述'">
4755ec66   monkeyhouyi   1
160
          <div class="label w-120">正确描述:</div>
73755355   monkeyhouyi   优化
161
162
163
          <div class="text">{{ dataForm.accurateDescription || '--' }}</div>
        </el-col>
        <el-col class="form-item" v-show="dataForm.questionType == '错误表述'">
4755ec66   monkeyhouyi   1
164
          <div class="label w-120">错误描述:</div>
73755355   monkeyhouyi   优化
165
166
167
          <div class="text">{{ dataForm.incorrectDescription || '--' }}</div>
        </el-col>
        <el-col class="form-item">
4755ec66   monkeyhouyi   1
168
          <div class="label w-120">问题内容:</div>
73755355   monkeyhouyi   优化
169
170
171
          <div class="text">{{ dataForm.questionContent || '--' }}</div>
        </el-col>
        <el-col class="form-item">
4755ec66   monkeyhouyi   1
172
          <div class="label w-120">关键词:</div>
73755355   monkeyhouyi   优化
173
174
175
          <div class="text">{{ dataForm.questionClass || '--' }}</div>
        </el-col>
        <el-col class="form-item">
4755ec66   monkeyhouyi   1
176
          <div class="label w-120">附件:</div>
a242b994   monkeyhouyi   附件调试
177
          <NCC-UploadFz v-model="dataForm.annex" :fileSize="5" sizeUnit="MB" :limit="9" buttonText="点击上传" disabled/>
73755355   monkeyhouyi   优化
178
179
        </el-col>
      </el-row>
006cc67a   monkeyhouyi   巡查上报
180
181
      <span slot="footer" class="dialog-footer">
        <el-button @click="visible = false">取 消</el-button>
94f06e38   monkeyhouyi   优化
182
        <el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail" :loading="btnLoading">确 定</el-button>
006cc67a   monkeyhouyi   巡查上报
183
184
      </span>
    </el-dialog>
c21fb5b0   monkeyhouyi   巡查上报页面
185
186
  </template>
  <script>
006cc67a   monkeyhouyi   巡查上报
187
188
189
  import request from "@/utils/request";
  import { getDictionaryDataSelector } from "@/api/systemData/dictionary";
  import { getDetail, addForm, updataForm } from "@/api/systemData/dataInterface";
a2d1a53f   monkeyhouyi   提交
190
  import { MediaPlatList } from "@/assets/data"
fcbf44a0   monkeyhouyi   1
191
  import { getInfoList } from "@/api/baseData/info";
006cc67a   monkeyhouyi   巡查上报
192
193
194
195
196
197
198
  export default {
    components: {},
    props: [],
    data() {
      return {
        loading: false,
        visible: false,
fcbf44a0   monkeyhouyi   1
199
        name_loading: false,
006cc67a   monkeyhouyi   巡查上报
200
201
        isDetail: false,
        dataForm: {
006cc67a   monkeyhouyi   巡查上报
202
          id: undefined,
94f06e38   monkeyhouyi   优化
203
          reportSource: undefined,
a242b994   monkeyhouyi   附件调试
204
205
206
          platformNameStr: undefined,
          platformTypeStr: undefined,
          companyStr: undefined,
ff36c85d   monkeyhouyi   1
207
208
          platformName: '',
          selfMediaPlatformType: '',
006cc67a   monkeyhouyi   巡查上报
209
210
211
212
213
          platformType: undefined,
          questionType: undefined,
          questionClass: undefined,
          questionContent: undefined,
          link: undefined,
fcbf44a0   monkeyhouyi   1
214
215
          accurateDescription: undefined,
          incorrectDescription: undefined,
006cc67a   monkeyhouyi   巡查上报
216
          annex: [],
a2d1a53f   monkeyhouyi   提交
217
218
          otherQuestionType: undefined,
          selfMediaPlatformTypeOther: undefined,
94f06e38   monkeyhouyi   优化
219
          company: undefined,
006cc67a   monkeyhouyi   巡查上报
220
        },
93186f57   monkeyhouyi   前端整改页面
221
        rules: {
ff36c85d   monkeyhouyi   1
222
          platformName: [
94f06e38   monkeyhouyi   优化
223
224
225
226
            { required: true, message: "请选择应用名称", trigger: "blur" },
          ],
          company: [
            { required: true, message: "请选择运营主体", trigger: "blur" },
ff36c85d   monkeyhouyi   1
227
          ],
93186f57   monkeyhouyi   前端整改页面
228
          platformType: [
94f06e38   monkeyhouyi   优化
229
            { required: true, message: "请选择应用类型", trigger: "blur" },
93186f57   monkeyhouyi   前端整改页面
230
231
          ],
          questionType: [
ff36c85d   monkeyhouyi   1
232
            { required: true, message: "请选择问题类型", trigger: "blur" },
93186f57   monkeyhouyi   前端整改页面
233
          ],
ff36c85d   monkeyhouyi   1
234
235
236
          // otherQuestionType: [
          //   { required: true, message: "请输入其他问题类型", trigger: "blur" },
          // ],
93186f57   monkeyhouyi   前端整改页面
237
        },
ff36c85d   monkeyhouyi   1
238
        sourceOptions: [],
006cc67a   monkeyhouyi   巡查上报
239
240
        platformTypeOptions: [],
        questionTypeOptions: [],
fcbf44a0   monkeyhouyi   1
241
        nameOptions: [],
a2d1a53f   monkeyhouyi   提交
242
        mediaPlatList: MediaPlatList,
94f06e38   monkeyhouyi   优化
243
244
        companyOptions: [],
        btnLoading: false,
006cc67a   monkeyhouyi   巡查上报
245
246
      };
    },
ff36c85d   monkeyhouyi   1
247
248
249
250
251
252
253
    computed: {
      isDisabledTypeByName() {
        if(!this.nameOptions.length) return false;
        let index = this.nameOptions.findIndex(v => v.id == this.dataForm.platformName);
        return index != -1;
      }
    },
006cc67a   monkeyhouyi   巡查上报
254
255
    watch: {},
    created() {
94f06e38   monkeyhouyi   优化
256
      this.initCompanyList();
fcbf44a0   monkeyhouyi   1
257
      this.loadList();
61009cfc   monkeyhouyi   2024/8/8
258
      this.getSourceOptions();
006cc67a   monkeyhouyi   巡查上报
259
260
261
262
263
      this.getplatformTypeOptions();
      this.getquestionTypeOptions();
    },
    mounted() {},
    methods: {
94f06e38   monkeyhouyi   优化
264
265
266
267
268
269
270
271
      async initCompanyList() {
        request({
          url: `/Extend/basecomapnyinfo/GetNoPagingList`,
          method: "GET",
        }).then(({data}) => {
          this.companyOptions = data;
        })
      },
ff36c85d   monkeyhouyi   1
272
273
274
275
276
277
278
279
      selectBlur(e) {
        let value = e.target.value;
        if(!value) return;
        this.dataForm.platformName = e.target.value;
        this.platformNameChange(value, 'blur');
      },
      platformNameChange(val, type) {
        let obj = this.nameOptions.find(v => type == 'blur' ? val == v.fullName : val == v.id);
73755355   monkeyhouyi   优化
280
        if(!obj) return;
ff36c85d   monkeyhouyi   1
281
        this.dataForm.platformName = obj ? obj.id : val;
94f06e38   monkeyhouyi   优化
282
        this.dataForm.company = this.companyOptions.find(v => v.id == obj.companyId || v.companyName == obj.companyId).id;
a242b994   monkeyhouyi   附件调试
283
        console.log(this.dataForm.company, 'this.dataForm.company');
73755355   monkeyhouyi   优化
284
        this.dataForm.platformType = this.platformTypeOptions.find(v => v.Id == obj.systemType || v.FullName == obj.systemType).Id;
ff36c85d   monkeyhouyi   1
285
286
287
288
289
290
291
292
        this.dataForm.selfMediaPlatformType = obj ? obj.platform : '';
      },
      visibleNameChange(val) {
        if (val) return
        let input = this.$refs.select.$children[0].$refs.input;
        input.blur();
      },
      loadList() {
fcbf44a0   monkeyhouyi   1
293
        this.name_loading = true;
ff36c85d   monkeyhouyi   1
294
295
296
297
298
        request({
          url: `/Extend/basesysteminfo/GetNoPagingList`,
          method: "GET",
        }).then(({data}) => {
          this.nameOptions = data;
fcbf44a0   monkeyhouyi   1
299
          this.name_loading = false;
ff36c85d   monkeyhouyi   1
300
        })
fcbf44a0   monkeyhouyi   1
301
      },
006cc67a   monkeyhouyi   巡查上报
302
303
      async getplatformTypeOptions() {
        let list = this.$store.state.meta.system;
ff36c85d   monkeyhouyi   1
304
        !list && (list = await this.$store.dispatch("getTypeListByCode", "system"));
006cc67a   monkeyhouyi   巡查上报
305
306
        this.platformTypeOptions = list;
      },
61009cfc   monkeyhouyi   2024/8/8
307
308
309
310
311
312
313
314
      async getSourceOptions() {
        request({
          url: `/Extend/baseinspectionreport/GetReportSourceList`,
          method: "GET",
        }).then(({data}) => {
          this.sourceOptions = data;
        })
      },
006cc67a   monkeyhouyi   巡查上报
315
316
      getquestionTypeOptions() {
        getDictionaryDataSelector("577006814432855301").then((res) => {
ff36c85d   monkeyhouyi   1
317
          this.questionTypeOptions = [...res.data.list, {Id: '0', fullName: '其他'}];
006cc67a   monkeyhouyi   巡查上报
318
319
320
321
322
323
        });
      },
      goBack() {
        this.$emit("refresh");
      },
      init(id, isDetail) {
ff36c85d   monkeyhouyi   1
324
        this.dataForm.id = id || '';
006cc67a   monkeyhouyi   巡查上报
325
        this.visible = true;
006cc67a   monkeyhouyi   巡查上报
326
327
        this.isDetail = isDetail || false;
        this.$nextTick(async () => {
73755355   monkeyhouyi   优化
328
          !isDetail && this.$refs["elForm"].resetFields();
006cc67a   monkeyhouyi   巡查上报
329
330
          if (this.dataForm.id) {
            let res = await getDetail(this.dataForm.id);
73755355   monkeyhouyi   优化
331
            if(!res.data) return;
006cc67a   monkeyhouyi   巡查上报
332
            this.dataForm = res.data;
fcbf44a0   monkeyhouyi   1
333
334
335
336
            if(this.questionTypeOptions.findIndex(v => v.fullName == this.dataForm.questionType) == -1) {
              this.dataForm.otherQuestionType = res.data.questionType;
              this.dataForm.questionType = '其他';
            }
ff36c85d   monkeyhouyi   1
337
            this.dataForm.selfMediaPlatformType = res.data.selfMediaPlatformType || '--';
006cc67a   monkeyhouyi   巡查上报
338
339
340
          }
        });
      },
006cc67a   monkeyhouyi   巡查上报
341
342
343
      dataFormSubmit() {
        this.$refs["elForm"].validate(async (valid) => {
          if (valid) {
ff36c85d   monkeyhouyi   1
344
345
346
            let obj = {
              ...this.dataForm,
              questionType: this.dataForm.questionType == '其他' ? this.dataForm.otherQuestionType : this.dataForm.questionType,
a2d1a53f   monkeyhouyi   提交
347
              selfMediaPlatformType: this.dataForm.selfMediaPlatformType == '其他' ? this.dataForm.selfMediaPlatformTypeOther : this.dataForm.questionType,
ff36c85d   monkeyhouyi   1
348
            }
94f06e38   monkeyhouyi   优化
349
            this.btnLoading = true;
ff36c85d   monkeyhouyi   1
350
            let res = !this.dataForm.id ? await addForm(obj) : await updataForm(obj);
94f06e38   monkeyhouyi   优化
351
            if (res.code != 200) return this.btnLoading = false;
006cc67a   monkeyhouyi   巡查上报
352
353
354
355
356
357
            this.$message({
              message: res.msg,
              type: "success",
              duration: 1000,
              onClose: () => {
                (this.visible = false), this.$emit("refresh", true);
c21fb5b0   monkeyhouyi   巡查上报页面
358
              },
006cc67a   monkeyhouyi   巡查上报
359
360
361
362
363
364
            });
          }
        });
      },
    },
  };
c21fb5b0   monkeyhouyi   巡查上报页面
365
  </script>
ff36c85d   monkeyhouyi   1
366
367
368
369
370
371
372
  <style lang="scss" scoped>
  .baseInspectionReportForm {
    :deep(.el-radio) {
      margin: 0 30px 8px 0;
    }
  }
  </style>