Blame view

src/views/baseInspectionReport/Form.vue 10.3 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%"
006cc67a   monkeyhouyi   巡查上报
9
    >
87e6927c   monkeyhouyi   弹框样式
10
      <el-row :gutter="15" class="NCC-dialog-content">
006cc67a   monkeyhouyi   巡查上报
11
12
13
14
15
16
17
18
19
        <el-form
          ref="elForm"
          :model="dataForm"
          size="small"
          label-width="100px"
          label-position="right"
          :disabled="!!isDetail"
          :rules="rules"
        >
93186f57   monkeyhouyi   前端整改页面
20
          <el-col :span="23" v-if="false">
006cc67a   monkeyhouyi   巡查上报
21
            <el-form-item label="主键" prop="id">
ff36c85d   monkeyhouyi   1
22
              <el-input v-model="dataForm.id" placeholder="请输入" clearable :style="{ width: '100%' }"></el-input>
006cc67a   monkeyhouyi   巡查上报
23
24
            </el-form-item>
          </el-col>
93186f57   monkeyhouyi   前端整改页面
25
          <el-col :span="23">
fcbf44a0   monkeyhouyi   1
26
            <el-form-item label="问题来源" prop="source">
61009cfc   monkeyhouyi   2024/8/8
27
              <el-radio-group v-model="dataForm.source">
ff36c85d   monkeyhouyi   1
28
                <el-radio v-for="(item, index) in sourceOptions" :key="index" :label="item.Id">{{ item.FullName }}</el-radio>
61009cfc   monkeyhouyi   2024/8/8
29
              </el-radio-group>
93186f57   monkeyhouyi   前端整改页面
30
31
32
            </el-form-item>
          </el-col>
          <el-col :span="23">
ff36c85d   monkeyhouyi   1
33
            <el-form-item label="系统名称" prop="platformName">
fcbf44a0   monkeyhouyi   1
34
              <el-select
ff36c85d   monkeyhouyi   1
35
                ref="select"
fcbf44a0   monkeyhouyi   1
36
37
38
39
                v-model="dataForm.platformName"
                filterable
                remote
                reserve-keyword
ff36c85d   monkeyhouyi   1
40
41
42
43
44
45
46
                placeholder="请输入系统名称"
                @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
47
              </el-select>
006cc67a   monkeyhouyi   巡查上报
48
49
            </el-form-item>
          </el-col>
93186f57   monkeyhouyi   前端整改页面
50
          <el-col :span="23">
ff36c85d   monkeyhouyi   1
51
52
53
            <el-form-item label="系统类型" prop="platformType">
              <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   前端整改页面
54
              </el-radio-group>
006cc67a   monkeyhouyi   巡查上报
55
56
            </el-form-item>
          </el-col>
ff36c85d   monkeyhouyi   1
57
58
59
60
61
62
          <el-col :span="23" v-show="dataForm.platformType == '580634746028033285' && !isDisabledTypeByName">
            <el-form-item label="归属平台" prop="selfMediaPlatformType">
              <el-input v-model="dataForm.selfMediaPlatformType" placeholder="请输入归属平台" clearable :style="{ width: '100%' }" :disabled="!!this.dataForm.id"/>
            </el-form-item>
          </el-col>
          <el-col :span="23">
006cc67a   monkeyhouyi   巡查上报
63
            <el-form-item label="问题类型" prop="questionType">
ff36c85d   monkeyhouyi   1
64
65
              <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   巡查上报
66
67
68
              </el-radio-group>
            </el-form-item>
          </el-col>
ff36c85d   monkeyhouyi   1
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
          <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   前端整改页面
84
          <el-col :span="23">
006cc67a   monkeyhouyi   巡查上报
85
            <el-form-item label="问题内容" prop="questionContent">
ff36c85d   monkeyhouyi   1
86
              <el-input v-model="dataForm.questionContent" placeholder="请输入" show-word-limit :style="{ width: '100%' }" type="textarea" :autosize="{ minRows: 4, maxRows: 4 }" />
006cc67a   monkeyhouyi   巡查上报
87
88
            </el-form-item>
          </el-col>
93186f57   monkeyhouyi   前端整改页面
89
          <el-col :span="23">
ff36c85d   monkeyhouyi   1
90
91
            <el-form-item label="链接" prop="link">
              <el-input v-model="dataForm.link" placeholder="请输入链接" clearable :style="{ width: '100%' }"></el-input>
006cc67a   monkeyhouyi   巡查上报
92
93
            </el-form-item>
          </el-col>
93186f57   monkeyhouyi   前端整改页面
94
          <el-col :span="23">
61009cfc   monkeyhouyi   2024/8/8
95
            <el-form-item label="关键词" prop="questionClass">
ff36c85d   monkeyhouyi   1
96
              <el-input v-model="dataForm.questionClass" placeholder="请输入关键词" clearable :style="{ width: '100%' }"></el-input>
61009cfc   monkeyhouyi   2024/8/8
97
98
99
100
            </el-form-item>
          </el-col>
          <el-col :span="23">
            <el-form-item label="附件" prop="obtainEvidence">
ff36c85d   monkeyhouyi   1
101
              <NCC-UploadFz v-model="dataForm.obtainEvidence" :fileSize="5" sizeUnit="MB" :limit="9" buttonText="点击上传" />
006cc67a   monkeyhouyi   巡查上报
102
103
104
105
106
107
            </el-form-item>
          </el-col>
        </el-form>
      </el-row>
      <span slot="footer" class="dialog-footer">
        <el-button @click="visible = false">取 消</el-button>
ff36c85d   monkeyhouyi   1
108
        <el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail">确 定</el-button>
006cc67a   monkeyhouyi   巡查上报
109
110
      </span>
    </el-dialog>
c21fb5b0   monkeyhouyi   巡查上报页面
111
112
  </template>
  <script>
006cc67a   monkeyhouyi   巡查上报
113
114
115
  import request from "@/utils/request";
  import { getDictionaryDataSelector } from "@/api/systemData/dictionary";
  import { getDetail, addForm, updataForm } from "@/api/systemData/dataInterface";
fcbf44a0   monkeyhouyi   1
116
  import { getInfoList } from "@/api/baseData/info";
006cc67a   monkeyhouyi   巡查上报
117
118
119
120
121
122
123
  export default {
    components: {},
    props: [],
    data() {
      return {
        loading: false,
        visible: false,
fcbf44a0   monkeyhouyi   1
124
        name_loading: false,
006cc67a   monkeyhouyi   巡查上报
125
126
        isDetail: false,
        dataForm: {
006cc67a   monkeyhouyi   巡查上报
127
          id: undefined,
fcbf44a0   monkeyhouyi   1
128
          source: undefined,
ff36c85d   monkeyhouyi   1
129
130
          platformName: '',
          selfMediaPlatformType: '',
006cc67a   monkeyhouyi   巡查上报
131
132
133
134
135
          platformType: undefined,
          questionType: undefined,
          questionClass: undefined,
          questionContent: undefined,
          link: undefined,
fcbf44a0   monkeyhouyi   1
136
137
          accurateDescription: undefined,
          incorrectDescription: undefined,
006cc67a   monkeyhouyi   巡查上报
138
139
          obtainEvidence: [],
          annex: [],
fcbf44a0   monkeyhouyi   1
140
          otherQuestionType: undefined
006cc67a   monkeyhouyi   巡查上报
141
        },
93186f57   monkeyhouyi   前端整改页面
142
        rules: {
ff36c85d   monkeyhouyi   1
143
144
145
          platformName: [
            { required: true, message: "请选择系统名称", trigger: "blur" },
          ],
93186f57   monkeyhouyi   前端整改页面
146
          platformType: [
ff36c85d   monkeyhouyi   1
147
            { required: true, message: "请选择系统类型", trigger: "blur" },
93186f57   monkeyhouyi   前端整改页面
148
149
          ],
          questionType: [
ff36c85d   monkeyhouyi   1
150
            { required: true, message: "请选择问题类型", trigger: "blur" },
93186f57   monkeyhouyi   前端整改页面
151
          ],
ff36c85d   monkeyhouyi   1
152
153
154
          // otherQuestionType: [
          //   { required: true, message: "请输入其他问题类型", trigger: "blur" },
          // ],
93186f57   monkeyhouyi   前端整改页面
155
        },
ff36c85d   monkeyhouyi   1
156
        sourceOptions: [],
006cc67a   monkeyhouyi   巡查上报
157
158
        platformTypeOptions: [],
        questionTypeOptions: [],
fcbf44a0   monkeyhouyi   1
159
        nameOptions: [],
006cc67a   monkeyhouyi   巡查上报
160
161
      };
    },
ff36c85d   monkeyhouyi   1
162
163
164
165
166
167
168
    computed: {
      isDisabledTypeByName() {
        if(!this.nameOptions.length) return false;
        let index = this.nameOptions.findIndex(v => v.id == this.dataForm.platformName);
        return index != -1;
      }
    },
006cc67a   monkeyhouyi   巡查上报
169
170
    watch: {},
    created() {
fcbf44a0   monkeyhouyi   1
171
      this.loadList();
61009cfc   monkeyhouyi   2024/8/8
172
      this.getSourceOptions();
006cc67a   monkeyhouyi   巡查上报
173
174
175
176
177
      this.getplatformTypeOptions();
      this.getquestionTypeOptions();
    },
    mounted() {},
    methods: {
ff36c85d   monkeyhouyi   1
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
      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);
        this.dataForm.platformName = obj ? obj.id : val;
        this.dataForm.platformType = obj ? obj.systemType : '';
        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
196
        this.name_loading = true;
ff36c85d   monkeyhouyi   1
197
198
199
200
201
        request({
          url: `/Extend/basesysteminfo/GetNoPagingList`,
          method: "GET",
        }).then(({data}) => {
          this.nameOptions = data;
fcbf44a0   monkeyhouyi   1
202
          this.name_loading = false;
ff36c85d   monkeyhouyi   1
203
        })
fcbf44a0   monkeyhouyi   1
204
      },
006cc67a   monkeyhouyi   巡查上报
205
206
      async getplatformTypeOptions() {
        let list = this.$store.state.meta.system;
ff36c85d   monkeyhouyi   1
207
        !list && (list = await this.$store.dispatch("getTypeListByCode", "system"));
006cc67a   monkeyhouyi   巡查上报
208
209
        this.platformTypeOptions = list;
      },
61009cfc   monkeyhouyi   2024/8/8
210
211
212
213
214
215
216
217
      async getSourceOptions() {
        request({
          url: `/Extend/baseinspectionreport/GetReportSourceList`,
          method: "GET",
        }).then(({data}) => {
          this.sourceOptions = data;
        })
      },
006cc67a   monkeyhouyi   巡查上报
218
219
      getquestionTypeOptions() {
        getDictionaryDataSelector("577006814432855301").then((res) => {
ff36c85d   monkeyhouyi   1
220
          this.questionTypeOptions = [...res.data.list, {Id: '0', fullName: '其他'}];
006cc67a   monkeyhouyi   巡查上报
221
222
223
224
225
226
        });
      },
      goBack() {
        this.$emit("refresh");
      },
      init(id, isDetail) {
ff36c85d   monkeyhouyi   1
227
        this.dataForm.id = id || '';
006cc67a   monkeyhouyi   巡查上报
228
        this.visible = true;
006cc67a   monkeyhouyi   巡查上报
229
230
231
232
233
234
        this.isDetail = isDetail || false;
        this.$nextTick(async () => {
          this.$refs["elForm"].resetFields();
          if (this.dataForm.id) {
            let res = await getDetail(this.dataForm.id);
            this.dataForm = res.data;
fcbf44a0   monkeyhouyi   1
235
236
237
238
            if(this.questionTypeOptions.findIndex(v => v.fullName == this.dataForm.questionType) == -1) {
              this.dataForm.otherQuestionType = res.data.questionType;
              this.dataForm.questionType = '其他';
            }
ff36c85d   monkeyhouyi   1
239
            this.dataForm.selfMediaPlatformType = res.data.selfMediaPlatformType || '--';
006cc67a   monkeyhouyi   巡查上报
240
241
            if (!this.dataForm.obtainEvidence) this.dataForm.obtainEvidence = [];
            if (!this.dataForm.annex) this.dataForm.annex = [];
006cc67a   monkeyhouyi   巡查上报
242
243
244
          }
        });
      },
006cc67a   monkeyhouyi   巡查上报
245
246
247
      dataFormSubmit() {
        this.$refs["elForm"].validate(async (valid) => {
          if (valid) {
ff36c85d   monkeyhouyi   1
248
249
250
251
252
            let obj = {
              ...this.dataForm,
              questionType: this.dataForm.questionType == '其他' ? this.dataForm.otherQuestionType : this.dataForm.questionType,
            }
            let res = !this.dataForm.id ? await addForm(obj) : await updataForm(obj);
006cc67a   monkeyhouyi   巡查上报
253
254
255
256
257
258
            this.$message({
              message: res.msg,
              type: "success",
              duration: 1000,
              onClose: () => {
                (this.visible = false), this.$emit("refresh", true);
c21fb5b0   monkeyhouyi   巡查上报页面
259
              },
006cc67a   monkeyhouyi   巡查上报
260
261
262
263
264
265
            });
          }
        });
      },
    },
  };
c21fb5b0   monkeyhouyi   巡查上报页面
266
  </script>
ff36c85d   monkeyhouyi   1
267
268
269
270
271
272
273
  <style lang="scss" scoped>
  .baseInspectionReportForm {
    :deep(.el-radio) {
      margin: 0 30px 8px 0;
    }
  }
  </style>