From 22a00c47589ded6699a563690ee5545b73eaca01 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 22 十二月 2023 09:30:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 admin/src/components/business/OperaProblemsWindow.vue |  171 +++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 141 insertions(+), 30 deletions(-)

diff --git a/admin/src/components/business/OperaProblemsWindow.vue b/admin/src/components/business/OperaProblemsWindow.vue
index 5fb5b7c..abd0aae 100644
--- a/admin/src/components/business/OperaProblemsWindow.vue
+++ b/admin/src/components/business/OperaProblemsWindow.vue
@@ -1,50 +1,63 @@
 <template>
     <GlobalWindow
-            :title="title"
-            :visible.sync="visible"
-            :confirm-working="isWorking"
-            @confirm="confirm"
+        :title="title"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
     >
         <el-form :model="form" ref="form" :rules="rules">
             <el-form-item label="棰樼洰" prop="title">
                 <el-input v-model="form.title" placeholder="璇疯緭鍏ラ鐩�" v-trim/>
             </el-form-item>
             <el-form-item label="棰樼洰绫诲瀷" prop="type">
-                <el-select v-model="form.type" placeholder="璇烽�夋嫨">
-                    <el-option label="鍒ゆ柇" value="0"></el-option>
-                    <el-option label="鍗曢��" value="1"></el-option>
-                    <el-option label="澶氶��" value="2"></el-option>
+                <el-select v-model="form.type" @change="changeType" placeholder="璇烽�夋嫨">
+                    <el-option label="鍒ゆ柇" :value="0"></el-option>
+                    <el-option label="鍗曢��" :value="1"></el-option>
+                    <el-option label="澶氶��" :value="2"></el-option>
                 </el-select>
             </el-form-item>
             <el-form-item label="閫傜敤鐢ㄦ埛" prop="useType">
                 <el-radio-group v-model="form.useType">
-                    <el-radio :label="0">鍔冲姟浜哄憳</el-radio>
-                    <el-radio :label="1">鏅�氳瀹�</el-radio>
+                    <el-radio :label="0">璁垮鍜屽姵鍔�</el-radio>
+                    <el-radio :label="1">浠呰瀹�</el-radio>
+                    <el-radio :label="2">浠呭姵鍔�</el-radio>
                 </el-radio-group>
             </el-form-item>
             <el-form-item label="棰樼洰椤哄簭(鍗囧簭)" prop="sortnu">
                 <el-input v-model="form.sortnu" placeholder="璇疯緭鍏�" v-trim/>
             </el-form-item>
-            <el-form-item label="閫夐」闆嗗悎" prop="options" v-if="form.type === '1' || form.type === '2'">
+            <el-form-item label="閫夐」闆嗗悎" prop="objectList" v-if="form.type === 1 || form.type === 2">
                 <el-button type="primary" style="width: 120px; margin-bottom: 15px;" @click="add" icon="el-icon-plus">娣诲姞閫夐」</el-button>
                 <el-tabs v-model="editableTabsValue" type="card" closable @tab-remove="removeTab">
                     <el-tab-pane
-                        v-for="item in problems"
-                        :key="item.name"
-                        :label="item.name"
+                        v-for="item in form.objectList"
+                        :key="item.code"
+                        :label="item.sort"
                         :name="item.id"
                     >
-                        <el-input v-model="item.val" placeholder="璇疯緭鍏�" v-trim/>
+                        <el-input v-model="item.value" placeholder="璇疯緭鍏�" v-trim/>
                     </el-tab-pane>
                 </el-tabs>
             </el-form-item>
             <el-form-item label="姝g‘绛旀" prop="answer">
-                <el-select v-model="form.answer" multiple placeholder="璇烽�夋嫨姝g‘绛旀">
+                <el-select v-model="form.answer" v-if="form.type === 0" placeholder="璇烽�夋嫨姝g‘绛旀">
+                    <el-option label="姝g‘" value="姝g‘"></el-option>
+                    <el-option label="閿欒" value="閿欒"></el-option>
+                </el-select>
+                <el-select v-model="form.answer" v-if="form.type === 1" placeholder="璇烽�夋嫨姝g‘绛旀">
                     <el-option
-                        v-for="item in problems"
+                        v-for="item in form.objectList"
                         :key="item.id"
-                        :label="item.name"
-                        :value="item.id">
+                        :label="item.sort"
+                        :value="item.code">
+                    </el-option>
+                </el-select>
+                <el-select v-model="form.answer" v-if="form.type === 2" multiple placeholder="璇烽�夋嫨姝g‘绛旀">
+                    <el-option
+                    v-for="item in form.objectList"
+                    :key="item.id"
+                    :label="item.sort"
+                    :value="item.code">
                     </el-option>
                 </el-select>
             </el-form-item>
@@ -65,19 +78,30 @@
       form: {
         id: null,
         title: '',
-        options: '',
+        objectList: [
+          { code: 'A', value: '', sort: '閫夐」A', id: '0' }
+        ],
         answer: '',
         sortnu: '',
-        type: '',
-        useType: ''
+        type: 0,
+        useType: 0
       },
       // 楠岃瘉瑙勫垯
       rules: {
+        title: [
+          { required: true, message: '璇疯緭鍏ラ鐩悕绉�' }
+        ],
+        type: [
+          { required: true, message: '璇烽�夋嫨棰樼洰绫诲瀷' }
+        ],
+        useType: [
+          { required: true, message: '璇烽�夋嫨閫傜敤鐢ㄦ埛' }
+        ],
+        answer: [
+          { required: true, message: '璇烽�夋嫨姝g‘绛旀' }
+        ]
       },
       editableTabsValue: '0',
-      problems: [
-        { name: '閫夋嫨A', val: '', id: '0' }
-      ],
       arr: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
     }
   },
@@ -88,19 +112,106 @@
     })
   },
   methods: {
+    open (title, target) {
+      this.title = title
+      this.editableTabsValue = '0'
+      this.visible = true
+      // 鏂板缓
+      if (target == null) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          this.form[this.configData['field.id']] = null
+        })
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+      })
+    },
+    confirm () {
+      this.$refs.form.validate((valid) => {
+        if (!valid) {
+          return
+        }
+        // 璋冪敤鏂板缓鎺ュ彛
+        this.isWorking = true
+        if (this.form.id == null || this.form.id === '') {
+          this.api.create({
+            // eslint-disable-next-line valid-typeof
+            answer: typeof this.form.answer === 'object' ? this.form.answer.join(',') : this.form.answer,
+            title: this.form.title,
+            sortnu: this.form.sortnu,
+            type: this.form.type,
+            useType: this.form.useType,
+            objectList: this.form.objectList
+          })
+            .then(() => {
+              this.visible = false
+              this.$tip.apiSuccess('鏂板缓鎴愬姛')
+              this.$emit('success')
+            })
+            .catch(e => {
+              this.$tip.apiFailed(e)
+            })
+            .finally(() => {
+              this.isWorking = false
+            })
+        } else {
+          this.api.updateById({
+            id: this.form.id,
+            // eslint-disable-next-line valid-typeof
+            answer: typeof this.form.answer === 'object' ? this.form.answer.join(',') : this.form.answer,
+            title: this.form.title,
+            sortnu: this.form.sortnu,
+            type: this.form.type,
+            useType: this.form.useType,
+            objectList: this.form.objectList
+          })
+            .then(() => {
+              this.visible = false
+              this.$tip.apiSuccess('淇敼鎴愬姛')
+              this.$emit('success')
+            })
+            .catch(e => {
+              this.$tip.apiFailed(e)
+            })
+            .finally(() => {
+              this.isWorking = false
+            })
+        }
+      })
+    },
+    changeType (e) {
+      this.editableTabsValue = '0'
+      this.form.objectList = [
+        { code: 'A', value: '', sort: '閫夐」A', id: '0' }
+      ]
+      this.$nextTick(() => {
+        if (e === '0' || e === '1') {
+          this.form.answer = ''
+        } else {
+          this.form.answer = []
+        }
+      })
+      this.$forceUpdate()
+    },
     removeTab (e) {
-      this.problems.splice(e, 1)
+      this.form.objectList.splice(e, 1)
       if (e === this.editableTabsValue) {
         this.editableTabsValue = '0'
       }
-      this.problems.forEach((item, index) => {
-        item.name = '閫夐」' + this.arr[index]
+      this.form.objectList.forEach((item, index) => {
+        item.code = this.arr[index]
+        item.sort = '閫夐」' + this.arr[index]
         item.id = index.toString()
       })
     },
     add () {
-      const name = '閫夐」' + this.arr[this.problems.length]
-      this.problems.push({ name, val: '', id: this.problems.length.toString() })
+      const sort = '閫夐」' + this.arr[this.form.objectList.length]
+      this.form.objectList.push({ sort, value: '', code: this.arr[this.form.objectList.length], id: this.form.objectList.length.toString() })
     }
   }
 }

--
Gitblit v1.9.3