From 0e0944361a66439f7be48567c2fe6c482dd37a5c Mon Sep 17 00:00:00 2001 From: hanbaoshan <hanbaoshan@aiotlink.com> Date: 星期一, 01 二月 2021 13:57:26 +0800 Subject: [PATCH] 朔黄转储设备相关页面更新 --- src/pages/shuohuangMonitorAnalyze/components/transferMemo.vue | 157 ++++++++++++++++++++-- src/pages/shuohuangMonitorAnalyze/components/guideIndex.vue | 56 ++++++- src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue | 133 ++++++++++++++++++ src/pages/shuohuangMonitorAnalyze/components/memberManage.vue | 39 +++- src/api/shuohuang.ts | 26 ++- 5 files changed, 361 insertions(+), 50 deletions(-) diff --git a/src/api/shuohuang.ts b/src/api/shuohuang.ts index 8c60ae4..ac54af1 100644 --- a/src/api/shuohuang.ts +++ b/src/api/shuohuang.ts @@ -126,10 +126,22 @@ data }) -export const uploadFile = (data:any) =>{ - request({ - url:'/data/api-c/user/uploadFile', - method:'post', - data - }) -} +export const getTransferRecord = (query:any) => request({ + url:'/data/api-c/saverecord/getlst', + method: 'get', + params: query +}) + +export const getTransferStatusList = () => request({ + url:'/data/api-c/saverecord/getStatusList', + method: 'get' +}) +export const addDevice = (data:any)=>request({ + url:'/data/api-c/device/add', + method: 'post', + data +}) +export const getDeviceList = ()=>request({ + url:'/data/api-c/device/getlst', + method: 'get' +}) \ No newline at end of file diff --git a/src/pages/shuohuangMonitorAnalyze/components/guideIndex.vue b/src/pages/shuohuangMonitorAnalyze/components/guideIndex.vue index 05e7537..6128ecf 100644 --- a/src/pages/shuohuangMonitorAnalyze/components/guideIndex.vue +++ b/src/pages/shuohuangMonitorAnalyze/components/guideIndex.vue @@ -124,8 +124,11 @@ </el-select> </div> <div class="rank-list"> - <div class="rank-item" v-for="(rankItem,index) in rankList" :key="rankItem.id" > - <span class="rank-index" :class="{'first':index==0,'second':index==1,'third':index==2}">{{index+1}}</span> + <div class="rank-item" v-for="(rankItem,index) in rankList" :key="rankItem.id"> + <span + class="rank-index" + :class="{'first':index==0,'second':index==1,'third':index==2}" + >{{index+1}}</span> <span class="name">{{rankItem.name}}</span> <span class="val">{{rankItem.val}}</span> </div> @@ -182,7 +185,11 @@ <time-shortcut @actPickerChange="irregularEventStatistic"></time-shortcut> </div> <div class="statics-content"> - <el-radio-group v-model="irregularEventType" @change="checkIrregularEventType" size="small"> + <el-radio-group + v-model="irregularEventType" + @change="checkIrregularEventType" + size="small" + > <el-radio-button label="fhdd">闃叉姢鍦版</el-radio-button> <el-radio-button label="jcz">杩涘嚭绔�</el-radio-button> <el-radio-button label="gfx">杩囧垎鐩�</el-radio-button> @@ -327,11 +334,13 @@ </div> </div> </div> + <JsTree :node="jsTreeNodes"></JsTree> </div> </div> </template> <script> +import JsTree from '@/components/treeMenu/index'; import timeShortcut from './timeShortcut'; import Bar from './charts/bar'; import Pie from './charts/pie'; @@ -339,13 +348,41 @@ import SwipeTabs from './swipeTabs'; import DatasetChart from './charts/dataset'; export default { - components: { timeShortcut, Bar, Pie, LineChart, SwipeTabs, DatasetChart }, + components: { timeShortcut, Bar, Pie, LineChart, SwipeTabs, DatasetChart, JsTree }, + mounted () { + let tempArr = [{ + "text": "Same but with checkboxes", + "children": [ + { + "text": "initially selected", + "selected": true + } + ] + }]; + for (var i = 0; i < 20; i++) { + tempArr[0].children.push({ + "text": "initially open", + "icon": "fa fa-folder icon-state-default", + "opened": true, + "children": [ + { + "text": "Another node" + } + ] + }) + } + tempArr.forEach(node=>{ + //if(node.children.length) + + }) + this.jsTreeNodes = tempArr + }, data () { return { //actCardTab: 'dataStatistic', actCardTab: 'taskStatistic', hidDangerTab: 'hidDanderStatistic', - optionsOfWeekAnalyze:{ + optionsOfWeekAnalyze: { animation: false, grid: { top: 0, @@ -720,14 +757,15 @@ } ] }, - taskAnalyzeCaseTableData: [] + taskAnalyzeCaseTableData: [], + jsTreeNodes: [], } }, methods: { - checkTabInSwipe(tab){ + checkTabInSwipe (tab) { debugger }, - checkIrregularEventType(type){ + checkIrregularEventType (type) { debugger }, taskAnalyzeCase (time) { @@ -758,7 +796,7 @@ } }, - + } </script> diff --git a/src/pages/shuohuangMonitorAnalyze/components/memberManage.vue b/src/pages/shuohuangMonitorAnalyze/components/memberManage.vue index fb52efc..2111a3e 100644 --- a/src/pages/shuohuangMonitorAnalyze/components/memberManage.vue +++ b/src/pages/shuohuangMonitorAnalyze/components/memberManage.vue @@ -33,11 +33,12 @@ <el-option v-for="item in genders" :key="item.id" - :value="item.id" + :value="item.name=='鍏ㄩ儴'?'':item.name" :label="item.name" >{{item.name}}</el-option> </el-select> <el-button type="primary" size="small" @click="renderMemberTable">鏌ヨ</el-button> + <el-button type="primary" size="small" @click="resetFilter">閲嶇疆</el-button> </div> <div class="table-area"> <div class="actions"> @@ -157,7 +158,7 @@ <el-form-item label="韬唤璇佸彿:"> <el-input v-model="memberEditForm.OwnerID" size="mini"></el-input> </el-form-item> - <el-form-item label="鎵嬫満鍙�:"> + <el-form-item label="鎵嬫満鍙�:" prop="Tel"> <el-input v-model="memberEditForm.Tel" size="mini"></el-input> </el-form-item> <div class="btns"> @@ -232,7 +233,6 @@ <script> import { getShuohuangDepartTree, getOrganizeTree, getMemberList, updateMemberInfo, addMember, updateUnit, uploadMemberPic, uploadDirectory, uploadFile } from '@/api/shuohuang' - export default { data () { return { @@ -247,7 +247,7 @@ menuLeft: 0, keyword: '', gender: '', - genders: [{ name: '鐢�', id: 'g0' }, { name: '濂�', id: 'g1' }], + genders: [{id:'g3',name:'鍏ㄩ儴'},{ name: '鐢�', id: 'g0' }, { name: '濂�', id: 'g1' }], tableData: [], multipleTableSelection: [], PageIndex: 1, @@ -265,7 +265,8 @@ memberEditFormRule: { Name: [{ required: true, message: '璇疯緭鍏ュ鍚�', trigger: 'change' }], UserName: [{ required: true, message: '璇疯緭鍏ュ鍚�', trigger: 'change' }], - Sex: [{ required: true, message: '璇烽�夋嫨鎬у埆', trigger: 'change' }] + Sex: [{ required: true, message: '璇烽�夋嫨鎬у埆', trigger: 'change' }], + Tel: [{ validator: this.isPhone, trigger: 'change' }], }, memberPicUrl: '', showDemo: false, @@ -279,6 +280,20 @@ }, methods: { + resetFilter(){ + this.keyword = ''; + this.gender = ''; + this.renderMemberTable(); + }, + isPhone (rule, value, callback) { + if (value.trim()) { + var pattern = /^1[345789]\d{9}$/ + if (pattern.test(value)) { + return callback() + } + return callback(new Error('杈撳叆鐨勬墜鏈哄彿閿欒')) + } + }, nodeContextMenu (e, data, node, comp) { this.showMenu = true; this.menuTop = e.pageY; @@ -313,7 +328,7 @@ memberSave () { this.$refs['memberForm'].validate((valid) => { if (valid) { - let params = Object.assign({DeptID:this.curLeftTreeNode.id},this.memberEditForm); + let params = Object.assign({ DeptID: this.curLeftTreeNode.id }, this.memberEditForm); if (this.memberEditForm.ID) { updateMemberInfo(params).then(res => { if (res.success) { @@ -379,7 +394,7 @@ let _this = this; let params = { DeptID: this.deptId, - keyword: this.keyword, + Keyword: this.keyword, Sex: this.gender, PageIndex: this.PageIndex, PageSize: this.PageSize @@ -398,14 +413,14 @@ importDirectory () { //this.$refs['directoryInput'].files //鏂囦欢澶筸ap let formData = new FormData; - for(var file in this.$refs['directoryInput'].files){ + for (var file in this.$refs['directoryInput'].files) { formData.append('files', this.$refs['directoryInput'].files[file]) } //formData.append('files', this.$refs['directoryInput'].files) - uploadDirectory(formData).then(res=>{ + uploadDirectory(formData).then(res => { debugger - + }) }, @@ -483,10 +498,10 @@ return obj }); this.$nextTick(() => { - if(!Object.keys(_this.curLeftTreeNode).length){ + if (!Object.keys(_this.curLeftTreeNode).length) { _this.curLeftTreeNode = _this.treeData[0]; _this.$refs['leftTreeNodes'].setCurrentNode(_this.treeData[0]); - }else{ + } else { _this.$refs['leftTreeNodes'].setCurrentNode(_this.curLeftTreeNode); } _this.checkNode(_this.curLeftTreeNode); diff --git a/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue b/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue index 3665b38..5429e2b 100644 --- a/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue +++ b/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue @@ -1,6 +1,29 @@ <template> <div class="transfer-device-manage"> + <div class="header-with-tab"> + <el-tabs v-model="actTab" @tab-click="checkTab" > + <el-tab-pane name="dev1" v-for="tab in devices" :key="tab"> + <div slot="label" class="label-slot"> + <span>{{tab.Name}}</span> + <span class="capsule" :class="{'online':tab.Status==0,'offline':tab.Status==1}">{{tab.Status==0?"鍦ㄧ嚎":"绂荤嚎"}}</span> + </div> + </el-tab-pane> + <el-tab-pane name="dev2"> + <div slot="label" class="label-slot"> + <span>杞偍璁惧2</span> + <span class="capsule offline">绂荤嚎</span> + </div> + </el-tab-pane> + </el-tabs> + <div class="btn-add-dev" @click="showAddDevice"> + <i class="el-icon-circle-plus"></i> + <span>娣诲姞璁惧</span> + </div> + </div> <div class="general-view"> + <div class="indicator"> + <el-button>璁惧閲嶅惎</el-button> + </div> <div class="indicator" :class="{'lastOne':index==generalIndicators.length-1}" @@ -16,12 +39,12 @@ </div> <div class="table-area"> <div class="filter-bar flex-box"> - <div> + <!-- <div> <label>璁惧鍦板潃:</label> <div> <el-input v-model="deviceAddr" size="small"></el-input> </div> - </div> + </div> --> <div> <label>璁惧鐘舵��:</label> <div> @@ -49,21 +72,75 @@ </el-table-column> </el-table> </div> + <el-dialog :visible="visibleOfialogAddDev"> + <div> + <p slot="title">娣诲姞璁惧</p> + <div class="flex-box"> + <label>璁惧鍚嶇О锛�</label> + <el-input v-model="Name"></el-input> + </div> + <div class="flex-box"> + <label>璁惧IP锛�</label> + <el-input v-model="IP"></el-input> + </div> + <div slot="footer" class="btns"> + <el-button type="primary" size="small" @click="toAddDevice">纭畾</el-button> + <el-button size="small" @click="visibleOfialogAddDev=false">鍙栨秷</el-button> + </div> + </div> + </el-dialog> </div> </template> <script> +import {addDevice,getDeviceList} from '@/api/shuohuang'; export default { - data () { return { + actTab: 'dev1', + devices: [], generalIndicators: [{ id: 'gz', title: '鏈夋晠闅滆澶�', val: 156 }, { id: 'zc', title: '姝e父璁惧', val: 5000 }, { id: 'dx', title: '璇诲啓涓�', val: 56 }, { id: 'kx', title: '绌洪棽涓�', val: 2000 }, { id: 'ccgz', title: '鎻掓Ы鏁呴殰', val: 1000 }], deviceAddr: '', deviceState: '', - tableData: [] + tableData: [], + visibleOfialogAddDev: false, + Name:'', + IP:'', } }, + mounted(){ + this.findDeviceList(); + }, methods: { - checkSlot(row){ + findDeviceList (){ + getDeviceList().then(res=>{ + debugger + //_this.devices = + }) + }, + toAddDevice(){ + let _this = this; + let params = { + Name: this.Name, + IP: this.IP + } + addDevice(params).then(res=>{ + if(res.success){ + this.$notify({ + type:'success', + message: res.msg + }) + _this.visibleOfialogAddDev = true; + } + }) + }, + showAddDevice(){ + this.visibleOfialogAddDev = true; + + }, + checkTab (tab, event) { + + }, + checkSlot (row) { } } @@ -73,6 +150,51 @@ <style lang="scss"> .transfer-device-manage { padding: 20px; + .el-tabs__item{ + height: 45px; + line-height: 45px; + } + .el-tabs__nav-wrap::after { + height: 1px; + } + .header-with-tab { + position: relative; + .label-slot { + display: flex; + align-items: center; + padding: 0 20px; + font-weight: bold; + .capsule { + width: 42px; + height: 20px; + margin-left: 10px; + line-height: 20px; + text-align: center; + border-radius: 20px; + font-size: 12px; + font-weight: normal; + color: #fff; + &.online{ + background: #00a854; + } + &.offline{ + background: #f04134; + } + } + } + .btn-add-dev { + cursor: pointer; + position: absolute; + right: 0; + top: 10px; + color: #1890ff; + font-size: 14px; + i { + padding-right: 4px; + font-size: 16px; + } + } + } .general-view { display: flex; padding: 30px; @@ -119,6 +241,5 @@ } } } - } </style> \ No newline at end of file diff --git a/src/pages/shuohuangMonitorAnalyze/components/transferMemo.vue b/src/pages/shuohuangMonitorAnalyze/components/transferMemo.vue index 9dbc0bc..cc0bccd 100644 --- a/src/pages/shuohuangMonitorAnalyze/components/transferMemo.vue +++ b/src/pages/shuohuangMonitorAnalyze/components/transferMemo.vue @@ -3,55 +3,177 @@ <div class="filter-bar flex-box"> <div> <label>鎿嶄綔鏃堕棿:</label> - <div></div> + <el-date-picker + v-model="searchTime" + type="datetimerange" + size="small" + :picker-options="pickerOptions" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + align="right" + ></el-date-picker> </div> <div> <label>鎿嶄綔浜�:</label> <div> - <el-input v-model="operator" size="small"></el-input> + <el-input v-model="Operator" size="small"></el-input> </div> </div> <div> <label>杞偍鐘舵��:</label> <div> - <el-select v-model="transferStatus" size="small"> + <el-select v-model="Status" size="small"> + <el-option value="" label="鍏ㄩ儴"></el-option> <el-option v-for="item in allTransferStatus" :key="item.id" - :value="item.id" + :value="item.name" :label="item.name" ></el-option> </el-select> </div> </div> <div class="btns"> - <el-button type="primary" size="small">鏌ヨ</el-button> + <el-button type="primary" size="small" @click="renderTable">鏌ヨ</el-button> + <el-button type="primary" size="small" @click="resetFilter">閲嶇疆</el-button> </div> </div> <div class="table-area"> <el-table :data="tableData" fit> - <el-table-column prop="time" label="鎿嶄綔鏃堕棿"></el-table-column> - <el-table-column prop="operator" label="鎿嶄綔浜�"></el-table-column> - <el-table-column prop="tranferDevice" label="杞偍璁惧鍚嶇О"></el-table-column> - <el-table-column prop="pos" label="鍗℃Ы浣嶇疆"></el-table-column> - <el-table-column prop="transferStatus" label="杞偍鐘舵��"></el-table-column> - <el-table-column prop="pic" label="鐜板満鍥剧墖"></el-table-column> - <el-table-column prop="content" label="杞偍鍐呭"></el-table-column> + <el-table-column prop="OperaterDate" label="鎿嶄綔鏃堕棿"></el-table-column> + <el-table-column prop="Operator" label="鎿嶄綔浜�"></el-table-column> + <el-table-column prop="tranferDevice" label="杞偍璁惧鍚嶇О"> + <template slot-scope="scope"> + <div> + 璁惧{{scope.$index}} + </div> + </template> + </el-table-column> + <el-table-column prop="SlotID" label="鍗℃Ы浣嶇疆"> + <template slot-scope="scope"> + <div> + 鎻掓Ы{{scope.row.SlotID}} + </div> + </template> + </el-table-column> + <el-table-column prop="Status" label="杞偍鐘舵��"></el-table-column> + <el-table-column prop="Cover" label="鐜板満鍥剧墖"></el-table-column> + <el-table-column prop="Content" label="杞偍鍐呭"></el-table-column> </el-table> - <el-pagination background layout="prev, pager, next" :total="tableDataTotal"></el-pagination> + <el-pagination + class="pagination-under-table" + @size-change="handleTableSizeChange" + @current-change="handleCurrentChange" + :current-page.sync="PageIndex" + :page-size="PageSize" + :page-sizes="pageSizes" + layout="total,sizes, prev, pager, next" + :total="tableTotal" + ></el-pagination> </div> </div> </template> <script> +import { getTransferStatusList,getTransferRecord } from "@/api/shuohuang" export default { data () { return { - transferStatus: '', - operator: '', + pickerOptions: { + shortcuts: [{ + text: '浠婂ぉ', + onClick (picker) { + const end = new Date(); + const start = new Date(); + start.setHours(0, 0, 0); + picker.$emit('pick', [start, end]); + } + }, { + text: '鏄ㄥぉ', + onClick (picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24); + start.setHours(0, 0, 0); + end.setTime(end.getTime() - 3600 * 1000 * 24); + end.setHours(23, 59, 59); + picker.$emit('pick', [start, end]); + } + }, { + text: '杩戜笁澶�', + onClick (picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 3); + picker.$emit('pick', [start, end]); + } + }, { + text: '杩戜竴鍛�', + onClick (picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); + //start.setHours(0,0,0); + picker.$emit('pick', [start, end]); + } + }] + }, + Status: '', + Operator: '', allTransferStatus: [], tableData: [], - tableDataTotal: 5 + tableTotal: 0, + PageIndex: 1, + pageSizes: [8, 15, 20], + PageSize: 8, + searchTime: [this.$moment(new Date().getTime() - 3600 * 1000 * 24 * 5).format("YYYY-MM-DD HH:mm:ss"), this.$moment(new Date()).format("YYYY-MM-DD HH:mm:ss")], + } + }, + mounted () { + this.renderTable(); + this.renderTransferStatusList(); + }, + methods: { + handleCurrentChange(){ + this.renderTable(); + }, + resetFilter(){ + this.searchTime = []; + this.Operator = ''; + this.Status = ''; + this.renderTable(); + }, + handleTableSizeChange (size) { + this.tablePageSize = size; + this.renderTable(); + }, + renderTransferStatusList(){ + let _this = this; + getTransferStatusList().then(res=>{ + _this.allTransferStatus = res.data.map((item,index)=>{ + return { + id: 'sta'+index, + name: item + } + }); + }) + }, + renderTable () { + let _this = this; + let params = { + Operator: this.Operator, + Status: this.Status, + PageIndex: this.PageIndex, + PageSize: this.PageSize, + StartDate: this.searchTime ? this.searchTime[0]:'', + EndDate: this.searchTime ? this.searchTime[1]:'', + }; + + getTransferRecord(params).then(res=>{ + _this.tableData = res.data; + _this.tableTotal = res.total; + }) } } } @@ -81,5 +203,8 @@ cursor: pointer; } } + .pagination-under-table{ + margin-top: 20px; + } } </style> \ No newline at end of file -- Gitblit v1.8.0