From d14d7109d6d8a3354577a5ae3ed7a8fd13d44e6c Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 10 四月 2025 16:12:20 +0800
Subject: [PATCH] 代码初始化
---
admin/src/api/business/category.js | 5
admin/src/assets/style/variables.scss | 8
admin/src/views/business/workorderShe.vue | 12
admin/src/views/business/workorderDbh.vue | 162 +++++++
admin/src/components/business/OperaWorkorderDetailDcaWindow.vue | 494 +++++++++++++++++++++
server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java | 8
server/src/main/java/com/doumee/api/business/CategoryController.java | 6
server/src/main/java/com/doumee/dao/business/model/Workorder.java | 3
server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java | 1
admin/src/components/business/OperaWorkorderDetailSheWindow.vue | 6
admin/src/views/business/workorderDca.vue | 154 ++++++
admin/src/components/business/OperaWorkorderDetailDbhWindow.vue | 494 +++++++++++++++++++++
12 files changed, 1,342 insertions(+), 11 deletions(-)
diff --git a/admin/src/api/business/category.js b/admin/src/api/business/category.js
index 2872408..d60d34e 100644
--- a/admin/src/api/business/category.js
+++ b/admin/src/api/business/category.js
@@ -6,6 +6,11 @@
trim: true
})
}
+export function allList (data) {
+ return request.post('/business/category/list', data, {
+ trim: true
+ })
+}
export function treeList (data) {
return request.post('/business/category/tree', data, {
trim: true
diff --git a/admin/src/assets/style/variables.scss b/admin/src/assets/style/variables.scss
index d57c715..fbeddb0 100644
--- a/admin/src/assets/style/variables.scss
+++ b/admin/src/assets/style/variables.scss
@@ -18,3 +18,11 @@
// 瀛椾綋
$font-color: #282828; // 棰滆壊
$font-size: 12px; // 澶у皬
+
+
+.el-drawer__header {
+ color: #333333 !important;
+}
+.el-image-viewer__wrapper{
+ z-index: 3000 !important;
+}
diff --git a/admin/src/components/business/OperaWorkorderDetailDbhWindow.vue b/admin/src/components/business/OperaWorkorderDetailDbhWindow.vue
new file mode 100644
index 0000000..da58bc1
--- /dev/null
+++ b/admin/src/components/business/OperaWorkorderDetailDbhWindow.vue
@@ -0,0 +1,494 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ width="85%"
+ :visible.sync="visible"
+ :confirm-working="isWorking"
+ @confirm="confirm">
+ <div class="modal_wrap">
+ <div class="modal_content">
+ <div class="header">
+ <img v-if="info.status == '3'" class="head_bg"
+ src="@/assets/task/bg_shenhe_fail@2x.png" alt="">
+ <img v-else-if="info.status == '4'" class="head_bg"
+ src="@/assets/task/bg_shenhe_pass@2x.png" alt="">
+ <img v-else class="head_bg" src="@/assets/task/bg_shenhe@2x.png" alt="">
+ <div class="left">
+ <div class="h1">{{ cateList[type] }}</div>
+ <div class="time">鎻愪氦鏃堕棿锛歿{ info.createDate }}</div>
+ </div>
+ <div class="right" :class="{ scs: info.status == '3' || info.status == '4' || info.status == '5', msg: info.status == '6' }">{{statusMap[info.status] }}</div>
+ </div>
+ <div class="info">
+ <div class="title">宸ュ崟淇℃伅</div>
+ <div class="list">
+ <div class="item">
+ <div class="label">鍛樺伐濮撳悕</div>
+ <div class="value">{{ info.memberName }} - {{ info.memberPhone || '[鏃犳墜鏈哄彿]' }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鎵�灞為儴闂�</div>
+ <div class="value">{{ info.companyName }} </div>
+ </div>
+ <div class="item">
+ <div class="label">涓婃姤鏃堕棿</div>
+ <div class="value">{{ info.submitDate }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鍙戠敓鏃堕棿</div>
+ <div class="value">{{ info.happenTime}}</div>
+ </div>
+ <div class="item">
+ <div class="label">椋庨櫓绫诲瀷</div>
+ <div class="value">{{ info.typeName }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鍙戠敓鍦扮偣</div>
+ <div class="value">{{ info.locationName }}</div>
+ </div>
+ <div class="item">
+ <div class="label">椋庨櫓鎻忚堪</div>
+ <div class="value">{{ info.riskInfo }}</div>
+ </div>
+ <div class="item" style="width: 100%">
+ <div class="label">鍥剧墖</div>
+ <div class="value" v-if="info.multifileList ==null || !info.multifileList.length">鏃�</div>
+ <div class="value" v-if="info.multifileList !=null && info.multifileList.length">
+ <div v-for="item in info.multifileList" :key="item.id" style="display: inline;margin-right: 20px">
+ <video
+ v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')"
+ ref="videoRef"
+ controls
+ preload="auto"
+ style="width: 80px;height: 80px;object-fit: contain;"
+ :src="item.fileurlFull"
+ />
+ <el-image
+ v-else-if="item.fileurlFull"
+ style="width:80px; height: 80px"
+ :src="item.fileurlFull"
+ :preview-src-list="[item.fileurlFull]">
+ </el-image>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="side" >
+ <div class="side_title">澶勭悊娴佺▼</div>
+ <div class="list" v-if=" info.logList != null && info.logList.length != 0
+ ">
+ <div class="item" v-for="(item, index) in info.logList" :key="item.id">
+ <div class="separate" v-if="index < info.logList.length - 1"></div>
+ <div class="info">
+ <img src="@/assets/icons/ic_dangqian.png" class="iconnew" />
+ <div class="content">
+ <div class="line">
+ <div class="name">{{ item.title }}</div>
+ </div>
+ <div class="line">
+ <div class="company">
+ 鍛樺伐锛�<span> {{ item.userName }} / {{item.companyName}}</span>
+ <div style="display: block" >鏃堕棿锛�<span>{{item.createDate}}</span></div>
+ <div class="dealinfo">
+ <div style="display: block" v-if="item.param2" >澶勭悊浜猴細<span>{{item.param2}}</span></div>
+ <div style="display: block" v-if="item.remark" >璇存槑锛�<span>{{item.remark}}</span></div>
+ <div style="display: block;margin-top:10px" v-if="item.multifileList !=null && item.multifileList.length">
+ <div v-for="item in item.multifileList" :key="item.id" style="display: inline;margin-right: 5px">
+ <video
+ v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')"
+ ref="videoRef"
+ controls
+ preload="auto"
+ style="width: 50px;height: 50px;object-fit: contain;"
+ :src="item.fileurlFull"
+ />
+ <el-image
+ v-else-if="item.fileurlFull"
+ style="width:50px; height: 50px;"
+ :src="item.fileurlFull"
+ :preview-src-list="[item.fileurlFull]">
+ </el-image>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- -->
+ <template v-slot:footer>
+ <el-button @click="close">杩斿洖</el-button>
+ </template>
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { getById } from '@/api/business/workorder'
+export default {
+ name: 'OperaWorkorderDetailDbhWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data () {
+ return {
+ id: '',
+ type: null,
+ title: '宸ュ崟璇︽儏',
+ info: {},
+ statusMap: {
+ 0: '寰呭垎閰峎TS',
+ 1: '寰呭垎閰嶄换鍔�',
+ 2: '寰呭鐞�',
+ 3: '宸茶В鍐�',
+ 4: '宸茶В鍐�',
+ 5: '宸茶В鍐�'
+ },
+ cateList: {
+ 0: 'SHE浜嬩欢宸ュ崟',
+ 1: '璺岀粖婊戜簨浠跺伐鍗�',
+ 2: 'DCA浜嬩欢鎻愪氦璁板綍',
+ 3: 'DCA浜嬩欢宸ュ崟'
+ }
+ }
+ },
+ methods: {
+ open (title, target) {
+ this.title = title
+ this.visible = true
+ this.info = target
+ this.getDetail()
+ this.type = this.info.type
+ },
+ close () {
+ this.visible = false
+ },
+ getDetail () {
+ getById(this.info.id).then(res => {
+ this.info = res
+ if (this.info.logList && this.info.logList.length > 0) {
+ this.info.logList.forEach(item => {
+ if (item.approveList && item.approveList.length == 1 && item.type !== 1) {
+ item.title = item.approveList[0].title
+ item.faceImg = item.approveList[0].faceImg
+ item.memberName = item.approveList[0].memberName
+ item.statusInfo = item.approveList[0].statusInfo
+ item.approveList = []
+ }
+ })
+ }
+ })
+ },
+ reject () { },
+ handleAvatarSuccess () { },
+ beforeAvatarUpload () { }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/style/variables.scss";
+
+.upload_box {
+ width: 84px;
+ height: 84px;
+ border-radius: 4px;
+ background-color: #f7f7f7;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ color: #999999;
+ border: 1px solid #e4e4e4;
+
+ .icon {
+ font-size: 24px;
+ }
+
+ .text {
+ font-size: 12px;
+ }
+}
+
+.side_title {
+ font-weight: 600;
+ font-size: 18px;
+ color: #111111;
+ margin-bottom: 20px;
+ margin-left: 20px;
+ margin-top: 20px;
+}
+
+.modal_wrap {
+ display: flex;
+ height: 100%;
+
+ .modal_content {
+ flex: 1;
+ padding: 0px 30px;
+ border-radius: 8px;
+ overflow: hidden;
+ height: 100%;
+
+ .title {
+ font-weight: 600;
+ font-size: 18px;
+ color: #333333;
+ margin-bottom: 20px;
+ margin-top: 30px;
+ }
+
+ .info {
+ .list {
+ display: flex;
+ flex-wrap: wrap;
+
+ .item {
+ display: flex;
+ width: 40%;
+ font-size: 14px;
+ margin-bottom: 20px;
+
+ &:nth-of-type(2n) {
+ width: 60%;
+ }
+
+ .label {
+ color: #888888;
+ width: 100px;
+ }
+
+ .value {
+ color: #111111;
+ }
+ }
+ }
+ }
+
+ .header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ vertical-align: center;
+ padding: 20px 30px;
+ margin: 0 -30px;
+ border-radius: 8px 8px 0 0;
+ position: relative;
+
+ .head_bg {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ z-index: 9;
+ }
+
+ .h1 {
+ font-weight: 600;
+ font-size: 22px;
+ color: #111111;
+ margin-bottom: 8px;
+ }
+
+ .time {
+ font-size: 14px;
+ color: #999999;
+ }
+
+ .right {
+ height: 40px;
+ font-size: 16px;
+ color: #ffffff;
+ line-height: 40px;
+ padding: 0 20px;
+ background: #207ff7;
+ box-shadow: 4px 4px 0px 0px rgba(32, 127, 247, 0.16);
+ border-radius: 16px 0px 16px 0px;
+ position: relative;
+ z-index: 99;
+ }
+
+ .scs {
+ background-color: #00BA67;
+ }
+
+ .msg {
+ background-color: #ED4545;
+ }
+ }
+
+ .table_info {
+ .name_wrap {
+ display: flex;
+ align-items: center;
+
+ .avatar {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ margin-right: 12px;
+ }
+
+ .content {
+ .line {
+ display: flex;
+ }
+ .tag {
+ color: #b2cbf9;
+ border: 1px solid #b2cbf9;
+ padding: 0px 4px;
+ border-radius: 4px;
+ margin-left: 6px;
+ }
+ }
+ }
+ }
+ }
+
+ .side {
+ height: 100%;
+ width: 420px;
+ background: #ffffff;
+ border-left: 20px solid #f7f7f7;
+
+ .list {
+ .item {
+ padding: 8px 0;
+ position: relative;
+
+ .separate {
+ position: absolute;
+ border-left: 2px dashed #cccccc;
+ left: 31px;
+ height: calc(100% - 0px);
+ top: 30px;
+ }
+
+ .avatar {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ margin: 0 12px 0 16px;
+ //border: 1px solid;
+ }
+
+ .childList {
+ display: flex;
+ flex-wrap: wrap;
+ margin-left: 100px;
+ }
+
+ .company {
+ font-size: 13px;
+ color: #888888;
+ width: calc(100% - 20px);
+ .status {
+ color: $primaryColor;
+ }
+ /* span{
+ color: black;
+ }*/
+ .dealinfo{
+ background-color: #f2f2f2;
+ padding: 8px;
+ display: block;
+ margin-top: 5px;
+ width: calc(100% - 20px);
+ }
+ }
+
+ .m_content {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 4px;
+ }
+
+ .info {
+ display: flex;
+ /*align-items: center;*/
+ margin-left: 20px;
+
+ .icon {
+ position: relative;
+ z-index: 11;
+ color: #53b76f;
+ font-size: 24px;
+ }
+
+ .icon1 {
+ position: relative;
+ z-index: 11;
+ color: deepskyblue;
+ font-size: 24px;
+ }
+
+ .icon2 {
+ position: relative;
+ z-index: 11;
+ color: #dc362e;
+ font-size: 24px;
+ }
+
+ .iconnew {
+ width: 24px;
+ height: 24px;
+ }
+
+ .icon3 {
+ position: relative;
+ z-index: 11;
+ color: gray;
+ font-size: 24px;
+ }
+
+ .content {
+ flex: 1;
+
+ .line {
+ display: flex;
+ justify-content: space-between;
+ align-content: center;
+ margin-bottom: 6px;
+
+ .status {
+ color: #888888;
+ }
+
+ .padding {
+ color: $primaryColor;
+ }
+
+ .name {
+ font-weight: 600;
+ font-size: 16px;
+ color: #111111;
+ }
+
+ .time {
+ color: #888888;
+ }
+ }
+ }
+ }
+
+ .remark {
+ background: #f7f7f7;
+ border-radius: 4px;
+ padding: 13px 15px;
+ color: #666666;
+ margin-left: 100px;
+ }
+ }
+ }
+ }
+}
+</style>
diff --git a/admin/src/components/business/OperaWorkorderDetailDcaWindow.vue b/admin/src/components/business/OperaWorkorderDetailDcaWindow.vue
new file mode 100644
index 0000000..da58bc1
--- /dev/null
+++ b/admin/src/components/business/OperaWorkorderDetailDcaWindow.vue
@@ -0,0 +1,494 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ width="85%"
+ :visible.sync="visible"
+ :confirm-working="isWorking"
+ @confirm="confirm">
+ <div class="modal_wrap">
+ <div class="modal_content">
+ <div class="header">
+ <img v-if="info.status == '3'" class="head_bg"
+ src="@/assets/task/bg_shenhe_fail@2x.png" alt="">
+ <img v-else-if="info.status == '4'" class="head_bg"
+ src="@/assets/task/bg_shenhe_pass@2x.png" alt="">
+ <img v-else class="head_bg" src="@/assets/task/bg_shenhe@2x.png" alt="">
+ <div class="left">
+ <div class="h1">{{ cateList[type] }}</div>
+ <div class="time">鎻愪氦鏃堕棿锛歿{ info.createDate }}</div>
+ </div>
+ <div class="right" :class="{ scs: info.status == '3' || info.status == '4' || info.status == '5', msg: info.status == '6' }">{{statusMap[info.status] }}</div>
+ </div>
+ <div class="info">
+ <div class="title">宸ュ崟淇℃伅</div>
+ <div class="list">
+ <div class="item">
+ <div class="label">鍛樺伐濮撳悕</div>
+ <div class="value">{{ info.memberName }} - {{ info.memberPhone || '[鏃犳墜鏈哄彿]' }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鎵�灞為儴闂�</div>
+ <div class="value">{{ info.companyName }} </div>
+ </div>
+ <div class="item">
+ <div class="label">涓婃姤鏃堕棿</div>
+ <div class="value">{{ info.submitDate }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鍙戠敓鏃堕棿</div>
+ <div class="value">{{ info.happenTime}}</div>
+ </div>
+ <div class="item">
+ <div class="label">椋庨櫓绫诲瀷</div>
+ <div class="value">{{ info.typeName }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鍙戠敓鍦扮偣</div>
+ <div class="value">{{ info.locationName }}</div>
+ </div>
+ <div class="item">
+ <div class="label">椋庨櫓鎻忚堪</div>
+ <div class="value">{{ info.riskInfo }}</div>
+ </div>
+ <div class="item" style="width: 100%">
+ <div class="label">鍥剧墖</div>
+ <div class="value" v-if="info.multifileList ==null || !info.multifileList.length">鏃�</div>
+ <div class="value" v-if="info.multifileList !=null && info.multifileList.length">
+ <div v-for="item in info.multifileList" :key="item.id" style="display: inline;margin-right: 20px">
+ <video
+ v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')"
+ ref="videoRef"
+ controls
+ preload="auto"
+ style="width: 80px;height: 80px;object-fit: contain;"
+ :src="item.fileurlFull"
+ />
+ <el-image
+ v-else-if="item.fileurlFull"
+ style="width:80px; height: 80px"
+ :src="item.fileurlFull"
+ :preview-src-list="[item.fileurlFull]">
+ </el-image>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="side" >
+ <div class="side_title">澶勭悊娴佺▼</div>
+ <div class="list" v-if=" info.logList != null && info.logList.length != 0
+ ">
+ <div class="item" v-for="(item, index) in info.logList" :key="item.id">
+ <div class="separate" v-if="index < info.logList.length - 1"></div>
+ <div class="info">
+ <img src="@/assets/icons/ic_dangqian.png" class="iconnew" />
+ <div class="content">
+ <div class="line">
+ <div class="name">{{ item.title }}</div>
+ </div>
+ <div class="line">
+ <div class="company">
+ 鍛樺伐锛�<span> {{ item.userName }} / {{item.companyName}}</span>
+ <div style="display: block" >鏃堕棿锛�<span>{{item.createDate}}</span></div>
+ <div class="dealinfo">
+ <div style="display: block" v-if="item.param2" >澶勭悊浜猴細<span>{{item.param2}}</span></div>
+ <div style="display: block" v-if="item.remark" >璇存槑锛�<span>{{item.remark}}</span></div>
+ <div style="display: block;margin-top:10px" v-if="item.multifileList !=null && item.multifileList.length">
+ <div v-for="item in item.multifileList" :key="item.id" style="display: inline;margin-right: 5px">
+ <video
+ v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')"
+ ref="videoRef"
+ controls
+ preload="auto"
+ style="width: 50px;height: 50px;object-fit: contain;"
+ :src="item.fileurlFull"
+ />
+ <el-image
+ v-else-if="item.fileurlFull"
+ style="width:50px; height: 50px;"
+ :src="item.fileurlFull"
+ :preview-src-list="[item.fileurlFull]">
+ </el-image>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- -->
+ <template v-slot:footer>
+ <el-button @click="close">杩斿洖</el-button>
+ </template>
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { getById } from '@/api/business/workorder'
+export default {
+ name: 'OperaWorkorderDetailDbhWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data () {
+ return {
+ id: '',
+ type: null,
+ title: '宸ュ崟璇︽儏',
+ info: {},
+ statusMap: {
+ 0: '寰呭垎閰峎TS',
+ 1: '寰呭垎閰嶄换鍔�',
+ 2: '寰呭鐞�',
+ 3: '宸茶В鍐�',
+ 4: '宸茶В鍐�',
+ 5: '宸茶В鍐�'
+ },
+ cateList: {
+ 0: 'SHE浜嬩欢宸ュ崟',
+ 1: '璺岀粖婊戜簨浠跺伐鍗�',
+ 2: 'DCA浜嬩欢鎻愪氦璁板綍',
+ 3: 'DCA浜嬩欢宸ュ崟'
+ }
+ }
+ },
+ methods: {
+ open (title, target) {
+ this.title = title
+ this.visible = true
+ this.info = target
+ this.getDetail()
+ this.type = this.info.type
+ },
+ close () {
+ this.visible = false
+ },
+ getDetail () {
+ getById(this.info.id).then(res => {
+ this.info = res
+ if (this.info.logList && this.info.logList.length > 0) {
+ this.info.logList.forEach(item => {
+ if (item.approveList && item.approveList.length == 1 && item.type !== 1) {
+ item.title = item.approveList[0].title
+ item.faceImg = item.approveList[0].faceImg
+ item.memberName = item.approveList[0].memberName
+ item.statusInfo = item.approveList[0].statusInfo
+ item.approveList = []
+ }
+ })
+ }
+ })
+ },
+ reject () { },
+ handleAvatarSuccess () { },
+ beforeAvatarUpload () { }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/style/variables.scss";
+
+.upload_box {
+ width: 84px;
+ height: 84px;
+ border-radius: 4px;
+ background-color: #f7f7f7;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ color: #999999;
+ border: 1px solid #e4e4e4;
+
+ .icon {
+ font-size: 24px;
+ }
+
+ .text {
+ font-size: 12px;
+ }
+}
+
+.side_title {
+ font-weight: 600;
+ font-size: 18px;
+ color: #111111;
+ margin-bottom: 20px;
+ margin-left: 20px;
+ margin-top: 20px;
+}
+
+.modal_wrap {
+ display: flex;
+ height: 100%;
+
+ .modal_content {
+ flex: 1;
+ padding: 0px 30px;
+ border-radius: 8px;
+ overflow: hidden;
+ height: 100%;
+
+ .title {
+ font-weight: 600;
+ font-size: 18px;
+ color: #333333;
+ margin-bottom: 20px;
+ margin-top: 30px;
+ }
+
+ .info {
+ .list {
+ display: flex;
+ flex-wrap: wrap;
+
+ .item {
+ display: flex;
+ width: 40%;
+ font-size: 14px;
+ margin-bottom: 20px;
+
+ &:nth-of-type(2n) {
+ width: 60%;
+ }
+
+ .label {
+ color: #888888;
+ width: 100px;
+ }
+
+ .value {
+ color: #111111;
+ }
+ }
+ }
+ }
+
+ .header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ vertical-align: center;
+ padding: 20px 30px;
+ margin: 0 -30px;
+ border-radius: 8px 8px 0 0;
+ position: relative;
+
+ .head_bg {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ z-index: 9;
+ }
+
+ .h1 {
+ font-weight: 600;
+ font-size: 22px;
+ color: #111111;
+ margin-bottom: 8px;
+ }
+
+ .time {
+ font-size: 14px;
+ color: #999999;
+ }
+
+ .right {
+ height: 40px;
+ font-size: 16px;
+ color: #ffffff;
+ line-height: 40px;
+ padding: 0 20px;
+ background: #207ff7;
+ box-shadow: 4px 4px 0px 0px rgba(32, 127, 247, 0.16);
+ border-radius: 16px 0px 16px 0px;
+ position: relative;
+ z-index: 99;
+ }
+
+ .scs {
+ background-color: #00BA67;
+ }
+
+ .msg {
+ background-color: #ED4545;
+ }
+ }
+
+ .table_info {
+ .name_wrap {
+ display: flex;
+ align-items: center;
+
+ .avatar {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ margin-right: 12px;
+ }
+
+ .content {
+ .line {
+ display: flex;
+ }
+ .tag {
+ color: #b2cbf9;
+ border: 1px solid #b2cbf9;
+ padding: 0px 4px;
+ border-radius: 4px;
+ margin-left: 6px;
+ }
+ }
+ }
+ }
+ }
+
+ .side {
+ height: 100%;
+ width: 420px;
+ background: #ffffff;
+ border-left: 20px solid #f7f7f7;
+
+ .list {
+ .item {
+ padding: 8px 0;
+ position: relative;
+
+ .separate {
+ position: absolute;
+ border-left: 2px dashed #cccccc;
+ left: 31px;
+ height: calc(100% - 0px);
+ top: 30px;
+ }
+
+ .avatar {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ margin: 0 12px 0 16px;
+ //border: 1px solid;
+ }
+
+ .childList {
+ display: flex;
+ flex-wrap: wrap;
+ margin-left: 100px;
+ }
+
+ .company {
+ font-size: 13px;
+ color: #888888;
+ width: calc(100% - 20px);
+ .status {
+ color: $primaryColor;
+ }
+ /* span{
+ color: black;
+ }*/
+ .dealinfo{
+ background-color: #f2f2f2;
+ padding: 8px;
+ display: block;
+ margin-top: 5px;
+ width: calc(100% - 20px);
+ }
+ }
+
+ .m_content {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 4px;
+ }
+
+ .info {
+ display: flex;
+ /*align-items: center;*/
+ margin-left: 20px;
+
+ .icon {
+ position: relative;
+ z-index: 11;
+ color: #53b76f;
+ font-size: 24px;
+ }
+
+ .icon1 {
+ position: relative;
+ z-index: 11;
+ color: deepskyblue;
+ font-size: 24px;
+ }
+
+ .icon2 {
+ position: relative;
+ z-index: 11;
+ color: #dc362e;
+ font-size: 24px;
+ }
+
+ .iconnew {
+ width: 24px;
+ height: 24px;
+ }
+
+ .icon3 {
+ position: relative;
+ z-index: 11;
+ color: gray;
+ font-size: 24px;
+ }
+
+ .content {
+ flex: 1;
+
+ .line {
+ display: flex;
+ justify-content: space-between;
+ align-content: center;
+ margin-bottom: 6px;
+
+ .status {
+ color: #888888;
+ }
+
+ .padding {
+ color: $primaryColor;
+ }
+
+ .name {
+ font-weight: 600;
+ font-size: 16px;
+ color: #111111;
+ }
+
+ .time {
+ color: #888888;
+ }
+ }
+ }
+ }
+
+ .remark {
+ background: #f7f7f7;
+ border-radius: 4px;
+ padding: 13px 15px;
+ color: #666666;
+ margin-left: 100px;
+ }
+ }
+ }
+ }
+}
+</style>
diff --git a/admin/src/components/business/OperaWorkorderDetailSheWindow.vue b/admin/src/components/business/OperaWorkorderDetailSheWindow.vue
index f52b961..c1f46fd 100644
--- a/admin/src/components/business/OperaWorkorderDetailSheWindow.vue
+++ b/admin/src/components/business/OperaWorkorderDetailSheWindow.vue
@@ -27,6 +27,10 @@
<div class="value">{{ info.memberName }} - {{ info.memberPhone || '[鏃犳墜鏈哄彿]' }}</div>
</div>
<div class="item">
+ <div class="label">鎵�灞為儴闂�</div>
+ <div class="value">{{ info.companyName }} </div>
+ </div>
+ <div class="item">
<div class="label">涓婃姤鏃堕棿</div>
<div class="value">{{ info.submitDate +' '}}</div>
</div>
@@ -89,7 +93,7 @@
</div>
</div>
</div>
- <div class="side">
+ <div class="side" v-if="false">
<div class="side_title">鎿嶄綔鍘嗗彶</div>
<div class="list" v-if=" info.logList != null && info.logList.length != 0
">
diff --git a/admin/src/views/business/workorderDbh.vue b/admin/src/views/business/workorderDbh.vue
new file mode 100644
index 0000000..d1045e8
--- /dev/null
+++ b/admin/src/views/business/workorderDbh.vue
@@ -0,0 +1,162 @@
+<template>
+ <TableLayout :permissions="['business:workorder:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <div slot="search-form">
+ <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
+ <el-form-item label="椋庨櫓绫诲瀷" prop="typeId">
+ <el-cascader v-model="searchForm.categoryList" :options="categorys" @change="handleChangeCategory" :show-all-levels="false"
+ clearable filterable :props="categoryprops" >
+ <template slot-scope="{ node, data }">
+ <span>{{ data.name }}</span> <!-- 鑷畾涔夋樉绀哄唴瀹� -->
+ </template>
+ </el-cascader>
+ </el-form-item>
+ <el-form-item label="涓婃姤浜哄憳" prop="memberName">
+ <el-input v-model="searchForm.memberName" clearable placeholder="浜哄憳濮撳悕鎴栨墜鏈哄彿" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <el-form-item label="宸ュ崟鍙�" prop="code">
+ <el-input v-model="searchForm.code" clearable placeholder="璇疯緭鍏ュ伐鍗曞彿" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ </div>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <ul class="toolbar" v-permissions="['business:workorder:exportExcel']">
+ <li> <el-button type="primary" :loading="isWorking.export" @click="exportExcel">瀵煎嚭</el-button></li>
+ </ul>
+ <el-table
+ :height="tableHeightNew"
+ v-loading="isWorking.search"
+ :data="tableData.list"
+ stripe
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column prop="code" label="宸ュ崟鍙�" min-width="150px" fixed>
+ <template slot-scope="{row}">
+ <span style="color: #2E68EC;cursor: pointer" @click="$refs.operaWorkorderWindow.open('SHE浜嬩欢宸ュ崟璇︽儏', row)" >{{ row.code || '-'}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="typeName" label="浼ゅ绫诲瀷" min-width="100px"></el-table-column>
+ <el-table-column prop="memberName" label="涓婃姤浜哄憳" min-width="100px">
+ <template slot-scope="{row}">
+ <span v-if="row.memberPhone" >{{row.memberName}} - {{row.memberPhone }}</span>
+ <span v-else >{{row.memberName}} </span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="companyName" label="鎵�鍦ㄩ儴闂�" min-width="100px"></el-table-column>
+ <el-table-column prop="status" label="鐘舵��" min-width="100px">
+ <template slot-scope="{row}">
+ <span v-if="row.status ==0">寰呭鐞�</span>
+ <span v-else-if="row.status ==3 ||row.status ==4||row.status ==5">宸插鐞�</span>
+ <span v-else>澶勭悊涓�</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="submitDate" label="涓婃姤鏃堕棿" min-width="150px"></el-table-column>
+ <el-table-column prop="happenTime" label="鍙戠幇鏃堕棿" min-width="150px"></el-table-column>
+ <el-table-column prop="riskInfo" label="椋庨櫓鎻忚堪" min-width="100px"></el-table-column>
+ <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="150px"></el-table-column>
+ <el-table-column
+ v-if="containPermissions(['business:workorder:update', 'business:workorder:delete'])"
+ label="鎿嶄綔"
+ min-width="120"
+ fixed="right"
+ >
+ <template slot-scope="{row}">
+ <el-button type="text" @click="$refs.operaWorkorderWindow.open('璺岀粖婊戜簨浠跺伐鍗曡鎯�', row)" icon="el-icon-zoom-out" >鏌ョ湅璇︽儏</el-button>
+ <!--<el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:workorder:delete']">鍒犻櫎</el-button>-->
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ >
+ </pagination>
+ </template>
+ <!-- 鏂板缓/淇敼 -->
+ <OperaWorkorderDetailDbhWindow ref="operaWorkorderWindow" @success="handlePageChange"/>
+ </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaWorkorderDetailDbhWindow from '@/components/business/OperaWorkorderDetailDbhWindow'
+import { treeList } from '@/api/business/category'
+export default {
+ name: 'Workorder',
+ extends: BaseTable,
+ components: {TableLayout, Pagination, OperaWorkorderDetailDbhWindow },
+ data () {
+ return {
+ // 鎼滅储
+ searchForm: {
+ type: '3',
+ memberName: '',
+ memberCompanyId: '',
+ localtionId: '',
+ typeId: '',
+ code: '',
+ categoryList: []
+ },
+ categoryprops: {
+ label: 'name',
+ value: 'id',
+ checkStrictly: true,
+ lazyLoad: this.lazyLoad
+ },
+ categorys: []
+ }
+ },
+ created () {
+ this.config({
+ module: '宸ュ崟淇℃伅琛�',
+ api: '/business/workorder',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
+ this.loadCategorys()
+ this.search()
+ },
+ methods: {
+ handleChangeCategory (value) {
+ if (this.searchForm.categoryList && this.searchForm.categoryList.length >= 1) {
+ this.searchForm.typeId = this.searchForm.categoryList[this.searchForm.categoryList.length - 1]
+ }
+ },
+ loadCategorys () {
+ treeList({ type: 1})
+ .then(res => {
+ if (res && res.length > 0) {
+ res[0].fsStatus = 1
+ this.categorys = this.getCategoryTree(res)
+ }
+ })
+ },
+ getCategoryTree (tree) {
+ if (tree == null) {
+ return []
+ }
+ return tree.map(item => {
+ const newItem = { ...item }
+ if (newItem) {
+ newItem.children = newItem.childList
+ }
+ if (item.children && item.children.length === 0) {
+ this.$delete(newItem, 'children')
+ } else {
+ newItem.children = this.getCategoryTree(newItem.children)
+ }
+ // newItem.disabled = false
+ return newItem
+ })
+ }
+ }
+}
+</script>
diff --git a/admin/src/views/business/workorderDca.vue b/admin/src/views/business/workorderDca.vue
new file mode 100644
index 0000000..7fa3dd7
--- /dev/null
+++ b/admin/src/views/business/workorderDca.vue
@@ -0,0 +1,154 @@
+<template>
+ <TableLayout :permissions="['business:workorder:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <div slot="search-form">
+ <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
+ <el-form-item label="椋庨櫓绫诲瀷" prop="typeId">
+ <el-select v-model="searchForm.typeId">
+ <el-option clearable filterable
+ v-for="item in categorys"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="涓婃姤浜哄憳" prop="memberName">
+ <el-input v-model="searchForm.memberName" clearable placeholder="浜哄憳濮撳悕鎴栨墜鏈哄彿" @keypress.enter.native="search"></el-input>
+
+
+ </el-form-item>
+ <el-form-item label="宸ュ崟鍙�" prop="code">
+ <el-input v-model="searchForm.code" clearable placeholder="璇疯緭鍏ュ伐鍗曞彿" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ </div>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <ul class="toolbar" v-permissions="['business:workorder:exportExcel']">
+ <li> <el-button type="primary" :loading="isWorking.export" @click="exportExcel">瀵煎嚭</el-button></li>
+ </ul>
+ <el-table
+ :height="tableHeightNew"
+ v-loading="isWorking.search"
+ :data="tableData.list"
+ stripe
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column prop="code" label="宸ュ崟鍙�" min-width="150px" fixed>
+ <template slot-scope="{row}">
+ <span style="color: #2E68EC;cursor: pointer" @click="$refs.operaWorkorderWindow.open('SHE浜嬩欢宸ュ崟璇︽儏', row)" >{{ row.code || '-'}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="memberName" label="涓婃姤浜哄憳" min-width="100px">
+ <template slot-scope="{row}">
+ <span v-if="row.memberPhone" >{{row.memberName}} - {{row.memberPhone }}</span>
+ <span v-else >{{row.memberName}} </span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="companyName" label="鎵�鍦ㄩ儴闂�" min-width="100px"></el-table-column>
+ <el-table-column prop="status" label="鐘舵��" min-width="100px">
+ <template slot-scope="{row}">
+ <span v-if="row.status ==0">寰呭鐞�</span>
+ <span v-else-if="row.status ==3 ||row.status ==4||row.status ==5">宸插鐞�</span>
+ <span v-else>澶勭悊涓�</span>
+ </template>
+ </el-table-column>
+<!--
+ <el-table-column prop="typeName" label="DCA绫诲瀷" min-width="100px"></el-table-column>
+-->
+ <el-table-column prop="problemTitle" label="瑙傚療涓婚" min-width="150px"></el-table-column>
+ <el-table-column prop="dcaYesNum" label="瑙傚療椤圭粺璁�" min-width="150px">
+ <template slot-scope="{row}">
+ <span style="color: #1562e2" >绗﹀悎锛歿{row.dcaYesNum}} 涓嶇鍚堬細{{row.dcaNoNum}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="submitDate" label="涓婃姤鏃堕棿" min-width="150px"></el-table-column>
+ <el-table-column prop="happenTime" label="鍙戠幇鏃堕棿" min-width="150px"></el-table-column>
+ <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="150px"></el-table-column>
+ <el-table-column
+ v-if="containPermissions(['business:workorder:update', 'business:workorder:delete'])"
+ label="鎿嶄綔"
+ min-width="120"
+ fixed="right"
+ >
+ <template slot-scope="{row}">
+ <el-button type="text" @click="$refs.operaWorkorderWindow.open('DCA浜嬩欢宸ュ崟璇︽儏', row)" icon="el-icon-zoom-out" >鏌ョ湅璇︽儏</el-button>
+ <!--<el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:workorder:delete']">鍒犻櫎</el-button>-->
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ >
+ </pagination>
+ </template>
+ <!-- 鏂板缓/淇敼 -->
+ <OperaWorkorderDetailDcaWindow ref="operaWorkorderWindow" @success="handlePageChange"/>
+ </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaWorkorderDetailDcaWindow from '@/components/business/OperaWorkorderDetailDcaWindow'
+import { allList } from '@/api/business/category'
+export default {
+ name: 'Workorder',
+ extends: BaseTable,
+ components: {TableLayout, Pagination, OperaWorkorderDetailDcaWindow },
+ data () {
+ return {
+ // 鎼滅储
+ searchForm: {
+ type: '1',
+ memberName: '',
+ memberCompanyId: '',
+ localtionId: '',
+ typeId: '',
+ code: '',
+ categoryList: []
+ },
+ categoryprops: {
+ label: 'name',
+ value: 'id',
+ checkStrictly: true,
+ lazyLoad: this.lazyLoad
+ },
+ categorys: []
+ }
+ },
+ created () {
+ this.config({
+ module: '宸ュ崟淇℃伅琛�',
+ api: '/business/workorder',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
+ this.loadCategorys()
+ this.search()
+ },
+ methods: {
+ handleChangeCategory (value) {
+ if (this.searchForm.categoryList && this.searchForm.categoryList.length >= 1) {
+ this.searchForm.typeId = this.searchForm.categoryList[this.searchForm.categoryList.length - 1]
+ }
+ },
+ loadCategorys () {
+ allList({ type: 4, isRoot:1})
+ .then(res => {
+ if (res && res.length > 0) {
+ this.categorys = res
+ }
+ })
+ },
+ }
+}
+</script>
diff --git a/admin/src/views/business/workorderShe.vue b/admin/src/views/business/workorderShe.vue
index 0b601b6..deb3f7e 100644
--- a/admin/src/views/business/workorderShe.vue
+++ b/admin/src/views/business/workorderShe.vue
@@ -12,10 +12,12 @@
</el-cascader>
</el-form-item>
<el-form-item label="涓婃姤浜哄憳" prop="memberName">
- <el-input v-model="searchForm.memberName" placeholder="浜哄憳濮撳悕鎴栨墜鏈哄彿" @keypress.enter.native="search"></el-input>
+ <el-input v-model="searchForm.memberName" clearable placeholder="浜哄憳濮撳悕鎴栨墜鏈哄彿" @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-input v-model="searchForm.code" clearable placeholder="璇疯緭鍏ュ伐鍗曞彿" @keypress.enter.native="search"></el-input>
</el-form-item>
<section>
<el-button type="primary" @click="search">鎼滅储</el-button>
@@ -45,14 +47,14 @@
<el-table-column prop="status" label="鐘舵��" min-width="100px">
<template slot-scope="{row}">
<span v-if="row.status ==0">寰呭鐞�</span>
- <span v-else-if="row.status ==4">宸插鐞�</span>
- <span v-else-if="row.status ==3">宸插叧闂�</span>
+ <span v-else-if="row.status ==3 ||row.status ==4||row.status ==5">宸插鐞�</span>
<span v-else>澶勭悊涓�</span>
</template>
</el-table-column>
<el-table-column prop="memberName" label="涓婃姤浜哄憳" min-width="100px">
<template slot-scope="{row}">
- <span >{{row.memberName}} - {{row.memberPhone||''}}</span>
+ <span v-if="row.memberPhone" >{{row.memberName}} - {{row.memberPhone }}</span>
+ <span v-else >{{row.memberName}} </span>
</template>
</el-table-column>
<el-table-column prop="companyName" label="鎵�鍦ㄩ儴闂�" min-width="100px"></el-table-column>
diff --git a/server/src/main/java/com/doumee/api/business/CategoryController.java b/server/src/main/java/com/doumee/api/business/CategoryController.java
index ccf5c99..1296aa0 100644
--- a/server/src/main/java/com/doumee/api/business/CategoryController.java
+++ b/server/src/main/java/com/doumee/api/business/CategoryController.java
@@ -69,6 +69,12 @@
public ApiResponse<PageData<Category>> findPage (@RequestBody PageWrap<Category> pageWrap) {
return ApiResponse.success(categoryService.findPage(pageWrap));
}
+ @ApiOperation("鍒嗛〉鏌ヨ")
+ @PostMapping("/list")
+ @RequiresPermissions("business:category:query")
+ public ApiResponse<List<Category>> findList (@RequestBody Category pageWrap) {
+ return ApiResponse.success(categoryService.findList(pageWrap));
+ }
@ApiOperation("瀵煎嚭Excel")
@PostMapping("/exportExcel")
diff --git a/server/src/main/java/com/doumee/dao/business/model/Workorder.java b/server/src/main/java/com/doumee/dao/business/model/Workorder.java
index 1d7f413..3dcadd0 100644
--- a/server/src/main/java/com/doumee/dao/business/model/Workorder.java
+++ b/server/src/main/java/com/doumee/dao/business/model/Workorder.java
@@ -137,18 +137,15 @@
@ApiModelProperty(value = "椋庨櫓鎻忚堪", example = "1")
@ExcelExportColumn(name="椋庨櫓鎻忚堪")
private String riskInfo;
-
@ApiModelProperty(value = "褰撳墠鐗╀笟涓荤浼佷笟寰俊缂栫爜", example = "1")
@ExcelExportColumn(name="褰撳墠鐗╀笟涓荤浼佷笟寰俊缂栫爜")
private String managerId;
-
@ApiModelProperty(value = "褰撳墠澶勭悊浜哄憳浼佷笟寰俊缂栫爜", example = "1")
@ExcelExportColumn(name="褰撳墠澶勭悊浜哄憳浼佷笟寰俊缂栫爜")
private String dealerId;
@ApiModelProperty(value = "鍒嗛厤鏃堕棿")
@ExcelExportColumn(name="鍒嗛厤鏃堕棿")
-
private Date dispatchTime;
@ApiModelProperty(value = "鍒嗛厤澶囨敞")
diff --git a/server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java b/server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
index e32f0ef..4edd8cb 100644
--- a/server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
+++ b/server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -199,6 +199,7 @@
.eq(category.getType() != null, Category::getType, category.getType())
.eq(category.getParentId() != null, Category::getParentId, category.getParentId())
.eq(category.getNamePath() != null, Category::getNamePath, category.getNamePath())
+ .isNull(category.getIsRoot() != null &&category.getIsRoot().equals(Constants.ONE), Category::getParentId)
.eq(category.getIdPath() != null, Category::getIdPath, category.getIdPath())
.orderByAsc( Category::getSortnum);
return categoryMapper.selectJoinList(Category.class,queryWrapper);
diff --git a/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java b/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
index c823afb..60995de 100644
--- a/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
+++ b/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
@@ -527,12 +527,16 @@
.eq(pageWrap.getModel().getProblemId() != null, Workorder::getProblemId, pageWrap.getModel().getProblemId())
.eq(pageWrap.getModel().getProblemInfo() != null, Workorder::getProblemInfo, pageWrap.getModel().getProblemInfo())
.eq(pageWrap.getModel().getLocationName() != null, Workorder::getLocationName, pageWrap.getModel().getLocationName())
- .eq(pageWrap.getModel().getCode() != null, Workorder::getCode, pageWrap.getModel().getCode())
+ .like(pageWrap.getModel().getCode() != null, Workorder::getCode, pageWrap.getModel().getCode())
.eq(pageWrap.getModel().getDcaYesNum() != null, Workorder::getDcaYesNum, pageWrap.getModel().getDcaYesNum())
.eq(pageWrap.getModel().getDcaNoNum() != null, Workorder::getDcaNoNum, pageWrap.getModel().getDcaNoNum())
.eq(pageWrap.getModel().getDcaRecordId() != null, Workorder::getDcaRecordId, pageWrap.getModel().getDcaRecordId())
.eq(pageWrap.getModel().getDcaCsIds() != null, Workorder::getDcaCsIds, pageWrap.getModel().getDcaCsIds()) ;
- queryWrapper.orderByDesc(Workorder::getCreateDate);
+ if (pageWrap.getModel().getMemberName() != null) {
+ queryWrapper.and( ms->ms.like(Member::getName,pageWrap.getModel().getMemberName())
+ .or().like(Member::getPhone,pageWrap.getModel().getMemberName()) );
+ }
+ queryWrapper.orderByDesc(Workorder::getCreateDate);
return PageData.from(workorderMapper.selectJoinPage(page,Workorder.class, queryWrapper));
}
--
Gitblit v1.9.3