From 66b84de58e3efae14c1e258ee716e02ad9557497 Mon Sep 17 00:00:00 2001 From: doum <doum> Date: 星期四, 09 十月 2025 08:48:50 +0800 Subject: [PATCH] 最新版本541200007 --- admin/src/components/business/OperaCarsWindow.vue | 261 ++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 212 insertions(+), 49 deletions(-) diff --git a/admin/src/components/business/OperaCarsWindow.vue b/admin/src/components/business/OperaCarsWindow.vue index db06626..d61c16e 100644 --- a/admin/src/components/business/OperaCarsWindow.vue +++ b/admin/src/components/business/OperaCarsWindow.vue @@ -1,75 +1,238 @@ <template> - <GlobalWindow - :title="title" - width="500px" - :visible.sync="visible" - :confirm-working="isWorking" - @confirm="confirm" - > - <el-form :model="form" ref="form" :rules="rules"> - <el-form-item label="杞︾墝鍙�" prop="code"> - <el-input v-model="form.code" placeholder="璇疯緭鍏ヨ溅鐗屽彿" v-trim/> - </el-form-item> - <el-form-item label="鐢ㄦ埛绫诲瀷" prop="code"> - <el-radio-group v-model="form.code"> - <el-radio label="鍐呴儴鍛樺伐"></el-radio> - <el-radio label="鍔冲姟浜哄憳"></el-radio> - </el-radio-group> - </el-form-item> - <el-form-item label="閫夋嫨鐢ㄦ埛" prop="code"> - <el-select v-model="form.code" filterable placeholder="璇烽�夋嫨"> - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="鎺堟潈鏈夋晥鏈�" prop="code"> - <el-date-picker - v-model="form.code" - type="daterange" - range-separator="鑷�" - start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡"> - </el-date-picker> - </el-form-item> - <el-form-item label="鎺堟潈鍋滆溅鍦�" prop="code"> - <el-radio-group v-model="form.code"> - <el-radio label="鍏ㄩ儴鍋滆溅鍦�"></el-radio> - <el-radio label="閮ㄥ垎鍋滆溅鍦�"></el-radio> - </el-radio-group> - </el-form-item> - </el-form> - </GlobalWindow> + <GlobalWindow :title="title" width="500px" @close="close" :visible.sync="visible" :confirm-working="isWorking" + @confirm="confirm"> + <el-form :model="form" ref="form" :rules="rules"> + <el-form-item label="杞︾墝鍙�" prop="code"> + <el-input v-model="form.code" placeholder="璇疯緭鍏ヨ溅鐗屽彿" v-trim /> + </el-form-item> +<!-- <el-form-item label="澶囨敞" prop="type"> + <el-radio-group v-model="form.type"> + <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="cateId"> +<!-- <el-cascader v-model="form.cateId" @change="changeSel" :options="cateList" :props="{ + label: 'name', + value: 'id', + children: 'childCategoryList', + checkStrictly: true + }"></el-cascader>--> + <treeselect + @select="cateChange" + v-model="form.cateId" + placeholder="璇烽�夋嫨" + :options="cateList" + :normalizer="normalizeOptions1" + :default-expand-level="1" + noChildrenText="娌℃湁瀛愰�夐」" + noOptionsText="娌℃湁鍙�夐」" + noResultsText="娌℃湁鍖归厤鐨勭粨鏋�" /> + </el-form-item> + <el-form-item label="閫夋嫨缁勭粐锛�" prop="groupId"> + <treeselect + @input="changeSel" + v-model="form.groupId" + placeholder="璇烽�夋嫨" + :options="companyTree" + :normalizer="normalizeOptions" + :default-expand-level="1" + noChildrenText="娌℃湁瀛愰�夐」" + noOptionsText="娌℃湁鍙�夐」" + noResultsText="娌℃湁鍖归厤鐨勭粨鏋�" /> +<!-- <el-select v-model="form.groupId" @change="changeSel" clearable filterable placeholder="璇烽�夋嫨"> + <template v-for="item in companyList"> + <el-option v-if="item.countNum && item.countNum>0" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </template> + </el-select>--> + </el-form-item> + <el-form-item label="閫夋嫨杞︿富锛�" prop="memberId"> + <el-select v-model="form.memberId" clearable filterable placeholder="璇烽�夋嫨"> + <el-option v-for="item in memberList" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-form> + </GlobalWindow> </template> <script> import BaseOpera from '@/components/base/BaseOpera' import GlobalWindow from '@/components/common/GlobalWindow' +import { allList } from '@/api/business/member' +import { fetchList } from '@/api/business/category.js' +import { create, updateById } from '@/api/business/cars' +import { companyGetList, fetchList as companyTree } from '@/api/business/company' +import { Message } from 'element-ui' export default { - name: 'OperaCarsWindow', + name: 'OperaInternalCompanyWindow', extends: BaseOpera, components: { GlobalWindow }, data () { return { // 琛ㄥ崟鏁版嵁 + memberList: [], form: { id: null, - code: '' + code: null, + memberId: null, + // type: 0, + groupId: null, + cateId: null }, + selectCate: null, + cateList: [], + companyList: [], + companyTree: [], // 楠岃瘉瑙勫垯 rules: { - }, - options: [] + code: [{ required: true, message: '璇疯緭鍏ヨ溅鐗屽彿' }], + groupId: [{ required: true, message: '璇烽�夋嫨缁勭粐' }] + /* type: [ + { required: true, message: '璇烽�夋嫨澶囨敞' } + ] */ + } } }, created () { this.config({ - api: '/business/parkBook', + api: '/business/cars', 'field.id': 'id' }) + }, + methods: { + open (title, target) { + this.title = title + this.visible = true + this.getCate() + this.getfindCompanyTreePage() + // 鏂板缓缁勭粐 + if (target == null) { + this.$nextTick(() => { + this.$refs.form.resetFields() + this.form[this.configData['field.id']] = null + this.form.type = 0 + }) + } + // 缂栬緫 + // this.$nextTick(() => { + // for (const key in this.form) { + // this.form[key] = target[key] + // } + // }) + }, + cateChange(node){ + this.selectCate = node + }, + // 瑙勮寖鍖栭�夐」鏁版嵁鐨勬柟娉� + normalizeOptions1 (node) { + if (!node.childCategoryList || !node.childCategoryList.length) { + // 鍘绘帀children=[]鐨刢hildren灞炴�� + delete node.childCategoryList + } + var node1 = { + id: node.id, + label: node.name, + parentId: node.parentId, + children: node.childCategoryList, + } + return node1 + }, + normalizeOptions (node) { + if (!node.childList || !node.childList.length) { + // 鍘绘帀children=[]鐨刢hildren灞炴�� + delete node.childList + } + return { + id: node.id, + label: node.name, + children: node.childList + } + }, + changeSel () { + const { form } = this + if (form.groupId) { + this.loadMember() + } + this.form.memberId = '' + }, + confirm () { + console.log('form', this.form.cateId) + const { form } = this + if(this.selectCate && this.selectCate.childCategoryList && this.selectCate.childCategoryList.length) { + return Message.error('璇烽�夋嫨浜岀骇鍒嗙被') + } + this.$refs.form.validate((valid) => { + if (valid) { + const fn = form.id ? updateById : create + fn({ + ...form + // cateId: form.cateId[1] + }).then(res => { + Message.success('淇濆瓨鎴愬姛') + this.visible = false + this.$emit('success') + }) + } + }) + }, + close () { + this.visible = false + this.$emit('close') + }, + handleChange (val) { + + }, + getCate () { + fetchList({ + model: {type:1}, + capacity: 1000, + page: 1 + }).then(res => { + if (res && res.records && res.records.length > 0) { + res.records[0].fsStatus = 1 + this.cateList = res.records || [] + + } + }) + }, + getCompany () { + companyGetList({ + model: { }, // 鏈夊憳宸ョ殑鏁版嵁 + capacity: 10000, + page: 1 + }).then(res => { + this.companyList = res.records || [] + }) + }, + getfindCompanyTreePage () { + companyTree() + .then(res => { + if (res && res.length > 0) { + res[0].fsStatus = 1 + this.companyTree = res + } + }) + }, + loadMember () { + const { form } = this + allList({ + type: 2, + companyId: form.groupId + + }) + .then(res => { + this.memberList = res + }) + .catch(e => { + // this.$tip.apiFailed(e) + }) + .finally(() => { + this.isWorking = false + }) + } } } </script> -- Gitblit v1.9.3