From b6d54f1aafc8e0184c8c236514849e1a4c568655 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期四, 31 十月 2024 13:57:38 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
h5/pages/staffLogin/login.vue | 9
screen/src/views/LogisticsEfficiency.vue | 236 +++++---
screen/vite.config.js | 2
screen/src/views/SecurityControl.vue | 219 ++++---
admin/src/components/business/OperaHiddenDangerParamWindow.vue | 3
admin/src/components/operation/OperCarUseBookParamWindow.vue | 3
pda/pages/index/queueup.vue | 2
screen/src/api/index.js | 18
h5/pages/staff/snapshot.vue | 999 ++++++++++++++++++------------------
pda/pages/index/set.vue | 14
h5/api/staff.js | 8
pda/pages/index/center.vue | 21
admin/src/components/operation/HiddenDangerParam.vue | 17
admin/src/components/system/role/OperaSystemRoleDataWindow.vue | 3
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkInterfaceTestCloudController.java | 12
h5/manifest.json | 4
admin/.env.development | 6
admin/src/views/meeting/components/OperaBookingsWindow.vue | 2
screen/src/components/percent.vue | 1
admin/src/views/operation/danger/record.vue | 6
20 files changed, 837 insertions(+), 748 deletions(-)
diff --git a/admin/.env.development b/admin/.env.development
index 97a811c..445ce04 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -2,7 +2,7 @@
NODE_ENV = 'development'
VUE_APP_API_URL = 'http://localhost:10010'
-# VUE_APP_API_URL = 'http://192.168.0.108:10010'
-VUE_APP_API_URL = 'http://192.168.0.173/gateway_interface'
-# VUE_APP_API_URL = 'https://dmtest.ahapp.net/antai_admin_interface/'
+# VUE_APP_API_URL = 'http://192.168.0.103:10010'
+# VUE_APP_API_URL = 'http://192.168.0.173/gateway_interface'
+VUE_APP_API_URL = 'http://10.50.250.253:8088/gateway_interface'
diff --git a/admin/src/components/business/OperaHiddenDangerParamWindow.vue b/admin/src/components/business/OperaHiddenDangerParamWindow.vue
index ffe844c..b645c86 100644
--- a/admin/src/components/business/OperaHiddenDangerParamWindow.vue
+++ b/admin/src/components/business/OperaHiddenDangerParamWindow.vue
@@ -5,7 +5,7 @@
<el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim />
</el-form-item>
<el-form-item label="璐d换閮ㄩ棬" prop="companyId">
- <el-select @change="loadMember" v-model="form.companyId">
+ <el-select filterable clearable @change="loadMember" v-model="form.companyId">
<el-option v-for="op in department" :key="op.id" :label="op.name" :value="op.id"></el-option>
</el-select>
</el-form-item>
@@ -91,6 +91,7 @@
})
}
}
+ this.loadMember()
})
},
getfindCompanyTreePage() {
diff --git a/admin/src/components/operation/HiddenDangerParam.vue b/admin/src/components/operation/HiddenDangerParam.vue
index c2b75eb..30386b0 100644
--- a/admin/src/components/operation/HiddenDangerParam.vue
+++ b/admin/src/components/operation/HiddenDangerParam.vue
@@ -23,7 +23,7 @@
/>
</el-form-item>
<el-form-item label="璐d换閮ㄩ棬" prop="companyId">
- <el-select v-model="param.companyId">
+ <el-select @change="getAddrList" clearable filterable v-model="param.companyId">
<el-option v-for="op in department" :key="op.id" :label="op.name" :value="op.id"></el-option>
</el-select>
</el-form-item>
@@ -155,12 +155,9 @@
allList({ type: 1 }).then(res => { // 绫诲瀷
this.typeList = res || []
})
- allList({ type: 0 }).then(res => { // 浣嶇疆
- this.addrList = res || []
- })
- memberList({}).then(res => {
- this.memberList = res || []
- })
+ // memberList({}).then(res => {
+ // this.memberList = res || []
+ // })
this.getfindCompanyTreePage()
},
getfindCompanyTreePage() {
@@ -171,6 +168,12 @@
}
})
},
+ getAddrList() {
+ const { companyId } = this.param
+ allList({ type: 0,companyId }).then(res => { // 浣嶇疆
+ this.addrList = res || []
+ })
+ },
changeArea (e) {
const item = this.addrList.find(i => i.id === e)
const arr = []
diff --git a/admin/src/components/operation/OperCarUseBookParamWindow.vue b/admin/src/components/operation/OperCarUseBookParamWindow.vue
index eb60a54..fddb479 100644
--- a/admin/src/components/operation/OperCarUseBookParamWindow.vue
+++ b/admin/src/components/operation/OperCarUseBookParamWindow.vue
@@ -541,7 +541,8 @@
})
findTypeMemberInfo({
type: '2',
- companyType: 1
+ companyType: 1,
+ querySpecial: 1
}).then(res => {
this.memberList = res || []
})
diff --git a/admin/src/components/system/role/OperaSystemRoleDataWindow.vue b/admin/src/components/system/role/OperaSystemRoleDataWindow.vue
index 5727a97..1f81396 100644
--- a/admin/src/components/system/role/OperaSystemRoleDataWindow.vue
+++ b/admin/src/components/system/role/OperaSystemRoleDataWindow.vue
@@ -35,7 +35,8 @@
{ name: '鎵�灞為儴闂ㄥ強涓嬪睘閮ㄩ棬', id: 1 },
{ name: '鎵�灞為儴闂ㄥ強鍏跺瓙瀛欓儴闂�', id: 2 },
{ name: '浠呮墍灞為儴闂�', id: 3 },
- { name: '鑷畾涔夐儴闂�', id: 4 }
+ { name: '鑷畾涔夐儴闂�', id: 4 },
+ { name: '鍙湅鑷繁', id: -1 },
],
// 琛ㄥ崟鏁版嵁
form: {
diff --git a/admin/src/views/meeting/components/OperaBookingsWindow.vue b/admin/src/views/meeting/components/OperaBookingsWindow.vue
index 39adf61..133272d 100644
--- a/admin/src/views/meeting/components/OperaBookingsWindow.vue
+++ b/admin/src/views/meeting/components/OperaBookingsWindow.vue
@@ -157,7 +157,7 @@
userList({
page: 1,
capacity: 9999,
- model: { realname: this.filterText, memberType: 2, companyType: 1 }
+ model: { realname: this.filterText,querySpecial: 1, memberType: 2, companyType: 1 }
})
.then(res => {
console.log('userList', res)
diff --git a/admin/src/views/operation/danger/record.vue b/admin/src/views/operation/danger/record.vue
index 31f2fbb..5b60581 100644
--- a/admin/src/views/operation/danger/record.vue
+++ b/admin/src/views/operation/danger/record.vue
@@ -8,8 +8,8 @@
<el-form-item label="鎻愭姤浜虹粍缁�" prop="companyName">
<el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏�" clearable @keypress.enter.native="search"></el-input>
</el-form-item>
- <el-form-item label="璐d换閮ㄩ棬" prop="companyName">
- <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏�" clearable @keypress.enter.native="search"></el-input>
+ <el-form-item label="璐d换閮ㄩ棬" prop="dutyCompanyName">
+ <el-input v-model="searchForm.dutyCompanyName" placeholder="璇疯緭鍏ヨ矗浠婚儴闂�" clearable @keypress.enter.native="search"></el-input>
</el-form-item>
<el-form-item label="闅愭偅鍖哄煙" prop="areaId">
<el-select v-model="searchForm.areaId" placeholder="璇烽�夋嫨闅愭偅鍖哄煙" clearable @change="search">
@@ -75,7 +75,7 @@
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="companyName" label="璐d换閮ㄩ棬" min-width="150px"></el-table-column>
+ <el-table-column prop="dutyCompanyName" label="璐d换閮ㄩ棬" min-width="150px"></el-table-column>
<el-table-column prop="areaName" label="闅愭偅鍖哄煙" min-width="150px"></el-table-column>
<el-table-column prop="categoryName" label="闅愭偅绫诲瀷" min-width="150px"></el-table-column>
<el-table-column prop="memberName" label="鎻愭姤浜�" min-width="80px"></el-table-column>
diff --git a/h5/api/staff.js b/h5/api/staff.js
index dd2f307..ea64d24 100644
--- a/h5/api/staff.js
+++ b/h5/api/staff.js
@@ -84,6 +84,14 @@
method: 'get'
})
}
+// 閮ㄩ棬鍒楄〃
+export const deptListPost = (data) => {
+ return http({
+ url: '/visitsAdmin/cloudService/business/company/list',
+ method: 'post',
+ data
+ })
+}
// 闅愭偅 绫诲瀷
export const DangerConfigType = (data) => {
return http({
diff --git a/h5/manifest.json b/h5/manifest.json
index cd8f8b1..e051485 100644
--- a/h5/manifest.json
+++ b/h5/manifest.json
@@ -129,8 +129,8 @@
// 杩欎釜瀛楁鍚嶉渶涓庝綘閰嶇疆鐨刡asePrefixUrl涓�鑷达紝绯荤粺璇嗗埆鍒板甫鏈�/dev-api璇锋眰鐨勫湴鍧�鏃讹紝浼氬湪鍓嶉潰鎷兼帴涓婁唬鐞嗘湇鍔″櫒鍦板潃
// "target" : "http://172.20.10.7:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
// "target" : "http://192.168.0.100:10010", // 浠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://10.50.250.253:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+ // "target" : "http://192.168.0.173/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
"changeOrigin" : true, // 鍏佽璺ㄥ煙
"pathRewrite" : {
"^/gateway_interface" : ""
diff --git a/h5/pages/staff/snapshot.vue b/h5/pages/staff/snapshot.vue
index b0677bc..4d14c15 100644
--- a/h5/pages/staff/snapshot.vue
+++ b/h5/pages/staff/snapshot.vue
@@ -1,500 +1,499 @@
-<template>
- <view class="main_app">
- <view class="main_wrap">
- <!-- -->
- <view class="line">
- <view class="label">
- <text>*</text>
- <text>闅愭偅鍖哄煙</text>
- </view>
- <view class="value" @click="isShowArea = true">
- <text
- class="mr6"
- :style="{ color: param.areaName ? '#000000' : '#999999' }"
- >{{ param.areaName ? param.areaName : "璇烽�夋嫨" }}</text
- >
- <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
- </view>
- </view>
- <view class="line">
- <view class="label">
- <text>*</text>
- <text>鎺ユ敹浜�</text>
- </view>
- <view class="value" @click="selMember">
- <text
- class="mr6"
- :style="{ color: param.checkorName ? '#000000' : '#999999' }"
- >{{ param.checkorName ? param.checkorName : "璇烽�夋嫨" }}</text
- >
- <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
- </view>
- </view>
- <view class="empty"></view>
- <view class="line">
- <view class="label">
- <text>*</text>
- <text>闅愭偅绫诲瀷</text>
- </view>
- <view class="value" @click="isShowType = true">
- <text
- class="mr6"
- :style="{ color: param.categoryName ? '#000000' : '#999999' }"
- >{{ param.categoryName ? param.categoryName : "璇烽�夋嫨" }}</text
- >
- <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
- </view>
- </view>
- <view class="upload_line">
- <view class="name">鐜板満鎯呭喌</view>
- <view class="wrap">
- <view
- class="adduser_list_item_ipt1_upload"
- @click="showUpload = true"
- >
- <u-icon name="plus" color="rgb(153, 153, 153)" size="20"></u-icon>
- <view class="mt6">鍥剧墖/瑙嗛</view>
- </view>
- <view
- class="adduser_list_item_ipt1_upload"
- v-for="(item, i) in submitFileList"
- :key="i"
- >
- <u-icon
- class="close"
- size="20"
- name="close-circle-fill"
- color="red"
- @click="fileDel(i)"
- ></u-icon>
- <image
- v-if="item.type == 0"
- :src="item.fileurlFull"
- mode="widthFix"
- ></image
- ><video v-if="item.type == 1" :src="item.fileurlFull"></video
- ></view>
- </view>
- </view>
- <view class="empty"></view>
- <view class="upload_line" style="padding: 15px 0 0">
- <view class="name" style="margin-bottom: 10rpx">
- <text style="color: #e42d2d">*</text>
- <text>鎯呭喌璇存槑</text>
- </view>
- <view class="value">
- <textarea
- placeholder="璇疯缁嗘弿杩扮幇鍦烘儏鍐碉紝涓嶅皯浜�10涓瓧"
- minlength="10"
- v-model="param.content"
- placeholder-style="color: #999999;"
- />
- </view>
- </view>
- <view class="empty"></view>
- <view class="line">
- <view class="label">
- <text></text>
- <text>鎻愭姤浜�</text>
- </view>
- <view class="value"
- ><input
- type="text"
- disabled
- placeholder="璇疯緭鍏ユ彁鎶ヤ汉"
- v-model="param.memberName"
- placeholder-style="color: #999999;"
- /></view>
- </view>
- <view class="line">
- <view class="label">
- <text></text>
- <text>鑱旂郴鐢佃瘽</text>
- </view>
- <view class="value"
- ><input
- type="text"
- disabled
- placeholder="璇疯緭鍏ヨ仈绯荤數璇�"
- v-model="param.memberPhone"
- placeholder-style="color: #999999;"
- /></view>
- </view>
- <view class="line">
- <view class="label">
- <text></text>
- <text>鎻愭姤鏃堕棿</text>
- </view>
- <view class="value" @click="isShowTime = true">
- <text
- class="mr6"
- :style="{ color: param.submitTime ? '#000000' : '#999999' }"
- >{{ param.submitTime ? param.submitTime : "璇烽�夋嫨" }}</text
- >
- <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
- </view>
- </view>
-
- <view class="footer"
- ><view class="footer_btn" @click="onSubmit">鎻愪氦</view></view
- >
- </view>
- <!-- -->
- <!-- 鍖哄煙 -->
- <u-picker
- keyName="name"
- :show="isShowArea"
- closeOnClickOverlay
- :columns="areaOptions"
- @confirm="seletedArea"
- @close="isShowArea = false"
- @cancel="isShowArea = false"
- ></u-picker>
- <u-picker
- keyName="name"
- :show="isShowType"
- closeOnClickOverlay
- :columns="areaType"
- @confirm="seletedType"
- @close="isShowType = false"
- @cancel="isShowType = false"
- ></u-picker>
- <!-- -->
- <u-datetime-picker
- :show="isShowTime"
- :minDate="new Date().getTime()"
- mode="datetime"
- closeOnClickOverlay
- @cancel="isShowTime = false"
- @close="isShowTime = false"
- @confirm="seletedDate"
- ></u-datetime-picker>
- <!-- -->
- <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
- <view class="upload_wrap">
- <view class="btn" @click="uploadImage">閫夋嫨鍥剧墖</view>
- <view class="btn" @click="uploadVideo">閫夋嫨瑙嗛</view>
- </view>
- </u-popup>
- </view>
-</template>
-
-<script>
-import {
- uploadUrl,
- DangerCreate,
- DangerConfigType
-} from '@/api'
-import dayjs from 'dayjs'
-export default {
- data() {
- return {
- param: {},
- submitFileList: [],
-
- isShowArea: false,
- isShowType: false,
- isShowTime: false,
- showUpload: false,
-
- areaOptions: [],
- areaType: [],
- }
- },
- onLoad(option) {
- this.initConfig()
- const userInfo = uni.getStorageSync('userInfo') || {}
- this.$set(this.param, 'memberName', userInfo.realname)
- this.$set(this.param, 'memberPhone', userInfo.mobile)
- this.$set(this.param, 'memberId', userInfo.id)
- this.$set(this.param, 'submitTime', dayjs().format('YYYY-MM-DD HH:mm:ss'))
- },
- mounted() {
- this.$eventBus.$on('snapshotSel', (option) => {
- this.$set(this.param, 'checkUserId', option.id)
- this.$set(this.param, 'applyCheckUserId', option.id)
- this.$set(this.param, 'checkorName', option.name)
- })
- },
- methods: {
- onSubmit() {
- const { param, submitFileList } = this
- if (!param.areaName) return uni.showToast({
- title: '璇烽�夋嫨闅愭偅鍖哄煙',
- icon: 'none'
- })
- if (!param.applyCheckUserId) return uni.showToast({
- title: '璇烽�夋嫨鎺ユ敹浜�',
- icon: 'none'
- })
- if (!param.categoryName) return uni.showToast({
- title: '璇烽�夋嫨闅愭偅绫诲瀷',
- icon: 'none'
- })
- if (!param.content) return uni.showToast({
- title: '璇疯緭鍏ユ儏鍐佃鏄�',
- icon: 'none'
- })
- if (param.content.length < 10) return uni.showToast({
- title: '鎯呭喌璇存槑涓嶅緱灏忎簬10涓瓧',
- icon: 'none'
- })
-
- DangerCreate({
- ...param,
- submitFileList
- }).then(res => {
- if (res.code === 200) {
- this.$jump('/pages/staff/snapshotResult')
- }
- })
- },
- seletedArea(e) {
- const item = e.value[0]
- this.$set(this.param, 'areaId', item.id)
- this.$set(this.param, 'areaName', item.name)
- console.log(item)
- if (item.memberIds && item.memberIds.indexOf(',') === -1) {
- this.$set(this.param, 'checkUserId', item.memberIds)
- this.$set(this.param, 'applyCheckUserId', item.memberIds)
- this.$set(this.param, 'checkorName', item.memberNames)
- } else {
- this.$set(this.param, 'checkUserId', '')
- this.$set(this.param, 'applyCheckUserId', '')
- this.$set(this.param, 'checkorName', '')
- }
- this.isShowArea = false
- },
- seletedType(e) {
- const item = e.value[0]
- this.$set(this.param, 'cateId', item.id)
- this.$set(this.param, 'categoryName', item.name)
- console.log(item)
- this.isShowType = false
- },
- seletedSafety(e) {
-
- },
- seletedDate(e) {
- this.$set(this.param, 'submitTime', dayjs(e.value).format('YYYY-MM-DD HH:mm:ss'))
- this.isShowTime = false
- },
- initConfig() {
- DangerConfigType({ type: '1' }).then(res => {
- this.areaType = [res.data]
- })
- DangerConfigType({ type: '0' }).then(res => {
- this.areaOptions = [res.data]
- })
- },
- selMember() {
- if (!this.param.areaId) return uni.showToast({
- title: '璇峰厛閫夋嫨闅愭偅鍖哄煙',
- icon: 'none'
- })
- uni.navigateTo({
- url: '/pages/staff/memberSel?areaId=' + this.param.areaId
- })
- },
- fileDel(i) {
- this.submitFileList.splice(i, 1)
- },
- 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)
- console.log('res', res.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()
- // }
- }
- })
- // }
- }
- })
- },
- uploadVideo() {
- this.showUpload = false
- let that = this
- 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()
- }
- })
- }
- })
- },
-
- getUser() { }
- }
-};
-</script>
-
-<style lang="scss">
-.main_wrap {
- padding-bottom: 200rpx;
- .line {
- display: flex;
- justify-content: space-between;
- align-items: center;
- border-bottom: 1rpx solid #e5e5e5;
- padding: 30rpx 0;
- .label {
- font-size: 30rpx;
- font-weight: 400;
- text {
- &:nth-child(1) {
- color: #e42d2d;
- margin-right: 4rpx;
- }
- }
- }
- .value {
- flex: 1;
- height: 100%;
- margin-left: 30rpx;
- display: flex;
- align-items: center;
- justify-content: flex-end;
- input {
- width: 100%;
- height: 100%;
- text-align: right;
- font-size: 28rpx;
- font-weight: 400;
- color: #222222;
- }
- }
- }
- .upload_line {
- padding: 30rpx 0;
- .wrap {
- display: flex;
- flex-wrap: wrap;
- }
- .adduser_list_item_ipt1_upload {
- margin-top: 24rpx;
- width: 120rpx;
- height: 120rpx;
- margin-right: 24rpx;
- border: 2rpx solid #e5e5e5;
- background: #f7f7f7;
- color: #666666;
- font-size: 22rpx;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- position: relative;
- .close {
- position: absolute;
- right: -20rpx;
- top: -20rpx;
- z-index: 9999;
- }
- image {
- width: 100%;
- height: 100%;
- }
- video {
- width: 100%;
- max-height: 120rpx;
- }
- }
- }
-}
-.upload_wrap {
- width: 100%;
- .btn {
- height: 90rpx;
- line-height: 90rpx;
- text-align: center;
- }
-}
-.footer {
- width: 100%;
- padding: 0 30rpx;
- padding-bottom: env(safe-area-inset-bottom);
- box-sizing: border-box;
- position: fixed;
- left: 0;
- bottom: 68rpx;
-
- .footer_btn {
- width: 100%;
- height: 88rpx;
- line-height: 88rpx;
- text-align: center;
- background: $uni-color-primary;
- border-radius: 44rpx;
- font-size: 32rpx;
- color: #ffffff;
- }
-}
-.empty {
- width: 750rpx;
- height: 20rpx;
- background-color: #f7f7f7;
- margin: 0 -30rpx;
-}
-</style>
+<template>
+ <view class="main_app">
+ <view class="main_wrap">
+ <!-- -->
+ <view class="line">
+ <view class="label">
+ <text>*</text>
+ <text>璐d换閮ㄩ棬</text>
+ </view>
+ <view class="value" @click="isShowCompany = true">
+ <text class="mr6"
+ :style="{ color: param.companyName ? '#000000' : '#999999' }">{{ param.companyName ? param.companyName : "璇烽�夋嫨" }}</text>
+ <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
+ </view>
+ </view>
+ <view class="line">
+ <view class="label">
+ <text>*</text>
+ <text>闅愭偅鍖哄煙</text>
+ </view>
+ <view class="value" @click="isShowArea = true">
+ <text class="mr6"
+ :style="{ color: param.areaName ? '#000000' : '#999999' }">{{ param.areaName ? param.areaName : "璇烽�夋嫨" }}</text>
+ <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
+ </view>
+ </view>
+ <view class="line">
+ <view class="label">
+ <text>*</text>
+ <text>鎺ユ敹浜�</text>
+ </view>
+ <view class="value" @click="selMember">
+ <text class="mr6"
+ :style="{ color: param.checkorName ? '#000000' : '#999999' }">{{ param.checkorName ? param.checkorName : "璇烽�夋嫨" }}</text>
+ <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
+ </view>
+ </view>
+ <view class="empty"></view>
+ <view class="line">
+ <view class="label">
+ <text>*</text>
+ <text>闅愭偅绫诲瀷</text>
+ </view>
+ <view class="value" @click="isShowType = true">
+ <text class="mr6"
+ :style="{ color: param.categoryName ? '#000000' : '#999999' }">{{ param.categoryName ? param.categoryName : "璇烽�夋嫨" }}</text>
+ <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
+ </view>
+ </view>
+ <view class="upload_line">
+ <view class="name">鐜板満鎯呭喌</view>
+ <view class="wrap">
+ <view class="adduser_list_item_ipt1_upload" @click="showUpload = true">
+ <u-icon name="plus" color="rgb(153, 153, 153)" size="20"></u-icon>
+ <view class="mt6">鍥剧墖/瑙嗛</view>
+ </view>
+ <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in submitFileList" :key="i">
+ <u-icon class="close" size="20" name="close-circle-fill" color="red" @click="fileDel(i)"></u-icon>
+ <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image><video v-if="item.type == 1"
+ :src="item.fileurlFull"></video>
+ </view>
+ </view>
+ </view>
+ <view class="empty"></view>
+ <view class="upload_line" style="padding: 15px 0 0">
+ <view class="name" style="margin-bottom: 10rpx">
+ <text style="color: #e42d2d">*</text>
+ <text>鎯呭喌璇存槑</text>
+ </view>
+ <view class="value">
+ <textarea placeholder="璇疯缁嗘弿杩扮幇鍦烘儏鍐碉紝涓嶅皯浜�10涓瓧" minlength="10" v-model="param.content"
+ placeholder-style="color: #999999;" />
+ </view>
+ </view>
+ <view class="empty"></view>
+ <view class="line">
+ <view class="label">
+ <text></text>
+ <text>鎻愭姤浜�</text>
+ </view>
+ <view class="value"><input type="text" disabled placeholder="璇疯緭鍏ユ彁鎶ヤ汉" v-model="param.memberName"
+ placeholder-style="color: #999999;" /></view>
+ </view>
+ <view class="line">
+ <view class="label">
+ <text></text>
+ <text>鑱旂郴鐢佃瘽</text>
+ </view>
+ <view class="value"><input type="text" disabled placeholder="璇疯緭鍏ヨ仈绯荤數璇�" v-model="param.memberPhone"
+ placeholder-style="color: #999999;" /></view>
+ </view>
+ <view class="line">
+ <view class="label">
+ <text></text>
+ <text>鎻愭姤鏃堕棿</text>
+ </view>
+ <view class="value" @click="isShowTime = true">
+ <text class="mr6"
+ :style="{ color: param.submitTime ? '#000000' : '#999999' }">{{ param.submitTime ? param.submitTime : "璇烽�夋嫨" }}</text>
+ <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
+ </view>
+ </view>
+
+ <view class="footer">
+ <view class="footer_btn" @click="onSubmit">鎻愪氦</view>
+ </view>
+ </view>
+ <!-- -->
+ <u-picker keyName="name" :show="isShowCompany" closeOnClickOverlay :columns="deptList" @confirm="seletedCompany"
+ @close="isShowCompany = false" @cancel="isShowCompany = false"></u-picker>
+ <!-- 鍖哄煙 -->
+ <u-picker keyName="name" :show="isShowArea" closeOnClickOverlay :columns="areaOptions" @confirm="seletedArea"
+ @close="isShowArea = false" @cancel="isShowArea = false"></u-picker>
+ <u-picker keyName="name" :show="isShowType" closeOnClickOverlay :columns="areaType" @confirm="seletedType"
+ @close="isShowType = false" @cancel="isShowType = false"></u-picker>
+ <!-- -->
+ <u-datetime-picker :show="isShowTime" :minDate="new Date().getTime()" mode="datetime" closeOnClickOverlay
+ @cancel="isShowTime = false" @close="isShowTime = false" @confirm="seletedDate"></u-datetime-picker>
+ <!-- -->
+ <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
+ <view class="upload_wrap">
+ <view class="btn" @click="uploadImage">閫夋嫨鍥剧墖</view>
+ <view class="btn" @click="uploadVideo">閫夋嫨瑙嗛</view>
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+ import {
+ uploadUrl,
+ DangerCreate,
+ DangerConfigType,
+ deptListPost
+ } from '@/api'
+ import dayjs from 'dayjs'
+ export default {
+ data() {
+ return {
+ param: {},
+ submitFileList: [],
+
+ isShowCompany: false,
+ isShowArea: false,
+ isShowType: false,
+ isShowTime: false,
+ showUpload: false,
+
+ deptList: [],
+ areaOptions: [],
+ areaType: [],
+ }
+ },
+ onLoad(option) {
+ this.initConfig()
+ const userInfo = uni.getStorageSync('userInfo') || {}
+ this.$set(this.param, 'memberName', userInfo.realname)
+ this.$set(this.param, 'memberPhone', userInfo.mobile)
+ this.$set(this.param, 'memberId', userInfo.id)
+ this.$set(this.param, 'submitTime', dayjs().format('YYYY-MM-DD HH:mm:ss'))
+ },
+ mounted() {
+ this.$eventBus.$on('snapshotSel', (option) => {
+ this.$set(this.param, 'checkUserId', option.id)
+ this.$set(this.param, 'applyCheckUserId', option.id)
+ this.$set(this.param, 'checkorName', option.name)
+ })
+ },
+ methods: {
+ onSubmit() {
+ const {
+ param,
+ submitFileList
+ } = this
+ if (!param.companyName) return uni.showToast({
+ title: '璇烽�夋嫨璐d换閮ㄩ棬',
+ icon: 'none'
+ })
+ if (!param.areaName) return uni.showToast({
+ title: '璇烽�夋嫨闅愭偅鍖哄煙',
+ icon: 'none'
+ })
+ if (!param.applyCheckUserId) return uni.showToast({
+ title: '璇烽�夋嫨鎺ユ敹浜�',
+ icon: 'none'
+ })
+ if (!param.categoryName) return uni.showToast({
+ title: '璇烽�夋嫨闅愭偅绫诲瀷',
+ icon: 'none'
+ })
+ if (!param.content) return uni.showToast({
+ title: '璇疯緭鍏ユ儏鍐佃鏄�',
+ icon: 'none'
+ })
+ if (param.content.length < 10) return uni.showToast({
+ title: '鎯呭喌璇存槑涓嶅緱灏忎簬10涓瓧',
+ icon: 'none'
+ })
+
+ DangerCreate({
+ ...param,
+ submitFileList
+ }).then(res => {
+ if (res.code === 200) {
+ this.$jump('/pages/staff/snapshotResult')
+ }
+ })
+ },
+ seletedCompany(e) {
+ const item = e.value[0]
+ this.$set(this.param, 'companyId', item.id)
+ this.$set(this.param, 'companyName', item.name)
+ this.$set(this.param, 'areaId', '')
+ this.$set(this.param, 'areaName', '')
+ DangerConfigType({
+ type: '0',
+ companyId: item.id
+ }).then(res => {
+ this.areaOptions = [res.data]
+ })
+ this.isShowCompany = false
+ },
+ seletedArea(e) {
+ const item = e.value[0]
+ this.$set(this.param, 'areaId', item.id)
+ this.$set(this.param, 'areaName', item.name)
+ console.log(item)
+ if (item.memberIds && item.memberIds.indexOf(',') === -1) {
+ this.$set(this.param, 'checkUserId', item.memberIds)
+ this.$set(this.param, 'applyCheckUserId', item.memberIds)
+ this.$set(this.param, 'checkorName', item.memberNames)
+ } else {
+ this.$set(this.param, 'checkUserId', '')
+ this.$set(this.param, 'applyCheckUserId', '')
+ this.$set(this.param, 'checkorName', '')
+ }
+ this.isShowArea = false
+ },
+ seletedType(e) {
+ const item = e.value[0]
+ this.$set(this.param, 'cateId', item.id)
+ this.$set(this.param, 'categoryName', item.name)
+ console.log(item)
+ this.isShowType = false
+ },
+ seletedSafety(e) {
+
+ },
+ seletedDate(e) {
+ this.$set(this.param, 'submitTime', dayjs(e.value).format('YYYY-MM-DD HH:mm:ss'))
+ this.isShowTime = false
+ },
+ initConfig() {
+ deptListPost({}).then(res => {
+ this.deptList = [res.data]
+ })
+ DangerConfigType({
+ type: '1'
+ }).then(res => {
+ this.areaType = [res.data]
+ })
+ DangerConfigType({
+ type: '0'
+ }).then(res => {
+ this.areaOptions = [res.data]
+ })
+ },
+ selMember() {
+ if (!this.param.areaId) return uni.showToast({
+ title: '璇峰厛閫夋嫨闅愭偅鍖哄煙',
+ icon: 'none'
+ })
+ uni.navigateTo({
+ url: '/pages/staff/memberSel?areaId=' + this.param.areaId
+ })
+ },
+ fileDel(i) {
+ this.submitFileList.splice(i, 1)
+ },
+ 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)
+ console.log('res', res.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()
+ // }
+ }
+ })
+ // }
+ }
+ })
+ },
+ uploadVideo() {
+ this.showUpload = false
+ let that = this
+ 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()
+ }
+ })
+ }
+ })
+ },
+
+ getUser() {}
+ }
+ };
+</script>
+
+<style lang="scss">
+ .main_wrap {
+ padding-bottom: 200rpx;
+
+ .line {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ border-bottom: 1rpx solid #e5e5e5;
+ padding: 30rpx 0;
+
+ .label {
+ font-size: 30rpx;
+ font-weight: 400;
+
+ text {
+ &:nth-child(1) {
+ color: #e42d2d;
+ margin-right: 4rpx;
+ }
+ }
+ }
+
+ .value {
+ flex: 1;
+ height: 100%;
+ margin-left: 30rpx;
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+
+ input {
+ width: 100%;
+ height: 100%;
+ text-align: right;
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+
+ .upload_line {
+ padding: 30rpx 0;
+
+ .wrap {
+ display: flex;
+ flex-wrap: wrap;
+ }
+
+ .adduser_list_item_ipt1_upload {
+ margin-top: 24rpx;
+ width: 120rpx;
+ height: 120rpx;
+ margin-right: 24rpx;
+ border: 2rpx solid #e5e5e5;
+ background: #f7f7f7;
+ color: #666666;
+ font-size: 22rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+
+ .close {
+ position: absolute;
+ right: -20rpx;
+ top: -20rpx;
+ z-index: 9999;
+ }
+
+ image {
+ width: 100%;
+ height: 100%;
+ }
+
+ video {
+ width: 100%;
+ max-height: 120rpx;
+ }
+ }
+ }
+ }
+
+ .upload_wrap {
+ width: 100%;
+
+ .btn {
+ height: 90rpx;
+ line-height: 90rpx;
+ text-align: center;
+ }
+ }
+
+ .footer {
+ width: 100%;
+ padding: 0 30rpx;
+ padding-bottom: env(safe-area-inset-bottom);
+ box-sizing: border-box;
+ position: fixed;
+ left: 0;
+ bottom: 68rpx;
+
+ .footer_btn {
+ width: 100%;
+ height: 88rpx;
+ line-height: 88rpx;
+ text-align: center;
+ background: $uni-color-primary;
+ border-radius: 44rpx;
+ font-size: 32rpx;
+ color: #ffffff;
+ }
+ }
+
+ .empty {
+ width: 750rpx;
+ height: 20rpx;
+ background-color: #f7f7f7;
+ margin: 0 -30rpx;
+ }
+</style>
\ No newline at end of file
diff --git a/h5/pages/staffLogin/login.vue b/h5/pages/staffLogin/login.vue
index a0a5506..510a544 100644
--- a/h5/pages/staffLogin/login.vue
+++ b/h5/pages/staffLogin/login.vue
@@ -71,12 +71,13 @@
data() {
return {
form: {
- username: '18056814089',
- password: '123456',
- code: 1
+ // username: '18056814089',
+ username: '',
+ password: '',
+ code: ''
},
isShowProtocol: false,
- ProtocolFlag: true,
+ ProtocolFlag: false,
captcha: {},
htmlText: ''
}
diff --git a/pda/pages/index/center.vue b/pda/pages/index/center.vue
index 1e91669..0bd09a4 100644
--- a/pda/pages/index/center.vue
+++ b/pda/pages/index/center.vue
@@ -48,7 +48,7 @@
</view>
<view class="line">
<text class="label">鎬昏繍杈撻噺</text>
- <text class="value">{{ item.totalNum }}涓囨敮</text>
+ <text class="value">{{ item.totalNum || item.ioQty}}涓囨敮</text>
</view>
<view class="line" v-if="item.carrierName">
<text class="label">杩愯緭鍏徃</text>
@@ -113,7 +113,7 @@
</view>
<view class="line">
<text class="label">鎬昏繍杈撻噺</text>
- <text class="value">{{ item.totalNum }}涓囨敮</text>
+ <text class="value">{{ item.totalNum || item.ioQty }}涓囨敮</text>
</view>
<view class="line" v-if="item.carrierName">
<text class="label">杩愯緭鍏徃</text>
@@ -525,19 +525,20 @@
flex-wrap: wrap;
.item {
- width: 210rpx;
- height: 80rpx;
- display: flex;
- justify-content: center;
- align-items: center;
+ width: 220rpx;
+ height: 80rpx;
+ line-height: 80rpx;
+ text-align: center;
background: #ffffff;
border-radius: 8rpx;
border: 1rpx solid #999999;
font-size: 30rpx;
color: #222222;
- margin-bottom: 20rpx;
- margin-right: 30rpx;
-
+ margin-bottom: 15rpx;
+ margin-right: 15rpx;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
&:nth-of-type(3n) {
margin-right: 0;
}
diff --git a/pda/pages/index/queueup.vue b/pda/pages/index/queueup.vue
index aad2d5b..0909f05 100644
--- a/pda/pages/index/queueup.vue
+++ b/pda/pages/index/queueup.vue
@@ -56,7 +56,7 @@
</view>
<view class="line">
<text class="label">鎬昏繍杈撻噺</text>
- <text class="value">{{ item.totalNum }}涓囨敮</text>
+ <text class="value">{{ item.totalNum || item.ioQty }}涓囨敮</text>
</view>
<view class="line" v-if="item.carrierName">
<text class="label">杩愯緭鍏徃</text>
diff --git a/pda/pages/index/set.vue b/pda/pages/index/set.vue
index 9764a7d..694261b 100644
--- a/pda/pages/index/set.vue
+++ b/pda/pages/index/set.vue
@@ -88,16 +88,18 @@
margin-bottom: 120rpx;
}
.item {
- width: 210rpx;
+ width: 220rpx;
height: 80rpx;
background: #f3f3f3;
border-radius: 40rpx;
- display: flex;
- justify-content: center;
- align-items: center;
- margin-bottom: 20rpx;
+ line-height: 80rpx;
+ text-align: center;
+ margin-bottom: 15rpx;
font-size: 30rpx;
- margin-right: 30rpx;
+ margin-right: 15rpx;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
&:nth-of-type(3n){
margin-right: 0;
}
diff --git a/screen/src/api/index.js b/screen/src/api/index.js
index 0056ec7..09598d0 100644
--- a/screen/src/api/index.js
+++ b/screen/src/api/index.js
@@ -101,25 +101,13 @@
// 瀹夐槻绠℃帶澶у睆 涓績鏁版嵁
export const getEnergyCenterData = (data) => {
- return instance({
- url: 'visitsAdmin/cloudService/board/api/energy/centerData',
- method: 'get',
- data
- })
+ return request('visitsAdmin/cloudService/board/api/security/centerData', data)
}
// 瀹夐槻绠℃帶澶у睆 鍥尯瀹夐槻璁惧
export const getSecurityDeviceData = (data) => {
- return instance({
- url: 'visitsAdmin/cloudService/board/api/energy/securityDeviceData',
- method: 'get',
- data
- })
+ return request('visitsAdmin/cloudService/board/api/security/securityDeviceData', data)
}
// 瀹夐槻绠℃帶澶у睆 璁垮婊炵暀鎯呭喌
export const getVisitRetentionData = (data) => {
- return instance({
- url: 'visitsAdmin/cloudService/board/api/energy/visitRetentionData',
- method: 'get',
- data
- })
+ return request('visitsAdmin/cloudService/board/api/security/visitRetentionData', data)
}
\ No newline at end of file
diff --git a/screen/src/components/percent.vue b/screen/src/components/percent.vue
index aaf5112..fd8e94a 100644
--- a/screen/src/components/percent.vue
+++ b/screen/src/components/percent.vue
@@ -20,6 +20,7 @@
background-color: #172630;
padding: 4px;
height: 18px;
+ overflow: hidden;
.plan{
height: 10px;
}
diff --git a/screen/src/views/LogisticsEfficiency.vue b/screen/src/views/LogisticsEfficiency.vue
index f7dbdd1..cde3e9f 100644
--- a/screen/src/views/LogisticsEfficiency.vue
+++ b/screen/src/views/LogisticsEfficiency.vue
@@ -20,19 +20,23 @@
<div>绱鍑哄簱閲忕粺璁�</div>
</div>
<div class="tabs">
- <div class="tab active">鏈湀</div>
+ <div class="tab" :class="{ active: activeTab1 == 0 }" @click="tabClick1(0)">鏈湀</div>
<div class="separate"></div>
- <div class="tab">鏈勾</div>
+ <div class="tab" :class="{ active: activeTab1 == 1 }" @click="tabClick1(1)">鏈勾</div>
</div>
<img src="@/assets/images/title@2x.png" class="bg" alt="" />
</div>
<div class="content_wrap">
<div class="content">
- <div class="num">1000000</div>
- <div class="unit_wrap">
+ <div class="num">{{ activeTab1 == 0 ? data1.monthOutTotal : data1.yearOutTotal }}</div>
+ <div class="unit_wrap" v-if="data1.monthOutTotalOnYear || data1.yearOutTotalOnYear">
<span style="color: #869CC9;">鍚屾瘮</span>
- <img src="@/assets/images/ic_up.png" class="icon" alt="">
- <span>10.2%</span>
+ <img
+ v-if="(activeTab1 == 0 && data1.monthOutTotalOnYear > 0) || (activeTab1 == 1 && data1.yearOutTotalOnYear > 0)"
+ src="@/assets/images/ic_up.png" class="icon" alt="">
+ <img v-else src="@/assets/images/ic_down.png" class="icon" alt="">
+ <span>{{ activeTab1 == 0 ? Math.abs(data1.monthOutTotalOnYear) : Math.abs(data1.yearOutTotalOnYear)
+ }}%</span>
</div>
</div>
<div class="train_wrap">
@@ -41,7 +45,8 @@
</div>
<div class="total">
<span>绱鍑哄簱杞︽</span>
- <span><strong>3900</strong><span class="unit">娆�</span></span>
+ <span><strong>{{ activeTab1 == 0 ? data1.monthOutTimes : data1.yearOutTimes }}</strong><span
+ class="unit">娆�</span></span>
</div>
</div>
</div>
@@ -50,14 +55,14 @@
<div class="com_header">
<div class="title">
<img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
- <div>鏈堣兘鑰楀垎鏋�</div>
+ <div>杩愯緭浠诲姟鍒嗘瀽</div>
</div>
<div class="tabs">
- <div class="tab active">杩�7鏃�</div>
+ <div class="tab" :class="{ active: activeTab2 == 0 }" @click="tabClick2(0)">杩�7鏃�</div>
<div class="separate"></div>
- <div class="tab">鏈湀</div>
+ <div class="tab" :class="{ active: activeTab2 == 1 }" @click="tabClick2(1)">鏈湀</div>
<div class="separate"></div>
- <div class="tab">鏈勾</div>
+ <div class="tab" :class="{ active: activeTab2 == 2 }" @click="tabClick2(2)">鏈勾</div>
</div>
<img src="@/assets/images/title@2x.png" class="bg" alt="" />
</div>
@@ -83,13 +88,14 @@
<span class="item addr">鏀惰揣鍗曚綅</span>
<span class="item time">浠诲姟寮�濮嬫椂闂�</span>
</div>
- <div class="line" v-for="i in 7">
- <span class="item flag"><span class="flag_bg">鍑�</span></span>
- <span class="item order">11</span>
- <span class="item id_card">11</span>
- <span class="item status">11</span>
- <span class="item addr">11</span>
- <span class="item time">11</span>
+ <div class="line" v-for="item in dataList3">
+ <span class="item flag"><span :class="{ flag_bg: item.type == 1 || item.type == 3 }">{{ item.type == 1
+ || item.type == 3 ? '鍑�' : '鍏�' }}</span></span>
+ <span class="item order">{{ item.billCode || item.contractNum }}</span>
+ <span class="item id_card">{{ item.carCodeFront }}</span>
+ <span class="item status">{{ statusMap[item.status].label }}</span>
+ <span class="item addr">{{ item.repertotyAddress }}</span>
+ <span class="item time" v-if="item.confirmTaskDate">{{ item.confirmTaskDate.slice(5, 16) }}</span>
</div>
</div>
</div>
@@ -98,12 +104,14 @@
<div class="center_box">
<div class="center_box_one">
<div class="tabs">
- <div class="tab active">
- <img src="@/assets/images/energy_ef/chuku_task_ac.png" alt="">
+ <div class="tab" :class="{ active: activeTab4 == 0 }" @click="tabClick4(0)">
+ <img v-if="activeTab4 == 0" src="@/assets/images/energy_ef/chuku_task_ac.png" alt="">
+ <img v-else src="@/assets/images/energy_ef/chuku_task.png" alt="">
<span>鍑哄簱浠诲姟</span>
</div>
- <div class="tab">
- <img src="@/assets/images/energy_ef/ruku_task.png" alt="">
+ <div class="tab" :style="{ color: activeTab4 == 1 ? '#387df0' : '#d8e4f8' }" @click="tabClick4(1)">
+ <img v-if="activeTab4 == 1" src="@/assets/images/energy_ef/ruku_task_ac.png" alt="">
+ <img v-if="activeTab4 == 0" src="@/assets/images/energy_ef/ruku_task.png" alt="">
<span>鍏ュ簱浠诲姟</span>
</div>
</div>
@@ -112,21 +120,22 @@
<img src="@/assets/images/energy_ef/ic_renwuzongliang@2x.png" alt="">
<div class="content">
<div class="name">褰撳墠浠诲姟閲�</div>
- <div class="num"><span>1000</span>涓囨敮</div>
+ <div class="num"><span>{{ data4.planTaskNum }}</span>涓囨敮</div>
</div>
</div>
<div class="item">
<img src="@/assets/images/energy_ef/ic_wanchengrenwu@2x.png" alt="">
<div class="content">
<div class="name">褰撴棩瀹屾垚浠诲姟鎬婚噺</div>
- <div class="num"><span class="today">1000</span>涓囨敮</div>
+ <div class="num"><span class="today">{{ data4.finishTaskNum }}</span>涓囨敮</div>
</div>
</div>
<div class="item">
<img src="@/assets/images/energy_ef/ic_bili@2x.png" alt="">
<div class="content">
<div class="name">宸插畬鎴愭瘮渚�</div>
- <div class="num"><span class="finish">1000</span>涓囨敮</div>
+ <div class="num" v-if="data4.finishTaskNum && data4.planTaskNum"><span class="finish">{{ ((
+ data4.finishTaskNum / data4.planTaskNum) * 100).toFixed(1) }}%</span>涓囨敮</div>
</div>
</div>
</div>
@@ -143,9 +152,9 @@
<div>鍑哄叆搴撴晥鐜�</div>
</div>
<div class="tabs">
- <div class="tab active">浠婃棩</div>
+ <div class="tab" :class="{ active: activeTab12 == 0 }" @click="tabClick12(0)">浠婃棩</div>
<div class="separate"></div>
- <div class="tab">鏈湀</div>
+ <div class="tab" :class="{ active: activeTab12 == 1 }" @click="tabClick12(1)">鏈湀</div>
</div>
<img src="@/assets/images/title@2x.png" class="bg" alt="" />
</div>
@@ -154,14 +163,16 @@
<img src="@/assets/images/energy_ef/ic_chukuxiaolv@2x.png" alt="">
<div class="content">
<div class="name">鍑哄簱鏁堢巼</div>
- <div class="num"><span>1000</span>涓囨敮/灏忔椂</div>
+ <div class="num"><span>{{ activeTab12 == 0 ? data1.todayInRata : data1.monthInRata }}</span>涓囨敮/灏忔椂
+ </div>
</div>
</div>
<div class="item">
<img src="@/assets/images/energy_ef/ic_rukuxiaolv@2x.png" alt="">
<div class="content">
<div class="name">鍏ュ簱鏁堢巼</div>
- <div class="num"><span class="today">1000</span>涓囨敮/灏忔椂</div>
+ <div class="num"><span class="today">{{ activeTab12 == 0 ? data1.monthOutTotal : data1.yearOutTotal
+ }}</span>涓囨敮/灏忔椂</div>
</div>
</div>
</div>
@@ -177,32 +188,18 @@
<div class="content">
<div class="echart_wrap">
<div class="pie_text">
- <div class="fs30"><strong>300</strong></div>
+ <div class="fs30"><strong>{{ data5 }}</strong></div>
<div>鍏ュ簱鏁伴噺</div>
</div>
<div class="echart" id="echart1"></div>
</div>
<div class="list">
- <div class="item">
+ <div class="item" v-for="item, i in dataList5">
<div class="line">
- <div :style="{ background: colors[0] }" class="icon"></div>
- <div class="text">鍚堣偉鍘�</div>
+ <div :style="{ background: colors[i] }" class="icon"></div>
+ <div class="text">{{ item.name }}</div>
</div>
- <div :style="{ color: colors[0] }" class="num">100涓囨敮 | 55%</div>
- </div>
- <div class="item">
- <div class="line">
- <div :style="{ background: colors[1] }" class="icon"></div>
- <div class="text">闆嗘暎涓績</div>
- </div>
- <div :style="{ color: colors[1] }" class="num">100涓囨敮 | 55%</div>
- </div>
- <div class="item">
- <div class="line">
- <div :style="{ background: colors[2] }" class="icon"></div>
- <div class="text">甯傚叕鍙�</div>
- </div>
- <div :style="{ color: colors[2] }" class="num">100涓囨敮 | 55%</div>
+ <div :style="{ color: colors[i] }" class="num">{{ item.value }}涓囨敮 | {{ item.rate }}%</div>
</div>
</div>
</div>
@@ -218,19 +215,15 @@
<div class="repertory">
<div class="use_ratio">
<div class="header">
- <div>搴撳瓨閲� <span class="num">80/100</span></div>
- <div>鍒╃敤鐜� 88%</div>
+ <div>搴撳瓨閲� <span class="num">{{data1.stockTotal}}/{{data1.stockMax}}</span></div>
+ <div v-if="data1.stockTotal && data1.stockMax">鍒╃敤鐜噞{ ((data1.stockTotal / data1.stockMax) * 100).toFixed(0) }}%</div>
</div>
- <Percent :rate="80" />
+ <Percent v-if="data1.stockTotal && data1.stockMax" :rate="((data1.stockTotal / data1.stockMax) * 100).toFixed(0)" />
</div>
<div class="list">
- <div class="item">
- <div class="la">榛勫北(鏂板埗鐨栫儫)</div>
- <div class="val">400涓囨敮</div>
- </div>
- <div class="item">
- <div class="la">榛勫北(鏂板埗鐨栫儫)</div>
- <div class="val">400涓囨敮</div>
+ <div class="item" v-for="item in dataList6">
+ <div class="la">{{ item.name }}</div>
+ <div class="val">{{item.num}}涓囨敮</div>
</div>
</div>
</div>
@@ -278,10 +271,10 @@
itemGap: 12,
// icon: 'circle',
right: '12px',
- top: '0',
- data: ['鎬诲簱瀛�', '褰撳墠搴撳瓨', '搴撳瓨鍒╃敤鐜�'],
- itemWidth: 20,
- itemHeight: 10,
+ top: '10px',
+ data: ['璁″垝浠诲姟閲�', '浠诲姟瀹屾垚閲�', '璁″垝浠诲姟鏁�'],
+ itemWidth: 12,
+ itemHeight: 4,
textStyle: {
color: '#fff',
borderColor: '#fff'
@@ -291,7 +284,7 @@
left: '3%',
right: '4%',
bottom: '3%',
- top: '16%',
+ top: '18%',
containLabel: true
},
tooltip: {
@@ -313,7 +306,7 @@
axisTick: {
show: false,
},
- data: ['7.1', '7.1', '7.1', '7.1', '7.1'],
+ data: dataList2.value.map(i => i.planDate),
}],
yAxis: [
{
@@ -353,7 +346,7 @@
],
series: [
{
- name: '璁″垝瀹屾垚鏁伴噺',
+ name: '璁″垝浠诲姟閲�',
type: 'bar',
barWidth: 10,
barGap: '60%',
@@ -379,7 +372,7 @@
},
barBorderRadius: [3, 3, 0, 0],
},
- data: [900, 438, 485, 631, 689]
+ data: dataList2.value.map(i => i.planTaskNum)
},
{
name: '浠诲姟瀹屾垚閲�',
@@ -407,7 +400,7 @@
},
barBorderRadius: [3, 3, 0, 0],
},
- data: [438, 485, 631, 689, 900]
+ data: dataList2.value.map(i => i.finishTaskNum)
},
{
name: '璁″垝浠诲姟鏁�',
@@ -423,7 +416,7 @@
position: 'top',
color: '#fff',
},
- data: [485, 631, 389, 224, 287]
+ data: dataList2.value.map(i => i.planTimes)
}
]
})
@@ -451,11 +444,7 @@
labelLine: {
show: false
},
- data: [
- { value: 1048, name: 'Search Engine' },
- { value: 735, name: 'Direct' },
- { value: 580, name: 'Email' }
- ]
+ data: dataList5.value
}
]
}
@@ -634,40 +623,87 @@
})
}
-const dataList1 = ref([])
+const data1 = ref({})
+const activeTab1 = ref(0)
+const activeTab12 = ref(0)
+const tabClick1 = (val) => {
+ activeTab1.value = val
+}
+const tabClick12 = (val) => {
+ activeTab12.value = val
+}
const getData1 = () => {
wlcenterData().then(res => {
- const result = res
+ const result = res.data
+ data1.value = result
})
}
+
const dataList2 = ref([])
+const activeTab2 = ref(0)
+const tabClick2 = (val) => { activeTab2.value = val }
const getData2 = () => {
- wlcenterData().then(res => {
- const result = res
+ wltransportMeasure({ queryType: activeTab2.value }).then(res => {
+ const result = res.data
+ dataList2.value = result
+ initEnergy()
})
}
+
const dataList3 = ref([])
+const statusMap = [
+ { value: 0, label: '寰呯‘璁�' },
+ { value: 1, label: '寰呯鍒�' },
+ { value: 2, label: '绛夊緟鍙彿' },
+ { value: 3, label: '鍏ュ洯绛夊緟' },
+ { value: 4, label: '鏈堝彴绛夊緟' },
+ { value: 5, label: '浣滀笟涓�' },
+ { value: 6, label: '浣滀笟瀹屾垚' },
+ { value: 7, label: '杞Щ涓�' },
+ { value: 8, label: '寮傚父鎸傝捣' },
+ { value: 9, label: '宸叉巿鏉冪鍥�' },
+ { value: 10, label: '宸茬鍥�' },
+ { value: 11, label: '宸茶繃鍙�' },
+ { value: 12, label: '宸插彇娑�' },
+]
const getData3 = () => {
- wlcenterData().then(res => {
- const result = res
+ wlplatformJobList().then(res => {
+ const result = res.data
+ dataList3.value = result
})
}
-const dataList4 = ref([])
+const data4 = ref({})
+const activeTab4 = ref(0)
+const tabClick4 = (val) => { activeTab4.value = val }
const getData4 = () => {
- wlcenterData().then(res => {
- const result = res
+ wljobData({ queryType: activeTab4.value }).then(res => {
+ const result = res.data
+ data4.value = result
})
}
const dataList5 = ref([])
+const data5 = ref(0)
const getData5 = () => {
- wlcenterData().then(res => {
- const result = res
+ wltotalInList().then(res => {
+ const result = res.data || []
+ let count = 0
+ dataList5.value = result.map(i => {
+ i.value = i.num
+ count += i.num
+ return i
+ })
+ dataList5.value.forEach(i => {
+ i.rate = ((i.num / count) * 100).toFixed(0)
+ })
+ data5.value = count
+ initEchart1()
})
}
const dataList6 = ref([])
const getData6 = () => {
- wlcenterData().then(res => {
- const result = res
+ wlstockList().then(res => {
+ const result = res.data
+ dataList6.value = result
})
}
onMounted(() => {
@@ -677,9 +713,7 @@
getData4()
getData5()
getData6()
- return
- initEnergy()
- initEchart1()
+
initMap()
})
@@ -811,10 +845,6 @@
&:nth-of-type(2n) {
background: rgba(27, 64, 97, 0.52);
-
- .flag_bg {
- background: #01ABFE !important;
- }
}
.item {
@@ -828,7 +858,7 @@
flex: 3;
display: flex;
- .flag_bg {
+ span {
width: 22px;
height: 22px;
display: flex;
@@ -838,6 +868,10 @@
background: #00F2F3;
font-weight: 500;
color: #001B3C;
+ }
+
+ .flag_bg {
+ background: #4eacf6;
}
}
@@ -876,6 +910,7 @@
display: flex;
align-items: center;
margin-right: 30px;
+ cursor: pointer;
img {
width: 20px;
@@ -900,12 +935,13 @@
.static_wrap {
display: flex;
- justify-content: space-between;
align-items: center;
margin: 30px 0 54px;
.item {
display: flex;
+ justify-content: center;
+ flex: 1;
img {
width: 68px;
@@ -959,7 +995,6 @@
.echart_map {
width: 100%;
height: 100%;
- border: 1px solid;
}
}
}
@@ -1032,7 +1067,6 @@
justify-content: center;
align-items: center;
height: 200px;
- border: 1px solid;
.echart_wrap {
position: relative;
@@ -1118,7 +1152,9 @@
.list {
margin-top: 22px;
-
+ height: 240px;
+ overflow: auto;
+ scrollbar-width: none;
.item {
width: 100%;
height: 36px;
@@ -1241,6 +1277,10 @@
margin: 0 6px;
}
+ .tab {
+ cursor: pointer;
+ }
+
.active {
color: #0094eb;
}
diff --git a/screen/src/views/SecurityControl.vue b/screen/src/views/SecurityControl.vue
index e2bcac9..a8f450a 100644
--- a/screen/src/views/SecurityControl.vue
+++ b/screen/src/views/SecurityControl.vue
@@ -28,25 +28,26 @@
</div>
<div class="num_wrap">
<div class="la">鎬昏溅浣嶏細</div>
- <div class="val">100</div>
+ <div class="val">{{ data.parkingLotTotal }}</div>
</div>
</div>
<div class="stall_static">
<div class="residue">
<div class="la">鍓╀綑杞︿綅</div>
- <div class="val">50</div>
+ <div class="val">{{ data.freeParkingLot }}</div>
</div>
<div class="total">
<div class="la">杞︿綅鎬绘暟</div>
- <div class="val">50</div>
+ <div class="val">{{ data.parkingLotTotal }}</div>
</div>
<div class="rate">
<div class="la">
<span>杞︿綅浣跨敤鐜�</span>
- <span class="num">50%</span>
+ <span v-if="data.inParkCarTotal && data.parkingLotTotal" class="num">{{ ((data.inParkCarTotal /
+ data.parkingLotTotal) * 100).toFixed(0) }}%</span>
</div>
<div class="val">
- <Percent :rate="50" />
+ <Percent :rate="((data.inParkCarTotal / data.parkingLotTotal) * 100).toFixed(0)" />
</div>
</div>
</div>
@@ -59,22 +60,22 @@
<div class="private_car">
<div class="item">
<div class="name">鍛樺伐杞﹁締</div>
- <div class="num">20</div>
+ <div class="num">{{ data.internalCarTotal }}</div>
</div>
<div class="item">
<div class="name">鐩稿叧鏂硅溅杈�</div>
- <div class="num num2">20</div>
+ <div class="num num2">{{ data.relatedCarTotal }}</div>
</div>
<div class="item">
<div class="name">鏉ヨ杞﹁締</div>
- <div class="num num3">20</div>
+ <div class="num num3">{{ data.visitCarTotal }}</div>
</div>
</div>
<div class="section">
- <div class="item"></div>
- <div class="item"></div>
- <div class="item"></div>
+ <div class="item" :style="{ flex: data.internalCarTotal }"></div>
+ <div class="item" :style="{ flex: data.relatedCarTotal }"></div>
+ <div class="item" :style="{ flex: data.visitCarTotal }"></div>
</div>
<div class="second_title">
<div class="title">
@@ -85,32 +86,19 @@
<div class="car_static">
<div class="echart_wrap">
<div class="pie_text">
- <div class="fs30"><strong>300</strong></div>
+ <div class="fs30"><strong v-if="data.visitJobCarTotal">{{ data.internalJobCarTotal +
+ data.relatedJobCarTotal + data.visitJobCarTotal }}</strong></div>
<div>璐ц溅</div>
</div>
<div class="echart" id="echart1"></div>
</div>
<div class="list">
- <div class="item">
+ <div class="item" v-for="item, i in dataList1">
<div class="line">
- <div :style="{ background: colors[0] }" class="icon"></div>
- <div class="text">鍐呰繍杞﹁締</div>
+ <div :style="{ background: colors[i] }" class="icon"></div>
+ <div class="text">{{ item.name }}</div>
</div>
- <div :style="{ color: colors[0] }" class="num">100</div>
- </div>
- <div class="item">
- <div class="line">
- <div :style="{ background: colors[1] }" class="icon"></div>
- <div class="text">澶栧崗杩愯緭杞﹁締</div>
- </div>
- <div :style="{ color: colors[1] }" class="num">100</div>
- </div>
- <div class="item">
- <div class="line">
- <div :style="{ background: colors[2] }" class="icon"></div>
- <div class="text">甯傚叕鍙稿嵏璐ц溅杈�</div>
- </div>
- <div :style="{ color: colors[2] }" class="num">100</div>
+ <div :style="{ color: colors[i] }" class="num">{{ item.value }}</div>
</div>
</div>
</div>
@@ -125,7 +113,7 @@
<img src="@/assets/images/SecurityControl/title_short@2x.png" class="bg" alt="">
</div>
<div class="num_wrap">
- <div class="num">200</div>
+ <div class="num">{{ data.inParkTotal }}</div>
<img src="@/assets/images/SecurityControl/anfang_ic_data@2x.png" class="bg" alt="">
</div>
</div>
@@ -135,7 +123,7 @@
<img src="@/assets/images/SecurityControl/title_short@2x.png" class="bg" alt="">
</div>
<div class="num_wrap">
- <div class="num">200</div>
+ <div class="num">{{ data.inParkCarTotal }}</div>
<img src="@/assets/images/SecurityControl/anfang_ic_data@2x.png" class="bg" alt="">
</div>
</div>
@@ -145,7 +133,7 @@
<img src="@/assets/images/SecurityControl/title_short@2x.png" class="bg" alt="">
</div>
<div class="num_wrap">
- <div class="num">200</div>
+ <div class="num">{{ data.deviceTotal }}</div>
<img src="@/assets/images/SecurityControl/anfang_ic_data@2x.png" class="bg" alt="">
</div>
</div>
@@ -155,7 +143,7 @@
<img src="@/assets/images/SecurityControl/title_short@2x.png" class="bg" alt="">
</div>
<div class="num_wrap">
- <div class="num">200</div>
+ <div class="num">{{ data.errTotal }}</div>
<img src="@/assets/images/SecurityControl/anfang_ic_data@2x.png" class="bg" alt="">
</div>
</div>
@@ -182,21 +170,24 @@
<img src="@/assets/images/SecurityControl/staff_ic_neibu@2x.png" alt="">
<div class="content">
<div class="name">鍐呴儴鍛樺伐</div>
- <div class="num"><span>1000</span> | 66.6%</div>
+ <div class="num" v-if="data.internalTotal && data.inParkTotal"><span>{{ data.internalTotal }}</span> |
+ {{ ((data.internalTotal / data.inParkTotal) * 100).toFixed(1) }}%</div>
</div>
</div>
<div class="item">
<img src="@/assets/images/SecurityControl/staff_ic_xiangguanfang@2x.png" alt="">
<div class="content">
<div class="name">闀挎湡鐩稿叧鏂�</div>
- <div class="num today"><span>1000</span> | 66.6%</div>
+ <div class="num today" v-if="data.relatedTotal && data.inParkTotal"><span>{{ data.relatedTotal
+ }}</span> | {{ ((data.relatedTotal / data.inParkTotal) * 100).toFixed(1) }}%</div>
</div>
</div>
<div class="item">
<img src="@/assets/images/SecurityControl/staff_ic_fangke@2x.png" alt="">
<div class="content">
<div class="name">鍦ㄥ洯璁垮</div>
- <div class="num finish"><span>1000</span> | 66.6%</div>
+ <div class="num finish" v-if="data.visitTotal && data.inParkTotal"><span>{{ data.visitTotal }}</span>
+ | {{ ((data.visitTotal / data.inParkTotal) * 100).toFixed(1) }}%</div>
</div>
</div>
</div>
@@ -351,26 +342,21 @@
<div class="sa_static">
<div class="echart_wrap">
<div class="pie_text">
- <div class="fs30"><strong>300</strong></div>
+ <div class="fs30"><strong v-if="dataListT2 && dataListT2.length == 2">{{ dataListT2[0].value +
+ dataListT2[1].value }}</strong></div>
<div>鎬昏</div>
</div>
<div class="echart" id="echart2"></div>
</div>
<div class="list">
- <div class="item">
+ <div class="item" v-for="item, i in dataListT2">
<div class="line">
- <div :style="{ background: colors[1] }" class="icon"></div>
- <div class="text">鍦ㄧ嚎</div>
+ <div :style="{ background: colors[i] }" class="icon"></div>
+ <div class="text">{{ item.name }}</div>
</div>
- <div :style="{ color: colors[1] }" class="num">100</div>
+ <div :style="{ color: colors[i] }" class="num">{{ item.value }} | {{ item.rate }}%</div>
</div>
- <div class="item">
- <div class="line">
- <div :style="{ background: colors[2] }" class="icon"></div>
- <div class="text">绂荤嚎</div>
- </div>
- <div :style="{ color: colors[2] }" class="num">100</div>
- </div>
+
</div>
</div>
<div class="table">
@@ -381,22 +367,18 @@
<div>绂荤嚎鏁�</div>
<div>鍦ㄧ嚎鐜�</div>
</div>
- <div class="line">
- <div class="driver">闂ㄧ璁惧</div>
- <div>10</div>
- <div>10</div>
- <div>10</div>
- <div>10</div>
- </div>
- <div class="separate"></div>
- <div class="line">
- <div class="driver">闂ㄧ璁惧</div>
- <div>10</div>
- <div>10</div>
- <div>10</div>
- <div>10</div>
- </div>
- <div class="separate"></div>
+ <template v-for="item, i in dataList2">
+ <div class="line">
+ <div class="driver">{{ item.deviceType }}</div>
+ <div>{{ item.totalNum }}</div>
+ <div>{{ item.onlineNum }}</div>
+ <div>{{ item.offlineDeviceNum }}</div>
+ <div v-if="item.onlineNum && item.totalNum">{{ ((item.onlineNum / item.totalNum) * 100).toFixed(0) }}%
+ </div>
+ </div>
+ <div class="separate"></div>
+ </template>
+
</div>
</div>
</div>
@@ -414,18 +396,14 @@
<div class="dept">鎷滆閮ㄩ棬</div>
<div class="dept">瓒呮椂鏃堕暱</div>
</div>
- <div class="line">
- <div>name</div>
- <div class="dept">缁煎悎绠$悊绉�</div>
- <div class="dept">10:21</div>
- </div>
- <div class="separate"></div>
- <div class="line">
- <div>name</div>
- <div class="dept">缁煎悎绠$悊绉�</div>
- <div class="dept">10:21</div>
- </div>
- <div class="separate"></div>
+ <template v-for="item in dataList3">
+ <div class="line">
+ <div>{{ item.name }}</div>
+ <div class="dept">{{ item.companyName }}</div>
+ <div class="dept">{{ item.timeOutMinuteT }}</div>
+ </div>
+ <div class="separate"></div>
+ </template>
</div>
</div>
</div>
@@ -438,11 +416,12 @@
import VScaleScreen from 'v-scale-screen'
import Percent from '@/components/percent.vue'
import dayjs from 'dayjs'
+import duration from 'dayjs/plugin/duration'
+dayjs.extend(duration)
import * as echarts from 'echarts'
import { getEnergyCenterData, getSecurityDeviceData, getVisitRetentionData } from '@/api'
-const colors = ['#FEAF01', '#01ABFE', '#51F9E4']
const weekMap = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�',]
const date = ref(dayjs().format('YYYY.MM.DD'))
const week = ref(weekMap[new Date().getDay()])
@@ -515,8 +494,18 @@
myChart.resize()
})
}
+
+const dataList1 = ref([])
const initEchart1 = () => {
const myChart = echarts.init(document.getElementById('echart1'))
+ const temp = []
+ temp.push({ name: '鍐呰繍杞﹁締', value: data.value.internalJobCarTotal })
+ temp.push({ name: '澶栧崗杩愯緭杞﹁締', value: data.value.relatedJobCarTotal })
+ temp.push({ name: '甯傚叕鍙稿嵏璐ц溅杈�', value: data.value.visitJobCarTotal })
+ temp.sort((a, b) => {
+ return a.value - b.value
+ })
+ dataList1.value = temp
const option = {
series: [
{
@@ -534,11 +523,7 @@
labelLine: {
show: false
},
- data: [
- { value: 1048, name: 'Search Engine' },
- { value: 735, name: 'Direct' },
- { value: 580, name: 'Email' }
- ]
+ data: temp
}
]
}
@@ -547,6 +532,8 @@
myChart.resize()
})
}
+
+const colors = ['#FEAF01', '#01ABFE', '#51F9E4']
const initEchart2 = () => {
const myChart = echarts.init(document.getElementById('echart2'))
const option = {
@@ -566,11 +553,7 @@
labelLine: {
show: false
},
- data: [
- { value: 1048, name: 'Search Engine' },
- { value: 735, name: 'Direct' },
- { value: 580, name: 'Email' }
- ]
+ data: dataListT2.value
}
]
}
@@ -723,14 +706,59 @@
myChart.resize()
})
}
-const ininDate = () => {
- getEnergyCenterData()
+
+const data = ref({})
+const getData1 = () => {
+ getEnergyCenterData().then(res => {
+ const result = res.data
+ data.value = result
+ initEchart1()
+ })
}
+
+const dataList2 = ref([])
+const dataListT2 = ref([])
+const getData2 = () => {
+ getSecurityDeviceData().then(res => {
+ const result = res.data
+ let temp = []
+ let online = 0
+ let outline = 0
+ dataList2.value = result.map(item => {
+ online += item.onlineNum
+ outline += item.offlineDeviceNum
+ return item
+ })
+ if (online >= outline) {
+ temp.push({ name: '鍦ㄧ嚎', value: online, rate: ((online / (online + outline)) * 100).toFixed(1) })
+ temp.push({ name: '绂荤嚎', value: outline, rate: ((outline / (online + outline)) * 100).toFixed(1) })
+ } else {
+ temp.push({ name: '绂荤嚎', value: outline, rate: ((outline / (online + outline)) * 100).toFixed(1) })
+ temp.push({ name: '鍦ㄧ嚎', value: online, rate: ((online / (online + outline)) * 100).toFixed(1) })
+ }
+
+ dataListT2.value = temp
+ initEchart2()
+ })
+}
+
+const dataList3 = ref([])
+const getData3 = () => {
+ getVisitRetentionData().then(res => {
+ const result = res.data || []
+ dataList3.value = result.map(i => {
+ i.timeOutMinuteT = dayjs.duration(i.timeOutMinute * 60 * 1000).format('HH:mm')
+ return i
+ })
+ })
+}
+
onMounted(() => {
- ininDate()
+ getData1()
+ getData2()
+ getData3()
initEchart3()
- initEchart1()
- initEchart2()
+ // initEchart1()
})
@@ -1293,6 +1321,7 @@
flex: 1;
margin-right: 20px;
position: relative;
+
.content {
display: flex;
@@ -1406,9 +1435,11 @@
background: linear-gradient(180deg, #021F4A 0%, #054281 100%), linear-gradient(180deg, #011738 0%, rgba(5, 66, 129, 0.26) 100%), #00141F;
border-radius: 2px;
border: 1px solid rgba(12, 153, 236, 0.68);
- .icon{
+
+ .icon {
width: 30px;
}
+
.top {
width: 12px;
height: 12px;
diff --git a/screen/vite.config.js b/screen/vite.config.js
index 1afa5c0..4074074 100644
--- a/screen/vite.config.js
+++ b/screen/vite.config.js
@@ -25,7 +25,7 @@
server: {
proxy: {
"/gateway_interface": {
- // target: "http://192.168.0.103:10010",
+ // target: "http://192.168.0.138:10010",
// target: "http://10.50.250.253:8088/gateway_interface",
target: "http://192.168.0.173/gateway_interface",
changeOrigin: true,
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkInterfaceTestCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkInterfaceTestCloudController.java
index 19b4846..139df94 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkInterfaceTestCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkInterfaceTestCloudController.java
@@ -100,6 +100,18 @@
public ApiResponse<BaseResponse> testBroadcast(@RequestBody CustomBroadcastRequest request, HttpServletResponse response) {
return ApiResponse.success( HKService.customBroadcast(request));
}
+ @ApiOperation("銆愭捣搴枫�戞祴璇曡溅杈嗛绾�")
+ @PostMapping("/testParkReservation")
+ @LoginNoRequired
+ public ApiResponse<BaseResponse> testParkReservation(@RequestBody ParkReservationAddRequest param, HttpServletResponse response) {
+ return ApiResponse.success( HKService.parkReservationAddition(param));
+ }
+ @ApiOperation("銆愭捣搴枫�戞祴璇曡溅杈嗛绾﹀彇娑�")
+ @PostMapping("/testParkReservationDeletion")
+ @LoginNoRequired
+ public ApiResponse<BaseResponse> testParkReservationDeletion(@RequestBody ParkReservationDelRequest param, HttpServletResponse response) {
+ return ApiResponse.success( HKService.parkReservationDeletion(param));
+ }
@ApiOperation("銆愭捣搴枫�戣幏鍙栦唬鍔炲垪琛�")
@PostMapping("/getTodoListPage")
@LoginNoRequired
--
Gitblit v1.9.3