From a2299a6d4a6f99e9c11132138f5d3e9ec68f03ea Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期五, 06 六月 2025 19:19:34 +0800 Subject: [PATCH] 开发更新 --- admin/src/views/workorder/workorderList.vue | 309 ++++++++++++++++++++++++--------------------------- 1 files changed, 145 insertions(+), 164 deletions(-) diff --git a/admin/src/views/workorder/workorderList.vue b/admin/src/views/workorder/workorderList.vue index 05a7417..6d497de 100644 --- a/admin/src/views/workorder/workorderList.vue +++ b/admin/src/views/workorder/workorderList.vue @@ -2,162 +2,97 @@ <TableLayout :permissions="['business:ywworkorder:query']"> <!-- 鎼滅储琛ㄥ崟 --> <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> - <el-form-item label="涓婚敭" prop="id"> - <el-input v-model="searchForm.id" placeholder="璇疯緭鍏ヤ富閿�" @keypress.enter.native="search"></el-input> + <el-form-item prop="areaType" label="浣嶇疆绫诲瀷"> + <el-select v-model="searchForm.areaType"> + <el-option label="瀹ゅ唴缁翠慨" value="0"></el-option> + <el-option label="鍏叡缁翠慨" value="1"></el-option> + </el-select> </el-form-item> - <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator"> - <el-input v-model="searchForm.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" @keypress.enter.native="search"></el-input> + <el-form-item label="閫夋嫨椤圭洰" prop="projectId"> + <el-select v-model="searchForm.projectId" @change="getBuild" clearable filterable> + <el-option v-for="item in projectList" :label="item.name" :value="item.id" /> + </el-select> </el-form-item> - <el-form-item label="鍒涘缓鏃堕棿" prop="createDate"> - <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" @change="search"/> + <el-form-item label="閫夋嫨妤煎畤" prop="buildingId"> + <el-select v-model="searchForm.buildingId" clearable filterable> + <el-option v-for="item in buildList" :label="item.name" :value="item.id" /> + </el-select> </el-form-item> - <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor"> - <el-input v-model="searchForm.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" @keypress.enter.native="search"></el-input> + <el-form-item prop="cateId" label="宸ュ崟鍒嗙被"> + <el-cascader v-model="searchForm.areaIds" @change="changeSel" placeholder="璇烽�夋嫨宸ュ崟鍒嗙被" clearable + :options="cateList" :props="{ + label: 'name', + value: 'id', + children: 'childCategoryList' + }"></el-cascader> </el-form-item> - <el-form-item label="鏇存柊鏃堕棿" prop="editDate"> - <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" @change="search"/> + <el-form-item label="鏉ユ簮" prop="origin"> + <el-select v-model="searchForm.origin" clearable filterable> + <el-option label="鑷缓" :value="0" /> + <el-option label="闂杞伐鍗�" :value="1" /> + </el-select> </el-form-item> - <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted"> - <el-input v-model="searchForm.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" @keypress.enter.native="search"></el-input> + <el-form-item label="涓婃姤鏃堕棿"> + <el-date-picker v-model="searchForm.selDate" @change="changeSelDate" format="yyyy-MM-dd" + value-format="yyyy-MM-dd" type="daterange"></el-date-picker> </el-form-item> - <el-form-item label="鏍囬" prop="title"> - <el-input v-model="searchForm.title" placeholder="璇疯緭鍏ユ爣棰�" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="澶囨敞" prop="remark"> - <el-input v-model="searchForm.remark" placeholder="璇疯緭鍏ュ娉�" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status"> - <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="鎺掑簭鐮�" prop="sortnum"> - <el-input v-model="searchForm.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="鎯呭喌璇存槑" prop="content"> - <el-input v-model="searchForm.content" placeholder="璇疯緭鍏ユ儏鍐佃鏄�" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="涓婇棬鏃堕棿" prop="getDate"> - <el-date-picker v-model="searchForm.getDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ヤ笂闂ㄦ椂闂�" @change="search"/> - </el-form-item> - <el-form-item label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)" prop="projectId"> - <el-input v-model="searchForm.projectId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_project)" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_building)" prop="buildingId"> - <el-input v-model="searchForm.buildingId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_building)" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="鎵�灞炴埧闂寸紪鐮侊紙鍏宠仈yw_room)" prop="roomId"> - <el-input v-model="searchForm.roomId" placeholder="璇疯緭鍏ユ墍灞炴埧闂寸紪鐮侊紙鍏宠仈yw_room)" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="鎻愭姤浜虹紪鐮�" prop="userId"> - <el-input v-model="searchForm.userId" placeholder="璇疯緭鍏ユ彁鎶ヤ汉缂栫爜" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="鑱旂郴鐢佃瘽" prop="phone"> - <el-input v-model="searchForm.phone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="鎻愭姤鏃堕棿" prop="submitDate"> - <el-date-picker v-model="searchForm.submitDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ彁鎶ユ椂闂�" @change="search"/> - </el-form-item> - <el-form-item label="宸ュ崟鍒嗙被缂栫爜(鍏宠仈category锛�" prop="cateId"> - <el-input v-model="searchForm.cateId" placeholder="璇疯緭鍏ュ伐鍗曞垎绫荤紪鐮�(鍏宠仈category锛�" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="淇濅慨鍖哄煙绫诲瀷 0瀹ゅ唴缁翠慨 1鍏叡鍖哄煙" prop="areaType"> - <el-input v-model="searchForm.areaType" placeholder="璇疯緭鍏ヤ繚淇尯鍩熺被鍨� 0瀹ゅ唴缁翠慨 1鍏叡鍖哄煙" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="宸ュ崟缂栧彿" prop="code"> - <el-input v-model="searchForm.code" placeholder="璇疯緭鍏ュ伐鍗曠紪鍙�" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="澶勭悊鐘舵�� 0寰呭鐞� 1宸插垎娲� 2宸插鐞�" prop="dealStatus"> - <el-input v-model="searchForm.dealStatus" placeholder="璇疯緭鍏ュ鐞嗙姸鎬� 0寰呭鐞� 1宸插垎娲� 2宸插鐞�" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="鍒嗘淳浜虹紪鐮�(鍏宠仈system_user)" prop="dispatchUserId"> - <el-input v-model="searchForm.dispatchUserId" placeholder="璇疯緭鍏ュ垎娲句汉缂栫爜(鍏宠仈system_user)" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="鍒嗘淳鏃堕棿" prop="dispatchDate"> - <el-date-picker v-model="searchForm.dispatchDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垎娲炬椂闂�" @change="search"/> - </el-form-item> - <el-form-item label="鍒嗘淳澶勭悊璇存槑" prop="dispatchInfo"> - <el-input v-model="searchForm.dispatchInfo" placeholder="璇疯緭鍏ュ垎娲惧鐞嗚鏄�" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="澶勭悊浜虹紪鐮�(鍏宠仈system_user)" prop="dealUserId"> - <el-input v-model="searchForm.dealUserId" placeholder="璇疯緭鍏ュ鐞嗕汉缂栫爜(鍏宠仈system_user)" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="澶勭悊鏃堕棿" prop="dealDate"> - <el-date-picker v-model="searchForm.dealDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ鐞嗘椂闂�" @change="search"/> - </el-form-item> - <el-form-item label="澶勭悊澶囨敞" prop="dealInfo"> - <el-input v-model="searchForm.dealInfo" placeholder="璇疯緭鍏ュ鐞嗗娉�" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="澶勭悊鏂瑰紡 0鎸囨淳鍚庡鐞� 1鐩存帴鍥炲" prop="dealType"> - <el-input v-model="searchForm.dealType" placeholder="璇疯緭鍏ュ鐞嗘柟寮� 0鎸囨淳鍚庡鐞� 1鐩存帴鍥炲" @keypress.enter.native="search"></el-input> - </el-form-item> + <section> <el-button type="primary" @click="search">鎼滅储</el-button> - <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywworkorder:exportExcel']" @click="exportExcel">瀵煎嚭</el-button> <el-button @click="reset">閲嶇疆</el-button> </section> </el-form> <!-- 琛ㄦ牸鍜屽垎椤� --> <template v-slot:table-wrap> <ul class="toolbar" v-permissions="['business:ywworkorder:create', 'business:ywworkorder:delete']"> - <li><el-button type="primary" @click="$refs.operaYwWorkorderWindow.open('鏂板缓杩愮淮宸ュ崟淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:ywworkorder:create']">鏂板缓</el-button></li> - <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:ywworkorder:delete']">鍒犻櫎</el-button></li> + <li><el-button type="primary" @click="$refs.operaYwWorkorderWindow.open('鏂板缓宸ュ崟')" icon="el-icon-plus" + v-permissions="['business:ywworkorder:create']">鏂板缓</el-button></li> + <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywworkorder:exportExcel']" + @click="exportExcel" plain>瀵煎嚭</el-button> </ul> - <el-table - v-loading="isWorking.search" - :data="tableData.list" - stripe - @selection-change="handleSelectionChange" - > - <el-table-column type="selection" width="55"></el-table-column> - <el-table-column prop="id" label="涓婚敭" min-width="100px"></el-table-column> - <el-table-column prop="creator" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column> - <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column> - <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column> - <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column> - <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column> - <el-table-column prop="title" label="鏍囬" min-width="100px"></el-table-column> - <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column> - <el-table-column prop="status" label="鐘舵�� 0鍚敤 1绂佺敤" min-width="100px"></el-table-column> - <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column> - <el-table-column prop="content" label="鎯呭喌璇存槑" min-width="100px"></el-table-column> - <el-table-column prop="getDate" label="涓婇棬鏃堕棿" min-width="100px"></el-table-column> - <el-table-column prop="projectId" label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)" min-width="100px"></el-table-column> - <el-table-column prop="buildingId" label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_building)" min-width="100px"></el-table-column> - <el-table-column prop="roomId" label="鎵�灞炴埧闂寸紪鐮侊紙鍏宠仈yw_room)" min-width="100px"></el-table-column> - <el-table-column prop="userId" label="鎻愭姤浜虹紪鐮�" min-width="100px"></el-table-column> - <el-table-column prop="phone" label="鑱旂郴鐢佃瘽" min-width="100px"></el-table-column> - <el-table-column prop="submitDate" label="鎻愭姤鏃堕棿" min-width="100px"></el-table-column> - <el-table-column prop="cateId" label="宸ュ崟鍒嗙被缂栫爜(鍏宠仈category锛�" min-width="100px"></el-table-column> - <el-table-column prop="areaType" label="淇濅慨鍖哄煙绫诲瀷 0瀹ゅ唴缁翠慨 1鍏叡鍖哄煙" min-width="100px"></el-table-column> - <el-table-column prop="code" label="宸ュ崟缂栧彿" min-width="100px"></el-table-column> - <el-table-column prop="dealStatus" label="澶勭悊鐘舵�� 0寰呭鐞� 1宸插垎娲� 2宸插鐞�" min-width="100px"></el-table-column> - <el-table-column prop="dispatchUserId" label="鍒嗘淳浜虹紪鐮�(鍏宠仈system_user)" min-width="100px"></el-table-column> - <el-table-column prop="dispatchDate" label="鍒嗘淳鏃堕棿" min-width="100px"></el-table-column> - <el-table-column prop="dispatchInfo" label="鍒嗘淳澶勭悊璇存槑" min-width="100px"></el-table-column> - <el-table-column prop="dealUserId" label="澶勭悊浜虹紪鐮�(鍏宠仈system_user)" min-width="100px"></el-table-column> - <el-table-column prop="dealDate" label="澶勭悊鏃堕棿" min-width="100px"></el-table-column> - <el-table-column prop="dealInfo" label="澶勭悊澶囨敞" min-width="100px"></el-table-column> - <el-table-column prop="dealType" label="澶勭悊鏂瑰紡 0鎸囨淳鍚庡鐞� 1鐩存帴鍥炲" min-width="100px"></el-table-column> - <el-table-column - v-if="containPermissions(['business:ywworkorder:update', 'business:ywworkorder:delete'])" - label="鎿嶄綔" - min-width="120" - fixed="right" - > + <el-table v-loading="isWorking.search" :data="tableData.list" stripe> + <el-table-column prop="areaType" label="浣嶇疆绫诲瀷" min-width="70px"> + <template v-slot="scope"> + <span v-if="scope.row.areaType == 0">瀹ゅ唴瑁呬慨</span> + <span v-if="scope.row.areaType == 1">鍏叡鍖哄煙</span> + </template> + </el-table-column> + <el-table-column prop="" label="鎶ヤ慨鍖哄煙" min-width="100px"> + <template v-slot="scope"> + <span>{{ scope.row.buildingName }} / {{ scope.row.areaType == 0 ? scope.row.roomNum : scope.row.floorName + }}</span> + </template> + </el-table-column> + <el-table-column prop="categoryName" label="宸ュ崟鍒嗙被" min-width="100px"></el-table-column> + <el-table-column label="鏉ユ簮" min-width="100px"> <template slot-scope="{row}"> - <el-button type="text" @click="$refs.operaYwWorkorderWindow.open('缂栬緫杩愮淮宸ュ崟淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:ywworkorder:update']">缂栬緫</el-button> - <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywworkorder:delete']">鍒犻櫎</el-button> + <span v-if="row.origin == 0">鑷缓</span> + <span v-if="row.origin == 1">闂杞伐鍗�</span> + </template> + </el-table-column> + <el-table-column prop="creatorName" label="涓婃姤浜�" min-width="80px"></el-table-column> + <el-table-column prop="createDate" label="涓婃姤鏃堕棿" min-width="100px"></el-table-column> + <el-table-column prop="dealUserName" label="澶勭悊浜�" min-width="80px"></el-table-column> + <el-table-column label="宸ュ崟鐘舵��" min-width="70px"> + <template slot-scope="{row}"> + <span v-if="row.dealStatus == 0">寰呮寚娲�</span> + <span v-if="row.dealStatus == 1">宸叉寚娲�</span> + <span v-if="row.dealStatus == 2">宸插鐞�</span> + </template> + </el-table-column> + <el-table-column v-if="containPermissions(['business:ywworkorder:update'])" label="鎿嶄綔" width="80" + fixed="right"> + <template slot-scope="{row}"> + <span @click="handleDetail(row)" class="primaryColor cu">鏌ョ湅璇︽儏</span> </template> </el-table-column> </el-table> - <pagination - @size-change="handleSizeChange" - @current-change="handlePageChange" - :pagination="tableData.pagination" - > + <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination"> </pagination> </template> + <Detail v-if="openDetail" ref="DetailRef" @close="openDetail = false" @success="search" /> <!-- 鏂板缓/淇敼 --> - <OperaYwWorkorderWindow ref="operaYwWorkorderWindow" @success="handlePageChange"/> + <OperaYwWorkorderWindow ref="operaYwWorkorderWindow" @success="handlePageChange" /> </TableLayout> </template> @@ -166,47 +101,32 @@ import TableLayout from '@/layouts/TableLayout' import Pagination from '@/components/common/Pagination' import OperaYwWorkorderWindow from './components/OperaYwWorkorderWindow' +import Detail from './components/detail' +import { getBuildList } from '@/api/project/ywBuilding' +import { getProjectList } from '@/api/project/ywProject' +import { fetchList as getCateList } from '@/api/business/category.js' export default { name: 'YwWorkorder', extends: BaseTable, - components: { TableLayout, Pagination, OperaYwWorkorderWindow }, - data () { + components: { TableLayout, Pagination, Detail, OperaYwWorkorderWindow }, + data() { return { // 鎼滅储 + openDetail: false, searchForm: { - id: '', - creator: '', - createDate: '', - editor: '', - editDate: '', - isdeleted: '', - title: '', - remark: '', - status: '', - sortnum: '', - content: '', - getDate: '', + selDate: [], + areaIds: '', projectId: '', buildingId: '', - roomId: '', - userId: '', - phone: '', - submitDate: '', cateId: '', - areaType: '', - code: '', - dealStatus: '', - dispatchUserId: '', - dispatchDate: '', - dispatchInfo: '', - dealUserId: '', - dealDate: '', - dealInfo: '', - dealType: '' - } + origin: '' + }, + projectList: [], + buildList: [], + cateList: [], } }, - created () { + created() { this.config({ module: '杩愮淮宸ュ崟淇℃伅琛�', api: '/workorder/ywWorkorder', @@ -214,6 +134,67 @@ 'field.main': 'id' }) this.search() + this.initData() + }, + methods: { + handleDetail(row) { + this.openDetail = true + this.$nextTick(() => { + this.$refs.DetailRef.open('宸ュ崟璇︽儏', { workorderId: row.id }, true) + // this.$refs.DetailRef.isShow = true + // this.$refs.DetailRef.visible = true + // this.$refs.DetailRef.id = row.id + // this.$refs.DetailRef.getDetail() + + }) + }, + initData() { + getProjectList({}).then(res => { + this.projectList = res + }) + getCateList({ + model: { type: 3 }, + capacity: 1000, + page: 1, + }).then(res => { + this.cateList = res.records || [] + }) + }, + getBuild(projectId) { + this.$set(this.searchForm, 'buildingId', '') + getBuildList({ projectId }).then(res => { + this.buildList = res + }) + }, + changeSel(e) { + if (e && e.length == 2) { + this.$set(this.searchForm, 'cateId', e[1]) + } else { + this.$set(this.searchForm, 'cateId', '') + } + }, + reset() { + this.searchForm = { + selDate: [], + areaType: '', + areaIds: '', + projectId: '', + buildingId: '', + cateId: '', + } + this.buildList = [] + this.search() + }, + changeSelDate(e) { + if (e && e.length > 0) { + this.$set(this.searchForm, 'queryStartTime', e[0] + ' 00:00:00') + this.$set(this.searchForm, 'queryEndTime', e[1] + ' 23:59:59') + } else { + this.$set(this.searchForm, 'queryStartTime', '') + this.$set(this.searchForm, 'queryEndTime', '') + } + + }, } } </script> -- Gitblit v1.9.3