From 9527290586e6c5f6a9c764f64dccc4c9a1c87e56 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 10 四月 2025 17:25:13 +0800
Subject: [PATCH] 代码初始化

---
 admin/src/components/business/OperaWorkorderDetailDcaInfoWindow.vue             |  494 +++++++++++++++++++++++++++++++++++++++++
 admin/src/components/business/OperaWorkorderDetailDcaWindow.vue                 |   98 +++-----
 server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java |   78 ++++++
 server/src/main/java/com/doumee/dao/business/model/Workorder.java               |    8 
 admin/src/components/business/OperaWorkorderDetailSheWindow.vue                 |    6 
 admin/src/views/business/workorderDca.vue                                       |    2 
 admin/src/components/business/OperaWorkorderDetailDbhWindow.vue                 |    6 
 7 files changed, 620 insertions(+), 72 deletions(-)

diff --git a/admin/src/components/business/OperaWorkorderDetailDbhWindow.vue b/admin/src/components/business/OperaWorkorderDetailDbhWindow.vue
index da58bc1..e67eef5 100644
--- a/admin/src/components/business/OperaWorkorderDetailDbhWindow.vue
+++ b/admin/src/components/business/OperaWorkorderDetailDbhWindow.vue
@@ -152,9 +152,9 @@
       },
       cateList: {
         0: 'SHE浜嬩欢宸ュ崟',
-        1: '璺岀粖婊戜簨浠跺伐鍗�',
-        2: 'DCA浜嬩欢鎻愪氦璁板綍',
-        3: 'DCA浜嬩欢宸ュ崟'
+        1: 'DCA浜嬩欢鎻愪氦璁板綍',
+        2: 'DCA浜嬩欢宸ュ崟',
+        3: '璺岀粖婊戜簨浠跺伐鍗�'
       }
     }
   },
diff --git a/admin/src/components/business/OperaWorkorderDetailDcaInfoWindow.vue b/admin/src/components/business/OperaWorkorderDetailDcaInfoWindow.vue
new file mode 100644
index 0000000..e5f1d30
--- /dev/null
+++ b/admin/src/components/business/OperaWorkorderDetailDcaInfoWindow.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: 'DCA浜嬩欢鎻愪氦璁板綍',
+        2: 'DCA涓嶇鍚堥」宸ュ崟',
+        3: '璺岀粖婊戜簨浠跺伐鍗�'
+      }
+    }
+  },
+  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
index da58bc1..3d61b8b 100644
--- a/admin/src/components/business/OperaWorkorderDetailDcaWindow.vue
+++ b/admin/src/components/business/OperaWorkorderDetailDcaWindow.vue
@@ -17,10 +17,8 @@
             <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="info">  <div class="title">宸ュ崟淇℃伅</div>
           <div class="list">
             <div class="item">
               <div class="label">鍛樺伐濮撳悕</div>
@@ -39,7 +37,7 @@
               <div class="value">{{ info.happenTime}}</div>
             </div>
             <div class="item">
-              <div class="label">椋庨櫓绫诲瀷</div>
+              <div class="label">瑙傚療涓婚</div>
               <div class="value">{{ info.typeName }}</div>
             </div>
             <div class="item">
@@ -47,8 +45,12 @@
               <div class="value">{{ info.locationName }}</div>
             </div>
             <div class="item">
-              <div class="label">椋庨櫓鎻忚堪</div>
-              <div class="value">{{ info.riskInfo }}</div>
+              <div class="label">閫氱煡浜�</div>
+              <div class="value">{{ info.memberNames }}</div>
+            </div>
+            <div class="item">
+              <div class="label">瑙傚療椤圭粺璁�</div>
+              <div class="value"  style="color: #1562e2" >绗﹀悎锛氥�恵{ info.dcaYesNum || 0 }}銆�    涓嶇鍚堬細銆� <span  style="color: red" >{{(info.dcaNoNum||0)}}</span> 銆�</div>
             </div>
             <div class="item" style="width: 100%">
               <div class="label">鍥剧墖</div>
@@ -74,68 +76,48 @@
             </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 class="table_info">
+          <div class="title">涓嶇鍚堥」宸ュ崟鍒楄〃</div>
+          <el-table :data="info.dcaChildList" border fit>
+            <el-table-column label="涓�绾т富棰�" prop="typeName" min-width="150"> </el-table-column>
+            <el-table-column label="浜岀骇涓婚" prop="categoryName" min-width="150"> </el-table-column>
+            <el-table-column label="瑙傚療椤�" prop="problemTitle" min-width="150"> </el-table-column>
+            <el-table-column label="涓嶇鍚堝師鍥�" prop="eventInfo" min-width="120" />
+            <el-table-column label="澶勭悊鐘舵��" prop="status" min-width="80">
+              <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 label="鎿嶄綔" prop="status" min-width="80">
+              <template slot-scope="{row}">
+                <el-button type="text" @click="$refs.OperaWorkorderDetailDcaInfoWindow.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>
         </div>
       </div>
+
     </div>
     <!--  -->
     <template v-slot:footer>
       <el-button @click="close">杩斿洖</el-button>
     </template>
+    <OperaWorkorderDetailDcaInfoWindow ref="OperaWorkorderDetailDcaInfoWindow" />
   </GlobalWindow>
 </template>
 
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
+import OperaWorkorderDetailDcaInfoWindow from '@/components/business/OperaWorkorderDetailDcaInfoWindow'
 import { getById } from '@/api/business/workorder'
 export default {
   name: 'OperaWorkorderDetailDbhWindow',
   extends: BaseOpera,
-  components: { GlobalWindow },
+  components: { GlobalWindow ,OperaWorkorderDetailDcaInfoWindow},
   data () {
     return {
       id: '',
@@ -152,9 +134,9 @@
       },
       cateList: {
         0: 'SHE浜嬩欢宸ュ崟',
-        1: '璺岀粖婊戜簨浠跺伐鍗�',
-        2: 'DCA浜嬩欢鎻愪氦璁板綍',
-        3: 'DCA浜嬩欢宸ュ崟'
+        1: 'DCA浜嬩欢鎻愪氦璁板綍',
+        2: 'DCA浜嬩欢宸ュ崟',
+        3: '璺岀粖婊戜簨浠跺伐鍗�'
       }
     }
   },
@@ -248,22 +230,18 @@
       .list {
         display: flex;
         flex-wrap: wrap;
-
         .item {
           display: flex;
-          width: 40%;
+          width: 30%;
           font-size: 14px;
           margin-bottom: 20px;
-
           &:nth-of-type(2n) {
-            width: 60%;
+            width: 30%;
           }
-
           .label {
             color: #888888;
             width: 100px;
           }
-
           .value {
             color: #111111;
           }
diff --git a/admin/src/components/business/OperaWorkorderDetailSheWindow.vue b/admin/src/components/business/OperaWorkorderDetailSheWindow.vue
index c1f46fd..6838092 100644
--- a/admin/src/components/business/OperaWorkorderDetailSheWindow.vue
+++ b/admin/src/components/business/OperaWorkorderDetailSheWindow.vue
@@ -180,9 +180,9 @@
       },
       cateList: {
         0: 'SHE浜嬩欢宸ュ崟',
-        1: '璺岀粖婊戜簨浠跺伐鍗�',
-        2: 'DCA浜嬩欢鎻愪氦璁板綍',
-        3: 'DCA浜嬩欢宸ュ崟'
+        1: 'DCA浜嬩欢鎻愪氦璁板綍',
+        2: 'DCA浜嬩欢宸ュ崟',
+        3: '璺岀粖婊戜簨浠跺伐鍗�'
       }
     }
   },
diff --git a/admin/src/views/business/workorderDca.vue b/admin/src/views/business/workorderDca.vue
index 7fa3dd7..84848d3 100644
--- a/admin/src/views/business/workorderDca.vue
+++ b/admin/src/views/business/workorderDca.vue
@@ -61,7 +61,7 @@
 <!--
         <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="typeName" 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>
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 3dcadd0..f071035 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
@@ -222,6 +222,9 @@
     @ApiModelProperty("椋庨櫓绫诲瀷鍚嶇О")
     @TableField(exist = false)
     private String typeName;
+    @ApiModelProperty("浜岀骇涓婚鍚嶇О")
+    @TableField(exist = false)
+    private String categoryName;
     @ApiModelProperty("DCA闂鍚嶇О")
     @TableField(exist = false)
     private String problemName;
@@ -235,7 +238,8 @@
     @TableField(exist = false)
     private List<DCANoProblemDTO> dcaNoProblemDTOList;
 
-
-
+    @ApiModelProperty(value = "涓嶇鍚堥棶棰樺垪琛�(璇︽儏椤碉級")
+    @TableField(exist = false)
+    private List<Workorder> dcaChildList;
 
 }
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 60995de..c6a91b9 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
@@ -380,6 +380,13 @@
         }
         //鏌ヨ鏃ュ織淇℃伅
         workorder.setLogList(this.getLogList(workorder.getId()));
+        if(Constants.equalsInteger(workorder.getType(),Constants.ONE)){
+            //濡傛灉鏄疍CA鎻愪氦璁板綍锛屾煡璇㈠瓙宸ュ崟闆嗗悎
+            Workorder param = new Workorder();
+            param.setIsdeleted(Constants.ZERO);
+            param.setDcaRecordId(workorder.getId());
+            workorder.setDcaChildList(findList(param));
+        }
         return workorder;
     }
 
@@ -464,9 +471,72 @@
     }
 
     @Override
-    public List<Workorder> findList(Workorder workorder) {
-        QueryWrapper<Workorder> wrapper = new QueryWrapper<>(workorder);
-        return workorderMapper.selectList(wrapper);
+    public List<Workorder> findList(Workorder pageWrap) {
+        MPJLambdaWrapper<Workorder> queryWrapper = new MPJLambdaWrapper<>();
+        pageWrap.setIsdeleted(Constants.ZERO);
+        queryWrapper
+                .selectAll(Workorder.class)
+                .selectAs(Member::getName,Workorder::getMemberName)
+                .selectAs(Member::getCompanyName,Workorder::getCompanyName)
+                .selectAs(Member::getPhone,Workorder::getMemberPhone)
+                .select(" c3.name ",Workorder::getTypeName)
+                .select(" c4.name ",Workorder::getProblemName)
+                .leftJoin(Member.class,Member::getId,Workorder::getMemberId)
+                .leftJoin(" category c3 on  t.TYPE_ID = c3.id   ") //椋庨櫓绫诲瀷
+                .leftJoin(" category c4 on  t.PROBLEM_ID = c4.id   ") //DCA闂缂栫爜
+                .eq( pageWrap.getId() != null, Workorder::getId, pageWrap.getId())
+                .eq( pageWrap.getCreator() != null, Workorder::getCreator, pageWrap.getCreator())
+                .ge( pageWrap.getCreateDate() != null, Workorder::getCreateDate, Utils.Date.getStart( pageWrap.getCreateDate()))
+                .le( pageWrap.getCreateDate() != null, Workorder::getCreateDate, Utils.Date.getEnd( pageWrap.getCreateDate()))
+                .eq( pageWrap.getEditor() != null, Workorder::getEditor, pageWrap.getEditor())
+                .ge( pageWrap.getEditDate() != null, Workorder::getEditDate, Utils.Date.getStart( pageWrap.getEditDate()))
+                .le( pageWrap.getEditDate() != null, Workorder::getEditDate, Utils.Date.getEnd( pageWrap.getEditDate()))
+                .eq( pageWrap.getIsdeleted() != null, Workorder::getIsdeleted, pageWrap.getIsdeleted())
+                .eq( pageWrap.getCategoryId() != null, Workorder::getCategoryId, pageWrap.getCategoryId())
+                .eq( pageWrap.getRemark() != null, Workorder::getRemark, pageWrap.getRemark())
+                .eq( pageWrap.getStatus() != null, Workorder::getStatus, pageWrap.getStatus())
+                .eq( pageWrap.getSortnum() != null, Workorder::getSortnum, pageWrap.getSortnum())
+                .eq( pageWrap.getType() != null, Workorder::getType, pageWrap.getType())
+                .eq( pageWrap.getMemberId() != null, Workorder::getMemberId, pageWrap.getMemberId())
+                .eq( pageWrap.getCompanyId() != null, Workorder::getCompanyId, pageWrap.getCompanyId())
+                .eq( pageWrap.getSubmitDate() != null, Workorder::getSubmitDate, pageWrap.getSubmitDate())
+                .eq( pageWrap.getMemberType() != null, Workorder::getMemberType, pageWrap.getMemberType())
+                .eq( pageWrap.getMemberQwids() != null, Workorder::getMemberQwids,  pageWrap.getMemberQwids())
+                .like( pageWrap.getMemberNames() != null, Workorder::getMemberNames,  pageWrap.getMemberNames())
+                .eq( pageWrap.getLocaltionId() != null, Workorder::getLocaltionId,  pageWrap.getLocaltionId())
+                .eq( pageWrap.getOutJiuyi() != null, Workorder::getOutJiuyi,  pageWrap.getOutJiuyi())
+                .eq( pageWrap.getIsYiwushi() != null, Workorder::getIsYiwushi,  pageWrap.getIsYiwushi())
+                .eq( pageWrap.getIsHurted() != null, Workorder::getIsHurted,  pageWrap.getIsHurted())
+                .eq( pageWrap.getWorkRelated() != null, Workorder::getWorkRelated,  pageWrap.getWorkRelated())
+                .eq( pageWrap.getEventInfo() != null, Workorder::getEventInfo,  pageWrap.getEventInfo())
+                .eq( pageWrap.getEmialMemberIds() != null, Workorder::getEmialMemberIds,  pageWrap.getEmialMemberIds())
+                .eq( pageWrap.getQwnoticeMemberIds() != null, Workorder::getQwnoticeMemberIds,  pageWrap.getQwnoticeMemberIds())
+                .eq( pageWrap.getHappenTime() != null, Workorder::getHappenTime,  pageWrap.getHappenTime())
+                .eq( pageWrap.getTypeId() != null, Workorder::getTypeId,  pageWrap.getTypeId())
+                .eq( pageWrap.getRiskInfo() != null, Workorder::getRiskInfo,  pageWrap.getRiskInfo())
+                .eq( pageWrap.getManagerId() != null, Workorder::getManagerId,  pageWrap.getManagerId())
+                .eq( pageWrap.getDealerId() != null, Workorder::getDealerId,  pageWrap.getDealerId())
+                .ge( pageWrap.getDispatchTime() != null, Workorder::getDispatchTime, Utils.Date.getStart( pageWrap.getDispatchTime()))
+                .le( pageWrap.getDispatchTime() != null, Workorder::getDispatchTime, Utils.Date.getEnd( pageWrap.getDispatchTime()))
+                .eq( pageWrap.getDispatchInfo() != null, Workorder::getDispatchInfo,  pageWrap.getDispatchInfo())
+                .ge( pageWrap.getDealTime() != null, Workorder::getDealTime, Utils.Date.getStart( pageWrap.getDealTime()))
+                .le( pageWrap.getDealTime() != null, Workorder::getDealTime, Utils.Date.getEnd( pageWrap.getDealTime()))
+                .eq( pageWrap.getDealInfo() != null, Workorder::getDealInfo,  pageWrap.getDealInfo())
+                .eq( pageWrap.getProblemTitle() != null, Workorder::getProblemTitle,  pageWrap.getProblemTitle())
+                .eq( pageWrap.getProblemId() != null, Workorder::getProblemId,  pageWrap.getProblemId())
+                .eq( pageWrap.getProblemInfo() != null, Workorder::getProblemInfo,  pageWrap.getProblemInfo())
+                .eq( pageWrap.getLocationName() != null, Workorder::getLocationName,  pageWrap.getLocationName())
+                .like( pageWrap.getCode() != null, Workorder::getCode,  pageWrap.getCode())
+                .eq( pageWrap.getDcaYesNum() != null, Workorder::getDcaYesNum,  pageWrap.getDcaYesNum())
+                .eq( pageWrap.getDcaNoNum() != null, Workorder::getDcaNoNum,  pageWrap.getDcaNoNum())
+                .eq( pageWrap.getDcaRecordId() != null, Workorder::getDcaRecordId,  pageWrap.getDcaRecordId())
+                .eq( pageWrap.getDcaCsIds() != null, Workorder::getDcaCsIds,  pageWrap.getDcaCsIds()) ;
+        if ( pageWrap.getMemberName() != null) {
+            queryWrapper.and( ms->ms.like(Member::getName, pageWrap.getMemberName())
+                    .or().like(Member::getPhone, pageWrap.getMemberName()) );
+        }
+        queryWrapper.orderByDesc(Workorder::getProblemId);
+        return workorderMapper.selectJoinList(Workorder.class,queryWrapper);
     }
   
     @Override
@@ -480,11 +550,13 @@
                 .selectAs(Member::getName,Workorder::getMemberName)
                 .selectAs(Member::getCompanyName,Workorder::getCompanyName)
                 .selectAs(Member::getPhone,Workorder::getMemberPhone)
+                .select(" c2.name ",Workorder::getCategoryName)
                 .select(" c3.name ",Workorder::getTypeName)
                 .select(" c4.name ",Workorder::getProblemName)
                 .leftJoin(Member.class,Member::getId,Workorder::getMemberId)
                 .leftJoin(" category c3 on  t.TYPE_ID = c3.id   ") //椋庨櫓绫诲瀷
                 .leftJoin(" category c4 on  t.PROBLEM_ID = c4.id   ") //DCA闂缂栫爜
+                .leftJoin(" category c2 on  t.CATEGORY_ID = c2.id   ") //DCA闂缂栫爜
                 .eq(pageWrap.getModel().getId() != null, Workorder::getId, pageWrap.getModel().getId())
                 .eq(pageWrap.getModel().getCreator() != null, Workorder::getCreator, pageWrap.getModel().getCreator())
                 .ge(pageWrap.getModel().getCreateDate() != null, Workorder::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))

--
Gitblit v1.9.3