设备信息管理模块
1. 完成监测设备信息的新增和更新逻辑
2. 编写中设备状态信息的更新功能
| | |
| | | "pages/inspection/scene/index", |
| | | "pages/inspection/scene/search/index", |
| | | "pages/inspection/scene/info/index", |
| | | "pages/inspection/scene/info/device-info/index" |
| | | "pages/inspection/scene/info/device-info/index", |
| | | "pages/inspection/scene/info/device-status/index" |
| | | ], |
| | | "tabBar": { |
| | | "custom": true, |
| | |
| | | |
| | | // çæµè®¾å¤ç±»å |
| | | function monitorDevices(sceneType) { |
| | | switch (sceneType) { |
| | | switch (parseInt(sceneType)) { |
| | | // å·¥å°,ç 头,æ
æç«,å åº |
| | | case '1': |
| | | case '2': |
| | | case '3': |
| | | case '14': |
| | | case 1: |
| | | case 2: |
| | | case 3: |
| | | case 14: |
| | | return dustDeviceType; |
| | | // é¤é¥® |
| | | case '5': |
| | | case 5: |
| | | return fumeDeviceType; |
| | | // å·¥ä¸ä¼ä¸,汽修 |
| | | case '4': |
| | | case '6': |
| | | case 4: |
| | | case 6: |
| | | return vocDeviceType; |
| | | default: |
| | | return dustDeviceType; |
| | | } |
| | | } |
| | | |
| | | export { monitorDevices }; |
| | | function toLabel(sceneType, valueArr) { |
| | | const labelArr = []; |
| | | let options = monitorDevices(sceneType); |
| | | valueArr.forEach(v => { |
| | | if (options) { |
| | | const op = options.find(o => { |
| | | return o.value == v; |
| | | }); |
| | | labelArr.push(op.label); |
| | | options = options[0].children; |
| | | } |
| | | }); |
| | | return labelArr; |
| | | } |
| | | |
| | | export { monitorDevices, toLabel }; |
| | |
| | | } |
| | | } |
| | | |
| | | export { productionDevices }; |
| | | function toLabel(sceneType, valueArr) { |
| | | const labelArr = []; |
| | | let options = productionDevices(sceneType); |
| | | valueArr.forEach(v => { |
| | | if (options) { |
| | | const op = options.find(o => { |
| | | return o.value == v; |
| | | }); |
| | | labelArr.push(op.label); |
| | | options = options.children; |
| | | } |
| | | }); |
| | | return labelArr; |
| | | } |
| | | |
| | | export { productionDevices, toLabel }; |
| | |
| | | } |
| | | } |
| | | |
| | | export { treatmentDevices }; |
| | | function toLabel(sceneType, valueArr) { |
| | | const labelArr = []; |
| | | let options = treatmentDevices(sceneType); |
| | | valueArr.forEach(v => { |
| | | if (options) { |
| | | const op = options.find(o => { |
| | | return o.value == v; |
| | | }); |
| | | labelArr.push(op.label); |
| | | options = options.children; |
| | | } |
| | | }); |
| | | return labelArr; |
| | | } |
| | | |
| | | export { treatmentDevices, toLabel }; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * çæä¸æ¡è¡¨åæ¡ç® |
| | | * @param {String} _label æ ç¾åç§° |
| | | * @param {String} _name åæ®µåç§° |
| | | * @param {String} _type è¾å
¥ç±»å ï¼text: è¾å
¥æ¡; switch: 忢æé®; picker: 䏿æ¡é项; cascader: 级èéæ©ï¼ |
| | | * @param {Boolean} _required æ¯å¦ä¸ºå¿
填项 |
| | | * @param {Array} _options å½è¾å
¥ç±»å为pickeræcascaderæ¶ï¼æä¾å¯é项 |
| | | * @param {Array} cascaderTitles å½è¾å
¥ç±»å为cascaderæ¶ï¼æä¾æ¯å±éé¡¹çæ é¢ |
| | | * @param {Array} referItems å½è¾å
¥ç±»å为cascaderæ¶ï¼æä¾å
³èç屿§name |
| | | */ |
| | | function baseInputItem( |
| | | _label, |
| | | _name, |
| | | _required, |
| | | _type = 'text', |
| | | _options = [], |
| | | cascaderTitles, |
| | | referItems, |
| | | ) { |
| | | return { |
| | | required: _required, |
| | | label: _label, |
| | | placeholder: (_type == 'text' ? '请è¾å
¥' : 'è¯·éæ©') + _label, |
| | | name: _name, |
| | | value: null, |
| | | status: 'success', |
| | | tips: _label + 'ä¸è½ä¸ºç©º', |
| | | inputType: _type, |
| | | options: _options, |
| | | cascaderTitles: cascaderTitles, |
| | | referItems: referItems, |
| | | visible: false, |
| | | }; |
| | | } |
| | | |
| | | /** |
| | | * éèæ¡ç®ï¼ä¸è¬æ¯ä¸ä¼ æ¶çå¿
è¦æ¡ç®ä¿¡æ¯ï¼ä½æ¯ä¸éè¦å±ç¤ºç»ç¨æ·åä¿®æ¹ |
| | | * @param {String} _label |
| | | * @param {String} _name |
| | | */ |
| | | function hideInputItem(_label, _name) { |
| | | const item = baseInputItem(_label, _name); |
| | | item.hide = true; |
| | | return item; |
| | | } |
| | | |
| | | /** |
| | | * å¡«å
åå§æ°æ® |
| | | * @param {Array} items è¡¨åæ¡ç®æ°ç» |
| | | * @param {Object} defaultValue åå§æ°æ® |
| | | */ |
| | | function setDefaultValue(items, defaultValue) { |
| | | if (typeof defaultValue === 'object') { |
| | | items.forEach(e => { |
| | | // ææ¬åå¼å
³ç±»åç´æ¥èµå¼ |
| | | if (e.inputType == 'text' || e.inputType == 'switch') { |
| | | if (defaultValue.hasOwnProperty(e.name)) { |
| | | e.value = defaultValue[e.name]; |
| | | } |
| | | } |
| | | // 䏿æ¡é¤äºèµå¼ï¼éè¦é¢å¤èµå¼å±æ§_value(æ°ç»ç±»åï¼ç»ä»¶t-pickerçç¹æ§) |
| | | else if (e.inputType == 'picker') { |
| | | if (defaultValue.hasOwnProperty(e.name)) { |
| | | e.value = defaultValue[e.name] + ''; |
| | | e._value = [e.value]; |
| | | const op = e.options.find(o=>{ |
| | | return o.value == e.value |
| | | }) |
| | | e._label = op.label |
| | | } |
| | | } |
| | | // 级èéæ©å¨ï¼æ ¹æ®å±æ§referItemsæ¾å°å¯¹åºçåå§æ°æ® |
| | | else if (e.inputType == 'cascader') { |
| | | const selectedOptions = []; |
| | | let value, |
| | | note, |
| | | options = e.options; |
| | | e.referItems.forEach(r => { |
| | | if (defaultValue.hasOwnProperty(r)) { |
| | | const o = options.find(v => { |
| | | return v.value == defaultValue[r]; |
| | | }); |
| | | selectedOptions.push(o); |
| | | options = options[0].children; |
| | | } |
| | | }); |
| | | if (selectedOptions.length > 0) { |
| | | value = selectedOptions[selectedOptions.length - 1].value; |
| | | note = cascaderNote(selectedOptions); |
| | | const v = selectedOptions.map(v => { |
| | | return v.value; |
| | | }); |
| | | e.value = v; |
| | | e._value = value; |
| | | e.note = note; |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 级èéæ©å¨éæ©ç»ææ ¼å¼å |
| | | * @param {Array} v |
| | | */ |
| | | function cascaderNote(v) { |
| | | let note = ''; |
| | | v.forEach(o => { |
| | | if (note != o.label) { |
| | | if (note != '') { |
| | | note += '/'; |
| | | } |
| | | note += o.label; |
| | | } |
| | | }); |
| | | return note; |
| | | } |
| | | |
| | | export { baseInputItem, hideInputItem, setDefaultValue, cascaderNote }; |
| | |
| | | import { cascaderNote } from './form-util.js'; |
| | | |
| | | Component({ |
| | | options: { |
| | | multipleSlots: true, // å¨ç»ä»¶å®ä¹æ¶çé项ä¸å¯ç¨å¤slotæ¯æ |
| | | }, |
| | | properties: { |
| | | /** |
| | | * 表åè¾å
¥æ¡éç¨T-designæ¡æ¶ä¸çInputç»ä»¶ |
| | |
| | | * value: çå®å¼, |
| | | * status: è¾å
¥æ¡ç¶æãå¯é项ï¼success/warning/error, |
| | | * tips: è¾å
¥æ¡ä¸æ¹æç¤ºææ¬ï¼ä¼æ ¹æ®ä¸åç status åç°ä¸åçæ ·å¼, |
| | | * inputType: è¾å
¥ç±»å ï¼text: è¾å
¥æ¡ï¼switchï¼åæ¢æé®; picker: 䏿æ¡é项; cascader: 级èéæ©ï¼, |
| | | * inputType: è¾å
¥ç±»å (text: è¾å
¥æ¡; switch: 忢æé®; picker: 䏿æ¡é项; cascader: 级èéæ©), |
| | | * options: å½è¾å
¥ç±»å为pickeræcascaderæ¶ï¼æä¾å¯é项, |
| | | * cascaderTitles: å½è¾å
¥ç±»å为cascaderæ¶ï¼æä¾æ¯ä¸ªéé¡¹çæ é¢, |
| | | */ |
| | |
| | | observer(v) { |
| | | this.setData({ formArray: v }); |
| | | }, |
| | | }, |
| | | submitText: { |
| | | type: String, |
| | | value: 'ä¿å', |
| | | }, |
| | | cancelText: { |
| | | type: String, |
| | | value: 'åæ¶', |
| | | }, |
| | | }, |
| | | |
| | |
| | | this.setData({ |
| | | [`formArray[${index}].visible`]: false, |
| | | [`formArray[${index}]._value`]: value, |
| | | [`formArray[${index}].value`]: { |
| | | label: label[0], |
| | | value: value[0], |
| | | }, |
| | | [`formArray[${index}]._label`]: label[0], |
| | | [`formArray[${index}].value`]: value[0], |
| | | }); |
| | | }, |
| | | onPickerCancel(e) { |
| | |
| | | onCascaderChange(e) { |
| | | const { index } = e.currentTarget.dataset; |
| | | const { selectedOptions, value } = e.detail; |
| | | const note = this._note(selectedOptions); |
| | | const note = cascaderNote(selectedOptions); |
| | | const v = selectedOptions.map(v => { |
| | | return { label: v.label, value: v.value }; |
| | | return v.value; |
| | | }); |
| | | this.setData({ |
| | | [`formArray[${index}].visible`]: false, |
| | |
| | | const formObj = {}; |
| | | this.data.formArray.forEach(e => { |
| | | if (e.inputType == 'picker') { |
| | | formObj[e.name] = e.value ? e.value.value : e.value; |
| | | formObj[e.name] = e.value; |
| | | } else if (e.inputType == 'cascader') { |
| | | e.referItems.forEach((r, i) => { |
| | | formObj[r] = e.value[i]; |
| | | }); |
| | | } else { |
| | | formObj[e.name] = e.value; |
| | | } |
| | |
| | | <block wx:for="{{formArray}}" wx:key="index"> |
| | | <block wx:if="{{!item.hide}}"> |
| | | <block wx:if="{{item.inputType == 'text'}}"> |
| | | <t-input |
| | | label="{{item.label}}" |
| | |
| | | <block wx:elif="{{item.inputType == 'switch'}}"> |
| | | <t-cell title="{{item.label}}"> |
| | | <t-switch |
| | | defaultValue="{{item.value}}" |
| | | label="{{['æ¯', 'å¦']}}" |
| | | slot="note" |
| | | data-index="{{index}}" |
| | |
| | | title="{{item.label}}" |
| | | arrow |
| | | hover |
| | | note="{{item.value.label || item.placeholder}}" |
| | | note="{{item._label || item.placeholder}}" |
| | | data-index="{{index}}" |
| | | bind:click="showPicker" |
| | | ></t-cell> |
| | |
| | | /> |
| | | </block> |
| | | </block> |
| | | |
| | | </block> |
| | | <slot></slot> |
| | | <view class="btn-group"> |
| | | <t-button block theme="light" content="åæ¶" size="small" bind:tap="onCancel"></t-button> |
| | | <t-button block theme="primary" content="ä¿å" size="small" bind:tap="onSubmit"></t-button> |
| | | <t-button |
| | | block |
| | | theme="light" |
| | | content="{{cancelText}}" |
| | | size="small" |
| | | bind:tap="onCancel" |
| | | ></t-button> |
| | | <t-button |
| | | block |
| | | theme="primary" |
| | | content="{{submitText}}" |
| | | size="small" |
| | | bind:tap="onSubmit" |
| | | ></t-button> |
| | | </view> |
| | |
| | | const baseFileUrl = `${bu}/meeting/file/`; |
| | | |
| | | // 线ä¸ç管 |
| | | const inspectUrl = 'https://fyami.com.cn:447'; |
| | | // const inspectUrl = 'http://192.168.0.138:8082'; |
| | | // const inspectUrl = 'https://fyami.com.cn:447'; |
| | | const inspectUrl = 'http://192.168.0.138:8082'; |
| | | |
| | | const iu = 'https://fyami.com.cn:447'; |
| | | const inspectPicUrl = `${iu}/images/`; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import dayjs from 'dayjs'; |
| | | import { toLabel as toLabelFreq } from '../common/dataMaintainFrequency'; |
| | | import { toLabel as toLabelOwner } from '../common/dataOwnership'; |
| | | import { toLabel as toLabelStatus } from '../common/dataRunningStatus'; |
| | | import { toLabel as toLabelMonitor } from '../common/dataMonitorDeviceType'; |
| | | import { toLabel as toLabelTreatment } from '../common/dataTreatmentDeviceType'; |
| | | import { toLabel as toLabelProduction } from '../common/dataProductionDeviceType'; |
| | | |
| | | // çæµè®¾å¤ |
| | | export function getMonitorDevice(data) { |
| | | data._updateTime = dayjs(data.diUpdateTime).format('YYYYå¹´MMæDDæ¥'); |
| | | data._maintainFrequency = toLabelFreq(data.diMaintainFrequency); |
| | | data._ownership = toLabelOwner(data.diOwnership); |
| | | data._runningStatus = toLabelStatus(data.diRunningStatus); |
| | | const labelArr = toLabelMonitor(data.diSceneTypeId, [data.diTypeId, data.diSubtypeId]); |
| | | data._type = labelArr[0]; |
| | | data._subType = labelArr[1]; |
| | | return data |
| | | } |
| | | |
| | | // æ²»çè®¾å¤ |
| | | export function getTreatmentDevice(data) { |
| | | data._updateTime = dayjs(data.piUpdateTime).format('YYYYå¹´MMæDDæ¥'); |
| | | data._maintainFrequency = toLabelFreq(data.piMaintainFrequency); |
| | | data._ownership = toLabelOwner(data.piOwnership); |
| | | data._runningStatus = toLabelStatus(data.piRunningStatus); |
| | | const labelArr = toLabelTreatment(data.piSceneTypeId, [data.piTypeId, data.piSubtypeId]); |
| | | data._type = labelArr[0]; |
| | | data._subType = labelArr[1]; |
| | | return data |
| | | } |
| | | |
| | | // çäº§è®¾å¤ |
| | | export function getProductionDevice(data) { |
| | | data._updateTime = dayjs(data.wiUpdateTime).format('YYYYå¹´MMæDDæ¥'); |
| | | data._ownership = toLabelOwner(data.wiOwnership); |
| | | data._runningStatus = toLabelStatus(data.wiRunningStatus); |
| | | const labelArr = toLabelProduction(data.wiSceneTypeId, [data.wiTypeId, data.wiSubtypeId]); |
| | | data._type = labelArr[0]; |
| | | data._subType = labelArr[1]; |
| | | return data |
| | | } |
| | | |
| | | export function getDeviceList(dataList, deviceType) { |
| | | return dataList.map(item => { |
| | | // çæµè®¾å¤ |
| | | if (deviceType == 0) { |
| | | return getMonitorDevice(item); |
| | | } |
| | | // æ²»çè®¾å¤ |
| | | else if (deviceType == 1) { |
| | | return getTreatmentDevice(item); |
| | | } |
| | | // çäº§è®¾å¤ |
| | | else if (deviceType == 2) { |
| | | return getProductionDevice(item); |
| | | } |
| | | }); |
| | | } |
| | |
| | | import { baseInputItem, hideInputItem, setDefaultValue } from "../../../../components/form/form-util.js"; |
| | | import { monitorDevices } from '../../../../common/dataMonitorDeviceType'; |
| | | import { treatmentDevices } from '../../../../common/dataTreatmentDeviceType'; |
| | | import { productionDevices } from '../../../../common/dataProductionDeviceType'; |
| | |
| | | import { ownership } from '../../../../common/dataOwnership'; |
| | | |
| | | /** |
| | | * çæä¸æ¡è¡¨åæ¡ç® |
| | | * @param {String} _label æ ç¾åç§° |
| | | * @param {String} _name åæ®µåç§° |
| | | * @param {String} _type è¾å
¥ç±»å ï¼text: è¾å
¥æ¡; switch: 忢æé®; picker: 䏿æ¡é项; cascader: 级èéæ©ï¼ |
| | | * @param {Boolean} _required æ¯å¦ä¸ºå¿
填项 |
| | | * @param {Array} _options å½è¾å
¥ç±»å为pickeræ¶ï¼æä¾å¯é项 |
| | | */ |
| | | function baseInputItem(_label, _name, _required, _type = 'text', _options = []) { |
| | | return { |
| | | required: _required, |
| | | label: _label, |
| | | placeholder: (_type == 'text' ? '请è¾å
¥' : 'è¯·éæ©') + _label, |
| | | name: _name, |
| | | value: null, |
| | | status: 'success', |
| | | tips: _label + 'ä¸è½ä¸ºç©º', |
| | | inputType: _type, |
| | | options: _options, |
| | | cascaderTitles: ['1', '2'], |
| | | visible: false, |
| | | }; |
| | | } |
| | | |
| | | /** |
| | | * çæµè®¾å¤è¡¨å |
| | | * @param {Number} sceneType åºæ¯ç±»åï¼é£ç¾½ç管系ç»ï¼ |
| | | * @param {Object} defaultValue 表åé»è®¤å¼ |
| | | */ |
| | | export function monitorDeviceForm(sceneType) { |
| | | return [ |
| | | export function monitorDeviceForm(sceneType, defaultValue) { |
| | | const items = [ |
| | | hideInputItem('id', 'diId'), |
| | | hideInputItem('å建æ¶é´', 'diCreateTime'), |
| | | hideInputItem('æ´æ°æ¶é´', 'diUpdateTime'), |
| | | hideInputItem('åºæ¯id', 'diSceneGuid'), |
| | | hideInputItem('åºæ¯ç±»å', 'diSceneTypeId'), |
| | | |
| | | baseInputItem('ç«ç¹åç§°', 'diName', true), |
| | | baseInputItem('设å¤ç¼å·', 'diDeviceCode'), |
| | | // 设å¤ç±»åå设å¤åç±»åå¹¶ç¨çº§èéæ©å¨å±ç¤º |
| | | baseInputItem('设å¤ç±»å', '_type', true, 'cascader', monitorDevices(sceneType)), |
| | | baseInputItem( |
| | | '设å¤ç±»å', |
| | | '_type', |
| | | true, |
| | | 'cascader', |
| | | monitorDevices(sceneType), |
| | | ['éæ©è®¾å¤ç±»å', 'éæ©è®¾å¤åç±»'], |
| | | ['diTypeId', 'diSubtypeId'], |
| | | ), |
| | | // baseInputItem('设å¤ç±»å', 'diTypeId', true, 'picker'), |
| | | // baseInputItem('设å¤åç±»', 'diSubtypeId', true, 'picker'), |
| | | baseInputItem('ä¾åºå', 'diSupplier'), |
| | |
| | | // baseInputItem('æ è¯äºç»´ç ', 'DI_QR_Code'), |
| | | // baseInputItem('å
¶ä»ç¬¬ä¸æ¹æè®¾å¤èªå¸¦äºç»´ç ', 'DI_Other_QR_Code'), |
| | | ]; |
| | | |
| | | // å¡«å
é»è®¤æ°æ® |
| | | setDefaultValue(items, defaultValue); |
| | | |
| | | return items; |
| | | } |
| | | |
| | | /** |
| | | * æ²»ç设å¤è¡¨å |
| | | */ |
| | | export function treatmentDeviceForm(sceneType) { |
| | | export function treatmentDeviceForm(sceneType, defaultValue) { |
| | | return [ |
| | | baseInputItem('ç«ç¹åç§°', 'diName', true), |
| | | baseInputItem('设å¤ç¼å·', 'diDeviceCode'), |
| | |
| | | /** |
| | | * ç产设å¤è¡¨å |
| | | */ |
| | | export function productionDeviceForm(sceneType) { |
| | | export function productionDeviceForm(sceneType, defaultValue) { |
| | | return [ |
| | | baseInputItem('ç«ç¹åç§°', 'diName', true), |
| | | baseInputItem('设å¤ç¼å·', 'diDeviceCode'), |
| | |
| | | baseInputItem('æ¯å¦æé¤', 'diRemoved', true, 'switch'), |
| | | ]; |
| | | } |
| | | |
| | | /** |
| | | * 设å¤ç¶æè¡¨å |
| | | */ |
| | | export function deviceStatusForm(defaultValue) { |
| | | return [ |
| | | hideInputItem('id', 'dlId'), |
| | | hideInputItem('设å¤id', 'dlDeviceId'), |
| | | hideInputItem('设å¤ç±»å', 'dlDeviceType'), |
| | | hideInputItem('åºæ¯id', 'dlSceneGuid'), |
| | | hideInputItem('åºæ¯ç±»å', 'dlSceneTypeId'), |
| | | hideInputItem('ç°åºå¾ç', 'dlPicUrl'), |
| | | hideInputItem('ç°åºè§é¢', 'dlVideoUrl'), |
| | | hideInputItem('å建æ¶é´', 'dlCreateTime'), |
| | | hideInputItem('æ´æ°æ¶é´', 'dlUpdateTime'), |
| | | |
| | | baseInputItem('设å¤ä½ç½®', 'DL_Location', true), |
| | | baseInputItem('ç»åº¦', 'DL_Longitude'), |
| | | baseInputItem('维度', 'DL_Latitude', true), |
| | | baseInputItem('æ¯å¦è§è', 'DL_Standard', true, 'switch'), |
| | | baseInputItem('ä¸è§èåå ', 'DL_UnStandard_Reason'), |
| | | baseInputItem('è¿è¡ç¶æ', 'DL_Real_Time_Status', true, 'picker', status), |
| | | ]; |
| | | } |
| | |
| | | deviceType: 0, |
| | | // 模å¼ï¼add: æ°å¢è®¾å¤ï¼updateï¼æ´æ°è®¾å¤ |
| | | mode: 'add', |
| | | submitText: 'ä¿å', |
| | | }, |
| | | |
| | | onLoad(options) { |
| | | this.getOpenerEventChannel().on('acceptDeviceData', data => { |
| | | if (data) { |
| | | const { scene, type, mode } = data; |
| | | let barTitle, _formArr; |
| | | const { scene, type, mode, deviceInfo } = data; |
| | | let barTitle = mode == 'add' ? 'æ°å¢':'ä¿®æ¹', _formArr; |
| | | switch (type) { |
| | | case 0: |
| | | barTitle = 'æ°å¢çæµè®¾å¤'; |
| | | _formArr = monitorDeviceForm(scene.typeid); |
| | | break; |
| | | case 1: |
| | | barTitle = 'æ°å¢æ²»ç设å¤'; |
| | | _formArr = treatmentDeviceForm(scene.typeid); |
| | | barTitle += 'æ²»ç设å¤'; |
| | | let defaultValue1 = mode == 'update' ? deviceInfo : { |
| | | piSceneGuid: scene.guid, |
| | | piSceneTypeId: scene.typeid, |
| | | } |
| | | _formArr = treatmentDeviceForm(scene.typeid, defaultValue1); |
| | | break; |
| | | case 2: |
| | | barTitle = 'æ°å¢ç产设å¤'; |
| | | _formArr = productionDeviceForm(scene.typeid); |
| | | barTitle += 'ç产设å¤'; |
| | | let defaultValue2 = mode == 'update' ? deviceInfo : { |
| | | wiSceneGuid: scene.guid, |
| | | wiSceneTypeId: scene.typeid, |
| | | } |
| | | _formArr = productionDeviceForm(scene.typeid, defaultValue2); |
| | | break; |
| | | case 0: |
| | | default: |
| | | barTitle = '设å¤ä¿¡æ¯'; |
| | | _formArr = monitorDeviceForm(scene.typeid); |
| | | barTitle += 'çæµè®¾å¤'; |
| | | let defaultValue0 = mode == 'update' ? deviceInfo : { |
| | | diSceneGuid: scene.guid, |
| | | diSceneTypeId: scene.typeid, |
| | | } |
| | | _formArr = monitorDeviceForm(scene.typeid, defaultValue0); |
| | | break; |
| | | } |
| | | wx.setNavigationBarTitle({ |
| | |
| | | scene, |
| | | deviceType: type, |
| | | mode, |
| | | submitText: mode == 'add' ? 'ä¿å' : 'æ´æ°', |
| | | }); |
| | | } |
| | | }); |
| | |
| | | // æäº¤è¡¨å |
| | | submit(e) { |
| | | const formObj = e.detail; |
| | | const { mode, scene } = this.data; |
| | | formObj.diSceneGuid = scene.guid; |
| | | formObj.diSceneTypeId = scene.typeid; |
| | | formObj.diTypeId = formObj._type[0].value; |
| | | formObj.diSubtypeId = formObj._type[1].value; |
| | | const { mode } = this.data; |
| | | if (mode == 'add') { |
| | | this.addDevice(formObj); |
| | | } else { |
| | |
| | | }, |
| | | |
| | | // æ´æ°è®¾å¤ä¿¡æ¯ |
| | | updateDevice() { |
| | | updateDevice(formObj) { |
| | | const { deviceType } = this.data; |
| | | updateDevice(formObj, deviceType).then(res => { |
| | | console.log(res); |
| | |
| | | <view class="page"> |
| | | <view class="page-header"> </view> |
| | | <view class="page-container"> |
| | | <t-form formArr="{{formArray}}" bind:submit="submit" bind:cancel="cancel"></t-form> |
| | | <t-form |
| | | formArr="{{formArray}}" |
| | | submit-text="{{submitText}}" |
| | | bind:submit="submit" |
| | | bind:cancel="cancel" |
| | | ></t-form> |
| | | </view> |
| | | <view class="page-footer"></view> |
| | | </view> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { deviceStatusForm } from '../device-info-items.js'; |
| | | import { |
| | | fetchDeviceStatus, |
| | | uploadDeviceStatus, |
| | | } from '../../../../../services/inspection/fetchDevice'; |
| | | |
| | | var defaultForm = deviceStatusForm(); |
| | | |
| | | Page({ |
| | | data: { |
| | | formArray: [], |
| | | showNewStatus: false, |
| | | deviceStatusList: [], |
| | | }, |
| | | |
| | | onLoad(options) { |
| | | this.getOpenerEventChannel().on('acceptDeviceStatusData', data => { |
| | | if (data) { |
| | | const { scene, type, deviceInfo } = data; |
| | | defaultForm = deviceStatusForm({ |
| | | dlDeviceId: deviceInfo.diId, |
| | | dlDeviceType: type, |
| | | dlSceneGuid: scene.guid, |
| | | dlSceneTypeId: scene.typeid, |
| | | }); |
| | | // console.log(scene); |
| | | // console.log(type); |
| | | // console.log(deviceInfo); |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | onAddStatus() { |
| | | this.setData({ |
| | | showNewStatus: true, |
| | | formArray: defaultForm |
| | | }); |
| | | }, |
| | | |
| | | saveNewStatus(e) { |
| | | const { deviceStatusList } = this.data; |
| | | const formObj = e.detail; |
| | | deviceStatusList.push(formObj); |
| | | uploadDeviceStatus(formObj); |
| | | this.setData({ |
| | | showNewStatus: false, |
| | | deviceStatusList, |
| | | }); |
| | | }, |
| | | cancelNewStatus() { |
| | | this.setData({ |
| | | showNewStatus: false, |
| | | }); |
| | | }, |
| | | }); |
¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "navigationBarTitleText": "设å¤ç¶æ", |
| | | "onReachBottomDistance": 10, |
| | | "backgroundTextStyle": "light", |
| | | "navigationBarTextStyle": "white", |
| | | "navigationBarBackgroundColor": "#389AFF", |
| | | "usingComponents": { |
| | | "device-location": "../components/device-location/index", |
| | | "t-form": "/components/form/index" |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <view class="page"> |
| | | <view class="page-header"> |
| | | <t-button |
| | | wx:if="{{!showNewStatus}}" |
| | | icon="add" |
| | | theme="primary" |
| | | size="small" |
| | | bind:tap="onAddStatus" |
| | | >æ·»å 设å¤ç¶æ</t-button |
| | | > |
| | | <t-form |
| | | wx:if="{{showNewStatus}}" |
| | | formArr="{{formArray}}" |
| | | bind:submit="saveNewStatus" |
| | | bind:cancel="cancelNewStatus" |
| | | > |
| | | <view>sssss</view> |
| | | </t-form> |
| | | </view> |
| | | <view class="page-container"> |
| | | <block wx:for="{{deviceStatusList}}"> |
| | | <device-location |
| | | index="{{index + 1}}" |
| | | read-only="{{true}}" |
| | | location="{{item}}" |
| | | ></device-location> |
| | | </block> |
| | | </view> |
| | | <view class="page-footer"></view> |
| | | </view> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* pages/inspection/scene/info/device-status/index.wxss */ |
| | |
| | | import { fetchDevices, fetchDeviceStatus } from '../../../../services/inspection/fetchDevice'; |
| | | |
| | | /** |
| | | * 设å¤ä¿¡æ¯ç®¡ç |
| | | */ |
| | |
| | | ], |
| | | }, |
| | | methods: { |
| | | fetchDeviceInfo(deviceTypeId) { |
| | | const { scene } = this.data; |
| | | fetchDevices(scene.guid, deviceTypeId).then(res => { |
| | | this.setData({ |
| | | [`categories[${deviceTypeId}].items`]: res.data, |
| | | }); |
| | | }); |
| | | }, |
| | | onSideBarChange(e) { |
| | | const { value } = e.detail; |
| | | this.fetchDeviceInfo(this.data.categories[value].type) |
| | | this.setData({ sideBarIndex: value }); |
| | | }, |
| | | addNewDevice(e) { |
| | |
| | | }, |
| | | }); |
| | | }, |
| | | updateDevice(e) { |
| | | const { type, index } = e.currentTarget.dataset; |
| | | const { scene, categories } = this.data; |
| | | const [i0, i1] = index; |
| | | const deviceInfo = categories[i0].items[i1]; |
| | | wx.navigateTo({ |
| | | url: `/pages/inspection/scene/info/device-info/index`, |
| | | success: function (res) { |
| | | // éè¿ eventChannel å被æå¼é¡µé¢ä¼ éæ°æ® |
| | | res.eventChannel.emit('acceptDeviceData', { |
| | | type, |
| | | scene, |
| | | mode: 'update', |
| | | deviceInfo, |
| | | }); |
| | | }, |
| | | }); |
| | | }, |
| | | |
| | | updateStatus(e) { |
| | | const { type, index } = e.currentTarget.dataset; |
| | | const { scene, categories } = this.data; |
| | | const [i0, i1] = index; |
| | | const deviceInfo = categories[i0].items[i1]; |
| | | wx.navigateTo({ |
| | | url: `/pages/inspection/scene/info/device-status/index`, |
| | | success: function (res) { |
| | | // éè¿ eventChannel å被æå¼é¡µé¢ä¼ éæ°æ® |
| | | res.eventChannel.emit('acceptDeviceStatusData', { |
| | | type, |
| | | scene, |
| | | deviceInfo, |
| | | }); |
| | | }, |
| | | }); |
| | | } |
| | | }, |
| | | }); |
| | |
| | | show-scrollbar="{{false}}" |
| | | > |
| | | <block wx:if="{{item.items.length > 0}}"> |
| | | <view class="title"> |
| | | <view>{{item.title || item.label}}</view> |
| | | <view class="title flex-h"> |
| | | <span>{{item.title || item.label}}</span> |
| | | <t-button |
| | | t-class="side-btn" |
| | | theme="primary" |
| | | icon="add" |
| | | content="æ·»å " |
| | | size="extra-small" |
| | | data-type="{{item.type}}" |
| | | bind:tap="addNewDevice" |
| | | ></t-button> |
| | | </view> |
| | | <block wx:for="{{item.items}}" wx:key="index1" wx:for-item="device" wx:for-index="index1"> |
| | | <view class="scene__item" > |
| | | <view class="flex-h" style="align-items: flex-start"> |
| | | <view class="scene__item-name">{{device.diName}} </view> |
| | | <view> |
| | | <t-tag |
| | | max-width="{{130}}" |
| | | shape="square" |
| | | size="small" |
| | | theme="success" |
| | | variant="light-outline" |
| | | >{{device._type}}</t-tag |
| | | > |
| | | </view> |
| | | </view> |
| | | <view class="flex-h"> |
| | | <view class="scene__item-abstract">ç¼å·ï¼{{device.diDeviceCode}} </view> |
| | | <view class="scene__item-abstract">{{device._runningStatus}} </view> |
| | | </view> |
| | | <view class="scene__item-abstract">æ´æ°æ¶é´ï¼{{device._updateTime}} </view> |
| | | <t-divider /> |
| | | <view class="scene__item-tag__wrap flex-h"> |
| | | <t-button |
| | | block |
| | | theme="light" |
| | | content="设å¤ä¿¡æ¯" |
| | | size="extra-small" |
| | | data-type="{{item.type}}" |
| | | data-index="{{[index, index1]}}" |
| | | bind:tap="updateDevice" |
| | | ></t-button> |
| | | <t-button |
| | | block |
| | | theme="light" |
| | | content="ç¶æåæ´" |
| | | size="extra-small" |
| | | data-type="{{item.type}}" |
| | | data-index="{{[index, index1]}}" |
| | | bind:tap="updateStatus" |
| | | ></t-button> |
| | | </view> |
| | | </view> |
| | | </block> |
| | | </block> |
| | | <block wx:else> |
| | | <t-empty-page description="{{'ææ ' + item.label + 'ä¿¡æ¯'}}" /> |
| | | <view style="display: flex; justify-content: space-between"> |
| | | <view class="flex-h"> |
| | | <t-button |
| | | theme="primary" |
| | | icon="add" |
| | |
| | | .side-bar-wrapper { |
| | | display: flex; |
| | | height: 90vh; |
| | | height: 80vh; |
| | | overflow: hidden; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | .side-bar-wrapper .title { |
| | | padding-left: 40rpx; |
| | | padding: 0 10rpx; |
| | | margin-bottom: 8rpx; |
| | | } |
| | | |
| | |
| | | height: 96rpx; |
| | | border: 2rpx solid #e7e7e7; |
| | | } |
| | | |
| | | .flex-h { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | } |
| | | |
| | | .flex-v { |
| | | position: relative; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .scene__item-tag__wrap { |
| | | position: relative; |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 2px; |
| | | } |
| | | |
| | | .scene__item { |
| | | margin: 0 10rpx; |
| | | background-color: var(--td-bg-color-fade); |
| | | border-radius: var(--td-border-radius); |
| | | box-shadow: var(--td-shadow-1); |
| | | padding: var(--td-spacer); |
| | | margin-top: var(--td-spacer); |
| | | color: var(--td-text-color-primary); |
| | | } |
| | | |
| | | /* .scene__item:active { |
| | | background-color: var(--td-gray-color-1); |
| | | } */ |
| | | |
| | | .scene__item .scene__item-name { |
| | | --ei-font-size: var(--td-font-size-base); |
| | | --ei-line-height: calc(var(--td-text-line-height) * var(--ei-font-size)); |
| | | font-size: var(--ei-font-size); |
| | | line-height: var(--ei-line-height); |
| | | height: calc(var(--ei-line-height) * 2); |
| | | display: -webkit-box; |
| | | -webkit-box-orient: vertical; |
| | | -webkit-line-clamp: 2; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .scene__item-abstract { |
| | | font-size: var(--td-font-size-s); |
| | | color: var(--td-text-color-secondary); |
| | | } |
| | | |
| | | .scene__nav-icon { |
| | | position: relative; |
| | | bottom: 0px; |
| | | right: 0px; |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | /* margin-top: var(--td-spacer); */ |
| | | /* background-color: blanchedalmond; */ |
| | | } |
| | | |
| | | .side-btn { |
| | | margin: initial !important; |
| | | } |
| | |
| | | import { useDeviceList } from './devicelist-proxy.js'; |
| | | import { useDeviceLocation } from './device-location-proxy.js'; |
| | | |
| | | Page({ |
| | | behaviors: [useDeviceList, useDeviceLocation], |
| | | behaviors: [useDeviceList], |
| | | data: { |
| | | // åºæ¯åºæ¬ä¿¡æ¯ |
| | | scene:{}, |
| | |
| | | this.setData({ |
| | | scene: data.scene, |
| | | }); |
| | | [0, 1, 2].forEach(e => { |
| | | this.fetchDeviceInfo(e); |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | |
| | | <t-tab-panel label="设å¤ä¿¡æ¯" value="{{1}}" class="custom-tab-panel"> |
| | | <include src="./devicelist.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> |
| | |
| | | @import './devicelist.wxss'; |
| | | |
| | | .page { |
| | | /* background-color: white; */ |
| | | } |
| | | |
| | | .page .page-container { |
| | | padding: 0; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | module.exports = { |
| | | // 设å¤è¿è¡ç¶æ |
| | | runningStatus: function (s) { |
| | | switch (parseInt(s)) { |
| | | case 0: |
| | | return 'æªèç½'; |
| | | case 1: |
| | | return 'ä¸çº¿ä¸'; |
| | | case 2: |
| | | return 'å·²ä¸çº¿'; |
| | | case 3: |
| | | default: |
| | | return 'å·²æé¤'; |
| | | } |
| | | }, |
| | | // 设å¤ç±»å |
| | | runningStatus: function (s) { |
| | | switch (parseInt(s)) { |
| | | case 0: |
| | | return 'æªèç½'; |
| | | case 1: |
| | | return 'ä¸çº¿ä¸'; |
| | | case 2: |
| | | return 'å·²ä¸çº¿'; |
| | | case 3: |
| | | default: |
| | | return 'å·²æé¤'; |
| | | } |
| | | }, |
| | | }; |
| | |
| | | import { get, post, put } from '../baseRequset'; |
| | | import { inspectUrl, inspectPicUrl } from '../../config/index'; |
| | | import { transSceneType } from '../../model/sceneType'; |
| | | import { getDeviceList } from '../../model/device'; |
| | | |
| | | /** |
| | | * è·ååºæ¯è®¾å¤åºæ¬ä¿¡æ¯ |
| | |
| | | }, |
| | | inspectUrl, |
| | | ).then(res => { |
| | | res.data.data = getDeviceList(res.data.data, deviceTypeId); |
| | | return res.data; |
| | | }); |
| | | } |