From 1a4d35a08d05e014663c144771976abb0edaa933 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 26 七月 2024 17:41:30 +0800
Subject: [PATCH] 监管场景信息管理

---
 behaviors/loading.js                                              |    8 
 pages/inspection/scene/index.wxml                                 |    5 
 pages/inspection/scene/info/device-location-proxy.js              |   33 +++++
 services/inspection/fetchScene.js                                 |    1 
 pages/inspection/scene/info/components/device-location/index.json |    4 
 pages/inspection/scene/index.js                                   |   19 +-
 pages/inspection/scene/info/components/device-location/index.wxml |   50 ++++++++
 pages/inspection/scene/info/components/device-location/index.wxss |    9 +
 pages/inspection/scene/info/deviceinfo.wxml                       |   21 +++
 pages/inspection/scene/info/index.json                            |    4 
 pages/inspection/scene/info/components/device-location/index.js   |   51 ++++++++
 pages/inspection/scene/info/index.js                              |   44 ------
 pages/inspection/scene/info/index.wxml                            |   38 +++--
 pages/inspection/scene/info/deviceinfo-proxy.js                   |   11 +
 pages/inspection/scene/info/index.wxss                            |    4 
 pages/inspection/scene/info/device-info-items.js                  |   35 +++++
 model/sceneType.js                                                |    3 
 pages/inspection/scene/info/device-location.wxml                  |   12 ++
 pages/inspection/detail/chart-proxy.js                            |    8 
 19 files changed, 284 insertions(+), 76 deletions(-)

diff --git a/behaviors/loading.js b/behaviors/loading.js
index 68e63f3..5c45ba7 100644
--- a/behaviors/loading.js
+++ b/behaviors/loading.js
@@ -81,12 +81,12 @@
 
     _fetch() {
       if (typeof this._fetchData === 'function') {
-        this._fetchData(this.data.cPage)
+        const promise = this._fetchData(this.data.cPage);
+        if (!promise) return;
+        promise
           .then(head => {
             if (head) {
-              let cPage = head.currentPage
-                ? parseInt(head.currentPage)
-                : parseInt(head.page);
+              let cPage = head.currentPage ? parseInt(head.currentPage) : parseInt(head.page);
               let tPage = parseInt(head.totalPage);
               let totalCount = head.totalCount ? parseInt(head.totalCount) : 0;
               this._setPagination(cPage, tPage, totalCount);
diff --git a/model/sceneType.js b/model/sceneType.js
index ce6d9ea..450b772 100644
--- a/model/sceneType.js
+++ b/model/sceneType.js
@@ -21,7 +21,8 @@
  */
 function transSceneType(value) {
   const s = sceneMap[value]
-  return s == undefined ? '-1' : s;
+  return s
+  // return s == undefined ? '-1' : s;
 }
 
 export { transSceneType };
diff --git a/pages/inspection/detail/chart-proxy.js b/pages/inspection/detail/chart-proxy.js
index c0e86fc..31393c0 100644
--- a/pages/inspection/detail/chart-proxy.js
+++ b/pages/inspection/detail/chart-proxy.js
@@ -112,8 +112,8 @@
       const changes = [];
       const xAxisMonth = this.getXAxisMonth();
       xAxisMonth.forEach(m => {
-        problems.push('0');
-        changes.push('0');
+        problems.push(0);
+        changes.push(0);
       });
       this.data.subtaskSummary.forEach(s => {
         const month = dayjs(s.stPlanTime).month() + 1 + '鏈�';
@@ -121,8 +121,8 @@
           return month == value;
         });
         if (index) {
-          problems[index] = s.proNum;
-          changes[index] = s.changeNum;
+          problems[index] += s.proNum;
+          changes[index] += s.changeNum;
         }
       });
       const datas = [problems, changes];
diff --git a/pages/inspection/scene/index.js b/pages/inspection/scene/index.js
index cb0c7f3..a74171a 100644
--- a/pages/inspection/scene/index.js
+++ b/pages/inspection/scene/index.js
@@ -18,8 +18,9 @@
 
   _fetchData(page) {
     const { area, onlineValue, sceneValue } = this.data;
+    if (!onlineValue || !sceneValue) return;
     area.scensetypeid = sceneValue[0];
-    area.online = onlineValue;
+    area.online = onlineValue[0];
     return searchScene(area, page).then(res => {
       if (res.success) {
         this.setData({
@@ -42,14 +43,14 @@
 
   onLocationChange(e) {
     const { area } = this.data;
-    area.provinceName = e.detail.provinceText;
-    area.cityName = e.detail.cityText;
-    area.districtName = e.detail.districtText;
-    area.townName = e.detail.townText;
-    area.provinceCode = e.detail.provinceValue;
-    area.cityCode = e.detail.cityValue;
-    area.districtCode = e.detail.districtValue;
-    area.townCode = e.detail.townValue;
+    area.provincename = e.detail.provinceText;
+    area.cityname = e.detail.cityText;
+    area.districtname = e.detail.districtText;
+    area.townname = e.detail.townText;
+    area.provincecode = e.detail.provinceValue;
+    area.citycode = e.detail.cityValue;
+    area.districtcode = e.detail.districtValue;
+    area.towncode = e.detail.townValue;
     area.locationValue = e.detail.locationValue;
     this.setData({ area });
     this._startLoad();
diff --git a/pages/inspection/scene/index.wxml b/pages/inspection/scene/index.wxml
index f8ea607..7624129 100644
--- a/pages/inspection/scene/index.wxml
+++ b/pages/inspection/scene/index.wxml
@@ -11,7 +11,8 @@
           color="var(--td-font-white-1)"
           style-mode="picker"
           picker-class="picker-location"
-          bind:onChange="onOnlineChange"
+          bind:onlinePickerChange="onOnlineChange"
+          bind:onlineInitValue="onOnlineChange"
         ></online-picker>
         <location-picker
           color="var(--td-font-white-1)"
@@ -21,7 +22,7 @@
         ></location-picker>
       </view>
       <view class="filter-wrap-2">
-        <scene-picker sceneMode="{{1}}" bind:scenePickerChange="onScenePickerConfirm" />
+        <scene-picker sceneMode="{{1}}" bind:scenePickerChange="onScenePickerConfirm" bind:sceneInitValue="onScenePickerConfirm"/>
       </view>
     </view>
   </t-sticky>
diff --git a/pages/inspection/scene/info/components/device-location/index.js b/pages/inspection/scene/info/components/device-location/index.js
new file mode 100644
index 0000000..e3a42cc
--- /dev/null
+++ b/pages/inspection/scene/info/components/device-location/index.js
@@ -0,0 +1,51 @@
+import dayjs from 'dayjs';
+
+Component({
+  options: {
+    addGlobalClass: true,
+    multipleSlots: true,
+  },
+  properties: {
+    index: {
+      type: Number,
+      value: 0,
+    },
+    readOnly: {
+      type: Boolean,
+      value: false,
+    },
+    // 璁惧浣嶇疆淇℃伅
+    location: {
+      type: Object,
+      value: {},
+      observer(value) {
+        this.setData({ ...value });
+      },
+    },
+  },
+
+  data: {},
+
+  methods: {
+    onStandardChange(e) {
+      if (!e) {
+        this.setData({ dlUnstandardReason: '' });
+      }
+    },
+    changeEdit() {
+      this.setData({ readOnly: false, isUpdate: true });
+    },
+    cancel() {
+      this.setData({ readOnly: true });
+      this.triggerEvent('cancel');
+    },
+    confirm() {
+      const date = this.data.dlUpdateTime ? dayjs(this.data.dlUpdateTime) : dayjs();
+      const time = date.format('YYYY骞碝M鏈圖D鏃�');
+      this.setData({ time, readOnly: true });
+      const { readOnly, location, ...rest } = this.data;
+      this.triggerEvent('confirm', rest);
+    },
+    update() {},
+  },
+});
diff --git a/pages/inspection/scene/info/components/device-location/index.json b/pages/inspection/scene/info/components/device-location/index.json
new file mode 100644
index 0000000..e8cfaaf
--- /dev/null
+++ b/pages/inspection/scene/info/components/device-location/index.json
@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/inspection/scene/info/components/device-location/index.wxml b/pages/inspection/scene/info/components/device-location/index.wxml
new file mode 100644
index 0000000..854451f
--- /dev/null
+++ b/pages/inspection/scene/info/components/device-location/index.wxml
@@ -0,0 +1,50 @@
+<view wx:if="{{time}}" class="flex-h">
+  <!-- <t-divider content="鍙樻洿鏃堕棿: {{time}}" align="left" /> -->
+  <view>{{index}}. 鍙樻洿鏃堕棿: {{time}}</view>
+  <view wx:if="{{readOnly}}">
+    <t-button theme="primary" size="extra-small" bind:tap="changeEdit">淇敼</t-button>
+  </view>
+</view>
+<t-input
+  label="瀹夎浣嶇疆"
+  placeholder="璇疯緭鍏ュ畨瑁呬綅缃�"
+  model:value="{{dlLocation}}"
+  disabled="{{readOnly}}"
+/>
+<t-input
+  label="缁忓害"
+  placeholder="璇疯緭鍏ョ粡搴�"
+  model:value="{{dlLongitude}}"
+  disabled="{{readOnly}}"
+/>
+<t-input
+  label="缁村害"
+  placeholder="璇疯緭鍏ョ淮搴�"
+  model:value="{{dlLatitude}}"
+  disabled="{{readOnly}}"
+/>
+<t-cell title="鏄惁瑙勮寖">
+  <t-switch
+    model:value="{{dlStandard}}"
+    defaultValue="{{true}}"
+    label="{{['鏄�', '鍚�']}}"
+    slot="note"
+    disabled="{{readOnly}}"
+    bind:change="onStandardChange"
+  />
+</t-cell>
+<t-input
+  wx:if="{{!dlStandard}}"
+  label="涓嶈鑼冭鏄�"
+  placeholder="璇疯緭鍏ヨ鏄�"
+  model:value="{{dlUnstandardReason}}"
+  disabled="{{readOnly}}"
+/>
+<view wx:if="{{!readOnly}}" style="display: flex; gap: 4">
+  <t-button theme="light" block size="small" bind:tap="cancel">鍙栨秷</t-button>
+  <t-button wx:if="{{!isUpdate}}" theme="primary" block block size="small" bind:tap="confirm"
+    >淇濆瓨</t-button
+  >
+  <t-button wx:else theme="primary" block block size="small" bind:tap="update">鏇存柊</t-button>
+</view>
+<!-- <t-divider /> -->
diff --git a/pages/inspection/scene/info/components/device-location/index.wxss b/pages/inspection/scene/info/components/device-location/index.wxss
new file mode 100644
index 0000000..51d9aa7
--- /dev/null
+++ b/pages/inspection/scene/info/components/device-location/index.wxss
@@ -0,0 +1,9 @@
+/* pages/inspection/scene/info/components/device-location/index.wxss */
+.flex-h {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  /* background-color: blanchedalmond; */
+  padding: 0 16px;
+  margin-top: 8px;
+}
\ No newline at end of file
diff --git a/pages/inspection/scene/info/device-info-items.js b/pages/inspection/scene/info/device-info-items.js
new file mode 100644
index 0000000..92f4ff4
--- /dev/null
+++ b/pages/inspection/scene/info/device-info-items.js
@@ -0,0 +1,35 @@
+export const menuData = [
+  {
+    label: '绔欑偣鍚嶇О',
+    placeholder: '璇疯緭鍏ョ珯鐐瑰悕绉�',
+    name: 'diName',
+    value: '',
+    status: 'success',
+    tips: '绔欑偣鍚嶇О涓嶈兘涓虹┖',
+    onChange:(v)=>{
+      this.value = v
+    }
+  },
+  {
+    label: 'MN缂栧彿',
+    placeholder: '璇疯緭鍏N缂栧彿',
+    name: 'diMnCode',
+    value: '',
+    status: 'success',
+    tips: 'MN缂栧彿涓嶈兘涓虹┖',
+    onChange:(v)=>{
+      this.value = v
+    }
+  },
+  {
+    label: '璁惧绫诲瀷',
+    placeholder: '璇疯緭鍏ヨ澶囩被鍨�',
+    name: 'diType',
+    value: '',
+    status: 'success',
+    tips: '璁惧绫诲瀷涓嶈兘涓虹┖',
+    onChange:(v)=>{
+      this.value = v
+    }
+  },
+];
diff --git a/pages/inspection/scene/info/device-location-proxy.js b/pages/inspection/scene/info/device-location-proxy.js
new file mode 100644
index 0000000..8293cac
--- /dev/null
+++ b/pages/inspection/scene/info/device-location-proxy.js
@@ -0,0 +1,33 @@
+/**
+ * 璁惧瀹夎浣嶇疆淇℃伅绠$悊
+ */
+export const useDeviceLocation = Behavior({
+  data: {
+    showNewLocation: false,
+    newLocation: {},
+    deviceLocationList: [],
+  },
+  methods: {
+    onAddLocation() {
+      this.setData({
+        showNewLocation: true,
+        newLocation: {},
+      });
+    },
+
+    saveNewLocation(e) {
+      const { deviceLocationList } = this.data;
+      deviceLocationList.push(e.detail);
+      debugger
+      this.setData({
+        showNewLocation: false,
+        deviceLocationList,
+      });
+    },
+    cancelNewLocation() {
+      this.setData({
+        showNewLocation: false,
+      });
+    },
+  },
+});
diff --git a/pages/inspection/scene/info/device-location.wxml b/pages/inspection/scene/info/device-location.wxml
new file mode 100644
index 0000000..57d090d
--- /dev/null
+++ b/pages/inspection/scene/info/device-location.wxml
@@ -0,0 +1,12 @@
+<block wx:for="{{deviceLocationList}}">
+  <device-location index="{{index + 1}}" read-only="{{true}}" location="{{item}}"></device-location>
+</block>
+<t-button wx:if="{{!showNewLocation}}" theme="light" size="small" bind:tap="onAddLocation"
+  >鏂板浣嶇疆鍙樻洿淇℃伅</t-button
+>
+<device-location
+  wx:if="{{showNewLocation}}"
+  location="{{newLocation}}"
+  bind:cancel="cancelNewLocation"
+  bind:confirm="saveNewLocation"
+></device-location>
diff --git a/pages/inspection/scene/info/deviceinfo-proxy.js b/pages/inspection/scene/info/deviceinfo-proxy.js
index e69de29..8a8ea48 100644
--- a/pages/inspection/scene/info/deviceinfo-proxy.js
+++ b/pages/inspection/scene/info/deviceinfo-proxy.js
@@ -0,0 +1,11 @@
+/**
+ * 璁惧淇℃伅绠$悊
+ */
+export const useDeviceInfo = Behavior({
+  data: {
+    
+  },
+  methods: {
+    
+  },
+});
\ No newline at end of file
diff --git a/pages/inspection/scene/info/deviceinfo.wxml b/pages/inspection/scene/info/deviceinfo.wxml
index e69de29..9593565 100644
--- a/pages/inspection/scene/info/deviceinfo.wxml
+++ b/pages/inspection/scene/info/deviceinfo.wxml
@@ -0,0 +1,21 @@
+<t-input label="绔欑偣鍚嶇О" placeholder="璇疯緭鍏ョ珯鐐瑰悕绉�" model:value="{{diName}}" />
+<t-input label="MN缂栧彿" placeholder="璇疯緭鍏N缂栧彿" model:value="{{diMnCode}}" />
+<t-input label="璁惧绫诲瀷" placeholder="璇疯緭鍏ヨ澶囩被鍨�" model:value="{{diType}}" />
+<t-input label="渚涘簲鍟�" placeholder="璇疯緭鍏ヤ緵搴斿晢" model:value="{{diSupplier}}" />
+<t-input label="杩愮淮鍟�" placeholder="璇疯緭鍏ヨ繍缁村晢" model:value="{{diMaintainer}}" />
+<t-cell title="鏄惁涓婄嚎">
+  <t-switch
+    model:value="{{diRunningStatus}}"
+    defaultValue="{{true}}"
+    label="{{['鏄�', '鍚�']}}"
+    slot="note"
+  />
+</t-cell>
+<t-cell title="鏄惁鎷嗛櫎">
+  <t-switch
+    model:value="{{diRemoved}}"
+    defaultValue="{{false}}"
+    label="{{['鏄�', '鍚�']}}"
+    slot="note"
+  />
+</t-cell>
diff --git a/pages/inspection/scene/info/index.js b/pages/inspection/scene/info/index.js
index 9ec8700..1df3502 100644
--- a/pages/inspection/scene/info/index.js
+++ b/pages/inspection/scene/info/index.js
@@ -1,13 +1,10 @@
-// pages/inspection/scene/info/index.js
+import { useDeviceInfo } from './deviceinfo-proxy.js';
+import { useDeviceLocation } from './device-location-proxy.js';
+
 Page({
-  /**
-   * 椤甸潰鐨勫垵濮嬫暟鎹�
-   */
+  behaviors: [useDeviceInfo, useDeviceLocation],
   data: {},
 
-  /**
-   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
-   */
   onLoad(options) {
     this.getOpenerEventChannel().on('acceptSceneData', data => {
       if (data) {
@@ -18,38 +15,5 @@
     });
   },
 
-  /**
-   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
-   */
-  onReady() {},
-
-  /**
-   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず
-   */
-  onShow() {},
-
-  /**
-   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌
-   */
-  onHide() {},
-
-  /**
-   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇
-   */
-  onUnload() {},
-
-  /**
-   * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔
-   */
-  onPullDownRefresh() {},
-
-  /**
-   * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁�
-   */
   onReachBottom() {},
-
-  /**
-   * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜�
-   */
-  onShareAppMessage() {},
 });
diff --git a/pages/inspection/scene/info/index.json b/pages/inspection/scene/info/index.json
index d909319..fc4c8b5 100644
--- a/pages/inspection/scene/info/index.json
+++ b/pages/inspection/scene/info/index.json
@@ -4,5 +4,7 @@
   "backgroundTextStyle": "light",
   "navigationBarTextStyle": "white",
   "navigationBarBackgroundColor": "#389AFF",
-  "usingComponents": {}
+  "usingComponents": {
+    "device-location": "./components/device-location/index"
+  }
 }
\ No newline at end of file
diff --git a/pages/inspection/scene/info/index.wxml b/pages/inspection/scene/info/index.wxml
index bacba27..319b787 100644
--- a/pages/inspection/scene/info/index.wxml
+++ b/pages/inspection/scene/info/index.wxml
@@ -1,15 +1,23 @@
-<t-tabs
-  theme="card"
-  defaultValue="{{0}}"
-  space-evenly="{{true}}"
-  t-class="custom-tabs"
-  t-class-content="custom-panel"
->
-  <t-tab-panel label="鍩烘湰淇℃伅" value="{{0}}" class="custom-tab-panel">
-    <view>鍩烘湰淇℃伅</view>
-  </t-tab-panel>
-  <t-tab-panel label="璁惧淇℃伅" value="{{1}}" class="custom-tab-panel">
-    <view>璁惧淇℃伅</view>
-    <include src="./deviceinfo.wxml" />
-  </t-tab-panel>
-</t-tabs>
+<view class="page">
+  <view class="page-header"> </view>
+  <view class="page-container">
+    <t-tabs
+      theme="card"
+      defaultValue="{{0}}"
+      space-evenly="{{true}}"
+      t-class="custom-tabs"
+      t-class-content="custom-panel"
+    >
+      <t-tab-panel label="鍩烘湰淇℃伅" value="{{0}}" class="custom-tab-panel">
+        <view>鍩烘湰淇℃伅</view>
+      </t-tab-panel>
+      <t-tab-panel label="璁惧淇℃伅" value="{{1}}" class="custom-tab-panel">
+        <include src="./deviceinfo.wxml" />
+      </t-tab-panel>
+      <t-tab-panel label="璁惧浣嶇疆" value="{{3}}" class="custom-tab-panel">
+        <include src="./device-location.wxml" />
+      </t-tab-panel>
+    </t-tabs>
+  </view>
+  <view class="page-footer"></view>
+</view>
diff --git a/pages/inspection/scene/info/index.wxss b/pages/inspection/scene/info/index.wxss
index 4916a36..ab5b1f9 100644
--- a/pages/inspection/scene/info/index.wxss
+++ b/pages/inspection/scene/info/index.wxss
@@ -1,3 +1,7 @@
+.page .page-container {
+  padding: 0;
+}
+
 .chart-panel {
   width: 100%;
   height: 550rpx;
diff --git a/services/inspection/fetchScene.js b/services/inspection/fetchScene.js
index d23d681..cc16dbb 100644
--- a/services/inspection/fetchScene.js
+++ b/services/inspection/fetchScene.js
@@ -21,6 +21,7 @@
  * 鏌ユ壘鍦烘櫙
  */
 function searchScene(area, page = 1, perPage = 20) {
+  area.scensetypeid = transSceneType(area.scensetypeid);
   return post(
     {
       url: `/scense/find`,

--
Gitblit v1.9.3