From 6fa42e992669e6c1b5d4be14e83e1a730ec36c40 Mon Sep 17 00:00:00 2001 From: MrShi <1878285526@qq.com> Date: 星期五, 22 十二月 2023 09:11:23 +0800 Subject: [PATCH] Mr.Shi --- 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