From ccf28d1fed1aa2e5437dbe64b5133ba1cbde6ec7 Mon Sep 17 00:00:00 2001
From: renkang <8417338+k94314517@user.noreply.gitee.com>
Date: 星期五, 03 一月 2025 15:30:52 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 admin/src/views/contract/components/contractEdit.vue                                                            |  235 ++++++++------
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolTaskRecord.java               |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java              |    3 
 h5/pages/polling/detail.vue                                                                                     |   54 ++
 h5/pages/workOrder/edit.vue                                                                                     |    9 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskRecordServiceImpl.java |   45 +-
 admin/src/views/Inspection/task.vue                                                                             |    2 
 h5/pages/operation/device.vue                                                                                   |   20 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java        |   14 
 h5/pages/index.vue                                                                                              |   26 
 h5/pages/login.vue                                                                                              |    2 
 admin/src/views/contract/components/contractDetail.vue                                                          |    4 
 admin/src/views/workorder/components/detail.vue                                                                 |   72 +++-
 h5/pages/polling/task.vue                                                                                       |   21 +
 h5/static/plan_ic_finish@2x.png                                                                                 |    0 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java                    |    7 
 h5/pages/workOrder/detail.vue                                                                                   |  153 +++++++-
 h5/pages/polling/point.vue                                                                                      |   74 ++--
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java       |    8 
 admin/src/views/workorder/workorderList.vue                                                                     |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolScheme.java                   |   11 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CompanyService.java                     |    2 
 admin/src/views/Inspection/components/taskDetail.vue                                                            |   17 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java     |   12 
 admin/src/views/business/areas.vue                                                                              |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java                   |    1 
 admin/.env.development                                                                                          |    7 
 admin/src/views/project/components/OperaYwRoomWindow.vue                                                        |   13 
 h5/utils/config.js                                                                                              |    4 
 admin/src/components/business/OperaAreasWindow.vue                                                              |    8 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java             |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwWorkorder.java                      |    9 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java          |    3 
 admin/src/views/Inspection/plan.vue                                                                             |   44 +
 h5/pages/workOrder/list.vue                                                                                     |    6 
 admin/.env.test                                                                                                 |    4 
 h5/static/play.png                                                                                              |    0 
 admin/src/api/company.js                                                                                        |    4 
 admin/src/views/project/components/OperaYwBuildingWindow.vue                                                    |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java            |   12 
 admin/src/views/workorder/components/OperaYwWorkorderWindow.vue                                                 |   14 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwWorkorderServiceImpl.java        |   20 +
 42 files changed, 646 insertions(+), 314 deletions(-)

diff --git a/admin/.env.development b/admin/.env.development
index e812482..dbb3c07 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -4,7 +4,10 @@
 VUE_APP_CONTEXT_PATH = './'
 
 # VUE_APP_API_URL  = 'http://localhost:10010'
-# VUE_APP_API_URL  = 'http://192.168.0.163:10010'
-VUE_APP_API_URL  = 'https://dmtest.ahapp.net/fn_admin'
+
+VUE_APP_API_URL  = 'http://192.168.0.137:10010'
+
+# VUE_APP_API_URL  = 'https://dmtest.ahapp.net/fn_admin'
+
 # VUE_APP_API_URL  = 'http://10.50.250.253:8088/gateway_interface'
 
diff --git a/admin/.env.test b/admin/.env.test
index 3201150..4da080a 100644
--- a/admin/.env.test
+++ b/admin/.env.test
@@ -4,10 +4,10 @@
 # VUE_APP_API_URL  = 'http://192.168.5.13/gateway_interface'
 
 # 浠诲悍
-# VUE_APP_API_URL  = 'http://192.168.0.163:10010/'
+VUE_APP_API_URL  = 'http://192.168.0.137:10010/'
 
 # 钀嶅
 # VUE_APP_API_URL  = 'http://192.168.0.108:10010/'
 
 # 娴嬭瘯鏈嶅姟
-VUE_APP_API_URL  = 'https://dmtest.ahapp.net/gateway_interface'
+# VUE_APP_API_URL  = 'https://dmtest.ahapp.net/gateway_interface'
diff --git a/admin/src/api/company.js b/admin/src/api/company.js
index 832abb0..ad54d7a 100644
--- a/admin/src/api/company.js
+++ b/admin/src/api/company.js
@@ -11,3 +11,7 @@
 export function companyList (data) {
   return request.post('/visitsAdmin/cloudService/business/company/list', data)
 }
+// 鍒楄〃
+export function companyListConstract (data) {
+  return request.post('/visitsAdmin/cloudService/business/company/listForConstract', data)
+}
diff --git a/admin/src/components/business/OperaAreasWindow.vue b/admin/src/components/business/OperaAreasWindow.vue
index 2458dad..5cdd9cc 100644
--- a/admin/src/components/business/OperaAreasWindow.vue
+++ b/admin/src/components/business/OperaAreasWindow.vue
@@ -9,9 +9,12 @@
       <el-form-item :label="form.type==1?'甯傚悕绉�':'鍘垮尯鍚嶇О'" prop="name">
         <el-input v-model="form.name" :placeholder="form.type==1?'杈撳叆甯傚悕绉�':'杈撳叆鍘垮尯鍚嶇О'" v-trim/>
       </el-form-item>
-      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
-        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+      <el-form-item label="琛屾斂鍖轰唬鐮�" prop="code">
+        <el-input v-model="form.code" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
       </el-form-item>
+<!--      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+      </el-form-item>-->
     </el-form>
   </GlobalAlertWindow>
 </template>
@@ -30,6 +33,7 @@
         id: null,
         parentId: null,
         name: null,
+        code:null,
         sortnum: '0',
         type: null
       },
diff --git a/admin/src/views/Inspection/components/taskDetail.vue b/admin/src/views/Inspection/components/taskDetail.vue
index 54b30a5..a357861 100644
--- a/admin/src/views/Inspection/components/taskDetail.vue
+++ b/admin/src/views/Inspection/components/taskDetail.vue
@@ -1,5 +1,5 @@
 <template>
-  <GlobalWindow title="宸℃浠诲姟璇︽儏" :showConfirm="false" :visible.sync="isShowModal">
+  <GlobalWindow title="宸℃浠诲姟璇︽儏" width="800px" :showConfirm="false" :visible.sync="isShowModal">
     <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getDetail(1)" @clear="clear" />
     <el-table v-loading="loading" :data="list" stripe>
       <el-table-column prop="pointName" label="宸℃鐐瑰悕绉�" min-width="100" show-overflow-tooltip />
@@ -11,12 +11,25 @@
       </el-table-column>
       <el-table-column prop="realname" label="宸℃浜�" min-width="100" show-overflow-tooltip />
       <el-table-column prop="editDate" label="宸℃鏃堕棿" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="" label="宸℃缁撴灉" min-width="100" show-overflow-tooltip>
+      <el-table-column prop="files" label="宸℃缁撴灉" min-width="100" show-overflow-tooltip >
         <template v-slot="{ row }">
           <span class="gray" v-if="row.dealStatus == 0">姝e父</span>
           <span class="red" v-if="row.dealStatus == 1">寮傚父</span>
         </template>
       </el-table-column>
+      <el-table-column prop="" label="宸℃闄勪欢" min-width="100" show-overflow-tooltip>
+        <template v-slot="{ row }">
+          <div class="value" v-if="row.multifileList != null && row.multifileList.length">
+            <div v-for="item in row.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: 60px;height: 60px;object-fit: contain;" :src="item.fileurlFull" />
+              <el-image v-else-if="item.fileurlFull" style="width:60px; height: 60px" :src="item.fileurlFull"
+                        :preview-src-list="[item.fileurlFull]">
+              </el-image>
+            </div>
+          </div>
+        </template>
+      </el-table-column>
       <el-table-column prop="dealInfo" label="宸℃璇存槑" min-width="100" show-overflow-tooltip />
     </el-table>
     <div class="mt20">
diff --git a/admin/src/views/Inspection/plan.vue b/admin/src/views/Inspection/plan.vue
index 421f804..31bd4c2 100644
--- a/admin/src/views/Inspection/plan.vue
+++ b/admin/src/views/Inspection/plan.vue
@@ -2,14 +2,17 @@
   <TableLayout :permissions="['business:ywpatrolscheme:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
     <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="寮�濮嬫棩鏈�" prop="selDate">
+        <el-date-picker type="daterange" v-model="searchForm.selDate"  @change="changeSelDate" clearable value-format="yyyy-MM-dd"
+        />
+      </el-form-item>
+      <el-form-item label="缁撴潫鏃ユ湡" prop="selDateSec">
+        <el-date-picker type="daterange" v-model="searchForm.selDateSec"  @change="changeSelDateSec" clearable value-format="yyyy-MM-dd"
+         />
+      </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="selDate">
-        <el-date-picker type="daterange" v-model="searchForm.selDate" clearable value-format="yyyy-MM-dd"
-          @change="changeDate" />
-      </el-form-item>
-
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
@@ -90,7 +93,9 @@
     return {
       // 鎼滅储
       searchForm: {
-        title: ''
+        title: '',
+        selDate:[],
+        selDateSec:[]
       }
     }
   },
@@ -113,16 +118,7 @@
         this.search()
       })
     },
-    changeDate(e) {
-      if (e && e.length > 0) {
-        this.$set(this.searchForm, 'startDate', e[0])
-        this.$set(this.searchForm, 'endDate', e[1])
-      } else {
-        this.$set(this.searchForm, 'startDate', '')
-        this.$set(this.searchForm, 'endDate', '')
-      }
 
-    },
     reset() {
       this.searchForm = {}
       this.search()
@@ -137,6 +133,24 @@
       this.$refs.operaYwPatrolSchemeWindow.initData()
 
     },
+    changeSelDate(e) {
+      if (e && e.length > 0) {
+        this.$set(this.searchForm, 'startDate', e[0] )
+        this.$set(this.searchForm, 'endDate', e[1]  )
+      } else {
+        this.$set(this.searchForm, 'startDate', '')
+        this.$set(this.searchForm, 'endDate', '')
+      }
+    },
+    changeSelDateSec(e) {
+      if (e && e.length > 0) {
+        this.$set(this.searchForm, 'startDateSec', e[0] )
+        this.$set(this.searchForm, 'endDateSec', e[1]  )
+      } else {
+        this.$set(this.searchForm, 'startDateSec', '')
+        this.$set(this.searchForm, 'endDateSec', '')
+      }
+    },
   }
 }
 </script>
diff --git a/admin/src/views/Inspection/task.vue b/admin/src/views/Inspection/task.vue
index b9fe645..7084b40 100644
--- a/admin/src/views/Inspection/task.vue
+++ b/admin/src/views/Inspection/task.vue
@@ -5,7 +5,7 @@
       <el-form-item label="璁″垝鍚嶇О" prop="planTitle">
         <el-input v-model="searchForm.planTitle" placeholder="璇疯緭鍏ヨ鍒掑悕绉�" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="浠诲姟鐘舵��">
+      <el-form-item label="浠诲姟鐘舵��" prop="status">
         <el-select v-model="searchForm.status" label="浠诲姟鐘舵��" filterable clearable>
           <el-option value="0" label="寰呭紑濮�"></el-option>
           <el-option value="1" label="杩涜涓�"></el-option>
diff --git a/admin/src/views/business/areas.vue b/admin/src/views/business/areas.vue
index 0908620..d308427 100644
--- a/admin/src/views/business/areas.vue
+++ b/admin/src/views/business/areas.vue
@@ -17,8 +17,11 @@
         @selection-change="handleSelectionChange"
       >
         <el-table-column prop="name" label="鍦板尯鍚嶇О" min-width="100px"></el-table-column>
+        <el-table-column prop="code" label="琛屾斂鍖轰唬鐮�" align="center" min-width="140px"></el-table-column>
         <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" align="center" min-width="140px"></el-table-column>
+<!--
         <el-table-column prop="sortnum" label="鎺掑簭鐮�" align="center" min-width="140px"></el-table-column>
+-->
         <el-table-column
           v-if="containPermissions(['business:areas:update', 'business:areas:create', 'business:areas:delete'])"
           label="鎿嶄綔"
diff --git a/admin/src/views/contract/components/contractDetail.vue b/admin/src/views/contract/components/contractDetail.vue
index a9c43db..3b49554 100644
--- a/admin/src/views/contract/components/contractDetail.vue
+++ b/admin/src/views/contract/components/contractDetail.vue
@@ -235,7 +235,7 @@
           label="璐﹀崟鏉ユ簮">
           <template slot-scope="{row}">
             <span v-if="row.type === 0">鍚堝悓璐﹀崟</span>
-            <span v-if="row.type === 1">鑷缓璐﹀崟</span>
+            <span v-else>鑷缓璐﹀崟</span>
           </template>
         </el-table-column>
         <el-table-column
@@ -345,7 +345,7 @@
       page: 1,
       total: 0,
       tableData: [],
-      
+
       loading: false
     }
   },
diff --git a/admin/src/views/contract/components/contractEdit.vue b/admin/src/views/contract/components/contractEdit.vue
index a441200..84a9fe8 100644
--- a/admin/src/views/contract/components/contractEdit.vue
+++ b/admin/src/views/contract/components/contractEdit.vue
@@ -1,12 +1,6 @@
 <template>
-  <GlobalWindow
-    width="100%"
-    :title="title"
-    :withFooter="false"
-    :visible.sync="visible"
-    :confirm-working="isWorking"
-    @confirm="confirm"
-    @close="close">
+  <GlobalWindow width="100%" :title="title" :withFooter="false" :visible.sync="visible" :confirm-working="isWorking"
+    @confirm="confirm" @close="close">
     <div class="tabs fixed">
       <div class="tab" :class="{ active: activeTabs === 0 }">1銆佸熀鏈俊鎭�</div>
       <div class="tab" :class="{ active: activeTabs === 1 }">2銆佽垂鐢ㄦ潯娆�</div>
@@ -19,7 +13,8 @@
             <div class="list">
               <el-form-item label="鍚堝悓绫诲瀷" prop="type">
                 <el-select v-model="form.type" placeholder="璇烽�夋嫨" @change="changeType">
-                  <el-option v-for="(item, index) in types" :key="index" :value="item.value" :label="item.name"></el-option>
+                  <el-option v-for="(item, index) in types" :key="index" :value="item.value"
+                    :label="item.name"></el-option>
                 </el-select>
               </el-form-item>
               <el-form-item label="鍚堝悓缂栧彿" prop="code">
@@ -27,21 +22,26 @@
               </el-form-item>
               <el-form-item label="缁忓姙浜�" prop="userId">
                 <el-select v-model="form.userId" filterable placeholder="璇烽�夋嫨">
-                  <el-option v-for="(item, index) in agentList" :key="index" :value="item.id" :label="item.realname"></el-option>
+                  <el-option v-for="(item, index) in agentList" :key="index" :value="item.id"
+                    :label="item.realname"></el-option>
                 </el-select>
               </el-form-item>
               <el-form-item label="鍚堝悓绛捐鏃ユ湡" prop="signDate">
-                <el-date-picker type="date" v-model="form.signDate" value-format="yyyy-MM-dd" :clearable="false" placeholder="璇烽�夋嫨" />
+                <el-date-picker type="date" v-model="form.signDate" value-format="yyyy-MM-dd" :clearable="false"
+                  placeholder="璇烽�夋嫨" />
               </el-form-item>
               <el-form-item label="鍚堝悓寮�濮嬫棩鏈�" prop="startDate">
-                <el-date-picker type="date" v-model="form.startDate" @change="getHouseData" :clearable="false" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+                <el-date-picker type="date" v-model="form.startDate" @change="getHouseData" :clearable="false"
+                  value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
               </el-form-item>
               <el-form-item label="鍚堝悓缁撴潫鏃ユ湡" prop="endDate">
-                <el-date-picker type="date" v-model="form.endDate" @change="getHouseData" :clearable="false" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+                <el-date-picker type="date" v-model="form.endDate" @change="getHouseData" :clearable="false"
+                  value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
               </el-form-item>
               <el-form-item label="褰掑睘椤圭洰" prop="projectId">
                 <el-select v-model="form.projectId" @change="getHouseTree" placeholder="璇烽�夋嫨">
-                  <el-option v-for="(item, index) in projectList" :key="index" :value="item.id" :label="item.name"></el-option>
+                  <el-option v-for="(item, index) in projectList" :key="index" :value="item.id"
+                    :label="item.name"></el-option>
                 </el-select>
               </el-form-item>
               <el-form-item label="缁撴灉鍙栨暣(鍥涜垗浜斿叆)" prop="roundedUp">
@@ -52,7 +52,8 @@
               </el-form-item>
               <el-form-item label="鎵�灞炲叕鍙�" prop="companyId">
                 <el-select v-model="form.companyId" placeholder="璇烽�夋嫨">
-                  <el-option v-for="(item, index) in comparyList" :key="index" :value="item.id" :label="item.name"></el-option>
+                  <el-option v-for="(item, index) in comparyList" :key="index" :value="item.id"
+                    :label="item.name"></el-option>
                 </el-select>
               </el-form-item>
             </div>
@@ -65,24 +66,21 @@
               </el-form-item>
               <el-form-item label="鑱旂郴浜�" prop="memberId">
                 <el-select v-model="form.memberId" placeholder="璇烽�夋嫨">
-                  <el-option v-for="(item, index) in contactsList" :key="index" :value="item.id" :label="item.name"></el-option>
+                  <el-option v-for="(item, index) in contactsList" :key="index" :value="item.id"
+                    :label="item.name"></el-option>
                 </el-select>
-<!--                <el-input v-model="form.memberName" readonly placeholder="璇风偣鍑婚�夋嫨绉熷" />-->
+                <!--                <el-input v-model="form.memberName" readonly placeholder="璇风偣鍑婚�夋嫨绉熷" />-->
               </el-form-item>
             </div>
           </el-form>
         </div>
         <div class="main_house">
           <div class="title">璇烽�夋嫨鎴挎簮</div>
-          <el-tree
-            :data="houseList"
-            show-checkbox
-            node-key="idd"
-            @check="checkHouseRoom"
-            :default-expanded-keys="ids"
-            :default-checked-keys="ids"
-            :props="{ children: 'projectDataVOList', label: 'name' }">
-            <span class="custom-tree-node" style="width: 100%; display: flex; align-items: center; justify-content: space-between;" slot-scope="{ node, data }">
+          <el-tree :data="houseList" show-checkbox node-key="idd" @check="checkHouseRoom" :default-expanded-keys="ids"
+            :default-checked-keys="ids" :props="{ children: 'projectDataVOList', label: 'name' }">
+            <span class="custom-tree-node"
+              style="width: 100%; display: flex; align-items: center; justify-content: space-between;"
+              slot-scope="{ node, data }">
               <span>{{ data.name }}</span>
               <span style="color: #2080f7;" v-if="data.lv === 3">
                 {{ data.area }}銕�
@@ -113,8 +111,12 @@
     </div>
     <div v-show="activeTabs === 1">
       <div class="tabs cost_tabs">
-        <div class="tab" :class="{ active: cactiveTabs === 0 }" @click="ctabsClick(0)" v-if="[0,2].includes(form.type)">绉熻祦鏉℃</div>
-        <div class="tab" :class="{ active: cactiveTabs === 1 }" @click="ctabsClick(1)" v-if="[0,1].includes(form.type)">鐗╀笟鏉℃</div>
+        <div class="tab" :class="{ active: cactiveTabs === 0 }" @click="ctabsClick(0)" v-if="[0, 2].includes(form.type)">
+          绉熻祦鏉℃
+        </div>
+        <div class="tab" :class="{ active: cactiveTabs === 1 }" @click="ctabsClick(1)" v-if="[0, 1].includes(form.type)">
+          鐗╀笟鏉℃
+        </div>
       </div>
       <!--   绉熻祦鏉℃   -->
       <div v-show="cactiveTabs === 0">
@@ -128,7 +130,8 @@
                 </el-form-item>
                 <el-form-item label="浠樻鏂瑰紡" prop="zlPayType">
                   <el-select v-model="form.zlPayType" @change="changePayType" placeholder="璇烽�夋嫨">
-                    <el-option v-for="(item, index) in payMethods" :key="index" :value="item.value" :label="item.name"></el-option>
+                    <el-option v-for="(item, index) in payMethods" :key="index" :value="item.value"
+                      :label="item.name"></el-option>
                   </el-select>
                 </el-form-item>
                 <el-form-item label="鍏嶇鏈�" prop="zlDate">
@@ -141,18 +144,22 @@
                 <el-button type="text" size="medium" @click="addZl">澧炲姞</el-button>
               </div>
               <div class="list">
-                <div style="width: 100%; display: flex; flex-wrap: wrap;" v-for="(zlDetailList, index) in form.zlDetailList" :key="index">
+                <div style="width: 100%; display: flex; flex-wrap: wrap;"
+                  v-for="(zlDetailList, index) in form.zlDetailList" :key="index">
                   <el-form-item label="璧峰鏃ユ湡" :prop="'zlDetailList.' + index + '.time'" :rules="{
                     required: true, message: '璇烽�夋嫨', trigger: 'blur'
                   }">
-                    <el-date-picker type="daterange" v-model="zlDetailList.time" @change="getDate1($event, index)" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+                    <el-date-picker type="daterange" v-model="zlDetailList.time" @change="getDate1($event, index)"
+                      value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
                   </el-form-item>
                   <el-form-item label="鍚堝悓鍗曚环" :prop="'zlDetailList.' + index + '.price'" :rules="{
                     required: true, message: '璇疯緭鍏�', trigger: 'blur'
                   }">
                     <el-input placeholder="璇疯緭鍏�" v-model="zlDetailList.price" @input="clearzl" class="input-with-select">
-                      <el-select v-model="zlDetailList.circleType" @change="clearzl" style="width: 150px;" slot="append" placeholder="璇烽�夋嫨">
-                        <el-option v-for="(item, index) in unitOps" :key="index" :value="item.value" :label="item.name"></el-option>
+                      <el-select v-model="zlDetailList.circleType" @change="clearzl" style="width: 150px;" slot="append"
+                        placeholder="璇烽�夋嫨">
+                        <el-option v-for="(item, index) in unitOps" :key="index" :value="item.value"
+                          :label="item.name"></el-option>
                       </el-select>
                     </el-input>
                   </el-form-item>
@@ -161,7 +168,8 @@
                   }">
                     <div style="display: flex; align-items: center; justify-content: space-between;">
                       <el-input v-model="zlDetailList.advanceDays" @input="clearzl" placeholder="璇疯緭鍏�" v-trim />
-                      <el-link :underline="false" type="danger" @click="deleZl(index)" style="margin-left: 20px; flex-shrink: 0;">鍒犻櫎</el-link>
+                      <el-link :underline="false" type="danger" @click="deleZl(index)"
+                        style="margin-left: 20px; flex-shrink: 0;">鍒犻櫎</el-link>
                     </div>
                   </el-form-item>
                 </div>
@@ -185,24 +193,24 @@
           </el-table-column>
           <el-table-column label="鏈熸暟" align="center" show-overflow-tooltip>
             <template slot-scope="{row}">
-              <el-tag type="success" v-if="row.sortnum > 0">{{row.sortnum}}</el-tag>
+              <el-tag type="success" v-if="row.sortnum > 0">{{ row.sortnum }}</el-tag>
             </template>
           </el-table-column>
           <el-table-column label="鍖洪棿" align="center" show-overflow-tooltip>
             <template slot-scope="{row}">
-              {{row.startDate}} ~ {{row.endDate}}
+              {{ row.startDate }} ~ {{ row.endDate }}
             </template>
           </el-table-column>
           <el-table-column prop="planPayDate" label="浠樻鏃�" align="center" show-overflow-tooltip />
           <el-table-column label="搴旀敹" align="center" show-overflow-tooltip>
             <template slot-scope="{row}">
-              {{row.receivableFee}}鍏�
+              {{ row.receivableFee }}鍏�
             </template>
           </el-table-column>
         </el-table>
         <div class="total">
           <span>鎬昏</span>
-          <div>璐圭敤搴旀敹鎬昏锛歿{zlPrice}}鍏冿紝鎶奸噾搴旀敹鎬昏锛歿{form.zlDeposit}}鍏�</div>
+          <div>璐圭敤搴旀敹鎬昏锛歿{ zlPrice }}鍏冿紝鎶奸噾搴旀敹鎬昏锛歿{ form.zlDeposit }}鍏�</div>
         </div>
       </div>
       <!--   鐗╀笟鏉℃   -->
@@ -217,7 +225,8 @@
                 </el-form-item>
                 <el-form-item label="浠樻鏂瑰紡" prop="wyPayType">
                   <el-select v-model="form.wyPayType" @change="changePayType1" placeholder="璇烽�夋嫨">
-                    <el-option v-for="(item, index) in payMethods" :key="index" :value="item.value" :label="item.name"></el-option>
+                    <el-option v-for="(item, index) in payMethods" :key="index" :value="item.value"
+                      :label="item.name"></el-option>
                   </el-select>
                 </el-form-item>
                 <el-form-item label="鍏嶇鏈�" prop="wyDate">
@@ -230,18 +239,22 @@
                 <el-button type="text" size="medium" @click="addWy">澧炲姞</el-button>
               </div>
               <div class="list">
-                <div style="width: 100%; display: flex; flex-wrap: wrap;" v-for="(wyDetailList, index) in form.wyDetailList" :key="index">
+                <div style="width: 100%; display: flex; flex-wrap: wrap;"
+                  v-for="(wyDetailList, index) in form.wyDetailList" :key="index">
                   <el-form-item label="璧峰鏃ユ湡" :prop="'wyDetailList.' + index + '.time'" :rules="{
                     required: true, message: '璇疯緭鍏�', trigger: 'blur'
                   }">
-                    <el-date-picker type="daterange" v-model="wyDetailList.time" @change="getDate2($event, index)" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+                    <el-date-picker type="daterange" v-model="wyDetailList.time" @change="getDate2($event, index)"
+                      value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
                   </el-form-item>
                   <el-form-item label="鍚堝悓鍗曚环" :prop="'wyDetailList.' + index + '.price'" :rules="{
                     required: true, message: '璇疯緭鍏�', trigger: 'blur'
                   }">
                     <el-input placeholder="璇疯緭鍏�" @input="clearwy" v-model="wyDetailList.price">
-                      <el-select v-model="wyDetailList.circleType" @change="clearwy" style="width: 150px;" slot="append" placeholder="璇烽�夋嫨">
-                        <el-option v-for="(item, index) in unitOps1" :key="index" :value="item.value" :label="item.name"></el-option>
+                      <el-select v-model="wyDetailList.circleType" @change="clearwy" style="width: 150px;" slot="append"
+                        placeholder="璇烽�夋嫨">
+                        <el-option v-for="(item, index) in unitOps1" :key="index" :value="item.value"
+                          :label="item.name"></el-option>
                       </el-select>
                     </el-input>
                   </el-form-item>
@@ -250,7 +263,8 @@
                   }">
                     <div style="display: flex; align-items: center; justify-content: space-between;">
                       <el-input v-model="wyDetailList.advanceDays" @input="clearwy" placeholder="璇疯緭鍏�" v-trim />
-                      <el-link :underline="false" type="danger" @click="deleWy(index)" style="margin-left: 20px; flex-shrink: 0;">鍒犻櫎</el-link>
+                      <el-link :underline="false" type="danger" @click="deleWy(index)"
+                        style="margin-left: 20px; flex-shrink: 0;">鍒犻櫎</el-link>
                     </div>
                   </el-form-item>
                 </div>
@@ -274,32 +288,33 @@
           </el-table-column>
           <el-table-column label="鏈熸暟" align="center" show-overflow-tooltip>
             <template slot-scope="{row}">
-              <el-tag type="success" v-if="row.sortnum > 0">{{row.sortnum}}</el-tag>
+              <el-tag type="success" v-if="row.sortnum > 0">{{ row.sortnum }}</el-tag>
             </template>
           </el-table-column>
           <el-table-column label="鍖洪棿" align="center" show-overflow-tooltip>
             <template slot-scope="{row}">
-              {{row.startDate}} ~ {{row.endDate}}
+              {{ row.startDate }} ~ {{ row.endDate }}
             </template>
           </el-table-column>
           <el-table-column prop="planPayDate" label="浠樻鏃�" align="center" show-overflow-tooltip />
           <el-table-column prop="receivableFee" label="搴旀敹" align="center" show-overflow-tooltip>
             <template slot-scope="{row}">
-              {{row.receivableFee}}鍏�
+              {{ row.receivableFee }}鍏�
             </template>
           </el-table-column>
         </el-table>
         <div class="total">
           <span>鎬昏</span>
-          <div>璐圭敤搴旀敹鎬昏锛歿{wyPrice}}鍏冿紝鎶奸噾搴旀敹鎬昏锛歿{form.wyDeposit}}鍏�</div>
+          <div>璐圭敤搴旀敹鎬昏锛歿{ wyPrice }}鍏冿紝鎶奸噾搴旀敹鎬昏锛歿{ form.wyDeposit }}鍏�</div>
         </div>
       </div>
     </div>
     <div class="window__footer">
       <slot name="footer">
-        <el-button @click="confirm" :loading="confirmWorking" type="primary">{{activeTabs === 0 ? '涓嬩竴姝�' : '鎻愪氦'}}</el-button>
+        <el-button @click="confirm" :loading="confirmWorking" type="primary">{{ activeTabs === 0 ? '涓嬩竴姝�' :
+          '鎻愪氦'}}</el-button>
         <slot name="btns" />
-        <el-button @click="close">{{activeTabs === 0 ? '杩斿洖' : '涓婁竴姝�'}}</el-button>
+        <el-button @click="close">{{ activeTabs === 0 ? '杩斿洖' : '涓婁竴姝�' }}</el-button>
       </slot>
     </div>
     <!-- 閫夋嫨绉熷 -->
@@ -316,7 +331,7 @@
 import { ywList } from '@/api/customer'
 import { getUserList } from '@/api/system/user'
 import { getProjectList, tree } from '@/api/project/ywProject'
-import { companyList } from '@/api/company'
+import {companyListConstract as companyList } from '@/api/company'
 import { Message, Loading } from 'element-ui'
 import { mapState } from 'vuex'
 export default {
@@ -328,7 +343,7 @@
   computed: {
     ...mapState(['userInfo'])
   },
-  data () {
+  data() {
     return {
       title: '鍒涘缓鍚堝悓',
       activeTabs: 0,
@@ -347,7 +362,7 @@
         memberId: '',
         memberName: '',
         fileList: [],
-  
+
         zlDeposit: '',
         zlPayType: '',
         zlFreeStartDate: '',
@@ -363,7 +378,8 @@
             advanceDays: ''
           }
         ],
-  
+
+
         wyDeposit: '',
         wyPayType: '',
         wyFreeStartDate: '',
@@ -379,17 +395,17 @@
             advanceDays: ''
           }
         ],
-  
+
         roomIds: []
       },
-      
+
       ids: [],
-  
+
       zlList: [],
       wyList: [],
-      
+
       rules,
-  
+
       contactsList: [],
 
       loadingInstance: null,
@@ -432,12 +448,13 @@
         { name: '鍏�/m虏路骞�', value: 2 },
         { name: '鍏�/鍦�', value: 6 },
       ],
-      
+
+
       houseLvThree: []
     }
   },
   methods: {
-    open (title, target) {
+    open(title, target) {
       this.title = title
       this.ids = []
       this.houseList = []
@@ -486,7 +503,7 @@
         // this.getHouseTree()
       })
     },
-    changePayType (e) {
+    changePayType(e) {
       if (e === 0) {
         this.unitOps = [
           { name: '鍏�/m虏路澶�', value: 0 },
@@ -514,7 +531,7 @@
       }
       this.clearzl()
     },
-    changePayType1 (e) {
+    changePayType1(e) {
       if (e === 0) {
         this.unitOps1 = [
           { name: '鍏�/m虏路澶�', value: 0 },
@@ -543,14 +560,14 @@
       this.clearwy()
     },
     // 鑾峰彇鑱旂郴浜�
-    getYwList () {
+    getYwList() {
       ywList({
         customerId: this.form.renterId
       }).then(res => {
         this.contactsList = res
       })
     },
-    getHouseData () {
+    getHouseData() {
       if (this.form.startDate && this.form.endDate) {
         this.getHouseTree()
         if (this.form.zlDetailList.length === 1) {
@@ -565,33 +582,33 @@
         }
       }
     },
-    changeType (e) {
+    changeType(e) {
       if (e === 0 || e === 2) {
         this.cactiveTabs = 0
       } else if (e === 0 || e === 1) {
         this.cactiveTabs = 1
       }
     },
-    getDayTime (num) {
-      const today = new Date();
-      const year = today.getFullYear();
-      const month = today.getMonth() + 1;
-      const day = today.getDate();
+    getDayTime(num) {
+      const today = new Date()
+      const year = today.getFullYear()
+      const month = today.getMonth() + 1
+      const day = today.getDate()
       if (!num) {
-        return `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`;
+        return `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`
       } else {
-        return `${year + 1}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day - 1 : day - 1}`;
+        return `${year + 1}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day - 1 : day - 1}`
       }
     },
-    clearzl () {
+    clearzl() {
       this.zlList = []
       this.zlPrice = ''
     },
-    clearwy () {
+    clearwy() {
       this.wyList = []
       this.wyPrice = ''
     },
-    confirm () {
+    confirm() {
       var that = this
       if (this.activeTabs === 0) {
         this.$refs.form.validate((valid) => {
@@ -633,7 +650,7 @@
         }
       }
     },
-    submit () {
+    submit() {
       // 璋冪敤鏂板缓鎺ュ彛
       this.isWorking = true
       create({ ...this.form })
@@ -646,26 +663,26 @@
           this.isWorking = false
         })
     },
-    getDate1 (e, index) {
+    getDate1(e, index) {
       this.form.zlDetailList[index].startDate = e[0]
       this.form.zlDetailList[index].endDate = e[1]
       this.clearzl()
     },
-    getDate2 (e, index) {
+    getDate2(e, index) {
       this.form.wyDetailList[index].startDate = e[0]
       this.form.wyDetailList[index].endDate = e[1]
       this.clearwy()
     },
-    checkHouseRoom (a, b) {
+    checkHouseRoom(a, b) {
       this.ids = b.checkedKeys
       let arr = b.checkedKeys.map(item => {
         if (item.split('-')[0] == 3) {
           return Number(item.split('-')[1])
         }
       })
-      this.form.roomIds = arr.filter(item => item !== undefined);
+      this.form.roomIds = arr.filter(item => item !== undefined)
     },
-    getHouseTree () {
+    getHouseTree() {
       tree({
         startDate: this.form.startDate,
         endDate: this.form.endDate,
@@ -681,14 +698,14 @@
     },
     addParamToArray(arr) {
       for (let i = 0; i < arr.length; i++) {
-        const currentItem = arr[i].projectDataVOList;
+        const currentItem = arr[i].projectDataVOList
         arr[i].idd = arr[i].lv + '-' + arr[i].id
         if (currentItem.length > 0) {
-          this.addParamToArray(currentItem);
+          this.addParamToArray(currentItem)
         }
       }
     },
-    generateZL () {
+    generateZL() {
       getBillList({ ...this.form, billType: 0 })
         .then(res => {
           let zlPrice = 0
@@ -703,7 +720,7 @@
           this.zlList = arr
         })
     },
-    generateWY () {
+    generateWY() {
       getBillList({ ...this.form, billType: 1 })
         .then(res => {
           this.wy = true
@@ -719,7 +736,7 @@
           this.wyList = arr
         })
     },
-    addZl () {
+    addZl() {
       this.form.zlDetailList.push({
         circleType: 0,
         startDate: this.form.startDate,
@@ -729,7 +746,7 @@
         advanceDays: ''
       })
     },
-    addWy () {
+    addWy() {
       this.form.wyDetailList.push({
         circleType: 0,
         startDate: this.form.startDate,
@@ -749,62 +766,66 @@
       this.form.wyDetailList.splice(index, 1)
       this.clearwy()
     },
-    getZLDate (e) {
+    getZLDate(e) {
       this.form.zlFreeStartDate = e[0]
       this.form.zlFreeEndDate = e[1]
       this.clearzl()
     },
-    getWYDate (e) {
+    getWYDate(e) {
       this.form.wyFreeStartDate = e[0]
       this.form.wyFreeEndDate = e[1]
       this.clearwy()
     },
-    getTenant (row) {
+    getTenant(row) {
       this.form.renterId = row.id
       this.form.renterName = row.name
       this.form.memberId = ''
       this.form.memberName = ''
       this.getYwList()
     },
-    dele (imgaddr) {
+    dele(imgaddr) {
       this.form.fileList.forEach((item, index) => {
         if (imgaddr === item.imgaddr) {
           this.form.fileList.splice(index, 1)
         }
       })
     },
-    getUser () {
+    getUser() {
       getUserList({})
         .then(res => {
           this.agentList = res
         })
     },
-    getProject () {
+    getProject() {
       getProjectList({})
         .then(res => {
-          this.projectList = res
+          this.projectList = res || []
+          if (this.projectList.length > 0) {
+            this.$set(this.form, 'projectId', this.projectList[0].id)
+            this.getHouseTree()
+          }
         })
     },
-    getCompany () {
+    getCompany() {
       companyList({ type: 2 })
         .then(res => {
           this.comparyList = res
           this.form.companyId = res[0].id
         })
     },
-    tabsClick (val) {
+    tabsClick(val) {
       this.activeTabs = val
     },
-    ctabsClick (val) {
+    ctabsClick(val) {
       this.cactiveTabs = val
     },
-    handleRent () {
+    handleRent() {
       this.$refs.MemberSearchRef.open()
     },
-    houseChange (e) {
+    houseChange(e) {
       console.log(e)
     },
-    beforeUpload (file) {
+    beforeUpload(file) {
       this.loadingInstance = Loading.service({
         lock: true,
         text: 'Loading',
@@ -812,14 +833,14 @@
         background: 'rgba(0, 0, 0, 0.7)'
       })
     },
-    uploadError () {
+    uploadError() {
       this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
         if (this.loadingInstance) {
           this.loadingInstance.close()
         }
       })
     },
-    getDay () {
+    getDay() {
       const now = new Date()
       const year = now.getFullYear()
       const month = now.getMonth() + 1 // 鍔�1浣垮叾浠�1寮�濮�
@@ -827,9 +848,9 @@
       const hours = now.getHours()
       const minutes = now.getMinutes()
       const seconds = now.getSeconds()
-      return `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')} ${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
+      return `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')} ${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`
     },
-    uploadAvatarSuccess (file) {
+    uploadAvatarSuccess(file) {
       this.$nextTick(() => {
         if (this.loadingInstance) {
           this.loadingInstance.close()
@@ -838,7 +859,7 @@
       const item = file.data[0]
       this.form.fileList.push({ ...item, fileurl: item.imgaddr, name: item.originname, userName: this.userInfo.realname, createTime: this.getDay() })
     },
-    close () {
+    close() {
       if (this.activeTabs === 0) {
         this.$emit('close')
         this.visible = false
@@ -854,6 +875,7 @@
 
 <style lang="scss" scoped>
 @import '@/assets/style/variables.scss';
+
 .fixed {
   background: #ffffff;
   position: sticky;
@@ -976,6 +998,7 @@
   display: flex;
   align-items: center;
   justify-content: space-between;
+
   span {
     font-weight: 500;
     font-size: 14px;
diff --git a/admin/src/views/project/components/OperaYwBuildingWindow.vue b/admin/src/views/project/components/OperaYwBuildingWindow.vue
index 83fecbe..f1387b7 100644
--- a/admin/src/views/project/components/OperaYwBuildingWindow.vue
+++ b/admin/src/views/project/components/OperaYwBuildingWindow.vue
@@ -89,7 +89,7 @@
     })
   },
   methods: {
-    open (title, target,type) {
+    open(title, target, type) {
       this.title = title
       this.visible = true
       this.getProject()
@@ -98,14 +98,14 @@
         this.$nextTick(() => {
           this.$refs.form.resetFields()
           this.form[this.configData['field.id']] = null
-          this.form.type=type
+          this.form.type = type
         })
         return
       }
       // 缂栬緫
       this.$nextTick(() => {
-        console.log('----');
-        
+        console.log('----')
+
         this.getDetail(target.id)
       })
     },
@@ -117,6 +117,10 @@
     getProject() {
       getProjectList({}).then(res => {
         this.projectList = res || []
+        if (this.projectList.length > 0) {
+          this.$set(this.form, 'projectId', this.projectList[0].id)
+          // this.changeProject(this.projectList[0].id)
+        }
       })
     }
   }
diff --git a/admin/src/views/project/components/OperaYwRoomWindow.vue b/admin/src/views/project/components/OperaYwRoomWindow.vue
index dc0c159..1ed0a57 100644
--- a/admin/src/views/project/components/OperaYwRoomWindow.vue
+++ b/admin/src/views/project/components/OperaYwRoomWindow.vue
@@ -101,6 +101,8 @@
       this.title = title
       this.visible = true
       this.getProject()
+      this.buildList = []
+      this.floorList = []
       // 鏂板缓缁勭粐
       if (target == null) {
         this.$nextTick(() => {
@@ -115,8 +117,8 @@
         this.getDetail(target.id)
       })
     },
-    confirm () {
-      if(!this.form.feeArea){
+    confirm() {
+      if (!this.form.feeArea) {
         this.form.feeArea = this.form.rentArea
       }
       if (this.form.id == null || this.form.id === '') {
@@ -143,6 +145,10 @@
     getProject() {
       getProjectList({}).then(res => {
         this.projectList = res || []
+        if (this.projectList.length > 0) {
+          this.$set(this.form, 'projectId', this.projectList[0].id)
+          this.changeProject(this.projectList[0].id)
+        }
       })
 
     },
@@ -150,6 +156,9 @@
       this.form.buildingId = ''
       getBuildList({ projectId: e }).then(res => {
         this.buildList = res || []
+        // if(this.buildList.length > 0){
+        //   this.form.buildingId = this.buildList[0].id
+        // }
       })
     },
     changeBuild(e) {
diff --git a/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue b/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
index 4f8ce99..c97fbf4 100644
--- a/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
+++ b/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
@@ -140,7 +140,7 @@
       this.visible = true
       this.getProject()
       this.getCate()
-      // 鏂板缓
+      // 鏂板缓 
       if (target == null) {
         this.form = {
           id: null,
@@ -192,7 +192,11 @@
     },
     getProject() {
       getProjectList({}).then(res => {
-        this.projectList = res
+        this.projectList = res || []
+        if(this.projectList.length > 0){
+          this.$set(this.form, 'projectId', this.projectList[0].id)
+          this.getBuild(this.projectList[0].id)
+        }
       })
     },
     getBuild(projectId) {
@@ -200,7 +204,11 @@
       this.$set(this.form, 'floorId', '')
       this.$set(this.form, 'roomId', '')
       getBuildList({ projectId }).then(res => {
-        this.buildList = res
+        this.buildList = res || []
+        // if(projectId && this.buildList.length > 0){
+        //   this.$set(this.form, 'buildingId', this.buildList[0].id)
+        //   this.changeBuild(this.buildList[0].id)
+        // }
       })
     },
     changeBuild(e) {
diff --git a/admin/src/views/workorder/components/detail.vue b/admin/src/views/workorder/components/detail.vue
index a6908d4..f2e7d5f 100644
--- a/admin/src/views/workorder/components/detail.vue
+++ b/admin/src/views/workorder/components/detail.vue
@@ -49,11 +49,21 @@
             <div class="value" v-if="info.fileList == null || !info.fileList.length">鏃�</div>
             <div class="value" v-if="info.fileList != null && info.fileList.length">
               <div v-for="item in info.fileList" :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"
+                <!-- <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-if="item.type == 0" style="width:80px; height: 80px" :src="item.fileurlFull"
                   :preview-src-list="[item.fileurlFull]">
                 </el-image>
+              </div>
+            </div>
+          </div>
+          <div v-if="info.fileList && info.fileList.length > 0 && info.fileList.filter(i => i.type == 1).length > 0"
+            class="item max">
+            <div class="la">闂瑙嗛</div>
+            <div class="value">
+              <div v-for="item in info.fileList" :key="item.id" style="display: inline;margin-right: 20px">
+                <video v-if="item.type == 1" ref="videoRef" controls preload="auto"
+                  style="width: 240px;height: 160px;object-fit: contain;" :src="item.fileurlFull" />
               </div>
             </div>
           </div>
@@ -61,7 +71,7 @@
         <div class="side">
           <div class="title">宸ュ崟娴佽浆璁板綍</div>
           <div class="flow_list">
-            <div class="item" v-for="item,i in info.logList">
+            <div class="item" v-for="item, i in info.logList">
               <div class="icon">
                 <div class="dian"></div>
                 <div v-if="i < info.logList.length - 1" class="line"></div>
@@ -76,7 +86,9 @@
           </div>
         </div>
       </div>
-      <div class="title">{{ info.dealStatus == 0 || info.dealStatus == 1 ? '宸ュ崟澶勭悊' : '澶勭悊缁撴灉' }}</div>
+      <div class="title"
+        v-if="info.dealStatus == 2 || info.dealStatus == 0 || (info.dealStatus == 1 && info.dealUserId === userInfo.id)">
+        {{ info.dealStatus == 0 || info.dealStatus == 1 ? '宸ュ崟澶勭悊' : '澶勭悊缁撴灉' }}</div>
       <el-form :model="param" ref="form" :rules="rules">
         <template v-if="info.dealStatus == 0 || info.dealStatus == null">
           <el-form-item label="澶勭悊鏂瑰紡" prop="dealType">
@@ -84,7 +96,7 @@
               <el-radio v-model="param.dealType" :label="0">鎸囨淳</el-radio>
               <el-radio v-model="param.dealType" :label="1">鐩存帴鍥炲</el-radio>
             </div>
-          </el-form-item> 
+          </el-form-item>
           <el-form-item v-if="param.dealType == 0" label="鎸囨淳缁�" prop="dealUserId">
             <el-select v-model="param.dealUserId" clearable filterable class="w400">
               <el-option v-for="item in staffList" :label="item.realname" :value="item.id"></el-option>
@@ -104,8 +116,8 @@
           </el-form-item>
           <el-form-item label="鐜板満鍥剧墖">
             <div class="file_list">
-              <el-upload class="avatar-uploader" :data="uploadData" :auto-upload="true"
-                :action="uploadImgUrl" :show-file-list="false" :on-success="uploadAvatarSuccess" :on-error="uploadError"
+              <el-upload class="avatar-uploader" :data="uploadData" :auto-upload="true" :action="uploadImgUrl"
+                :show-file-list="false" :on-success="uploadAvatarSuccess" :on-error="uploadError"
                 :before-upload="beforeUpload">
                 <div class="upload_wrap">
                   <i class="el-icon-plus avatar-uploader-icon"></i>
@@ -223,8 +235,8 @@
       const { id } = this
       detailById(id).then(res => {
         this.info = res
-        if(this.info.dealStatus == 1){
-          this.$set(this.param, 'getDate',dayjs().format('YYYY-MM-DD HH:mm:ss') )
+        if (this.info.dealStatus == 1) {
+          this.$set(this.param, 'getDate', dayjs().format('YYYY-MM-DD HH:mm:ss'))
         }
       })
     },
@@ -316,13 +328,15 @@
     }
 
     .primaryColor {
-      border: 1px solid rgba(63, 126, 239,.2);
-      background-color: rgba(63, 126, 239,.2);
+      border: 1px solid rgba(63, 126, 239, .2);
+      background-color: rgba(63, 126, 239, .2);
     }
-    .green{
+
+    .green {
       background-color: rgba(83, 183, 148, .2);
       border: 1px solid rgba(83, 183, 148, .2);
     }
+
     .gray {
       color: #333333;
       background-color: rgba(128, 128, 128, .2);
@@ -352,7 +366,8 @@
       width: 100%;
       display: flex;
       align-items: center;
-      .la{
+
+      .la {
         margin-bottom: 0;
         width: 72px;
       }
@@ -362,38 +377,47 @@
       width: 100%;
     }
   }
-  .main_content{
+
+  .main_content {
     display: flex;
-    .side{
+
+    .side {
       width: 370px;
-      .title{
+
+      .title {
         font-size: 14px;
       }
-      .flow_list{
-        .item{
+
+      .flow_list {
+        .item {
           display: flex;
-          .icon{
+
+          .icon {
             width: 28px;
             display: flex;
             flex-direction: column;
             align-items: center;
-            .dian{
+
+            .dian {
               width: 12px;
               height: 12px;
               border-radius: 50%;
               background-color: #e89e42;
             }
-            .line{
+
+            .line {
               width: 1px;
               height: 100%;
               background-color: #e89e42;
             }
           }
-          .content{
+
+          .content {
             font-size: 12px;
             color: #999999;
             padding-bottom: 12px;
-            .name{
+
+            .name {
               font-size: 13px;
               color: #333333;
             }
diff --git a/admin/src/views/workorder/workorderList.vue b/admin/src/views/workorder/workorderList.vue
index a2b0b1e..f3ad3de 100644
--- a/admin/src/views/workorder/workorderList.vue
+++ b/admin/src/views/workorder/workorderList.vue
@@ -103,7 +103,6 @@
       showDetail: false,
       searchForm: {
         selDate: [],
-        areaType: '',
         areaIds: '',
         projectId: '',
         buildingId: '',
diff --git a/h5/pages/index.vue b/h5/pages/index.vue
index 9d3409d..81b4ef6 100644
--- a/h5/pages/index.vue
+++ b/h5/pages/index.vue
@@ -1,6 +1,6 @@
 <template>
 	<view class="main_app">
-		<view class="hone_name title">{{ userInfo.realname }}锛屾杩庣櫥褰�</view>
+		<view class="hone_name title">{{ userInfo.realname }}锛屾杩庣櫥褰曪綖</view>
 		<view class="home_con">
 			<image class="bg" src="@/static/home/home_bg.jpg" mode=""></image>
 			<view class="h1">闃滃畞鏂囦綋涓績</view>
@@ -24,14 +24,15 @@
 	</view>
 </template>
 
-<script>
-	import { logoutPost } from '@/api'
+<script>
+	import {
+		logoutPost
+	} from '@/api'
 	export default {
 		data() {
 			return {
 				userInfo: uni.getStorageSync('userInfo') || {},
-				list1: [
-					{
+				list1: [{
 						name: '鏂板宸ュ崟',
 						url: '/pages/workOrder/edit',
 						img: require('@/static/home/ic_xinzenggongdan@2x.png'),
@@ -74,12 +75,15 @@
 					url: item.url
 				})
 			},
-			loginOut() {
-				logoutPost()
-				this.$store.commit('empty')
-				uni.redirectTo({
-					url: '/pages/login'
-				})
+			loginOut() {
+				logoutPost().then(res => {
+					this.$store.commit('empty')
+					setTimeout(() => {
+						uni.redirectTo({
+							url: '/pages/login'
+						})
+					}, 300)
+				})
 				// window.location.href= 'https://zhcg.fnwtzx.com/fn_h5'
 			},
 
diff --git a/h5/pages/login.vue b/h5/pages/login.vue
index 81323ed..b742a89 100644
--- a/h5/pages/login.vue
+++ b/h5/pages/login.vue
@@ -45,7 +45,7 @@
 					code: ''
 				},
 				downTime: 0,
-				code: ''
+				code: '111'
 				// code: ''
 			}
 		},
diff --git a/h5/pages/operation/device.vue b/h5/pages/operation/device.vue
index 9377ebb..414be7b 100644
--- a/h5/pages/operation/device.vue
+++ b/h5/pages/operation/device.vue
@@ -83,7 +83,8 @@
 	import {
 		uploadUrl,
 		ywDevicePost,
-		ywDeviceCreate
+		ywDeviceCreate,
+		getPointRecordByCode
 	} from '@/api'
 	import dayjs from 'dayjs';
 	import {
@@ -122,7 +123,7 @@
 			},
 			handleP() {
 				const {
-					param,
+					param, 
 					fileList
 				} = this
 				ywDeviceCreate({
@@ -285,8 +286,19 @@
 							},
 							(decodeText, decodeResult) => {
 								if (decodeText) { //杩欓噷decodeText灏辨槸閫氳繃鎵弿浜岀淮鐮佸緱鍒扮殑鍐呭
-									this.$set(this.param, 'deviceCode', decodeText)
-									this.stopScan(); //鍏抽棴鎵爜鍔熻兘
+									this.$set(this.param, 'deviceCode', decodeText)
+									this.stopScan(); //鍏抽棴鎵爜鍔熻兘
+									getPointRecordByCode({
+										// taskId: this.id,
+										pointCode: decodeText
+									}).then(ress => {
+										if (ress.data) {
+											console.log('ress', ress.data);
+										} else {
+											this.showToast('鏈尮閰嶅埌宸℃鐐�,璇烽噸鏂版壂鎻�')
+										}
+									})
+									
 								}
 							},
 							(err) => {
diff --git a/h5/pages/polling/detail.vue b/h5/pages/polling/detail.vue
index 383395d..45ad7fb 100644
--- a/h5/pages/polling/detail.vue
+++ b/h5/pages/polling/detail.vue
@@ -34,7 +34,10 @@
 				<view class="content">
 					<view class="head">
 						<view>{{item.pointName}}</view>
-						<view class="status" :class="{ gray: item.status == 1 }">{{ item.status == 1 ? '宸插贰妫�' : '寰呭贰妫�' }}</view>
+						<view class="status" :class="{ gray: item.status == 1 }">
+							<image v-if="item.status == 1" src="@/static/plan_ic_finish@2x.png" class="icon" mode=""></image>
+							<text>{{ item.status == 1 ? '宸插贰妫�' : '寰呭贰妫�' }}</text>
+						</view>
 					</view>
 					<template v-if="item.status == 1">
 						<view class="line">
@@ -43,7 +46,10 @@
 						</view>
 						<view class="line">
 							<view class="la">宸℃鏃堕棿锛�</view>
-							<view class="val">{{item.dealDate}}</view>
+							<view class="val">
+								<text>{{item.dealDate}}</text>
+								<text v-if="item.status == 1" class="detail">鏌ョ湅璇︽儏</text>
+							</view>
 						</view>
 					</template>
 					<view class="desc" v-else>{{item.content}}</view>
@@ -100,11 +106,11 @@
 		},
 		onLoad(option) {
 			this.id = option.id
+			// this.getDetail()
+		},
+		onShow() {
 			this.getDetail()
 		},
-		// onShow() {
-		// 	this.getDetail()
-		// },
 		methods: {
 			openSc() {
 				this.isScaning = true;
@@ -164,7 +170,7 @@
 					this.info = res.data
 					let time = new Date(res.data.startDate).getTime()
 					console.log('res.data.startDate', new Date().getTime());
-					this.flag = new Date().getTime() > time
+					this.flag = new Date().getTime() > time && (this.info.status == 0 || this.info.status == 1)
 				})
 				ywPatrolTaskRecord({
 					capacity: 999,
@@ -268,14 +274,15 @@
 			margin-bottom: 20rpx;
 
 			.la {
-				color: #666666;
+				color: #666666;
+				
 			}
 		}
 
 		.list {
-			height: calc(100vh - 720rpx);
-			overflow: auto;
-
+			height: calc(100vh - 490rpx);
+			overflow: auto;
+			padding-bottom: 160rpx;
 			.item {
 				width: 690rpx;
 				height: 188rpx;
@@ -288,7 +295,18 @@
 				margin-bottom: 20rpx;
 
 				.line {
-					margin-bottom: 10rpx;
+					margin-bottom: 10rpx;
+					width: 100%;
+					.val{
+						display: flex;
+						justify-content: space-between;
+						align-items: center;
+						flex: 1;
+						.detail{
+							color: $primaryColor;
+							font-size: 26rpx;
+						}
+					}
 				}
 
 				.icon {
@@ -311,9 +329,19 @@
 						margin-bottom: 16rpx;
 
 						.status {
-							offset-anchor: 28rpx;
+							font-size: 28rpx;
 							color: $primaryColor;
-							font-weight: 400;
+							font-weight: 400;
+							display: flex;
+							align-items: center;
+							.icon{
+								width: 40rpx;
+								height: 40rpx;
+								// border-radius: 50%;
+								// overflow: hidden;
+								background: none;
+							}
+							
 						}
 
 						.gray {
diff --git a/h5/pages/polling/point.vue b/h5/pages/polling/point.vue
index 4711fbc..1288d07 100644
--- a/h5/pages/polling/point.vue
+++ b/h5/pages/polling/point.vue
@@ -31,7 +31,7 @@
 					<video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
 				</view>
 			</view>
-			<view class="desc">{{ info.dealInfo }}</view>
+			<view v-if="info.dealInfo" class="desc">{{ info.dealInfo }}</view>
 			<view class="line line_s">
 				<view class="la">宸℃浜猴細</view>
 				<view class="val">{{ info.realname }}</view>
@@ -78,11 +78,12 @@
 					</view>
 				</view>
 
-				<view class="label">澶勭悊璇存槑</view>
-				<textarea v-model="handleParam.dealInfo" placeholder="璇峰~鍐欏鐞嗚鏄�" placeholder-class="placeholder9" />
+				<view class="label" style="margin-bottom: 10rpx;">澶勭悊璇存槑</view>
+				<textarea v-model="handleParam.dealInfo" :maxlength="-1" placeholder="璇峰~鍐欏鐞嗚鏄�"
+					placeholder-class="placeholder9" />
 			</view>
 		</view>
-		<view class="sub_btn" @click="onSubmit">纭宸℃</view>
+		<view v-if="info.status == 0" class="sub_btn" @click="onSubmit">纭宸℃</view>
 		<!--  -->
 		<u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
 			<view class="sel_upload_wrap">
@@ -149,34 +150,38 @@
 					fileList,
 					id
 				} = this
-				if (handleParam.dealStatus == 1) {
-					return uni.showModal({
-						title: '娓╅Θ鎻愮ず',
-						content: '宸℃缁撴灉寮傚父锛屾槸鍚﹀墠寰�鎻愪氦宸ュ崟锛�',
-						success: function(res) {
-							if (res.confirm) {
-								patrolData({
-									...handleParam,
-									multifileList: fileList,
-									id,
-								}).then(res => {
-									this.showToast('鎿嶄綔鎴愬姛')
-									uni.navigateBack()
-								})
+				patrolData({
+					...handleParam,
+					multifileList: fileList,
+					id,
+				}).then(res => {
+					if (handleParam.dealStatus == 1) {
+						return uni.showModal({
+							title: '娓╅Θ鎻愮ず',
+							content: '宸℃缁撴灉寮傚父锛屾槸鍚﹀墠寰�鎻愪氦宸ュ崟锛�',
+							success: (res) => {
+								if (res.confirm) {
+									this.showToast('鎿嶄綔鎴愬姛')
+									setTimeout(() => {
+										uni.redirectTo({
+											url: '/pages/workOrder/edit'
+										})
+									}, 300)
+								}else{
+									this.showToast('鎿嶄綔鎴愬姛')
+									setTimeout(() => {
+										uni.navigateBack()
+									}, 300)
+								}
 							}
-						}
-					});
-				} else {
-					patrolData({
-						...handleParam,
-						multifileList: fileList,
-						id,
-					}).then(res => {
+						});
+					} else {
 						this.showToast('鎿嶄綔鎴愬姛')
-						uni.navigateBack()
-					})
-				}
-
+						setTimeout(() => {
+							uni.navigateBack()
+						}, 300)
+					}
+				})
 			},
 			getDetail() {
 				const {
@@ -360,10 +365,11 @@
 	}
 
 	.sub_btn {
-		position: fixed;
-		bottom: 68rpx;
-		left: 40rpx;
+		// position: fixed;
+		// bottom: 68rpx;
+		// left: 40rpx;
 		width: 670rpx;
+		margin-top: 60rpx;
 		height: 88rpx;
 		background: $primaryColor;
 		box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0, 104, 255, 0.3);
@@ -417,7 +423,7 @@
 		textarea {
 			box-sizing: border-box;
 			width: 690rpx;
-			min-height: 200rpx;
+			min-height: 140rpx;
 			background-color: #f7f7f7;
 			font-size: 28rpx;
 			color: #333333;
diff --git a/h5/pages/polling/task.vue b/h5/pages/polling/task.vue
index 6ba466e..0e72898 100644
--- a/h5/pages/polling/task.vue
+++ b/h5/pages/polling/task.vue
@@ -44,13 +44,17 @@
 						<view class="line" @click="itemClick(item)">鎵ц鏃堕棿锛歿{ item.startDate.slice(11, 16) }} 鑷� {{ item.endDate.slice(11, 16) }}</view>
 						<view class="line">
 							<view @click="itemClick(item)">瀹屾垚鎯呭喌锛歿{item.finishNum || 0}}/{{item.patrolNum}}</view>
-							<view v-if="param.queryStatus == '0,1'" class="btn" @click="openSc(item)">
+							<view v-if="param.queryStatus == '0,1' && item.flag && (item.status == 0 || item.status == 1)" class="btn" @click="openSc(item)">
 								<image src="@/static/side/ic_saoma@2x.png" class="saoma" mode=""></image>
 								<view>鎵爜宸℃</view>
 							</view>
 						</view>
 					</view>
 				</view>
+				<view v-if="list.length == 0" class="empty_wrap">
+					<image src="@/static/empty.png" mode=""></image>
+					<view class="">鏆傛棤鏁版嵁</view>
+				</view>
 			</view>
 		</scroll-view>
 
@@ -93,7 +97,9 @@
 				// activeItem: {}
 			};
 		},
-		onLoad() {
+		onShow() {
+			this.page = 1
+			this.list = []
 			this.getList()
 		},
 		methods: {
@@ -184,7 +190,11 @@
 					page,
 					capacity: 10
 				}).then(res => {
-					this.list = [...this.list, ...res.data.records]
+					this.list = [...this.list, ...res.data.records]
+					this.list.forEach(item => {
+					let time = new Date(item.startDate).getTime()
+					item.flag = new Date().getTime() > time
+					})
 					this.total = res.data.total
 				})
 			}
@@ -272,10 +282,11 @@
 	}
 
 	.scroll_Y {
-		height: calc(100vh - 230rpx);
+		height: calc(100vh - 130rpx);
 	}
 
-	.list {
+	.list {
+		
 		.item {
 			display: flex;
 			// height: 290rpx;
diff --git a/h5/pages/workOrder/detail.vue b/h5/pages/workOrder/detail.vue
index f26e85c..c112a22 100644
--- a/h5/pages/workOrder/detail.vue
+++ b/h5/pages/workOrder/detail.vue
@@ -11,7 +11,12 @@
 			<view class="file_list">
 				<view class="file" v-for="(item,index) in info.fileList">
 					<image v-if="item.type == 0" :src="item.fileurlFull" mode="aspectFill"></image>
-					<video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
+					<!-- <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video> -->
+					<view v-if="item.type == 1" @click="videoClick(item)" class="video_wrap">
+						<video :src="item.fileurlFull" initial-time="0.01" :show-center-play-btn="false" :controls="false"
+							class="video" :enable-progress-gesture="false" autoplay muted />
+						<image src="@/static/play.png" class="play" mode=""></image>
+					</view>
 				</view>
 			</view>
 			<view class="content">
@@ -23,7 +28,7 @@
 					<view class="la">涓婃姤浜猴細</view>
 					<view class="val">{{ info.creatorName }}{{info.creatorCompany ? '-' + info.creatorCompany : ''}}</view>
 				</view>
-				<view class="line"  v-if="info.creatorPhone || info.creatorMobile">
+				<view class="line" v-if="info.creatorPhone || info.creatorMobile">
 					<view class="la">鑱旂郴鐢佃瘽锛�</view>
 					<view class="val">{{ info.creatorMobile || info.creatorPhone }}</view>
 				</view>
@@ -63,7 +68,7 @@
 				<image src="@/static/side/phoneed.png" class="icon"></image>
 				<text>涓婃姤浜�</text>
 			</view>
-			<view class="btn active" @click="isShowHandle = true">鍘诲鐞�</view>
+			<view class="btn active" @click="handleOpen">鍘诲鐞�</view>
 		</view>
 		<!--  -->
 		<u-popup :show="showUpload" @close="showUpload = false" zIndex="10076" closeOnClickOverlay>
@@ -74,8 +79,8 @@
 		</u-popup>
 		<!--  -->
 		<!-- 宸ュ崟澶勭悊 -->
-		<u-popup :show="isShowHandle" :round="10" :safeAreaInsetBottom="true" mode="bottom" closeable
-			@close="isShowHandle = false">
+		<u-popup :show="isShowHandle" :round="10" :safeAreaInsetTop="true" :safeAreaInsetBottom="true" mode="bottom"
+			closeable @close="isShowHandle = false">
 			<view class="appr_modal">
 				<view class="title">宸ュ崟澶勭悊</view>
 				<view class="df_sb">
@@ -118,13 +123,18 @@
 		<u-datetime-picker :minDate="new Date().getTime()" :show="isShowHandleDate" @confirm="confirmHandleDate"
 			@cancel="isShowHandleDate = false" mode="datetime"></u-datetime-picker>
 		<!--  -->
+		<view v-if="videoPlay" class="video_app">
+			<video controls autoplay muted x5-video-player-type="h5" x5-video-player-fullscreen="true" id="myvideo"
+				:src="videoUrl" @fullscreenchange="screenChange"></video>
+			<view class="bg" @click="closeVideo"></view>
+		</view>
 	</view>
 </template>
 
 <script>
 	import {
 		uploadUrl,
-		ywWorkorderD,
+		ywWorkorderD,
 		ywWorkorderDeal
 	} from '@/api'
 	import dayjs from 'dayjs';
@@ -135,10 +145,14 @@
 				info: {},
 				showUpload: false,
 				isShowHandle: false,
-				isShowHandleDate: false,
+				isShowHandleDate: false,
 				userInfo: uni.getStorageSync('userInfo') || {},
 				handleParam: {},
-				dealFileList: []
+				dealFileList: [],
+
+				videoPlay: false,
+				videoContext: null,
+				videoUrl: ''
 			};
 		},
 		onLoad(option) {
@@ -147,25 +161,55 @@
 			this.getDetail()
 		},
 		methods: {
-			onSubmit() {
-				const { handleParam, dealFileList, id } = this
-				if (!handleParam.dealTime) return this.showToast('澶勭悊鏃堕棿涓嶈兘涓虹┖')
-				ywWorkorderDeal({
-					...handleParam,
-					id,
-					dealFileList
-				}).then(res => {
-					if(res.code == 200){
-						this.showToast('鎿嶄綔鎴愬姛')
-						uni.navigateBack()
-					}
+			handleOpen() {
+				this.isShowHandle = true
+				this.$set(this.handleParam, 'dealTime', dayjs().format('YYYY-MM-DD HH:mm:ss'));
+			},
+			videoClick(item) {
+				this.videoPlay = true;
+				this.videoContext = uni.createVideoContext("myvideo", this); // this杩欎釜鏄疄渚嬪璞� 蹇呬紶
+				this.videoUrl = item.fileurlFull;
+				this.videoContext.requestFullScreen();
+				this.$nextTick(() => {
+					this.videoContext.play();
 				})
-			},
-			handleCall() {
-				const { info } = this
-				uni.makePhoneCall({
-					phoneNumber: info.creatorMobile
-				});
+			},
+			screenChange(e) {
+				let fullScreen = e.detail.fullScreen // 鍊紅rue涓鸿繘鍏ュ叏灞忥紝false涓洪��鍑哄叏灞�
+				if (!fullScreen) {
+					//閫�鍑哄叏灞�
+					this.videoPlay = false // 闅愯棌鎾斁鐩掑瓙
+				}
+			},
+			closeVideo() {
+				this.videoPlay = false
+				this.videoContext = null
+			},
+			onSubmit() {
+				const {
+					handleParam,
+					dealFileList,
+					id
+				} = this
+				if (!handleParam.dealTime) return this.showToast('澶勭悊鏃堕棿涓嶈兘涓虹┖')
+				ywWorkorderDeal({
+					...handleParam,
+					id,
+					dealFileList
+				}).then(res => {
+					if (res.code == 200) {
+						this.showToast('鎿嶄綔鎴愬姛')
+						uni.navigateBack()
+					}
+				})
+			},
+			handleCall() {
+				const {
+					info
+				} = this
+				uni.makePhoneCall({
+					phoneNumber: info.creatorMobile
+				});
 			},
 			getDetail() {
 				ywWorkorderD(this.id).then(res => {
@@ -323,7 +367,7 @@
 
 				image,
 				video {
-					width: 156rpx;
+					width: 156rpx;
 					height: 156rpx;
 				}
 			}
@@ -488,28 +532,37 @@
 			display: flex;
 			flex-wrap: wrap;
 			margin-bottom: 30rpx;
+			max-height: 362rpx;
+			overflow-y: auto;
+			margin-right: -30rpx;
 		}
 
 		.adduser_list_item_ipt1_upload {
 			margin-top: 24rpx;
 			width: 156rpx;
 			height: 156rpx;
-			margin-right: 24rpx;
-			border: 2rpx solid #e5e5e5;
+			margin-right: 22rpx;
+			border: 1rpx solid #e5e5e5;
 			background: #f7f7f7;
 			color: #666666;
 			font-size: 22rpx;
+			box-sizing: border-box;
 			display: flex;
 			flex-direction: column;
 			align-items: center;
 			justify-content: center;
 			position: relative;
 
+			&:nth-of-type(4n) {
+				margin-right: 0;
+			}
+
 			.close {
 				position: absolute;
 				right: -20rpx;
 				top: -20rpx;
 				z-index: 9999;
+				background-color: #fff;
 			}
 
 			image {
@@ -523,4 +576,46 @@
 			}
 		}
 	}
+
+	.video_wrap {
+		position: relative;
+		border: 1px solid;
+		width: 156rpx;
+		height: 156rpx;
+		border-radius: 4rpx;
+
+		.play {
+			width: 60rpx !important;
+			height: 60rpx !important;
+			position: absolute;
+			top: 50%;
+			left: 50%;
+			transform: translate(-50%, -50%);
+		}
+	}
+
+	.video_app {
+		overflow: hidden;
+		position: fixed;
+		left: 0;
+		top: 0;
+		width: 100vw;
+		height: 100vh;
+		display: flex;
+		align-items: center;
+		z-index: 9990;
+
+		.bg {
+			background-color: rgba(0, 0, 0, .6);
+			position: absolute;
+			width: 100%;
+			height: 100%;
+			z-index: -1;
+		}
+
+		video {
+			width: 100%;
+			height: 42vh;
+		}
+	}
 </style>
\ No newline at end of file
diff --git a/h5/pages/workOrder/edit.vue b/h5/pages/workOrder/edit.vue
index 3e0c34d..ff72df9 100644
--- a/h5/pages/workOrder/edit.vue
+++ b/h5/pages/workOrder/edit.vue
@@ -51,7 +51,7 @@
 						<u-icon class="close" size="20" name="close-circle-fill" color="red"
 							@click="fileDel('fileList', i)"></u-icon>
 						<image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
-						<video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
+						<video v-if="item.type == 1" :show-center-play-btn="false" :src="item.fileurlFull" :controls="false"></video>
 					</view>
 				</view>
 			</view>
@@ -116,7 +116,7 @@
 				showCate2: false,
 				areaType: [
 					[{
-							name: '瀹ゅ唴瑁呬慨',
+							name: '瀹ゅ唴缁翠慨',
 							id: 0
 						},
 						{
@@ -431,7 +431,10 @@
 					position: absolute;
 					right: -20rpx;
 					top: -20rpx;
-					z-index: 9999;
+					z-index: 9999;
+					background-color: #fff;
+					border-radius: 50%;
+					overflow: hidden;
 				}
 
 				image {
diff --git a/h5/pages/workOrder/list.vue b/h5/pages/workOrder/list.vue
index 2da419f..7d8e1d2 100644
--- a/h5/pages/workOrder/list.vue
+++ b/h5/pages/workOrder/list.vue
@@ -32,7 +32,7 @@
 		<scroll-view scroll-y="true" class="scroll_Y" @scrolltolower="scrolltolower">
 			<view class="list">
 				<view class="item" v-for="item in list" @click="itemClick(item)">
-					<image v-if="item.dealStatus == 0" src="@/static/side/workordered.png" class="icon"></image>
+					<image v-if="item.dealStatus == 0 || item.dealStatus == 1" src="@/static/side/workordered.png" class="icon"></image>
 					<image v-else src="@/static/side/workorder.png" class="icon"></image>
 					<view class="content">
 						<view class="name_wrap line">
@@ -216,7 +216,7 @@
 
 	}
 	.scroll_Y{
-		height: calc(100vh - 320rpx);
+		height: calc(100vh - 250rpx);
 	}
 	.list {
 		.item {
@@ -224,7 +224,7 @@
 			// height: 290rpx;
 			padding: 30rpx 0;
 			border-bottom: 2rpx solid #E5E5E5;
-
+		
 			.icon {
 				width: 80rpx;
 				height: 80rpx;
diff --git a/h5/static/plan_ic_finish@2x.png b/h5/static/plan_ic_finish@2x.png
new file mode 100644
index 0000000..01fafcc
--- /dev/null
+++ b/h5/static/plan_ic_finish@2x.png
Binary files differ
diff --git a/h5/static/play.png b/h5/static/play.png
new file mode 100644
index 0000000..1b4b225
--- /dev/null
+++ b/h5/static/play.png
Binary files differ
diff --git a/h5/utils/config.js b/h5/utils/config.js
index 450773b..49ff135 100644
--- a/h5/utils/config.js
+++ b/h5/utils/config.js
@@ -1,6 +1,6 @@
- // export const baseUrl = 'gateway_interface/'
+ export const baseUrl = 'gateway_interface/'
 // export const baseUrl = 'http://192.168.0.173/gateway_interface/'
-export const baseUrl = 'https://zhcg.fnwtzx.com/gateway_interface/'
+// export const baseUrl = 'https://zhcg.fnwtzx.com/gateway_interface/'
 
 export const uploadAvatar = `${baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`
 export const uploadUrl = `${baseUrl}visitsAdmin/cloudService/public/uploadBatch`
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java
index 2efd887..42c3b1f 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java
@@ -1,6 +1,5 @@
 package com.doumee.cloud.admin;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.api.BaseController;
 import com.doumee.config.DataSyncConfig;
 import com.doumee.config.annotation.CloudRequiredPermission;
@@ -123,6 +122,12 @@
     public ApiResponse<List<Company>> list (@RequestBody Company company,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
         return ApiResponse.success(companyService.findList(company));
     }
+    @ApiOperation("鏂板缓鍚堝悓鎵�灞炲叕鍙哥瓫閫�")
+    @PostMapping("/listForConstract")
+    @CloudRequiredPermission("business:company:query")
+    public ApiResponse<List<Company>> listForConstract (@RequestBody Company company,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        return ApiResponse.success(companyService.listForConstract(company));
+    }
 
 
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java
index 2e1e381..1d28bbf 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java
@@ -105,7 +105,6 @@
     @ApiModelProperty(value = "璐圭敤绫诲瀷锛�0=鍛ㄦ湡璐圭敤锛�1=涓�娆℃�ц垂鐢�")
     @TableField(exist = false)
     private Integer feeType;
-
     @ApiModelProperty(value = "鎵�灞炲叕鍙�", example = "1")
     private Integer companyId;
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolScheme.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolScheme.java
index a7c167c..bc6ea4b 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolScheme.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolScheme.java
@@ -122,4 +122,15 @@
     @ApiModelProperty(value = "瓒呮湡浠诲姟鏁�")
     @TableField(exist = false)
     private Integer timeOutTaskNum;
+
+    @ApiModelProperty(value = "寮�濮嬫棩鏈燂紙鎼滅储鎴鏃ユ湡锛�")
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date startDateSec;
+
+    @ApiModelProperty(value = "缁撴潫鏃ユ湡锛堟悳绱㈡埅姝㈡棩鏈燂級")
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date endDateSec;
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolTaskRecord.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolTaskRecord.java
index e3905db..d6ff2a8 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolTaskRecord.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolTaskRecord.java
@@ -35,7 +35,6 @@
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
     @ExcelColumn(name="鍒涘缓鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date createDate;
 
     @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
@@ -44,7 +43,6 @@
 
     @ApiModelProperty(value = "鏇存柊鏃堕棿")
     @ExcelColumn(name="鏇存柊鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date editDate;
 
     @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwWorkorder.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwWorkorder.java
index 52b009b..8b9b37c 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwWorkorder.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwWorkorder.java
@@ -33,6 +33,7 @@
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ExcelColumn(name="涓婃姤鏃堕棿",index = 5,width = 16,dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date createDate;
 
     @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
@@ -83,7 +84,6 @@
 
     @ApiModelProperty(value = "鎻愭姤鏃堕棿")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ExcelColumn(name="涓婃姤鏃堕棿",index = 5,width = 16,dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date submitDate;
 
     @ApiModelProperty(value = "宸ュ崟鍒嗙被缂栫爜(鍏宠仈category锛�", example = "1")
@@ -97,7 +97,7 @@
     private String code;
 
     @ApiModelProperty(value = "澶勭悊鐘舵�� 0寰呭鐞� 1宸插垎娲� 2宸插鐞�", example = "1")
-    @ExcelColumn(name="宸ュ崟鐘舵��",index = 7,width = 10,valueMapping = "0=寰呭鐞�;1=宸插垎娲�;1=宸插鐞�;")
+    @ExcelColumn(name="宸ュ崟鐘舵��",index = 7,width = 10,valueMapping = "0=寰呭鐞�;1=宸插垎娲�;2=宸插鐞�;")
     private Integer dealStatus;
 
     @ApiModelProperty(value = "鍒嗘淳浜虹紪鐮�(鍏宠仈system_user)", example = "1")
@@ -136,9 +136,12 @@
     @TableField(exist = false)
     private String buildingName;
     @ApiModelProperty(value = "鎴挎簮鍚嶇О")
-    @ExcelColumn(name="鎴挎簮",index = 2,width = 10)
     @TableField(exist = false)
     private String roomName;
+    @ApiModelProperty(value = "鎶ヤ慨鍖哄煙")
+    @ExcelColumn(name="鎶ヤ慨鍖哄煙",index = 2,width = 10)
+    @TableField(exist = false)
+    private String areaNameInfo;
     @ApiModelProperty(value = "妤煎眰鍚嶇О")
     @TableField(exist = false)
     private String floorName;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CompanyService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CompanyService.java
index d890255..09e5135 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CompanyService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CompanyService.java
@@ -129,4 +129,6 @@
 
     Integer createFinanceCompany(Company company);
     Integer updateFinanceCompany(Company company);
+
+    List<Company>  listForConstract(Company company);
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java
index 2416bac..28835e0 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java
@@ -102,6 +102,7 @@
         wrapper.lambda().eq(Areas::getId,areas.getId());
         Areas update = new Areas();
         update.setName(areas.getName());
+        update.setCode(areas.getCode());
         update.setSortnum(areas.getSortnum());
         areasMapper.update(update,wrapper);
         //鍒锋柊缂撳瓨鏁版嵁
@@ -326,7 +327,7 @@
        CITY_LIST=null;
        AREA_LIST = null;
        ALL_AREA_TREE = null;
-       ALL_AREA_LIST =  areasMapper.selectList(new QueryWrapper<>(a).lambda().orderByDesc(Areas::getSortnum));
+       ALL_AREA_LIST =  areasMapper.selectList(new QueryWrapper<>(a).lambda().orderByAsc(Areas::getCode));
        if(ALL_AREA_LIST!=null){
            for(Areas model : ALL_AREA_LIST){
                 if(Constants.equalsInteger(model.getType(),Constants.ZERO)){
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
index a978630..573f959 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
@@ -432,6 +432,18 @@
     }
 
     @Override
+    public  List<Company>  listForConstract(Company company) {
+        MPJLambdaWrapper<Company> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(Company.class);
+        queryWrapper.like(company.getName() != null,Company::getName, company.getName());
+        queryWrapper.eq(Company::getStatus, Constants.ZERO);
+        queryWrapper.eq(Company::getType, Constants.TWO);
+        queryWrapper.eq(Company::getIsdeleted, Constants.ZERO);
+        queryWrapper.exists("select b.id from yw_account b where b.isdeleted=0 and b.company_id=t.id and b.status=0");
+        queryWrapper.orderByDesc(Company::getCreateDate);
+        return companyMapper.selectList(queryWrapper);
+    }
+    @Override
     public List<Company> findList(Company company) {
         MPJLambdaWrapper<Company> queryWrapper = new MPJLambdaWrapper<>();
         if (company.getId() != null) {
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index fb15ce1..12976d2 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1016,6 +1016,8 @@
             throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝浜哄憳淇℃伅涓嶅瓨鍦紒");
         }
        if(model.getCompanyId()!=null) {
+           member.setEditor(member.getLoginUserInfo().getId());
+           member.setEditDate(new Date());
            if(Constants.equalsInteger(member.getHeadStatus(),Constants.ONE)){
                //濡傛灉鏄彇娑堜富绠�
                companyMapper.update(null,new UpdateWrapper<Company>().lambda()
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java
index 59adbcc..375b2f6 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java
@@ -321,11 +321,13 @@
                 .eq(YwPatrolScheme::getIsdeleted,Constants.ZERO)
                 .like(StringUtils.isNotBlank(model.getTitle()),YwPatrolScheme::getTitle,model.getTitle())
                 //鏌ヨ鏈夋椂娈典氦闆嗙殑鏁版嵁
-                .apply(Objects.nonNull(model.getStartDate())&&Objects.nonNull(model.getEndDate()),
-                        " t.START_DATE <= '"+pageWrap.getModel().getEndDate()+"' and t.END_DATE >= '"+pageWrap.getModel().getStartDate()+"' "
-                )
-//                .ge(Objects.nonNull(model.getStartDate()),YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getStartDate()))
-//                .le(Objects.nonNull(model.getEndDate()),YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getEndDate()))
+              /*  .apply(Objects.nonNull(model.getStartDate())&&Objects.nonNull(model.getEndDate()),
+                        " t.START_DATE <= '"+pageWrap.getModel().getEndDate()+"' or t.END_DATE >= '"+pageWrap.getModel().getStartDate()+"' "
+                )*/
+                .ge( model.getStartDate()!=null,YwPatrolScheme::getStartDate, Utils.Date.getStart(pageWrap.getModel().getStartDate()))
+                .le(Objects.nonNull(model.getEndDate()),YwPatrolScheme::getStartDate, Utils.Date.getStart(pageWrap.getModel().getEndDate()))
+                .ge(Objects.nonNull(model.getStartDateSec()),YwPatrolScheme::getEndDate, Utils.Date.getStart(pageWrap.getModel().getStartDateSec()))
+                .le(Objects.nonNull(model.getEndDateSec()),YwPatrolScheme::getEndDate, Utils.Date.getStart(pageWrap.getModel().getEndDateSec()))
                 .orderByDesc(YwPatrolScheme::getCreateDate)
         ;
         IPage<YwPatrolScheme> iPage = ywPatrolSchemeMapper.selectJoinPage(page,YwPatrolScheme.class,queryWrapper);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskRecordServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskRecordServiceImpl.java
index 92357ea..d025f21 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskRecordServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskRecordServiceImpl.java
@@ -137,7 +137,33 @@
                 .orderByDesc(YwPatrolScheme::getCreateDate)
         ;
         IPage<YwPatrolTaskRecord> iPage = ywPatrolTaskRecordMapper.selectJoinPage(page,YwPatrolTaskRecord.class,queryWrapper); 
+        if(iPage!=null && iPage.getRecords()!=null){
+            for(YwPatrolTaskRecord m : iPage.getRecords()){
+                getFileListByModel(m);
+            }
+        }
         return PageData.from(iPage);
+    }
+
+    private void getFileListByModel(YwPatrolTaskRecord ywPatrolTaskRecord) {
+        //闄勪欢鏁版嵁
+        List<Multifile> multifileList = multifileMapper.selectJoinList(Multifile.class,new MPJLambdaWrapper<Multifile>()
+                .selectAll(Multifile.class)
+                .selectAs(SystemUser::getRealname,Multifile::getUserName)
+                .leftJoin(SystemUser.class,SystemUser::getId,Multifile::getCreator)
+                .eq(Multifile::getObjId,ywPatrolTaskRecord.getId())
+                .eq(Multifile::getIsdeleted,Constants.ZERO)
+                .eq(Multifile::getObjType,Constants.MultiFile.FN_PATROL_TASK_RECORD_FILE.getKey()));
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
+            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+                    +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_PATROL).getCode();
+            for (Multifile multifile:multifileList) {
+                if(StringUtils.isNotBlank(multifile.getFileurl())){
+                    multifile.setFileurlFull(path + multifile.getFileurl());
+                }
+            }
+            ywPatrolTaskRecord.setMultifileList(multifileList);
+        }
     }
 
     @Override
@@ -286,24 +312,7 @@
         if(Objects.isNull(ywPatrolTaskRecord)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈尮閰嶅埌宸℃鐐�!");
         }
-        //闄勪欢鏁版嵁
-        List<Multifile> multifileList = multifileMapper.selectJoinList(Multifile.class,new MPJLambdaWrapper<Multifile>()
-                .selectAll(Multifile.class)
-                .selectAs(SystemUser::getRealname,Multifile::getUserName)
-                .leftJoin(SystemUser.class,SystemUser::getId,Multifile::getCreator)
-                .eq(Multifile::getObjId,ywPatrolTaskRecord.getId())
-                .eq(Multifile::getIsdeleted,Constants.ZERO)
-                .eq(Multifile::getObjType,Constants.MultiFile.FN_PATROL_TASK_RECORD_FILE.getKey()));
-        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
-            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
-                    +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_PATROL).getCode();
-            for (Multifile multifile:multifileList) {
-                if(StringUtils.isNotBlank(multifile.getFileurl())){
-                    multifile.setFileurlFull(path + multifile.getFileurl());
-                }
-            }
-            ywPatrolTaskRecord.setMultifileList(multifileList);
-        }
+        getFileListByModel(ywPatrolTaskRecord);
 
         return ywPatrolTaskRecord;
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java
index b5998ec..104c528 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java
@@ -86,8 +86,8 @@
                 .selectAs(YwPatrolScheme::getCode,YwPatrolTask::getPlanCode)
                 .selectAs(YwPatrolScheme::getTitle,YwPatrolTask::getPlanTitle)
                 .selectAs(SystemUser::getRealname,YwPatrolTask::getUserName)
-                .select(" ( select count(1) from yw_patrol_task_record ytr where ytr.TASK_ID = t.id  and t.ISDELETED = 0  ) ",YwPatrolTask::getPatrolNum)
-                .select(" ( select count(1) from yw_patrol_task_record ytr where ytr.TASK_ID = t.id  and t.STATUS = 1 and t.ISDELETED = 0) ",YwPatrolTask::getFinishNum)
+                .select(" ( select count(1) from yw_patrol_task_record ytr where ytr.TASK_ID = t.id  and ytr.ISDELETED = 0  ) ",YwPatrolTask::getPatrolNum)
+                .select(" ( select count(1) from yw_patrol_task_record ytr where ytr.TASK_ID = t.id  and ytr.STATUS = 1 and ytr.ISDELETED = 0) ",YwPatrolTask::getFinishNum)
                 .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolTask::getDealUserId)
                 .leftJoin(YwPatrolScheme.class,YwPatrolScheme::getId,YwPatrolTask::getSchemeId)
                 .eq(YwPatrolTask::getIsdeleted, Constants.ZERO)
@@ -140,8 +140,8 @@
                 .selectAs(YwPatrolScheme::getCode,YwPatrolTask::getPlanCode)
                 .selectAs(YwPatrolScheme::getTitle,YwPatrolTask::getPlanTitle)
                 .selectAs(SystemUser::getRealname,YwPatrolTask::getUserName)
-                .select(" ( select count(1) from yw_patrol_task_record ytr where ytr.TASK_ID = t.id  and t.ISDELETED = 0  ) ",YwPatrolTask::getPatrolNum)
-                .select(" ( select count(1) from yw_patrol_task_record ytr where ytr.TASK_ID = t.id  and t.STATUS = 1 and t.ISDELETED = 0) ",YwPatrolTask::getFinishNum)
+                .select(" ( select count(1) from yw_patrol_task_record ytr where ytr.TASK_ID = t.id  and ytr.ISDELETED = 0  ) ",YwPatrolTask::getPatrolNum)
+                .select(" ( select count(1) from yw_patrol_task_record ytr where ytr.TASK_ID = t.id  and ytr.STATUS = 1 and ytr.ISDELETED = 0) ",YwPatrolTask::getFinishNum)
                 .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolTask::getDealUserId)
                 .leftJoin(YwPatrolScheme.class,YwPatrolScheme::getId,YwPatrolTask::getSchemeId)
                 .eq(YwPatrolTask::getIsdeleted, Constants.ZERO)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java
index 2e2061a..2e0587a 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java
@@ -282,6 +282,7 @@
         List<YwRoom>  ywRoomList = ywRoomMapper.selectList(new QueryWrapper<YwRoom>().lambda()
                 .eq(YwRoom::getIsdeleted,Constants.ZERO)
                 .eq(YwRoom::getStatus,Constants.ZERO)
+                .eq(YwRoom::getIsInvestment,Constants.ONE)
                 .eq(Objects.nonNull(dataDTO.getProjectId()),YwRoom::getProjectId,dataDTO.getProjectId())
                 .apply(Objects.nonNull(dataDTO)&&Objects.nonNull(dataDTO.getStartDate())&&Objects.nonNull(dataDTO.getEndDate())," id not in  (" +
                         " SELECT y2.room_id FROM  yw_contract y1 left join yw_contract_room y2 on y1.id = y2.contract_id where 1 = 1 and y1.`STATUS` in( 0,1,2) " +
@@ -291,7 +292,7 @@
                         " SELECT y2.room_id FROM  yw_contract y1 left join yw_contract_room y2 on y1.id = y2.contract_id where 1 = 1 and y1.`STATUS` = 3 " +
                         " and y1.START_DATE < '"+dataDTO.getEndDate()+" 00:00:00' and y1.BT_DATE > '"+ dataDTO.getStartDate() +"  00:00:00' " +
                         "  ) ")
-                .orderByAsc(YwRoom::getSortnum)
+                .orderByAsc(YwRoom::getRoomNum)
         );
 
         for (YwRoom data:ywRoomList) {
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwWorkorderServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwWorkorderServiceImpl.java
index c8a86f3..42f163b 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwWorkorderServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwWorkorderServiceImpl.java
@@ -499,10 +499,28 @@
                 queryWrapper.orderByAsc(sortData.getProperty());
             }
         }
+        if(StringUtils.isNotBlank(pageWrap.getModel().getBuildingName())){
+            queryWrapper.and(rw ->{
+                rw.like(YwBuilding::getName,pageWrap.getModel().getBuildingName()).or()
+                        .like(YwRoom::getName,pageWrap.getModel().getBuildingName());
+            });
+        }
         queryWrapper.ge(Objects.nonNull(pageWrap.getModel().getQueryStartTime()), YwWorkorder::getCreateDate, pageWrap.getModel().getQueryStartTime())
                 .le(Objects.nonNull(pageWrap.getModel().getQueryEndTime()), YwWorkorder::getCreateDate, pageWrap.getModel().getQueryEndTime());
         queryWrapper.orderByDesc(YwContract::getCreateDate );
-        return PageData.from(ywWorkorderMapper.selectPage(page, queryWrapper));
+
+        PageData<YwWorkorder> result =   PageData.from(ywWorkorderMapper.selectPage(page, queryWrapper));
+        if(result!=null && result.getRecords()!=null){
+            for(YwWorkorder m : result.getRecords()){
+                if(Constants.equalsInteger(m.getAreaType(),Constants.ZERO)){
+                        //0瀹ゅ唴缁翠慨
+                    m.setAreaNameInfo(StringUtils.defaultString(m.getBuildingName(),"")+"/"+StringUtils.defaultString(m.getRoomNum(),""));
+                }else{
+                    m.setAreaNameInfo(StringUtils.defaultString(m.getBuildingName(),"")+"/"+StringUtils.defaultString(m.getFloorName(),""));
+                }
+            }
+        }
+        return result;
     }
 
     @Override
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
index a846351..613cd7a 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -10,16 +10,18 @@
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.erp.ErpConstants;
 import com.doumee.core.erp.ErpTool;
-import com.doumee.core.erp.model.openapi.request.erp.*;
+import com.doumee.core.erp.model.openapi.request.*;
+import com.doumee.core.erp.model.openapi.request.erp.OrgListRequest;
+import com.doumee.core.erp.model.openapi.request.erp.UserFailRequest;
+import com.doumee.core.erp.model.openapi.request.erp.UserListRequest;
+import com.doumee.core.erp.model.openapi.response.*;
 import com.doumee.core.erp.model.openapi.response.erp.ERPApiResponse;
+import com.doumee.core.erp.model.openapi.response.erp.ErpOrgListResponse;
+import com.doumee.core.erp.model.openapi.response.erp.ErpUserListResponse;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.haikang.model.HKConstants;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
-import com.doumee.core.erp.model.openapi.request.*;
-import com.doumee.core.erp.model.openapi.response.*;
-import com.doumee.core.erp.model.openapi.response.erp.ErpOrgListResponse;
-import com.doumee.core.erp.model.openapi.response.erp.ErpUserListResponse;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DESUtil;
 import com.doumee.core.utils.DateUtil;
@@ -31,8 +33,8 @@
 import com.doumee.dao.business.join.DeviceEventJoinMapper;
 import com.doumee.dao.business.join.VisitEventJoinMapper;
 import com.doumee.dao.business.model.*;
-import com.doumee.service.business.ext.ERPSyncService;
 import com.doumee.service.business.InterfaceLogService;
+import com.doumee.service.business.ext.ERPSyncService;
 import com.doumee.service.business.impl.MemberServiceImpl;
 import com.doumee.service.business.impl.hksync.ferp.HkSyncOrgUserToHKServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;

--
Gitblit v1.9.3