From d87b6ff6bf0681854bb431e8f8e93652a6540691 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期六, 30 十一月 2024 13:53:57 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 admin/.env                                                      |    2 
 admin/src/api/ywContractRevenue.js                              |    5 
 h5/pages/workOrder/edit.vue                                     |  396 +++++++---
 admin/src/views/finance/payments.vue                            |   31 
 h5/pages/operation/detail.vue                                   |   37 
 admin/.env.production                                           |    2 
 h5/pages/index.vue                                              |   41 
 h5/pages/login.vue                                              |   82 +-
 admin/src/views/workorder/components/detail.vue                 |    2 
 h5/api/yw.js                                                    |   73 ++
 h5/pages/workOrder/detail.vue                                   |  108 ++-
 admin/src/views/finance/components/details.vue                  |  335 +++++++++
 h5/api/staff.js                                                 |  211 -----
 admin/src/views/finance/components/bullEdit.vue                 |   10 
 admin/src/views/finance/bull.vue                                |   35 
 h5/manifest.json                                                |    4 
 h5/static/home/ic_xinzenggongdan@2x.png                         |    0 
 h5/pages.json                                                   |   22 
 h5/api/index.js                                                 |    9 
 h5/static/empty.png                                             |    0 
 admin/src/views/login.vue                                       |    4 
 admin/src/views/contract/components/terminateLease.vue          |  112 ++
 h5/pages/common/memberSel.vue                                   |  256 +++++++
 admin/src/views/finance/components/flowingWater.vue             |    8 
 h5/utils/service.js                                             |    2 
 admin/src/views/contract/components/addCollectionBill.vue       |   12 
 h5/pages/workOrder/list.vue                                     |   56 +
 admin/.env.test                                                 |    2 
 h5/pages/operation/record.vue                                   |  154 +++-
 admin/src/api/contract.js                                       |    6 
 admin/src/views/finance/components/bullDetail.vue               |   62 -
 admin/src/views/workorder/components/OperaYwWorkorderWindow.vue |    2 
 32 files changed, 1,453 insertions(+), 628 deletions(-)

diff --git a/admin/.env b/admin/.env
index 2e37a67..1b78e31 100644
--- a/admin/.env
+++ b/admin/.env
@@ -10,4 +10,4 @@
 VUE_APP_API_PREFIX = '/gateway_interface'
 
 # 椤圭洰鍚嶇О
-VUE_APP_TITLE = '闃滃畞鏂囦綋涓績'
+VUE_APP_TITLE = '绉熻祦骞冲彴'
diff --git a/admin/.env.production b/admin/.env.production
index 7406b0f..92c5c4d 100644
--- a/admin/.env.production
+++ b/admin/.env.production
@@ -1,4 +1,4 @@
 # 鐢熶骇鐜閰嶇疆
 NODE_ENV = 'production'
 
-# VUE_APP_API_URL  = 'http://10.50.250.178:8088/gateway_interface'
+# VUE_APP_API_URL  = 'http://192.168.0.173/gateway_interface'
diff --git a/admin/.env.test b/admin/.env.test
index c3d8b95..ac3450e 100644
--- a/admin/.env.test
+++ b/admin/.env.test
@@ -5,4 +5,4 @@
 
 VUE_APP_API_URL  = 'http://192.168.0.162:10010/'
 
-# VUE_APP_API_URL  = 'http://192.168.0.136:10010/'
+# VUE_APP_API_URL  = 'http://192.168.0.108:10030/'
diff --git a/admin/src/api/contract.js b/admin/src/api/contract.js
index f8ff2ca..1449001 100644
--- a/admin/src/api/contract.js
+++ b/admin/src/api/contract.js
@@ -36,3 +36,9 @@
 export function getYwContractBillById (id) {
   return request.get(`/visitsAdmin/cloudService/business/ywContractBill/${id}`)
 }
+
+// 鍙��娆捐处鍗�
+export function getCanBackBill (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywContractBill/getCanBackBill', data)
+}
+
diff --git a/admin/src/api/ywContractRevenue.js b/admin/src/api/ywContractRevenue.js
index 92abf72..dddc74c 100644
--- a/admin/src/api/ywContractRevenue.js
+++ b/admin/src/api/ywContractRevenue.js
@@ -16,3 +16,8 @@
 export function close (id) {
   return request.get(`/visitsAdmin/cloudService/business/ywContractRevenue/close?id=${id}`)
 }
+
+// 鏍规嵁ID鏌ヨ
+export function getById (id) {
+  return request.get(`/visitsAdmin/cloudService/business/ywContractRevenue/${id}`)
+}
diff --git a/admin/src/views/contract/components/addCollectionBill.vue b/admin/src/views/contract/components/addCollectionBill.vue
index 1d4a3f5..a67dc5b 100644
--- a/admin/src/views/contract/components/addCollectionBill.vue
+++ b/admin/src/views/contract/components/addCollectionBill.vue
@@ -10,7 +10,7 @@
             <div class="main_content">
                 <el-form :model="form" label-position="top" ref="form" :rules="rules">
                     <div class="head">
-                        <div class="m_title">鍩虹淇℃伅</div>
+                        <div class="m_title">鍩虹淇℃伅-{{time.startDate}}~{{time.endDate}}</div>
                         <div class="tabs">
                             <div class="tab" :class="{ active: form.feeType === 0 }" @click="timeTabClick(0)">鍛ㄦ湡璐圭敤</div>
                             <div class="tab" :class="{ active: form.feeType === 1 }" @click="timeTabClick(1)">涓�娆℃�ц垂鐢�</div>
@@ -37,6 +37,8 @@
                                 type="daterange"
                                 range-separator="鑷�"
                                 v-model="form.date"
+                                :min-date="new Date(time.startDate)"
+                                :max-date="new Date(time.endDate)"
                                 @change="changeDate"
                                 start-placeholder="寮�濮嬫棩鏈�"
                                 end-placeholder="缁撴潫鏃ユ湡"
@@ -109,6 +111,10 @@
           billTypeCopy: 0,
           date: []
         },
+        time: {
+          startDate: '',
+          endDate: ''
+        },
         rules: {
           contractCode: [
             { required: true, message: '璇疯緭鍏�', trigger: 'blur' }
@@ -136,8 +142,10 @@
       }
     },
     methods: {
-      open (title, target) {
+      open (title, target, time) {
         this.title = title
+        this.time.startDate = time.startDate
+        this.time.endDate = time.endDate
         this.getCompany()
         this.visible = true
         // 鏂板缓
diff --git a/admin/src/views/contract/components/terminateLease.vue b/admin/src/views/contract/components/terminateLease.vue
index ed32531..982e7f0 100644
--- a/admin/src/views/contract/components/terminateLease.vue
+++ b/admin/src/views/contract/components/terminateLease.vue
@@ -24,6 +24,7 @@
                             </el-select>
                         </el-form-item>
                         <el-form-item label="閫�绉熸棩鏈�" prop="btDate" style="width: 33%;">
+<!--                            @change="changeBtDate"-->
                             <el-date-picker
                                 v-model="form.btDate"
                                 type="date"
@@ -69,13 +70,14 @@
             <div class="title">
                 <span>閫�绉熶俊鎭�</span>
                 <div style="display: flex; align-items: center;">
-                    <el-button type="primary" @click="$refs.addCollectionBill.open('鍒涘缓鏀舵璐﹀崟', { contractCode: info.code, contractId: info.id, renterName: info.renterName, renterId: info.renterId, billType: 0, billTypeCopy: 0, feeType: 0 })">娣诲姞鏀舵</el-button>
-                    <el-button type="primary" @click="$refs.AddPaymentBill.open('鍒涘缓浠樻璐﹀崟', { contractCode: info.code, contractId: info.id, renterName: info.renterName, renterId: info.renterId, billType: 1, billTypeCopy: 1 })">娣诲姞浠樻</el-button>
+                    <el-button type="primary" @click="addZD">娣诲姞鏀舵</el-button>
+                    <el-button type="primary" @click="addFK">娣诲姞浠樻</el-button>
                 </div>
             </div>
             <el-table
                 :data="info.terminateList"
                 border
+                v-loading="loading"
                 style="width: 100%; margin-bottom: 15px;">
                 <el-table-column
                     prop="code"
@@ -193,7 +195,7 @@
   import AddCollectionBill from './addCollectionBill'
   import AddPaymentBill from './addPaymentBill'
   import { getUserList } from '@/api/system/user'
-  import { backRent } from '@/api/contract'
+  import { backRent, getCanBackBill } from '@/api/contract'
   export default {
     name: "terminateLease",
     components: {
@@ -236,7 +238,9 @@
         agentList: [],
 
         receivable: '',
-        meet: ''
+        meet: '',
+        
+        loading: false
       }
     },
     watch: {
@@ -264,28 +268,74 @@
         this.title = title
         this.info = info
         this.form.id = info.id
-        this.info.billList.forEach(item => {
+        this.info.canBackRentBills.forEach(item => {
           this.$set(item, 'receivableFeeCopy', item.receivableFee)
+          this.$set(item, 'receivableFee', item.needReceivableFee)
           if ([2,3,7].includes(item.costType)) {
+            this.$set(item, 'billType', 1)
             this.$set(item, 'price', item.actReceivableFee)
           } else {
-            this.$set(item, 'price', item.receivableFee)
+            this.$set(item, 'price', item.needReceivableFee)
           }
         })
         this.info.terminateList = this.info.canBackRentBills.filter(item => {
           if ([0,1,4,5,6].includes(item.costType)) {
-            item.billTypeCopy = item.billType
+            item.billTypeCopy = JSON.parse(JSON.stringify(item.billType))
             return item
           }
         })
         this.info.depositList = this.info.canBackRentBills.filter(item => {
           if ([2,3,7].includes(item.costType)) {
-            item.billTypeCopy = item.billType
+            item.billTypeCopy = JSON.parse(JSON.stringify(item.billType))
             return item
           }
         })
         this.getUser()
         this.visible = true
+      },
+      addZD () {
+        if (!this.form.btDate) return this.$message.warning('璇烽�夋嫨閫�绉熸棩鏈�')
+        this.$refs.addCollectionBill.open('鍒涘缓鏀舵璐﹀崟', {
+          contractCode: this.info.code,
+          contractId: this.info.id,
+          renterName: this.info.renterName,
+          renterId: this.info.renterId,
+          billType: 0,
+          billTypeCopy: 0,
+          feeType: 0
+        }, { startDate: this.info.startDate, endDate: this.form.btDate })
+      },
+      addFK () {
+        if (!this.form.btDate) return this.$message.warning('璇烽�夋嫨閫�绉熸棩鏈�')
+        this.$refs.AddPaymentBill.open('鍒涘缓浠樻璐﹀崟', {
+          contractCode: this.info.code,
+          contractId: this.info.id,
+          renterName: this.info.renterName,
+          renterId: this.info.renterId,
+          billType: 1,
+          billTypeCopy: 1
+        }, { startDate: this.info.startDate, endDate: this.form.btDate })
+      },
+      changeBtDate (planPayDateEnd) {
+        this.loading = true
+        getCanBackBill({
+          contractId: this.info.id,
+          planPayDateEnd
+        }).then(res => {
+          res.forEach(item => {
+            this.$set(item, 'receivableFeeCopy', item.receivableFee)
+            this.$set(item, 'receivableFee', item.needReceivableFee)
+            this.$set(item, 'price', item.needReceivableFee)
+          })
+          this.info.terminateList = res.filter(item => {
+            if ([0,1,4,5,6].includes(item.costType)) {
+              item.billTypeCopy = JSON.parse(JSON.stringify(item.billType))
+              return item
+            }
+          })
+        }).finally(() => {
+          this.loading = false
+        })
       },
       getObjS (obj) {
         this.info.terminateList.push(obj)
@@ -336,34 +386,32 @@
           row.price = 0
           this.$message.warning('涓嶈兘澶т簬鍘熷搴旀敹浠橀噾棰�')
         } else {
-          row.price = Number(num) - row.actReceivableFee
-          // 鏀�
-          if (row.billTypeCopy === 0) {
-            if (row.price > 0) {
-              row.billType = 0
-            } else if (row.price < 0) {
-              row.billType = 1
+          if (num) {
+            row.price = Number(num) - row.actReceivableFee
+            // 鏀�
+            if (row.billTypeCopy === 0) {
+              if (row.price > 0) {
+                row.billType = 0
+              } else if (row.price < 0) {
+                row.billType = 1
+              } else {
+                row.billType = 0
+              }
             } else {
-              row.billType = 0
+              if (row.price > 0) {
+                row.billType = 1
+              } else if (row.price < 0) {
+                row.billType = 0
+              } else {
+                row.billType = 1
+              }
             }
           } else {
-            if (row.price > 0) {
-              row.billType = 1
-            } else if (row.price < 0) {
-              row.billType = 0
-            } else {
-              row.billType = 1
-            }
+            row.price = 0
+            row.billType = row.billTypeCopy
+            console.log('billTypeCopy', row.billTypeCopy)
           }
-          // if (row.price > 0) {
-          //   row.billType = 0
-          // } else if (row.price < 0) {
-          //   row.billType = 1
-          // }
-          row.price = String(row.price)
-          if (row.price.indexOf('-') > 0) {
-            row.price = row.price.substring(0, row.price.length)
-          }
+          row.price = Math.abs(row.price);
         }
       }
     }
diff --git a/admin/src/views/finance/bull.vue b/admin/src/views/finance/bull.vue
index 936cc3c..4f502d9 100644
--- a/admin/src/views/finance/bull.vue
+++ b/admin/src/views/finance/bull.vue
@@ -38,24 +38,40 @@
       <el-table-column prop="needReceivableFee" label="闇�鏀堕噾棰�" min-width="100" show-overflow-tooltip />
       <el-table-column label="璐圭敤绫诲瀷" min-width="100" show-overflow-tooltip>
         <template slot-scope="{row}">
-          <span v-if="row.feeType === 0">鍛ㄦ湡璐圭敤</span>
-          <span v-if="row.feeType === 1">涓�娆℃�ц垂鐢�</span>
+          <span v-if="row.costType === 0">绉熻祦璐�</span>
+          <span v-if="row.costType === 1">鐗╀笟璐�</span>
+          <span v-if="row.costType === 2">绉熻祦鎶奸噾</span>
+          <span v-if="row.costType === 3">鐗╀笟鎶奸噾</span>
+          <span v-if="row.costType === 4">姘寸數璐�</span>
+          <span v-if="row.costType === 5">鏉傞」璐�</span>
+          <span v-if="row.costType === 6">鍏跺畠</span>
+          <span v-if="row.costType === 7">淇濊瘉閲�</span>
         </template>
       </el-table-column>
       <el-table-column label="鏄惁閫炬湡" min-width="100" show-overflow-tooltip>
         <template slot-scope="{row}">
-          <span v-if="row.isOverdue === 0">鍚�</span>
-          <span v-if="row.isOverdue === 1">鏄�</span>
+          <span v-if="row.isOverdue === 0">鏈�炬湡</span>
+          <span v-if="row.isOverdue === 1" style="color: red;">宸查�炬湡</span>
         </template>
       </el-table-column>
-      <el-table-column label="璁¤垂鍛ㄦ湡" min-width="100" show-overflow-tooltip>
+      <el-table-column label="璁¤垂鍛ㄦ湡" min-width="200" show-overflow-tooltip>
         <template slot-scope="{row}">
           {{ row.startDate }} ~ {{ row.endDate }}
         </template>
       </el-table-column>
       <el-table-column prop="planPayDate" label="搴旀敹鏃ユ湡" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="createTime" label="璐﹀崟鏉ユ簮" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="statusName" label="鍚堝悓鐘舵��" min-width="100" fixed="right" show-overflow-tooltip />
+      <el-table-column label="璐﹀崟鏉ユ簮" min-width="100" show-overflow-tooltip>
+        <template slot-scope="{row}">
+          <span v-if="row.type === 0">鍚堝悓璐﹀崟</span>
+          <span v-if="row.type === 1">鑷缓璐﹀崟</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="璐﹀崟鐘舵��" min-width="100" fixed="right" show-overflow-tooltip>
+        <template slot-scope="{row}">
+          <span v-if="row.status === 0">寮�鍚�</span>
+          <span v-if="row.status === 1" style="color: red;">鍏抽棴</span>
+        </template>
+      </el-table-column>
       <el-table-column label="鎿嶄綔" min-width="120" fixed="right">
         <template slot-scope="{row}">
           <el-button type="text" @click="handleDetail(row)" icon="el-icon-edit" v-permissions="['business:category:update']">鏌ョ湅璇︽儏</el-button>
@@ -150,6 +166,11 @@
     },
     getList (page) {
       const { pagination, filters } = this
+      let form = JSON.parse(JSON.stringify(filters))
+      if (form && form.selDate && form.selDate.length > 0) {
+        form.planPayDateStart = form.payDate[0]
+        form.planPayDateEnd = form.payDate[1]
+      }
       this.loading = true
       fetchList({
         model: {
diff --git a/admin/src/views/finance/components/bullDetail.vue b/admin/src/views/finance/components/bullDetail.vue
index 6334c44..844888d 100644
--- a/admin/src/views/finance/components/bullDetail.vue
+++ b/admin/src/views/finance/components/bullDetail.vue
@@ -5,12 +5,13 @@
       <div class="left">
         <span class="mr10">浠樻鏂癸細{{info.customerName}}</span>
         <el-tag type="success" v-if="info.status === 0">寮�鍚�</el-tag>
-        <el-tag type="success" v-if="info.status === 1">鍏抽棴</el-tag>
+        <el-tag type="info" v-if="info.status === 1">鍏抽棴</el-tag>
       </div>
-      <el-button plain type="primary" @click="$refs.flowingWater.open(info.billType === 0 ? '鍒涘缓鏀舵璐﹀崟' : '鍒涘缓浠樻璐﹀崟', {
+      <el-button plain type="primary" @click="$refs.flowingWater.open('鍒涘缓鏀舵敮娴佹按', {
         billType: info.billType,
         billId: info.id,
         costType: info.costType,
+        receivableFee: info.needReceivableFee,
         costTypeName: returnText(info.costType),
         contractCode: info.contractCode,
         contractId: info.contractId,
@@ -36,19 +37,19 @@
           <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 5">宸插叧闂�</div>
         </div>
         <div class="item" style="flex: 1;">
-          <div class="la">搴旀敹閲戦锛堝厓锛�</div>
+          <div class="la">搴攞{info.billType === 0 ? '鏀�' : '浠�'}}閲戦锛堝厓锛�</div>
           <div class="val" style="margin-top: 10px;">{{info.receivableFee}}</div>
         </div>
         <div class="item" style="flex: 1;">
-          <div class="la">瀹炴敹閲戦锛堝厓锛�</div>
+          <div class="la">瀹瀧{info.billType === 0 ? '鏀�' : '浠�'}}閲戦锛堝厓锛�</div>
           <div class="val" style="margin-top: 10px;">{{info.actReceivableFee}}</div>
         </div>
         <div class="item" style="flex: 1;">
-          <div class="la">闇�浠橀噾棰濓紙鍏冿級</div>
+          <div class="la">闇�{{info.billType === 0 ? '鏀�' : '浠�'}}閲戦锛堝厓锛�</div>
           <div class="val" style="margin-top: 10px;">{{info.needReceivableFee}}</div>
         </div>
         <div class="item" style="flex: 1;">
-          <div class="la">搴旀敹鏃ユ湡</div>
+          <div class="la">搴攞{info.billType === 0 ? '鏀�' : '浠�'}}鏃ユ湡</div>
           <div class="val" style="margin-top: 10px;">{{info.planPayDate}}</div>
         </div>
       </div>
@@ -62,9 +63,8 @@
       <div class="title">鍩虹淇℃伅</div>
       <div class="list" style="background: rgba(0,0,0,0); padding: 0;">
         <div class="item">
-          <div class="la">璐﹀崟绫诲瀷</div>
-          <div class="val" v-if="info.billType === 0">鏀舵</div>
-          <div class="val" v-if="info.billType === 1">浠樻</div>
+          <div class="la">璐圭敤绫诲瀷</div>
+          <div class="val">{{returnText(info.costType)}}</div>
         </div>
         <div class="item">
           <div class="la">璁¤垂鍛ㄦ湡</div>
@@ -92,7 +92,7 @@
         </div>
         <div class="item">
           <div class="la">缁忓姙浜�</div>
-          <div class="val">寮犱笁</div>
+          <div class="val">{{info.realname}}</div>
         </div>
         <div class="item">
           <div class="la">鎵�灞炲叕鍙�</div>
@@ -126,47 +126,13 @@
             </template>
           </el-table-column>
           <el-table-column
-            prop="area"
             label="闈㈢Н">
+            <template slot-scope="{row}">
+              {{row.area}}銕�
+            </template>
           </el-table-column>
         </el-table>
       </div>
-<!--      <div class="title">璐﹀崟鏄庣粏</div>-->
-<!--      <div class="list" style="background: rgba(0,0,0,0); padding: 0;">-->
-<!--        <el-table-->
-<!--          :data="tableData"-->
-<!--          border-->
-<!--          style="width: 100%">-->
-<!--          <el-table-column-->
-<!--            prop="date"-->
-<!--            label="璐圭敤绫诲瀷">-->
-<!--          </el-table-column>-->
-<!--          <el-table-column-->
-<!--            prop="name"-->
-<!--            label="搴旀敹/浠橀噾棰�">-->
-<!--          </el-table-column>-->
-<!--          <el-table-column-->
-<!--            prop="address"-->
-<!--            label="瀹炴敹閲戦">-->
-<!--          </el-table-column>-->
-<!--          <el-table-column-->
-<!--            prop="address"-->
-<!--            label="闇�鏀堕噾棰�">-->
-<!--          </el-table-column>-->
-<!--          <el-table-column-->
-<!--            prop="address"-->
-<!--            label="璁¤垂鍛ㄦ湡">-->
-<!--          </el-table-column>-->
-<!--          <el-table-column-->
-<!--            prop="address"-->
-<!--            label="搴旀敹/浠樻棩鏈�">-->
-<!--          </el-table-column>-->
-<!--          <el-table-column-->
-<!--            prop="address"-->
-<!--            label="澶囨敞">-->
-<!--          </el-table-column>-->
-<!--        </el-table>-->
-<!--      </div>-->
       <div class="title">鏀舵敮娴佹按</div>
       <div class="list" style="background: rgba(0,0,0,0); padding: 0;">
         <el-table
@@ -197,7 +163,7 @@
             </template>
           </el-table-column>
           <el-table-column
-            prop="payDateEnd"
+            prop="actPayDate"
             label="鍏ヨ处鏃ユ湡">
           </el-table-column>
           <el-table-column
diff --git a/admin/src/views/finance/components/bullEdit.vue b/admin/src/views/finance/components/bullEdit.vue
index 0d77432..9eaf189 100644
--- a/admin/src/views/finance/components/bullEdit.vue
+++ b/admin/src/views/finance/components/bullEdit.vue
@@ -21,11 +21,11 @@
                 <el-input v-model="form.renterName" disabled placeholder="璇疯緭鍏ュ簲鏀堕噾棰�" v-trim />
             </el-form-item>
             <el-form-item label="鎴挎簮" prop="ywContractRoomList">
-              <el-select v-model="form.ywContractRoomList" multiple placeholder="璇烽�夋嫨">
+              <el-select v-model="form.ywContractRoomList" @click="clickHouse" multiple placeholder="璇烽�夋嫨">
                 <el-option
                   v-for="(item, index) in houseList"
                   :key="index"
-                  :value="item.id"
+                  :value="item.roomId"
                   :label="item.projectName + item.buildingName + item.floorName + item.roomName" />
               </el-select>
             </el-form-item>
@@ -149,6 +149,7 @@
   methods: {
     open (title, target) {
       this.title = title
+      this.form.feeType = 0
       this.form.multifileList = []
       this.getListAll()
       this.getCompanyList()
@@ -168,6 +169,11 @@
         }
       })
     },
+    clickHouse () {
+      if (!this.form.contractId) {
+        return this.$message.warning('璇峰厛閫夋嫨鍚堝悓')
+      }
+    },
     changeContract (e) {
       this.form.renterName = this.contract.filter(item => {
         if (item.id === e) {
diff --git a/admin/src/views/finance/components/details.vue b/admin/src/views/finance/components/details.vue
new file mode 100644
index 0000000..1336c5a
--- /dev/null
+++ b/admin/src/views/finance/components/details.vue
@@ -0,0 +1,335 @@
+<template>
+    <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @close="close"
+        @confirm="confirm">
+        <div class="home_title">
+            <div class="left">
+                <span class="mr10">瀵规柟鍗曚綅鍚嶇О锛歿{info.customerName}}</span>
+                <el-tag type="success" v-if="info.status === 0">寮�鍚�</el-tag>
+                <el-tag type="info" v-if="info.status === 1">鍏抽棴</el-tag>
+            </div>
+            <el-button type="danger" v-if="info.status === 0" @click="closeDW()">鍏抽棴娴佹按</el-button>
+        </div>
+        <div class="line"></div>
+        <div class="main">
+            <div class="list" style="background: rgba(0,0,0,0); padding: 0; margin-bottom: 0;">
+                <div class="item" style="flex: 1;">
+                    <div class="la">缁撴竻鐘舵��</div>
+                    <div class="val" style="margin-top: 10px;" v-if="info1.payStatus === 0">寰呮敹娆�</div>
+                    <div class="val" style="margin-top: 10px;" v-if="info1.payStatus === 1">宸茬粨娓�</div>
+                    <div class="val" style="margin-top: 10px;" v-if="info1.payStatus === 2">閮ㄥ垎缁撴竻</div>
+                    <div class="val" style="margin-top: 10px;" v-if="info1.payStatus === 3">寰呬粯娆�</div>
+                    <div class="val" style="margin-top: 10px;" v-if="info1.payStatus === 4">寰呴��娆�</div>
+                    <div class="val" style="margin-top: 10px;" v-if="info1.payStatus === 5">宸插叧闂�</div>
+                </div>
+                <div class="item" style="flex: 1;">
+                    <div class="la">搴攞{info.revenueType === 0 ? '鏀�' : '浠�'}}閲戦锛堝厓锛�</div>
+                    <div class="val" style="margin-top: 10px;">{{info1.receivableFee}}</div>
+                </div>
+                <div class="item" style="flex: 1;">
+                    <div class="la">瀹瀧{info.revenueType === 0 ? '鏀�' : '浠�'}}閲戦锛堝厓锛�</div>
+                    <div class="val" style="margin-top: 10px;">{{info1.actReceivableFee}}</div>
+                </div>
+                <div class="item" style="flex: 1;">
+                    <div class="la">闇�{{info.revenueType === 0 ? '鏀�' : '浠�'}}閲戦锛堝厓锛�</div>
+                    <div class="val" style="margin-top: 10px;">{{info1.needReceivableFee}}</div>
+                </div>
+                <div class="item" style="flex: 1;">
+                    <div class="la">搴攞{info.revenueType === 0 ? '鏀�' : '浠�'}}鏃ユ湡</div>
+                    <div class="val" style="margin-top: 10px;">{{info1.planPayDate}}</div>
+                </div>
+            </div>
+        </div>
+        <div class="tabs">
+            <div class="tab" :class="{ active: activeTabs == 0 }" @click="tabsClick(0)">娴佹按淇℃伅</div>
+            <div class="tab" :class="{ active: activeTabs == 1 }" @click="tabsClick(1)">鍏宠仈璐﹀崟</div>
+        </div>
+        <div class="main">
+            <div class="title">娴佹按淇℃伅</div>
+            <div class="list" style="background: rgba(0,0,0,0); padding: 0;">
+                <div class="item">
+                    <div class="la">鏀舵敮绫诲瀷</div>
+                    <div class="val" v-if="info.revenueType === 0">鏀跺叆</div>
+                    <div class="val" v-if="info.revenueType === 1">鏀嚭</div>
+                </div>
+                <div class="item">
+                    <div class="la">鍏ヨ处鏃ユ湡</div>
+                    <div class="val">{{info.actPayDate}}</div>
+                </div>
+                <div class="item">
+                    <div class="la">鍙戠敓棰濓紙鍏冿級</div>
+                    <div class="val">{{info.actReceivableFee}}</div>
+                </div>
+                <div class="item">
+                    <div class="la">璐﹀崟缂栧彿</div>
+                    <div class="val">{{info.billCode}}</div>
+                </div>
+                <div class="item">
+                    <div class="la">鍚堝悓缂栧彿</div>
+                    <div class="val">{{info.contractCode}}</div>
+                </div>
+                <div class="item">
+                    <div class="la">鍒涘缓鏃堕棿</div>
+                    <div class="val">{{info.createDate}}</div>
+                </div>
+                <div class="item">
+                    <div class="la">瀵规柟鍏徃</div>
+                    <div class="val">{{info.customerName}}</div>
+                </div>
+                <div class="item">
+                    <div class="la">缁忓姙浜�</div>
+                    <div class="val">{{info.realname}}</div>
+                </div>
+                <div class="item">
+                    <div class="la">娴佹按璐︽埛</div>
+                    <div class="val">{{info.accountTitle}}</div>
+                </div>
+                <div class="item">
+                    <div class="la">澶囨敞</div>
+                    <div class="val">{{info.remark}}</div>
+                </div>
+                <div class="item"></div>
+                <div class="item"></div>
+            </div>
+            <div class="title">鍏宠仈璐﹀崟</div>
+            <div class="list" style="background: rgba(0,0,0,0); padding: 0;">
+                <el-table
+                    :data="[info1]"
+                    border
+                    style="width: 100%">
+                    <el-table-column
+                        label="璐圭敤绫诲瀷">
+                        <template slot-scope="{row}">
+                            <span v-if="row.costType === 0">绉熻祦璐�</span>
+                            <span v-if="row.costType === 1">鐗╀笟璐�</span>
+                            <span v-if="row.costType === 2">绉熻祦鎶奸噾</span>
+                            <span v-if="row.costType === 3">鐗╀笟鎶奸噾</span>
+                            <span v-if="row.costType === 4">姘寸數璐�</span>
+                            <span v-if="row.costType === 5">鏉傞」璐�</span>
+                            <span v-if="row.costType === 6">鍏跺畠</span>
+                            <span v-if="row.costType === 7">淇濊瘉閲�</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column
+                        prop="receivableFee"
+                        label="搴旀敹/浠橀噾棰�">
+                    </el-table-column>
+                    <el-table-column
+                        prop="actReceivableFee"
+                        label="瀹炴敹閲戦">
+                    </el-table-column>
+                    <el-table-column
+                        prop="needReceivableFee"
+                        label="闇�鏀堕噾棰�">
+                    </el-table-column>
+                    <el-table-column
+                        label="璁¤垂鍛ㄦ湡">
+                        <template slot-scope="{row}">
+                            {{row.startDate}} ~ {{row.endDate}}
+                        </template>
+                    </el-table-column>
+                    <el-table-column
+                        prop="planPayDate"
+                        label="搴旀敹/浠樻棩鏈�">
+                    </el-table-column>
+                    <el-table-column
+                        prop="remark"
+                        label="澶囨敞">
+                    </el-table-column>
+                </el-table>
+            </div>
+            <div class="title">娴佹按闄勪欢</div>
+            <div class="list" style="background: rgba(0,0,0,0); padding: 0;">
+                <el-table
+                    :data="info.multifileList"
+                    border
+                    style="width: 100%">
+                    <el-table-column
+                        prop="name"
+                        label="闄勪欢鍚嶇О">
+                    </el-table-column>
+                    <el-table-column
+                        prop="userName"
+                        label="鎿嶄綔浜�">
+                    </el-table-column>
+                    <el-table-column
+                        prop="createDate"
+                        label="鎿嶄綔鏃堕棿">
+                    </el-table-column>
+                </el-table>
+            </div>
+            <div class="title">鎿嶄綔璁板綍</div>
+            <div class="list" style="background: rgba(0,0,0,0); padding: 0;">
+                <el-table
+                    :data="info.editRecordDataVOList"
+                    border
+                    style="width: 100%">
+                    <el-table-column
+                        width="200"
+                        prop="editUserName"
+                        label="鎿嶄綔浜�">
+                    </el-table-column>
+                    <el-table-column
+                        width="200"
+                        prop="editTime"
+                        label="鎿嶄綔鏃堕棿">
+                    </el-table-column>
+                    <el-table-column
+                        prop="editRemark"
+                        label="鎿嶄綔鍐呭">
+                    </el-table-column>
+                </el-table>
+            </div>
+        </div>
+    </GlobalWindow>
+</template>
+
+<script>
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import BaseOpera from '@/components/base/BaseOpera'
+  import { close, getById } from '@/api/ywContractRevenue'
+  import { getYwContractBillById } from '@/api/contract'
+  export default {
+    name: 'details',
+    components: {
+      GlobalWindow
+    },
+    extends: BaseOpera,
+    data() {
+      return {
+        id: '',
+        activeTabs: '',
+        info: {},
+        info1: {}
+      }
+    },
+    methods: {
+      open (title, id) {
+        this.title = title
+        this.id = id
+        this.getDetails()
+      },
+      getDetails () {
+        getById(this.id)
+          .then(res => {
+            this.info = res
+            this.getDetails1()
+          })
+      },
+      getDetails1 () {
+        getYwContractBillById(this.info.billId)
+          .then(res => {
+            this.info1 = res
+            this.visible = true
+          })
+      },
+      tabsClick(val) {
+        this.activeTabs = val
+      },
+      closeDW (id) {
+        this.$confirm('纭鍏抽棴姝ゆ祦姘村悧?', '鎻愮ず', {
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }).then(() => {
+          close(id)
+            .then(res => {
+              this.getDetails()
+            })
+        }).catch(() => {
+
+        });
+      },
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+    @import '@/assets/style/variables.scss';
+    .home_title {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        
+        .left {
+            font-weight: 500;
+            font-size: 16px;
+            margin-right: 10px;
+            display: flex;
+            align-items: center;
+            
+            .status {
+                padding: 0 6px;
+                height: 22px;
+                line-height: 22px;
+                border-radius: 2px;
+                border: 1px solid #00BA92;
+                color: #00BA92;
+                font-weight: 400;
+                font-size: 12px;
+                color: #00BA92;
+            }
+        }
+    }
+    
+    .remark {
+        background: #E8EBF7;
+        border-radius: 2px;
+        padding: 10px 20px;
+        font-size: 16px;
+        margin: 20px 0
+    }
+    
+    .tabs {
+        border-bottom: 1px solid #DFE2E8;
+        display: flex;
+        margin-bottom: 20px;
+        .tab {
+            height: 58px;
+            line-height: 58px;
+            font-size: 16px;
+            color: #666666;
+            margin-right: 30px;
+            cursor: pointer;
+        }
+        
+        .active {
+            font-weight: 500;
+            color: $primary-color;
+            border-bottom: 2px solid $primary-color;
+        }
+    }
+    
+    .line {
+        width: 100%;
+        margin: 15px 0;
+        border-bottom: 1px dashed #eaeaea;
+    }
+    
+    .main {
+        .title {
+            font-weight: 500;
+            font-size: 18px;
+            color: $primary-color;
+            margin-bottom: 15px;
+        }
+        
+        .list {
+            display: flex;
+            flex-wrap: wrap;
+            /*background: #F7F7F7;*/
+            border-radius: 2px;
+            padding: 0 20px;
+            margin-bottom: 20px;
+            
+            .item {
+                flex: 25%;
+                margin-bottom: 20px;
+                
+                .la {
+                    color: #7f7f7f;
+                    margin-bottom: 5px;
+                }
+            }
+        }
+    }
+</style>
diff --git a/admin/src/views/finance/components/flowingWater.vue b/admin/src/views/finance/components/flowingWater.vue
index a646fb0..827e578 100644
--- a/admin/src/views/finance/components/flowingWater.vue
+++ b/admin/src/views/finance/components/flowingWater.vue
@@ -17,8 +17,8 @@
                         <el-form-item label="璁¤垂鍛ㄦ湡" required>
                             <el-input v-model="form.date" disabled placeholder="璇疯緭鍏�" v-trim />
                         </el-form-item>
-                        <el-form-item label="搴旀敹閲戦" prop="receivableFee">
-                            <el-input v-model="form.receivableFee" placeholder="璇疯緭鍏�" v-trim />
+                        <el-form-item label="搴旀敹閲戦" required>
+                            <el-input v-model="form.receivableFee" disabled placeholder="璇疯緭鍏�" v-trim />
                         </el-form-item>
                         <el-form-item label="瀹炴敹閲戦" prop="actReceivableFee">
                             <el-input v-model="form.actReceivableFee" placeholder="璇疯緭鍏�" v-trim />
@@ -100,6 +100,7 @@
           contractId: '',
           startDate: '',
           endDate: '',
+          receivableFee: '',
           date: '',
           companyId: '',
           actReceivableFee: '',
@@ -204,7 +205,6 @@
           }
         })
         const item = file.data[0]
-        console.log(item)
         this.form.multifileList.push({ ...item, fileurl: item.imgaddr, name: item.originname, userName: this.userInfo.realname, createTime: this.getDay() })
       },
       close() {
@@ -214,11 +214,11 @@
         this.title = title
         this.visible = true
         this.$nextTick(() => {
+          this.$refs.form.resetFields();
           for (const key in this.form) {
             this.form[key] = target[key]
           }
         })
-        console.log(this.form)
         this.getDates(target.companyId)
       }
     }
diff --git a/admin/src/views/finance/payments.vue b/admin/src/views/finance/payments.vue
index 6b98c8d..ce5fd22 100644
--- a/admin/src/views/finance/payments.vue
+++ b/admin/src/views/finance/payments.vue
@@ -2,7 +2,7 @@
   <div class="main_app">
     <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
     <div class="mt20">
-      <el-button @click="handleEdit()" v-permissions="['business:ywpatrolline:create']">瀵煎嚭</el-button>
+      <el-button v-permissions="['business:ywpatrolline:create']">瀵煎嚭</el-button>
     </div>
     <el-table v-loading="loading" :data="list" stripe>
       <el-table-column prop="customerName" label="瀹㈡埛鍚嶇О" min-width="100" show-overflow-tooltip />
@@ -33,7 +33,7 @@
           <span v-if="row.payType === 6">鍏朵粬</span>
         </template>
       </el-table-column>
-      <el-table-column prop="payDateEnd" label="鍏ヨ处鏃ユ湡" show-overflow-tooltip />
+      <el-table-column prop="actPayDate" label="鍏ヨ处鏃ユ湡" show-overflow-tooltip />
       <el-table-column prop="createDate" label="鍒涘缓鏃ユ湡" show-overflow-tooltip />
       <el-table-column prop="realname" label="鍒涘缓浜�" show-overflow-tooltip />
       <el-table-column label="鐘舵��" min-width="100" fixed="right" show-overflow-tooltip>
@@ -44,7 +44,7 @@
       </el-table-column>
       <el-table-column label="鎿嶄綔" min-width="190" fixed="right">
         <template slot-scope="{row}">
-          <el-button type="text">鏌ョ湅璇︽儏</el-button>
+          <el-button type="text" @click="$refs.details.open('鏀舵敮娴佹按璇︽儏', row.id)">鏌ョ湅璇︽儏</el-button>
           <el-button type="text" @click="closeDW(row.id)" v-if="row.status !== 1">鍏抽棴娴佹按</el-button>
         </template>
       </el-table-column>
@@ -52,25 +52,25 @@
     <div class="mt20">
       <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
     </div>
-    <Edit v-if="showEdit" ref="EditRef" @success="getList" @close="showEdit = false" />
+    <!--  璇︽儏  -->
+    <Details ref="details" />
   </div>
 </template>
 
 <script>
 import Pagination from '@/components/common/Pagination'
 import QueryForm from '@/components/common/QueryForm'
-import Edit from './components/paymentsEdit.vue'
+import Details from './components/details'
 import { fetchList, close } from '@/api/ywContractRevenue'
 export default {
   components: {
     Pagination,
     QueryForm,
-    Edit
+    Details
   },
   data() {
     return {
       loading: false,
-      showEdit: false,
       pagination: {
         pageSize: 10,
         page: 1,
@@ -125,10 +125,15 @@
   methods: {
     getList(page) {
       const { pagination, filters } = this
+      let form = JSON.parse(JSON.stringify(filters))
+      if (form && form.payDate && form.payDate.length > 0) {
+        form.payDateStart = form.payDate[0]
+        form.payDateEnd = form.payDate[1]
+      }
       this.loading = true
       fetchList({
         model: {
-          ...filters
+          ...form
         },
         capacity: pagination.pageSize,
         page: page || pagination.page,
@@ -153,16 +158,6 @@
       }).catch(() => {
       
       });
-    },
-    handleEdit(row) {
-      this.showEdit = true
-      this.$nextTick(() => {
-        this.$refs.EditRef.isShowModal = true
-        if (row && row.id) {
-          this.$refs.EditRef.getDetail(row.id)
-        }
-      })
-
     },
     handleDel(row) {
       let message = `纭鍒犻櫎璇ヨ褰曞悧?`
diff --git a/admin/src/views/login.vue b/admin/src/views/login.vue
index ff79acb..819ab49 100644
--- a/admin/src/views/login.vue
+++ b/admin/src/views/login.vue
@@ -3,8 +3,8 @@
     <img src="@/assets/images/bg@2x.png" class="main_bg" alt="">
     <div class="login_wrap">
       <div class="login_img">
-        <!-- <div class="h2">闃滃畞鏂囦綋涓績</div> -->
-        <div class="h3">鏅烘収鍦洪杩愮淮绠$悊绯荤粺</div>
+         <div class="h3">闃滃畞鏂囦綋涓績</div>
+<!--        <div class="h3">鏅烘収鍦洪杩愮淮绠$悊绯荤粺</div>-->
       </div>
       <div class="form_wrap">
         <div class="tabs">
diff --git a/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue b/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
index 8542213..85d8bee 100644
--- a/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
+++ b/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
@@ -49,7 +49,7 @@
               <i class="el-icon-plus avatar-uploader-icon"></i>
               <div>鍥剧墖/瑙嗛</div>
             </div>
-          </el-upload>
+          </el-upload>  
           <div v-for="(item, i) in fileList" :key="i" class="item">
             <i @click="handleDelImg(i)" class="el-icon-error close"></i>
             <el-image :src="item.fileurlFull" :preview-src-list="[item.fileurlFull]" v-if="item.type == 0"
diff --git a/admin/src/views/workorder/components/detail.vue b/admin/src/views/workorder/components/detail.vue
index 9722c08..9f020e9 100644
--- a/admin/src/views/workorder/components/detail.vue
+++ b/admin/src/views/workorder/components/detail.vue
@@ -178,7 +178,7 @@
       uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch',
       dealFileList: [],
       uploadData: {
-        folder: 'HIDDEN_DANGER_FILE'
+        folder: 'YW_WORKORDER_FILE'
       },
     }
   },
diff --git a/h5/api/index.js b/h5/api/index.js
index 9a7edfe..c931054 100644
--- a/h5/api/index.js
+++ b/h5/api/index.js
@@ -1,6 +1,7 @@
 import { http } from '@/utils/service.js'
 export * from '@/utils/config.js'
 export * from './staff'
+export * from './yw'
 
 
 
@@ -16,14 +17,6 @@
   return http({
     url: 'visitsAdmin/cloudService/web/visitor/wxAuthorize',
     method: 'get',
-    data
-  })
-}
-//  鍙戦�佺煭淇¢獙璇佺爜
-export const sendSms = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/smsEmail/sendSms',
-    method: 'post',
     data
   })
 }
\ No newline at end of file
diff --git a/h5/api/staff.js b/h5/api/staff.js
index ea64d24..b77655f 100644
--- a/h5/api/staff.js
+++ b/h5/api/staff.js
@@ -3,53 +3,29 @@
 // login
 export const loginPost = (data) => {
   return http({
-    url: 'loginH5',
+    url: 'loginByPhone',
     method: 'post',
     data
   })
 }
-export const loginCaptcha = () => {
+export const sendSMsPost = (data) => {
   return http({
-    url: 'captcha',
-    method: 'get'
+    url: 'visitsAdmin/cloudService/business/smsEmail/sendSms',
+    method: 'post',
+    data
   })
 }
-// 鍒锋柊token
-export const refreshToken = () => {
+export const findInternalList = (data) => {
   return http({
-    url: 'refreshtoken',
-    method: 'post'
+    url: 'visitsAdmin/cloudService/system/user/findInternalList',
+    method: 'post',
+    data
   })
 }
 export const getUserInfo = () => {
   return http({
     url: 'getUserInfo',
     method: 'get'
-  })
-}
-// 鏌ヨ浜哄憳鐩稿叧淇℃伅0鍔冲姟璁垮 1鏅�氳瀹� 2鍐呴儴浜哄憳,绀轰緥鍊�(1)
-export const findTypeMemberInfo = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/member/findTypeMemberInfo',
-    // url: 'visitsAdmin/cloudService/business/member/page',
-    method: 'post',
-    data
-  })
-}
-//  閲嶇疆瀵嗙爜
-export const resetPassword = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/visits/resetPassword',
-    method: 'post',
-    data
-  })
-}
-//  淇敼瀵嗙爜
-export const uploadPassword = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/member/updatePwd',
-    method: 'post',
-    data
   })
 }
 // loginout
@@ -61,172 +37,3 @@
   })
 }
 
-//  闅愭偅闅忔墜鎷� 鍒涘缓
-export const DangerCreate = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/hiddenDanger/create',
-    method: 'post',
-    data
-  })
-}
-// 闅愭偅鍖哄煙
-export const DangerArea = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/hiddenDanger/create',
-    method: 'post',
-    data
-  })
-}
-// 闅愭偅 璇︽儏
-export const hiddenDangerDetail = (id) => {
-  return http({
-    url:  `visitsAdmin/cloudService/business/hiddenDanger/${id}`,
-    method: 'get'
-  })
-}
-// 閮ㄩ棬鍒楄〃
-export const deptListPost = (data) => {
-  return http({
-    url: '/visitsAdmin/cloudService/business/company/list',
-    method: 'post',
-    data
-  })
-}
-// 闅愭偅 绫诲瀷
-export const DangerConfigType = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/hiddenDangerParam/list',
-    method: 'post',
-    data
-  })
-}
-// 闅愭偅 鏌ヨ鍖哄煙鍐呭畨鍏ㄥ憳
-export const findHiddenAreaMemberList = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/hiddenDangerParam/findHiddenAreaMemberList',
-    method: 'post',
-    data
-  })
-}
-// 闅愭偅 澶勭悊
-export const dealHiddenDanger = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/hiddenDanger/dealHiddenDanger',
-    method: 'post',
-    data
-  })
-}
-// 闅愭偅 杞氦
-export const transferHiddenDanger = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/hiddenDanger/transferHiddenDanger',
-    method: 'post',
-    data
-  })
-}
-// 闅愭偅 娴佺▼鍒楄〃
-export const findListFlowDanger = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/hiddenDangerLog/findList',
-    method: 'post',
-    data
-  })
-}
-// 杞﹁締 鍒楄〃
-export const getCarsList = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/cars/list',
-    method: 'post',
-    data
-  })
-}
-// 鏌ヨ杞﹁締鍙绾︽椂娈�
-export const carCanReservationDate = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/carUseBook/carCanReservationDate',
-    method: 'get',
-    data
-  })
-}
-// 鏌ヨ杞﹁締 棰勭害璁板綍
-export const carUseBookList = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/carUseBook/carUseBookList',
-    method: 'post',
-    data
-  })
-}
-
-// 鐢ㄨ溅鐢宠鎻愪氦
-export const carUseBookCraete = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/carUseBook/create',
-    method: 'post',
-    data
-  })
-}
-
-// 鏌ヨ杞﹁締 娲捐溅璁板綍
-export const carUseBookPaiche = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/carUseBook/page',
-    method: 'post',
-    data
-  })
-}
-// 鏌ヨ杞﹁締 娲捐溅璁板綍 璇︽儏
-export const carUseBookDetail = (id) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/carUseBook/'+id,
-    method: 'get'
-  })
-}
-//  瀹℃壒
-export const carUseBookAppr = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/approve/approved',
-    method: 'post',
-    data
-  })
-}
-// 鏌ヨ杞﹁締 娲捐溅璁板綍 鎾ら攢鐢宠
-export const carUseBookBack = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/carUseBook/revoke',
-    method: 'get',
-    data
-  })
-}
-// 鏌ヨ杞﹁締 鍙告満鍒楄〃
-export const driveListPost = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/member/driveList',
-    method: 'post',
-    data
-  })
-}
-
-//  浠诲姟涓績 澶撮儴鏁版嵁
-export const stagingHead = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/staging/taskCenterHead',
-    method: 'get',
-    data
-  })
-}
-//  浠诲姟涓績 鍒嗛〉鏁版嵁
-export const stagingTaskPage = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/staging/taskPage',
-    method: 'post',
-    data
-  })
-}
-//  浠诲姟涓績 鏍囪宸茶
-export const signReadTask = (data) => {
-  return http({
-    url: 'visitsAdmin/cloudService/business/staging/signRead',
-    method: 'get',
-    data
-  })
-}
diff --git a/h5/api/yw.js b/h5/api/yw.js
new file mode 100644
index 0000000..ff980d2
--- /dev/null
+++ b/h5/api/yw.js
@@ -0,0 +1,73 @@
+import { http } from '@/utils/service.js'
+
+// 宸ュ崟鍒楄〃
+export const ywWorkorder = (data) => {
+  return http({
+    url: 'visitsAdmin/cloudService/business/ywWorkorder/page',
+    data
+  })
+}
+// 宸ュ崟璇︽儏
+export const ywWorkorderD = (id) => {
+  return http({
+    url: 'visitsAdmin/cloudService/business/ywWorkorder/' + id,
+		method: 'get'
+  })
+}
+// 宸ュ崟澶勭悊
+export const ywWorkorderDeal = (data) => {
+  return http({
+    url: 'visitsAdmin/cloudService/business/ywWorkorder/dealOrder',
+    data
+  })
+}
+// 鍒涘缓宸ュ崟
+export const ywWorkorderCreate = (data) => {
+  return http({
+    url: 'visitsAdmin/cloudService/business/ywWorkorder/create',
+    data
+  })
+}
+// 椤圭洰鍒楄〃
+export const ywProjectPost = (data) => {
+  return http({
+    url: 'visitsAdmin/cloudService/business/ywProject/list',
+    data
+  })
+}
+// 妤煎畤鍒楄〃
+export const ywBuildingPost = (data) => {
+  return http({
+    url: 'visitsAdmin/cloudService/business/ywBuilding/list',
+    data
+  })
+}
+// 妤煎眰鍒楄〃
+export const ywFloorPost = (data) => {
+  return http({
+    url: 'visitsAdmin/cloudService/business/ywFloor/list',
+    data
+  })
+}
+// 鎴挎簮鍒楄〃
+export const ywRoomPost = (data) => {
+  return http({
+    url: 'visitsAdmin/cloudService/business/ywRoom/list',
+    data
+  })
+}
+
+// 杩愮淮璁板綍
+export const ywDeviceRecord = (data) => {
+  return http({
+    url: 'visitsAdmin/cloudService/business/ywDeviceRecord/page',
+    data
+  })
+}
+// 杩愮淮璁板綍璇︽儏
+export const ywDeviceDetail = (id) => {
+  return http({
+    url: 'visitsAdmin/cloudService/business/ywDeviceRecord/' + id,
+    method: 'get'
+  })
+}
\ No newline at end of file
diff --git a/h5/manifest.json b/h5/manifest.json
index 2e78cce..952b225 100644
--- a/h5/manifest.json
+++ b/h5/manifest.json
@@ -129,9 +129,9 @@
                 "/gateway_interface" : {
                     // 杩欎釜瀛楁鍚嶉渶涓庝綘閰嶇疆鐨刡asePrefixUrl涓�鑷达紝绯荤粺璇嗗埆鍒板甫鏈�/dev-api璇锋眰鐨勫湴鍧�鏃讹紝浼氬湪鍓嶉潰鎷兼帴涓婁唬鐞嗘湇鍔″櫒鍦板潃
                     // "target" : "http://172.20.10.7:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
-                    // "target" : "http://192.168.0.100:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+                    "target" : "http://192.168.0.108:10030", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
                     // "target" : "http://10.50.250.253:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
-                    "target" : "http://192.168.0.173/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+                    // "target" : "http://192.168.0.173/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
                     "changeOrigin" : true, // 鍏佽璺ㄥ煙 
                     "pathRewrite" : {
                         "^/gateway_interface" : ""
diff --git a/h5/pages.json b/h5/pages.json
index c288dfa..af9ee5b 100644
--- a/h5/pages.json
+++ b/h5/pages.json
@@ -2,17 +2,18 @@
 	"easycom": {
 		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
 	},
-	"pages": [{
+	"pages": [
+		{
+			"path": "pages/login",
+			"style": {
+				"navigationBarTitleText": "鐧诲綍"
+			}
+		},
+		{
 			"path": "pages/index",
 			"style": {
 				"navigationBarTitleText": "棣栭〉",
 				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/login",
-			"style": {
-				"navigationBarTitleText": "鐧诲綍"
 			}
 		},
 		{
@@ -75,6 +76,13 @@
 			{
 				"navigationBarTitleText" : "宸℃鐐�"
 			}
+		},
+		{
+			"path" : "pages/common/memberSel",
+			"style" : 
+			{
+				"navigationBarTitleText" : "閫夋嫨浜哄憳"
+			}
 		}
 	],
 	"globalStyle": {
diff --git a/h5/pages/common/memberSel.vue b/h5/pages/common/memberSel.vue
new file mode 100644
index 0000000..ee80a52
--- /dev/null
+++ b/h5/pages/common/memberSel.vue
@@ -0,0 +1,256 @@
+<template>
+	<view class="main_app">
+		<view class="search_inp df_ac">
+			<image class="mr12 search" src="@/static/home/ic_search@2x.png" mode="widthFix"></image>
+			<input v-model="param.name" @blur="initData()" type="text" placeholder="璇疯緭鍏ュ鍚嶈繘琛屾悳绱�"
+				placeholder-style="color: #999999;" />
+		</view>
+		<view class="member_list">
+			<view v-for="item in memberList" @click="onSubmit(item)" :key="item.id" class="line">
+				<image v-if="item.faceImgFull" :src="item.faceImgFull" class="avatar"></image>
+				<span v-else class="img_name">{{item.realname && item.realname.slice(0,1)}}</span>
+				<view class="content">
+					<view class="info">
+						<text class="name">{{ item.realname }}</text>
+						<!-- <text class="tag">tag</text> -->
+					</view>
+					<view class="depart">{{ item.companyName }}</view>
+				</view>
+				<text></text>
+			</view>
+			<view v-if="memberList.length == 0" class="empty_wrap">
+				<image src="@/static/empty.png"></image>
+				<text>鏆傛棤鏁版嵁</text>
+			</view>
+		</view>
+		<!--  -->
+	</view>
+</template>
+
+<script>
+	import {
+		findInternalList
+	} from '@/api'
+	export default {
+		data() {
+			return {
+				memberList: [],
+				selList: [],
+				param: {},
+
+				isShowSelMem: false
+			}
+		},
+		onLoad() {
+			this.initData()
+		},
+		methods: {
+			onSubmit(item) {
+				this.$eventBus.$emit('memberSel', { realname: item.realname, id: item.id })
+				uni.navigateBack()
+			},
+			changeMem(e) {
+				console.log(e.detail.value[0]);
+				const id = Number(e.detail.value[0])
+				const item = this.memberList.find(i => i.id === id)
+				this.$eventBus.$emit('snapshotSel', item)
+				uni.navigateBack()
+			},
+			initData() {
+				const {
+					param
+				} = this
+				findInternalList({
+					realname: param.name,
+					id: param.id
+				}).then(res => {
+					this.memberList = res.data || []
+				})
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.modal {
+		padding: 40rpx 30rpx;
+
+		.modal_header {
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+
+			.status {
+				font-weight: 600;
+			}
+
+			.btn {
+				color: $uni-color-primary;
+			}
+		}
+
+		.modal_mem_list {
+			.line {
+				display: flex;
+				align-items: center;
+				border-bottom: 1rpx solid #e5e5e5;
+				padding: 30rpx 0;
+
+				.avatar {
+					width: 64rpx;
+					height: 64rpx;
+					border-radius: 50%;
+					overflow: hidden;
+					margin-right: 20rpx;
+				}
+
+				.content {
+					flex: 1;
+
+					.depart {
+						font-size: 24rpx;
+						color: #666666;
+					}
+
+					.info {
+						display: flex;
+						margin-bottom: 16rpx;
+
+						.name {
+							font-size: 30rpx;
+						}
+					}
+				}
+
+				.btn {
+					width: 80rpx;
+					height: 48rpx;
+					line-height: 48rpx;
+					text-align: center;
+					font-size: 24rpx;
+					color: #333333;
+					border-radius: 4rpx;
+					border: 1rpx solid #999999;
+				}
+			}
+		}
+	}
+
+	.sub_wrap {
+		position: absolute;
+		bottom: 0;
+		left: 0;
+		width: 100%;
+		box-shadow: 0rpx 0rpx 6rpx 0rpx #b2b2b2;
+		padding: 30rpx 30rpx 64rpx;
+
+		.sel_mem {
+			display: flex;
+			align-items: center;
+
+			.members {
+				width: 500rpx;
+				color: $uni-color-primary;
+				white-space: nowrap;
+				overflow: hidden; //鏂囨湰瓒呭嚭闅愯棌
+				text-overflow: ellipsis;
+				margin-right: 20rpx;
+			}
+
+			.open_icon {
+				width: 44rpx;
+				height: 44rpx;
+			}
+		}
+
+		.btn {
+			width: 690rpx;
+			height: 88rpx;
+			line-height: 88rpx;
+			background: $uni-color-primary;
+			border-radius: 44rpx;
+			color: #fff;
+			text-align: center;
+			margin-top: 22rpx;
+		}
+	}
+
+	.member_list {
+		.line {
+			display: flex;
+			align-items: center;
+			border-bottom: 1rpx solid #e5e5e5;
+			padding: 30rpx 0;
+
+			.avatar {
+				width: 64rpx;
+				height: 64rpx;
+				border-radius: 50%;
+				overflow: hidden;
+				margin-right: 20rpx;
+			}
+
+			.img_name {
+				width: 64rpx;
+				height: 64rpx;
+				line-height: 64rpx;
+				text-align: center;
+				border-radius: 50%;
+				overflow: hidden;
+				margin-right: 20rpx;
+				background: $uni-color-primary;
+				color: #fff;
+				border: 1rpx solid $uni-color-primary;
+			}
+
+			.content {
+				flex: 1;
+
+				.depart {
+					font-size: 24rpx;
+					color: #666666;
+				}
+
+				.info {
+					display: flex;
+					margin-bottom: 16rpx;
+
+					.name {
+						font-size: 30rpx;
+					}
+
+					.tag {
+						font-size: 24rpx;
+						border-radius: 4rpx;
+						border: 1rpx solid #f62710;
+						color: #f62710;
+						padding: 0rpx 6rpx;
+						margin-left: 8rpx;
+					}
+				}
+			}
+		}
+
+		.empty {
+			width: 100%;
+			height: 280rpx;
+		}
+	}
+
+	.search_inp {
+		height: 72rpx;
+		background: #f7f7f7;
+		border-radius: 4rpx;
+		padding-left: 16rpx;
+
+		.search {
+			width: 28rpx;
+		}
+
+		input {
+			flex: 1;
+			font-size: 28rpx;
+			color: #333333;
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/h5/pages/index.vue b/h5/pages/index.vue
index 3970282..8232d81 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.name }}锛屾杩庣櫥褰�</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>
@@ -20,19 +20,21 @@
 				<view class="name">{{item.name}}</view>
 			</view>
 		</view>
+		<view class="loginout" @click="loginOut">閫�鍑虹櫥闄�</view>
 	</view>
-
 </template>
 
-<script>
+<script>
+	import { logoutPost } from '@/api'
 	export default {
 		data() {
 			return {
 				userInfo: uni.getStorageSync('userInfo') || {},
-				list1: [{
-						name: '鎵爜宸℃',
-						url: '',
-						img: require('@/static/home/ic_fangkebaobei@2x.png'),
+				list1: [
+					{
+						name: '鏂板宸ュ崟',
+						url: '/pages/workOrder/edit',
+						img: require('@/static/home/ic_xinzenggongdan@2x.png'),
 						auth: 'weixin:menu:visitcar'
 					},
 					{
@@ -72,7 +74,14 @@
 					url: item.url
 				})
 			},
-			
+			loginOut() {
+				this.$store.commit('empty')
+				logoutPost()
+				uni.redirectTo({
+					url: '/pages/login'
+				})
+			},
+
 		}
 	}
 </script>
@@ -131,5 +140,21 @@
 				}
 			}
 		}
+
+		.loginout {
+			position: fixed;
+			bottom: 88rpx;
+			left: 50%;
+			transform: translate(-50%, 0);
+			width: 152rpx;
+			height: 60rpx;
+			border-radius: 30rpx;
+			border: 1rpx solid $primaryColor;
+			color: $primaryColor;
+			font-size: 26rpx;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+		}
 	}
 </style>
\ No newline at end of file
diff --git a/h5/pages/login.vue b/h5/pages/login.vue
index 0b3b772..666d529 100644
--- a/h5/pages/login.vue
+++ b/h5/pages/login.vue
@@ -5,16 +5,17 @@
     <view class="login_list">
       <view class="login_list_item">
         <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
-        <input v-model="form.username" maxlength="18" placeholder="璇疯緭鍏ユ墜鏈哄彿" />
+        <input v-model="form.phone" maxlength="18" placeholder="璇疯緭鍏ユ墜鏈哄彿" />
       </view>
-<!--      <view class="login_list_item">
+<!--     <view class="login_list_item">
         <image src="@/static/login_ic_password@2x.png" mode="widthFix" />
         <input v-model="form.password" type="password" placeholder="瀵嗙爜" />
       </view> -->
-      <view class="login_list_item">
+     <view class="login_list_item">
         <image src="@/static/login_ic_password@2x.png" mode="widthFix"></image>
         <input v-model="form.code" placeholder="璇疯緭鍏ラ獙璇佺爜" type="text" />
-        <view class="btn">鑾峰彇楠岃瘉鐮�</view>
+        <view v-if="downTime == 0" class="btn" @click="sendSms">鑾峰彇楠岃瘉鐮�</view>
+        <view v-else class="btn gray">{{ downTime }}</view>
       </view>
     </view>
     <view class="login_btn">
@@ -24,7 +25,7 @@
 </template>
 
 <script>
-import { loginPost, loginCaptcha, getUserInfo, getSystemDictData } from '@/api'
+import { loginPost, getUserInfo, sendSMsPost } from '@/api'
 import { mapState, mapMutations } from 'vuex'
 export default {
   name: 'login',
@@ -32,20 +33,14 @@
   data() {
     return {
       form: {
-        // username: '18056814089',
-        username: '',
-        password: '',
-				code: ''
+				phone: '17878787878',
+				code: '1'
       },
-      isShowProtocol: false,
-      ProtocolFlag: false,
-      captcha: {},
-      htmlText: ''
+			downTime: 0
     }
   },
 
   onLoad() {
-    this.initCaptcha()
   },
   onBackPress(options) {
     uni.redirectTo({
@@ -55,39 +50,28 @@
   },
   methods: {
     ...mapMutations(["setToken", "setUserInfo"]),
-    changeFalg() {
-      this.ProtocolFlag = !this.ProtocolFlag
-    },
-    getContent() {
-      getSystemDictData({
-        dictCode: 'SYSTEM',
-        label: 'USER_PROTOCOL'
-      }).then(res => {
-        this.htmlText = res.data.code
-        this.isShowProtocol = true
-      })
-    },
-    showContent() {
-      this.getContent()
-    },
-    initCaptcha() {
-      loginCaptcha().then(res => {
-        this.captcha = res.data
-      })
-    },
-
+		sendSms() {
+			this.downTime = 60
+			let timer = setInterval(() => {
+				if(this.downTime == 0) return clearInterval(timer)
+				this.downTime = this.downTime - 1
+			}, 1000)
+			const { form } = this
+			sendSMsPost({
+				phone: form.phone,
+				type: 0
+			}).then(res => {
+				this.showToast('鐭俊鍙戦�佹垚鍔�')
+			})
+		},
     onLogin() {
       const { form, ProtocolFlag } = this
-      if (!ProtocolFlag) return uni.showToast({
-        title: '璇峰厛闃呰骞跺悓鎰忕敤鎴峰崗璁�',
-        icon: 'none'
-      })
-      if (!form.username) return uni.showToast({
-        title: '璐﹀彿涓嶈兘涓虹┖',
-        icon: 'none'
-      })
-      if (!form.password) return uni.showToast({
-        title: '瀵嗙爜涓嶈兘涓虹┖',
+      // if (!ProtocolFlag) return uni.showToast({
+      //   title: '璇峰厛闃呰骞跺悓鎰忕敤鎴峰崗璁�',
+      //   icon: 'none'
+      // })
+      if (!form.phone) return uni.showToast({
+        title: '鎵嬫満鍙蜂笉鑳戒负绌�',
         icon: 'none'
       })
       if (!form.code) return uni.showToast({
@@ -96,15 +80,15 @@
       })
       loginPost({
         ...form,
-        uuid: this.captcha.uuid,
         openId: this.$store.state.openId
       }).then(res => {
         if (res.code === 200) {
           this.setToken(res.data)
+					this.showToast('鐧诲綍鎴愬姛')
           getUserInfo().then(ress => {
             this.setUserInfo(ress.data)
             uni.redirectTo({
-              url: "/pages/staff/index"
+              url: "/pages/index"
             })
           })
         }
@@ -162,7 +146,11 @@
       .btn{
       	width: 145rpx;
       	color:  $primaryColor;
+				text-align: center;
       }
+			.gray{
+				color: #999999;
+			}
       input {
         flex: 1;
         height: 100%;
diff --git a/h5/pages/operation/detail.vue b/h5/pages/operation/detail.vue
index ab1ce29..0420d6b 100644
--- a/h5/pages/operation/detail.vue
+++ b/h5/pages/operation/detail.vue
@@ -2,31 +2,47 @@
 	<view>
 		<view class="content">
 			<view class="name_wrap">
-				<view class="name">xx璁惧</view>
-				<view class="status red">姝e父</view>
+				<view class="name">{{info.deviceName}}</view>
+				<view class="status" v-if="info.status == 0">姝e父</view>
+				<view class="status red" v-if="info.status == 1">鎹熷潖</view>
+				<view class="status red" v-if="info.status == 2">鎶ュ簾</view>
 			</view>
-			<view class="line">杩愮淮浜猴細xxx</view>
-			<view class="line">杩愮淮鏃堕棿锛�121212</view>
+			<view class="line">杩愮淮浜猴細{{info.realName}}</view>
+			<view class="line">杩愮淮鏃堕棿锛歿{info.createDate}}</view>
 		</view>
 		<!--  -->
 		<view class="remark">
 			<view class="title">杩愮淮澶囨敞</view>
 			<view class="file_list">
-				<view class="file">
-					
+				<view class="file" v-for="item in info.multifileList">
+					<image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
+					<video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
 				</view>
 			</view>
-			<view class="desc">remark</view>
+			<view class="desc">{{info.content}}</view>
 		</view>
 	</view>
 </template>
 
-<script>
+<script>
+	import { ywDeviceDetail } from '@/api'
 	export default {
 		data() {
 			return {
-
+				id: '',
+				info: {}
 			};
+		},
+		onLoad(option) {
+			this.id = option.id
+			this.getDetail()
+		},
+		methods: {
+			getDetail() {
+				ywDeviceDetail(this.id).then(res => {
+					this.info = res.data
+				})
+			}
 		}
 	}
 </script>
@@ -81,6 +97,9 @@
 					margin-right: 0;
 				}
 			}
+			image,video{
+				width: 156rpx;
+			}
 		}
 		.desc{
 			margin-top: 8rpx;
diff --git a/h5/pages/operation/record.vue b/h5/pages/operation/record.vue
index 818efb9..aaa32ae 100644
--- a/h5/pages/operation/record.vue
+++ b/h5/pages/operation/record.vue
@@ -3,64 +3,113 @@
 		<view class="head_wrap">
 			<view class="search_wrap">
 				<image class="mr12 search" src="@/static/home/ic_search@2x.png" mode="widthFix"></image>
-				<input v-model="param.keyword" @confirm="getList()" type="text" placeholder="鎼滅储璁惧鍚嶇О/缂栧彿" placeholder-class="placeholder9" />
+				<input v-model="param.keyword" @confirm="getList()" type="text" placeholder="鎼滅储璁惧鍚嶇О/缂栧彿"
+					placeholder-class="placeholder9" />
 			</view>
-			<view class="name_wrap" @click="showModal = true">
-				<view class="name">杩愮淮浜�</view>
+			<view class="name_wrap" @click="handleMem">
+				<view class="name">{{ param.realname ? param.realname : '杩愮淮浜�' }}</view>
 				<u-icon :name="showModal  ? 'arrow-right' : 'arrow-down'" color="#999999" size="12"></u-icon>
 			</view>
 		</view>
 		<!--  -->
 		<view class="list">
-			<view class="item" v-for="item in 10" @click="itemClick(item)">
+			<view class="item" v-for="item in list" @click="itemClick(item)">
 				<image src="@/static/side/ic_shuiyu@2x.png" class="icon"></image>
 				<view class="content">
 					<view class="name_wrap">
 						<view class="name">
-							<text class="device">xx璁惧</text>
-							<text>D20231</text>
+							<text class="device">{{item.deviceName}}</text>
+							<text>{{item.deviceCode}}</text>
 						</view>
-						<view class="status red">姝e父</view>
+						<view class="status" v-if="item.status == 0">姝e父</view>
+						<view class="status red" v-if="item.status == 1">鎹熷潖</view>
+						<view class="status red" v-if="item.status == 2">鎶ュ簾</view>
 					</view>
-					<view class="line">杩愮淮浜猴細xxx</view>
-					<view class="line">杩愮淮鏃堕棿锛�121212</view>
+					<view class="line">杩愮淮浜猴細{{item.realName}}</view>
+					<view class="line">杩愮淮鏃堕棿锛歿{item.dealDate}}</view>
 				</view>
 
 			</view>
 		</view>
 		<!--  -->
-		<u-picker :show="showModal" keyName="name" @cancel="showModal = false" @confirm='confirm'
+		<u-picker :show="showModal" keyName="realname" @cancel="showModal = false" @confirm='confirm'
 			:columns="columns"></u-picker>
 	</view>
 </template>
 
 <script>
+	import {
+		ywDeviceRecord,
+		findInternalList
+	} from '@/api'
 	export default {
 		data() {
 			return {
 				param: {},
 				columns: [],
-				showModal: false
+				showModal: false,
+				list: [],
+				total: 0,
+				page: 1,
 			};
 		},
-		methods: {
-			getList() {},
+		onLoad() {
+			this.getpeo()
+			this.getList()
+
+		},
+		mounted() {
+			this.$eventBus.$on('memberSel', (option) => {
+				this.$set(this.param, 'realname', option.realname)
+				this.$set(this.param, 'memberId', option.id)
+				this.getList()
+			})
+			
+		},
+		methods: {
+			getList() {
+				const {
+					page,
+					total,
+					list,
+					param
+				} = this
+				ywDeviceRecord({
+					page,
+					capacity: 10,
+					model: param
+				}).then(res => {
+					this.list = res.data.records || []
+					this.total = res.data.total
+				})
+			},
+			handleMem() {
+				uni.navigateTo({
+					url: '/pages/common/memberSel'
+				})
+			},
+			getpeo() {
+				findInternalList().then(res => {
+					this.columns = [res.data]
+				})
+			},
 			confirm() {
 				this.showModal = false
-			},
-			itemClick() {
-				uni.navigateTo({
-					url: '/pages/operation/detail'
-				})
+			},
+			itemClick(item) {
+				uni.navigateTo({
+					url: '/pages/operation/detail?id='+ item.id
+				})
 			}
 		}
 	}
 </script>
 
-<style lang="scss" scoped>
-	.main_app{
-		padding: 0 30rpx;
+<style lang="scss" scoped>
+	.main_app {
+		padding: 0 30rpx;
 	}
+
 	.head_wrap {
 		display: flex;
 		align-items: center;
@@ -73,9 +122,11 @@
 			background: #F7F7F7;
 			border-radius: 38rpx;
 			padding-left: 30rpx;
-			input{
-				flex: 1;
+
+			input {
+				flex: 1;
 			}
+
 			.search {
 				width: 28rpx;
 				height: 28rpx;
@@ -94,39 +145,44 @@
 	.list {
 		.item {
 			display: flex;
-			height: 228rpx;
-			padding: 30rpx 0;
+			height: 228rpx;
+			padding: 30rpx 0;
 			border-bottom: 2rpx solid #E5E5E5;
+
 			.icon {
 				width: 80rpx;
-				height: 80rpx;
+				height: 80rpx;
 				margin-right: 24rpx;
 			}
 
 			.content {
-				flex: 1;
-				color: #666666;
-				display: flex;
-				flex-direction: column;
-				justify-content: space-between;
-				.name_wrap{
-					display: flex;
-					justify-content: space-between;
-					align-items: center;
-					.name{
-						display: flex;
-						align-items: flex-end;
-						font-size: 26rpx;
-						.device{
-							font-weight: 600;
-							font-size: 34rpx;
-							color: #222222;
-							margin-right: 6rpx;
-						}
-					}
-					.status{
-						color: $primaryColor;
-					}
+				flex: 1;
+				color: #666666;
+				display: flex;
+				flex-direction: column;
+				justify-content: space-between;
+
+				.name_wrap {
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+
+					.name {
+						display: flex;
+						align-items: flex-end;
+						font-size: 26rpx;
+
+						.device {
+							font-weight: 600;
+							font-size: 34rpx;
+							color: #222222;
+							margin-right: 6rpx;
+						}
+					}
+
+					.status {
+						color: $primaryColor;
+					}
 				}
 			}
 		}
diff --git a/h5/pages/workOrder/detail.vue b/h5/pages/workOrder/detail.vue
index 1b763a0..a3bf40d 100644
--- a/h5/pages/workOrder/detail.vue
+++ b/h5/pages/workOrder/detail.vue
@@ -2,59 +2,63 @@
 	<view>
 		<view class="main_info">
 			<view class="title">
-				<text>闃滃畞鏂囦綋涓績/A搴�/401</text>
-				<text class="status">寰呭鐞�</text>
+				<text>{{ info.projectName }}/{{ info.buildingName }}/{{info.roomNum || info.floorName}}</text>
+				<text class="status" v-if="info.dealStatus == 0">寰呭鐞�</text>
+				<text class="status" v-if="info.dealStatus == 1">宸叉寚娲�</text>
+				<text class="status gray" v-if="info.dealStatus == 2">宸插鐞�</text>
 			</view>
-			<view class="desc">瑗胯竟璧板粖鐨勪竴涓《鐏潖浜嗭紝涓嶄寒闇�瑕佺淮淇タ杈�</view>
+			<view class="desc">{{ info.content }}</view>
 			<view class="file_list">
-				<view class="file">
-
+				<view class="file" v-for="(item,index) in info.fileList">
+					<image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
+					<video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
 				</view>
 			</view>
 			<view class="content">
-				<view class="line">
+				<view class="line" v-if="info.categoryName">
 					<view class="la">宸ュ崟绫诲瀷锛�</view>
-					<view class="val">1111</view>
+					<view class="val">{{info.categoryName}}</view>
 				</view>
 				<view class="line">
 					<view class="la">涓婃姤浜猴細</view>
-					<view class="val">1111</view>
+					<view class="val">{{ info.creatorName }}{{info.creatorCompany ? '-' + info.creatorCompany : ''}}</view>
 				</view>
-				<view class="line">
+				<view class="line"  v-if="info.creatorPhone">
 					<view class="la">鑱旂郴鐢佃瘽锛�</view>
-					<view class="val">1111</view>
+					<view class="val">{{ info.creatorPhone }}</view>
 				</view>
 				<view class="line">
 					<view class="la">涓婃姤鏃堕棿锛�</view>
-					<view class="val">1111</view>
+					<view class="val">{{ info.createDate }}</view>
 				</view>
-				<view class="line">
+				<view class="line" v-if="info.getDate">
 					<view class="la">涓婇棬鏃堕棿锛�</view>
-					<view class="val">1111</view>
+					<view class="val">{{ info.getDate }}</view>
 				</view>
 			</view>
-			<view class="result_wrap">
+			<view class="result_wrap" v-if="info.dealStatus == 2">
 				<div class="title">澶勭悊缁撴灉</div>
-				<view class="file_list">
-					<view class="file">
-
+				<view v-if="info.dealFileList && info.dealFileList.length > 0" class="file_list">
+					<view class="file" v-for="item in info.dealFileList">
+						<image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
+						<video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
 					</view>
 				</view>
-				<view class="content">
-					宸叉洿鎹㈢伅娉″拰鐏僵宸叉洿鎹㈢伅娉″拰鐏僵宸叉洿鎹㈢伅
+				<view v-if="info.dealInfo" class="content">
+					{{info.dealInfo}}
 				</view>
 				<view class="line">
 					<view class="la">澶勭悊浜猴細</view>
-					<view class="val">{{ 1111 }}</view>
+					<view class="val">{{ info.dealUserName }}</view>
 				</view>
 				<view class="line">
 					<view class="la">澶勭悊鏃堕棿锛�</view>
-					<view class="val">{{ 1111 }}</view>
+					<view class="val">{{ info.dealDate }}</view>
 				</view>
 			</view>
 		</view>
 		<!--  -->
-		<view class="btns">
+		<view class="btns" v-if="info.dealStatus == 0">
 			<view class="btn">
 				<image src="@/static/side/phoneed.png" class="icon"></image>
 				<text>涓婃姤浜�</text>
@@ -62,7 +66,7 @@
 			<view class="btn active" @click="isShowHandle = true">鍘诲鐞�</view>
 		</view>
 		<!--  -->
-		<u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
+		<u-popup :show="showUpload" @close="showUpload = false" zIndex="10076" closeOnClickOverlay>
 			<view class="sel_upload_wrap">
 				<view class="btn" @click="uploadImage">閫夋嫨鍥剧墖</view>
 				<view class="btn" @click="uploadVideo">閫夋嫨瑙嗛</view>
@@ -70,11 +74,12 @@
 		</u-popup>
 		<!--  -->
 		<!-- 宸ュ崟澶勭悊 -->
-		<u-popup :show="isShowHandle" :round="10" :safeAreaInsetBottom="true" mode="bottom" closeable @close="isShowHandle = false">
+		<u-popup :show="isShowHandle" :round="10" :safeAreaInsetBottom="true" mode="bottom" closeable
+			@close="isShowHandle = false">
 			<view class="appr_modal">
 				<view class="title">宸ュ崟澶勭悊</view>
 				<view class="df_sb">
-					<view>澶勭悊鏃堕棿</view>
+					<view><text class="red">*</text>澶勭悊鏃堕棿</view>
 					<view class="df_ac" @click="isShowHandleDate = true" v-if="handleParam.dealTime">
 						{{ handleParam.dealTime }}
 						<u-icon name="arrow-right"></u-icon>
@@ -86,7 +91,6 @@
 				</view>
 
 				<view class="label">
-					<text>*</text>
 					涓婁紶鍥剧墖/瑙嗛
 				</view>
 				<view class="upload_wrap">
@@ -119,12 +123,16 @@
 
 <script>
 	import {
-		uploadUrl
+		uploadUrl,
+		ywWorkorderD,
+		ywWorkorderDeal
 	} from '@/api'
 	import dayjs from 'dayjs';
 	export default {
 		data() {
 			return {
+				id: '',
+				info: {},
 				showUpload: false,
 				isShowHandle: false,
 				isShowHandleDate: false,
@@ -132,9 +140,30 @@
 				dealFileList: []
 			};
 		},
+		onLoad(option) {
+			console.log(option);
+			this.id = option.id
+			this.getDetail()
+		},
 		methods: {
-			onSubmit() {
-
+			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()
+					}
+				})
+			},
+			getDetail() {
+				ywWorkorderD(this.id).then(res => {
+					this.info = res.data
+				})
 			},
 			callPhone() {
 				uni.makePhoneCall({
@@ -152,7 +181,7 @@
 				this.showUpload = false;
 				let token = uni.getStorageSync('token') || '';
 				uni.chooseImage({
-					count: 4,
+					count: 6,
 					success: chooseImageRes => {
 						uni.showLoading({
 							title: '涓婁紶涓�',
@@ -170,7 +199,7 @@
 							files: imgs,
 							name: 'file',
 							formData: {
-								folder: 'HIDDEN_DANGER_FILE'
+								folder: 'YW_WORKORDER_FILE'
 							},
 							header: {
 								Dm_user_token: token
@@ -182,7 +211,7 @@
 										i.type = 0;
 										i.fileurl = i.imgaddr;
 										i.fileurlFull = i.url;
-										this.submitFileList.push(i);
+										this.dealFileList.push(i);
 									});
 								}
 							},
@@ -216,7 +245,7 @@
 							},
 							name: 'file',
 							formData: {
-								folder: 'HIDDEN_DANGER_FILE'
+								folder: 'YW_WORKORDER_FILE'
 							},
 							success: uploadFileRes => {
 								let res = JSON.parse(uploadFileRes.data);
@@ -225,7 +254,7 @@
 										i.type = 1;
 										i.fileurl = i.imgaddr;
 										i.fileurlFull = i.url;
-										this.submitFileList.push(i);
+										this.dealFileList.push(i);
 									});
 								}
 							},
@@ -264,6 +293,10 @@
 				font-size: 28rpx;
 				color: $primaryColor;
 			}
+
+			.gray {
+				color: #999999;
+			}
 		}
 
 		.file_list {
@@ -279,6 +312,11 @@
 
 				&:nth-of-type(4n) {
 					margin-right: 0;
+				}
+
+				image,
+				video {
+					width: 156rpx;
 				}
 			}
 		}
@@ -368,7 +406,7 @@
 
 	.sel_upload_wrap {
 		width: 100%;
-		border-top: 1px solid #333333;
+		border-top: 1px solid #666666;
 		box-shadow: 0 1 1 #333333;
 
 		.btn {
diff --git a/h5/pages/workOrder/edit.vue b/h5/pages/workOrder/edit.vue
index 2116212..add269c 100644
--- a/h5/pages/workOrder/edit.vue
+++ b/h5/pages/workOrder/edit.vue
@@ -3,29 +3,30 @@
 		<view class="list">
 			<view class="item">
 				<view class="la"><text class="red">*</text>浣嶇疆绫诲瀷</view>
-				<view class="line sel_wrap">
-					<view class="left" :class="param.name ? '' : 'placeholder9'">{{ param.name ? param.name : '璇烽�夋嫨' }}</view>
+				<view class="line sel_wrap" @click="showModal0 = true">
+					<view class="left" :class="param.areaName ? '' : 'placeholder9'">{{ param.areaName ? param.areaName : '璇烽�夋嫨' }}
+					</view>
 					<u-icon name="arrow-right" color="#999999" size="15"></u-icon>
 				</view>
 			</view>
 			<view class="item">
 				<view class="la"><text class="red">*</text>閫夋嫨鍖哄煙</view>
-				<view class="line sel_wrap">
-					<view class="left" :class="param.name ? '' : 'placeholder9'">{{ param.name ? param.name : '璇烽�夋嫨' }}</view>
+				<view class="line sel_wrap" @click="showModal1 = true">
+					<view class="left" :class="param.projectName ? '' : 'placeholder9'">{{ param.projectName ? `${param.projectName} ${param.buildingName || ''} ${param.areaType == 0 ? param.roomName || '' : param.floorName || ''}` : '璇烽�夋嫨' }}</view>
 					<u-icon name="arrow-right" color="#999999" size="15"></u-icon>
 				</view>
 			</view>
 			<view class="item">
 				<view class="la">涓婇棬鏃堕棿</view>
-				<view class="line sel_wrap">
-					<view class="left" :class="param.name ? '' : 'placeholder9'">{{ param.name ? param.name : '璇烽�夋嫨' }}</view>
+				<view class="line sel_wrap" @click="showTime = true">
+					<view class="left" :class="param.getDate ? '' : 'placeholder9'">{{ param.getDate ? param.getDate : '璇烽�夋嫨' }}</view>
 					<u-icon name="arrow-right" color="#999999" size="15"></u-icon>
 				</view>
 			</view>
 			<view class="item">
 				<view class="la">鎻忚堪</view>
 				<view class="line">
-					<textarea v-model="param.checkInfo" placeholder="璇疯緭鍏�" placeholder-class="placeholder9" />
+					<textarea v-model="param.content" placeholder="璇疯緭鍏�" placeholder-class="placeholder9" />
 				</view>
 			</view>
 			<view class="item">
@@ -35,16 +36,16 @@
 						<u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon>
 						<view class="mt6">鍥剧墖/瑙嗛</view>
 					</view>
-					<view class="upload_file" v-for="(item, i) in dealFileList" :key="i">
+					<view class="upload_file" v-for="(item, i) in fileList" :key="i">
 						<u-icon class="close" size="20" name="close-circle-fill" color="red"
 							@click="fileDel('dealBeforeFileList', 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>
 					</view>
 				</view>
-			</view>
-		</view>
-		<view class="sub_btn">鎻愪氦</view>
+			</view>
+		</view>
+		<view class="sub_btn" @click="onSubmit">鎻愪氦</view>
 		<!--  -->
 		<u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
 			<view class="sel_upload_wrap">
@@ -52,121 +53,252 @@
 				<view class="btn" @click="uploadVideo">閫夋嫨瑙嗛</view>
 			</view>
 		</u-popup>
+		<!--  -->
+		<u-picker :show="showModal0" keyName="name" @cancel="showModal0 = false" @confirm='confirm0'
+			:columns="areaType"></u-picker>
+		<!--  -->
+		<u-picker :show="showModal1" keyName="name" @cancel="showModal1 = false" @confirm='confirm1'
+			:columns="projectList"></u-picker>
+		<u-picker :show="showModal2" keyName="name" @cancel="showModal2 = false" @confirm='confirm2'
+			:columns="buildingList"></u-picker>
+		<u-picker :show="showModal3" keyName="name" @cancel="showModal3 = false" @confirm='confirm3'
+			:columns="floorList"></u-picker>
+		<u-picker :show="showModal4" keyName="name" @cancel="showModal4 = false" @confirm='confirm4'
+			:columns="roomList"></u-picker>
+		<!--  -->
+		<u-datetime-picker :minDate="new Date().getTime()" :show="showTime" @confirm="confirmDate"
+			@cancel="showTime = false" mode="datetime"></u-datetime-picker>
 	</view>
 </template>
 
-<script>
-	import {
-		uploadUrl
-	} from '@/api'
+<script>
+	import {
+		uploadUrl,
+		ywProjectPost,
+		ywBuildingPost,
+		ywFloorPost,
+		ywRoomPost,
+		ywWorkorderCreate
+	} from '@/api'
 	import dayjs from 'dayjs';
 	export default {
 		data() {
 			return {
 				param: {},
 				showUpload: false,
-				dealFileList: [],
+				fileList: [],
+
+				showModal0: false,
+				showModal1: false,
+				showModal2: false,
+				showModal3: false,
+				showModal4: false,
+				showTime: false,
+				areaType: [
+					[{
+							name: '瀹ゅ唴瑁呬慨',
+							id: 0
+						},
+						{
+							name: '鍏叡缁翠慨',
+							id: 1
+						}
+					]
+				],
+				projectList: [],
+				buildingList: [],
+				floorList: [],
+				roomList: [],
 			};
-		},
+		},
+		onLoad() {
+			this.getProject()
+		},
 		methods: {
-			fileDel(str, i) {
-				this[str].splice(i, 1);
+			onSubmit() {
+				const { param, fileList } = this
+				ywWorkorderCreate({
+					...param,
+					// roomId: '',
+					fileList
+				}).then(res => {
+					this.showToast('鎻愪氦鎴愬姛')
+					uni.redirectTo({
+						url: '/pages/workOrder/list'
+					})
+				})
+			},
+			confirm0(e) {
+				const item = e.value[0]
+				this.$set(this.param, 'areaType', item.id)
+				this.$set(this.param, 'areaName', item.name)
+				this.showModal0 = false
+				this.param = {
+					areaType: item.id,
+					areaName: item.name,
+				}
+			},
+			confirm1(e) {
+				const item = e.value[0]
+				this.showModal1 = false
+				this.$set(this.param, 'projectName', item.name)
+				this.$set(this.param, 'projectId', item.id)
+				this.getBuilding(item.id)
+				this.showModal2 = true
+			},
+			confirm2(e) {
+				const item = e.value[0]
+				this.showModal2 = false
+				this.$set(this.param, 'buildingName', item.name)
+				this.$set(this.param, 'buildingId', item.id)
+				if (this.areaType == 0) {
+					this.getRoom(item.id)
+					this.showModal4 = true
+				} else {
+					this.getFloor(item.id)
+					this.showModal3 = true
+				}
 			},
-			uploadImage() {
-				this.showUpload = false;
-				let token = uni.getStorageSync('token') || '';
-				uni.chooseImage({
-					count: 4,
-					success: chooseImageRes => {
-						uni.showLoading({
-							title: '涓婁紶涓�',
-							mask: true
-						});
-						const tempFilePaths = chooseImageRes.tempFilePaths;
-						let imgs = tempFilePaths.map((value, index) => {
-							return {
-								name: 'file',
-								uri: value
-							};
-						});
-						uni.uploadFile({
-							url: `${uploadUrl}`,
-							files: imgs,
-							name: 'file',
-							formData: {
-								folder: 'HIDDEN_DANGER_FILE'
-							},
-							header: {
-								Dm_user_token: token
-							},
-							success: uploadFileRes => {
-								let res = JSON.parse(uploadFileRes.data);
-								if (res.data && res.data.length > 0) {
-									res.data.forEach(i => {
-										i.type = 0;
-										i.fileurl = i.imgaddr;
-										i.fileurlFull = i.url;
-										this.submitFileList.push(i);
-									});
-								}
-							},
-							fail(err) {
-								console.log('err', err);
-							},
-							complete() {
-								uni.hideLoading();
-								// if (i === chooseImageRes.tempFilePaths.length - 1) {
-								//   uni.hideLoading()
-								// }
-							}
-						});
-					}
-				});
+			confirm3(e) {
+				const item = e.value[0]
+				this.showModal3 = false
+				this.$set(this.param, 'floorName', item.name)
+				this.$set(this.param, 'floorId', item.id)
 			},
-			uploadVideo() {
-				this.showUpload = false;
-				let token = uni.getStorageSync('token') || '';
-				uni.chooseVideo({
-					success: chooseImageRes => {
-						uni.showLoading({
-							title: '涓婁紶涓�',
-							mask: true
-						});
-						uni.uploadFile({
-							url: `${uploadUrl}`,
-							filePath: chooseImageRes.tempFilePath,
-							header: {
-								Dm_user_token: token
-							},
-							name: 'file',
-							formData: {
-								folder: 'HIDDEN_DANGER_FILE'
-							},
-							success: uploadFileRes => {
-								let res = JSON.parse(uploadFileRes.data);
-								if (res.data && res.data.length > 0) {
-									res.data.forEach(i => {
-										i.type = 1;
-										i.fileurl = i.imgaddr;
-										i.fileurlFull = i.url;
-										this.submitFileList.push(i);
-									});
-								}
-							},
-							complete() {
-								uni.hideLoading();
-							}
-						});
-					}
-				});
-			}
+			confirm4(e) {
+				const item = e.value[0]
+				this.showModal4 = false
+				this.$set(this.param, 'roomName', item.name)
+				this.$set(this.param, 'roomId', item.id)
+			},
+			confirmDate(e) {
+				this.$set(this.param, 'getDate', dayjs(e.value).format('YYYY-MM-DD HH:mm:ss'));
+				this.showTime = false
+			},
+			getProject() {
+				ywProjectPost().then(res => {
+					this.projectList = [res.data || []]
+				})
+			},
+			getBuilding(projectId) {
+				ywBuildingPost({
+					projectId
+				}).then(res => {
+					this.buildingList = [res.data || []]
+				})
+			},
+			getFloor(buildingId) {
+				ywFloorPost({
+					buildingId
+				}).then(res => {
+					this.floorList = [res.data || []]
+				})
+			},
+			getRoom(buildingId) {
+				ywRoomPost({
+					buildingId
+				}).then(res => {
+					this.roomList = [res.data || []]
+				})
+			},
+			fileDel(str, i) {
+				this[str].splice(i, 1);
+			},
+			uploadImage() {
+				this.showUpload = false;
+				let token = uni.getStorageSync('token') || '';
+				uni.chooseImage({
+					count: 6,
+					success: chooseImageRes => {
+						uni.showLoading({
+							title: '涓婁紶涓�',
+							mask: true
+						});
+						const tempFilePaths = chooseImageRes.tempFilePaths;
+						let imgs = tempFilePaths.map((value, index) => {
+							return {
+								name: 'file',
+								uri: value
+							};
+						});
+						uni.uploadFile({
+							url: `${uploadUrl}`,
+							files: imgs,
+							name: 'file',
+							formData: {
+								folder: 'YW_WORKORDER_FILE'
+							},
+							header: {
+								Dm_user_token: token
+							},
+							success: uploadFileRes => {
+								let res = JSON.parse(uploadFileRes.data);
+								if (res.data && res.data.length > 0) {
+									res.data.forEach(i => {
+										i.type = 0;
+										i.fileurl = i.imgaddr;
+										i.fileurlFull = i.url;
+										this.fileList.push(i);
+									});
+								}
+							},
+							fail(err) {
+								console.log('err', err);
+							},
+							complete() {
+								uni.hideLoading();
+								// if (i === chooseImageRes.tempFilePaths.length - 1) {
+								//   uni.hideLoading()
+								// }
+							}
+						});
+					}
+				});
+			},
+			uploadVideo() {
+				this.showUpload = false;
+				let token = uni.getStorageSync('token') || '';
+				uni.chooseVideo({
+					success: chooseImageRes => {
+						uni.showLoading({
+							title: '涓婁紶涓�',
+							mask: true
+						});
+						uni.uploadFile({
+							url: `${uploadUrl}`,
+							filePath: chooseImageRes.tempFilePath,
+							header: {
+								Dm_user_token: token
+							},
+							name: 'file',
+							formData: {
+								folder: 'YW_WORKORDER_FILE'
+							},
+							success: uploadFileRes => {
+								let res = JSON.parse(uploadFileRes.data);
+								if (res.data && res.data.length > 0) {
+									res.data.forEach(i => {
+										i.type = 1;
+										i.fileurl = i.imgaddr;
+										i.fileurlFull = i.url;
+										this.fileList.push(i);
+									});
+								}
+							},
+							complete() {
+								uni.hideLoading();
+							}
+						});
+					}
+				});
+			}
 		}
 	}
 </script>
 
 <style lang="scss" scoped>
-	.list {
-		
+	.list {
+
 		.item {
 			.la {
 				margin-top: 30rpx;
@@ -216,9 +348,11 @@
 				align-items: center;
 				justify-content: center;
 				position: relative;
-				&:nth-of-type(4n){
-					margin-right: 0;
+
+				&:nth-of-type(4n) {
+					margin-right: 0;
 				}
+
 				.close {
 					position: absolute;
 					right: -20rpx;
@@ -238,21 +372,33 @@
 			}
 
 		}
+	}
+
+	.sub_btn {
+		position: fixed;
+		bottom: 68rpx;
+		left: 40rpx;
+		width: 670rpx;
+		height: 88rpx;
+		background: $primaryColor;
+		box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0, 104, 255, 0.3);
+		border-radius: 44rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		font-weight: 500;
+		font-size: 32rpx;
+		color: #FFFFFF;
 	}
-	.sub_btn{
-		position: fixed;
-		bottom: 68rpx;
-		left: 40rpx;
-		width: 670rpx;
-		height: 88rpx;
-		background: $primaryColor;
-		box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0,104,255,0.3);
-		border-radius: 44rpx;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		font-weight: 500;
-		font-size: 32rpx;
-		color: #FFFFFF;
+	.sel_upload_wrap {
+		width: 100%;
+		border-top: 1px solid #666666;
+		box-shadow: 0 1 1 #333333;
+	
+		.btn {
+			height: 90rpx;
+			line-height: 90rpx;
+			text-align: center;
+		}
 	}
 </style>
\ No newline at end of file
diff --git a/h5/pages/workOrder/list.vue b/h5/pages/workOrder/list.vue
index 0ea131f..6a87955 100644
--- a/h5/pages/workOrder/list.vue
+++ b/h5/pages/workOrder/list.vue
@@ -8,11 +8,11 @@
 		</view>
 		<!--  -->
 		<view class="tabs">
-			<view class="tab" :class="{active: activeTab == 0}" @click="tabsClick(0)">
+			<view class="tab" :class="{active: activeTab == -1}" @click="tabsClick(-1)">
 				<text>寰呭鐞�</text>
 				<text class="border"></text>
 			</view>
-			<view class="tab" :class="{active: activeTab == 1}" @click="tabsClick(1)">
+			<view class="tab" :class="{active: activeTab == 2}" @click="tabsClick(2)">
 				<text>宸插鐞�</text>
 				<text class="border"></text>
 			</view>
@@ -27,18 +27,20 @@
 		</view>
 		<!--  -->
 		<view class="list">
-			<view class="item" v-for="item in 10" @click="itemClick(item)">
+			<view class="item" v-for="item in list" @click="itemClick(item)">
 				<image v-if="item.stats == 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">
-						<view class="name">A搴�/401</view>
-						<view class="status">宸插鐞�</view>
+						<view class="name">{{item.buildingName}}/{{item.roomNum}}</view>
+						<view class="status gray" v-if="item.dealStatus == 2">宸插鐞�</view>
+						<view class="status" v-if="item.dealStatus == 0">寰呭鐞�</view>
+						<view class="status" v-if="item.dealStatus == 1">寰呭鐞�</view>
 					</view>
-					<view class="line">宸ュ崟绫诲瀷锛歺xx</view>
-					<view class="line">鎶ヤ慨鐗╁搧锛�121212</view>
-					<view class="line">涓婃姤鏃堕棿锛�121212</view>
-					<view class="line">涓婇棬鏃堕棿锛�121212</view>
+					<view class="line">浣嶇疆绫诲瀷锛歿{item.areaType == '0' ? '瀹ゅ唴瑁呬慨' : '鍏叡鍖哄煙'}}</view>
+					<view class="line">宸ュ崟鍒嗙被锛歿{item.categoryName}}</view>
+					<view class="line">涓婃姤鏃堕棿锛歿{item.createDate}}</view>
+					<view class="line">涓婇棬鏃堕棿锛歿{item.getDate}}</view>
 				</view>
 			</view>
 		</view>
@@ -46,29 +48,50 @@
 	</view>
 </template>
 
-<script>
+<script>
+	import { ywWorkorder } from '@/api'
 	export default {
 		data() {
 			return {
 				param: {},
-				activeTab: 0,
-				selectAll: false
+				activeTab: -1,
+				selectAll: false,
+				
+				list: [],
+				total: 0,
+				page: 1,
 			};
+		},
+		onShow() {	
+			this.getList()
+		},
+		onReachBottom() {
+			
 		},
 		methods: {
 			tabsClick(val) {
 				this.activeTab = val
+				this.list = []
+				this.page = 1
+				this,getList()
 			},
 			allClick() {
 				this.selectAll = !this.selectAll
 			},
-			itemClick() {
+			itemClick(item) {
 				uni.navigateTo({
-					url: '/pages/workOrder/detail'
+					url: `/pages/workOrder/detail?id=${item.id}`
 				})
 			},
 			getList() {
-				console.log('---');
+				const { page, total, list, activeTab } = this
+				ywWorkorder({
+					page,
+					capacity: 10,
+					model: {  }
+				}).then(res => {
+					this.list = res.data.records || []
+				})
 			}
 		}
 	}
@@ -181,6 +204,9 @@
 					.status{
 						color: $primaryColor;
 					}
+					.gray{
+						color: #999999;
+					}
 				}
 			}
 		}
diff --git a/h5/static/empty.png b/h5/static/empty.png
new file mode 100644
index 0000000..953c40f
--- /dev/null
+++ b/h5/static/empty.png
Binary files differ
diff --git a/h5/static/home/ic_xinzenggongdan@2x.png b/h5/static/home/ic_xinzenggongdan@2x.png
new file mode 100644
index 0000000..0324d69
--- /dev/null
+++ b/h5/static/home/ic_xinzenggongdan@2x.png
Binary files differ
diff --git a/h5/utils/service.js b/h5/utils/service.js
index 70e1617..0a05213 100644
--- a/h5/utils/service.js
+++ b/h5/utils/service.js
@@ -15,7 +15,7 @@
 			uni.request({
 				url: baseUrl + options.url,
 				data: options.data || {},
-				method: options.method || 'GET',
+				method: options.method || 'POST',
 				header: options.header || {
 					// 鏍规嵁瀹為檯鎺ュ彛璁捐 key 鍙� token 鎴栬�� authorization
 					dm_user_token: token,

--
Gitblit v1.9.3