From 44dd2c7c73d5fead948902cad2695ae30d4620e2 Mon Sep 17 00:00:00 2001 From: liukangdong <898885815@qq.com> Date: 星期四, 24 十月 2024 09:50:29 +0800 Subject: [PATCH] 大屏 --- screen/src/assets/images/LogisticsCenter/bg_number@2x.png | 0 h5_meeting/utils/config.js | 4 screen/src/assets/images/LogisticsCenter/position.png | 0 screen/src/assets/images/FireFighting/xiaofang_ic_baojing@2x.png | 0 screen/src/assets/images/FireFighting/xiaofang_ar_left@2x.png | 0 h5_meeting/pages/index/index.vue | 3 screen/src/views/LogisticsCenter.vue | 1312 ++++++++++++++++++++ screen/src/assets/images/FireFighting/xiaofang_ic_zaixian@2x.png | 0 admin/src/components/common/CommonHeader.vue | 2 pda/pages/index/center.vue | 2 admin/src/components/operation/HiddenDangerParam.vue | 23 admin/src/views/meeting/components/OperaRoomsWindow.vue | 4 h5/manifest.json | 7 screen/src/views/EnergyConsum.vue | 9 h5/pages/staff/meetingSubOrder.vue | 706 +++++----- h5/utils/config.js | 2 screen/src/assets/images/FireFighting/xiaofang_ic_guzhang@2x.png | 0 screen/src/assets/images/LogisticsCenter/ic_jinriweichu@2x.png | 0 screen/src/views/LogisticsEfficiency.vue | 7 screen/src/assets/images/FireFighting/xiaofang_ic_lixian@2x.png | 0 screen/src/router/index.js | 22 admin/package.json | 1 screen/src/assets/images/ic_jindu@2x.png | 0 screen/src/assets/images/LogisticsCenter/bottom.png | 0 screen/src/assets/images/FireFighting/ic_tibao@2x.png | 0 admin/src/views/platform/LogisticsRecord/subscribe.vue | 4 admin/src/views/platform/index.vue | 2 screen/src/assets/images/FireFighting/bg_wendu@2x.png | 0 screen/src/assets/images/FireFighting/ic_location@2x.png | 0 screen/src/assets/images/FireFighting/ic_shidu@2x.png | 0 screen/src/assets/images/FireFighting/ic_chuli@2x.png | 0 admin/src/views/task/dangetDetail.vue | 35 h5/.gitignore | 1 screen/src/assets/images/FireFighting/ic_weixiu@2x.png | 0 screen/src/views/SecurityControl.vue | 7 screen/src/assets/images/LogisticsCenter/ic_search@2x.png | 0 screen/src/assets/images/FireFighting/bg@2x.png | 0 screen/src/assets/images/LogisticsCenter/ic_title@2x.png | 0 screen/src/assets/images/FireFighting/ic_wendu@2x.png | 0 screen/src/assets/images/FireFighting/xiaofang_ic_weizhi@2x.png | 0 screen/src/assets/images/FireFighting/xiaofang_ic_pingbi@2x.png | 0 h5_meeting/manifest.json | 44 admin/src/components/common/UploadAvatarImage.vue | 49 screen/src/assets/images/LogisticsCenter/bg@2x.png | 0 screen/src/assets/images/LogisticsCenter/ic_jinrichuku@2x.png | 0 screen/src/assets/images/FireFighting/ic_title_green@2x.png | 0 screen/src/assets/images/LogisticsCenter/ic_jinrijihua@2x.png | 0 h5/pages/driver/queueUp.vue | 2 /dev/null | 0 h5/pages/driver/queueUpRecord.vue | 7 screen/src/assets/images/FireFighting/ic_gaojing_blue@2x.png | 0 screen/src/assets/images/FireFighting/xiaofang_ar_right@2x.png | 0 screen/src/assets/images/FireFighting/ic_gaojing_red@2x.png | 0 screen/src/assets/images/FireFighting/468@2x.png | 0 admin/src/views/meeting/components/OperaBookingsWindow.vue | 145 - screen/src/views/FireFighting.vue | 1500 +++++++++++++++++++++++ 56 files changed, 3,391 insertions(+), 509 deletions(-) diff --git a/admin/package.json b/admin/package.json index 0d777f2..78ce443 100644 --- a/admin/package.json +++ b/admin/package.json @@ -4,6 +4,7 @@ "private": true, "scripts": { "serve": "vue-cli-service serve", + "dev": "vue-cli-service serve", "pro": "vue-cli-service serve --mode production", "test": "vue-cli-service serve --mode test", "build": "vue-cli-service build --mode production", diff --git a/admin/src/components/common/CommonHeader.vue b/admin/src/components/common/CommonHeader.vue index 05c8f4c..19c4196 100644 --- a/admin/src/components/common/CommonHeader.vue +++ b/admin/src/components/common/CommonHeader.vue @@ -112,7 +112,7 @@ mounted() { // console.log('userInfo',this.userInfo); if (!this.userInfo.needChangePwd || this.userInfo.needChangePwd == '0') { - this.visible.changePwd = true + // this.visible.changePwd = true } }, diff --git a/admin/src/components/common/UploadAvatarImage.vue b/admin/src/components/common/UploadAvatarImage.vue index 72f91b9..dfd5d22 100644 --- a/admin/src/components/common/UploadAvatarImage.vue +++ b/admin/src/components/common/UploadAvatarImage.vue @@ -1,16 +1,9 @@ <template> <div> - <el-upload - class="avatar-uploader" - accept=".png,.jpg,.jpeg" - :style="customStyle" - :action="uploadImgUrl" - :data="uploadData" - :show-file-list="false" - :on-success="handleAvatarSuccess" - :on-error="uploadError" + <el-upload class="avatar-uploader" accept=".png,.jpg,.jpeg" :style="customStyle" :action="uploadImgUrl" + :data="uploadData" :show-file-list="false" :on-success="handleAvatarSuccess" :on-error="uploadError" :before-upload="beforeAvatarUpload"> - <img v-if=" file.imgurlfull" style="width: 100%;" :src="file.imgurlfull" :style="customStyle" class="avatar"> + <img v-if="file.imgurlfull" style="width: 100%;" :src="file.imgurlfull" :style="customStyle" class="avatar"> <div v-else :style="customStyle"> <i class="el-icon-plus avatar-uploader-icon"></i> <div class="tips-style">{{ tipsLabel }}</div> @@ -21,11 +14,12 @@ </template> <script> +import { Loading } from 'element-ui' export default { props: { file: { type: Object, - default: () => {} + default: () => { } }, tipsLabel: '', customStyle: { @@ -36,6 +30,7 @@ }, data() { return { + loading: null, uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/upload' } }, @@ -43,10 +38,13 @@ methods: { // 涓婁紶鍥剧墖 handleAvatarSuccess(res, file) { + this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� + this.loading.close() + }) if (res.code == 200) { let { data } = res - this.file.imgurl = data.imgaddr; - this.file.imgurlfull = data.url; + this.file.imgurl = data.imgaddr + this.file.imgurlfull = data.url this.$message.success('涓婁紶鎴愬姛') this.$emit('uploadSuccess', { imgurl: data.imgaddr, imgurlfull: data.url, name: data.originname }) } else { @@ -56,10 +54,19 @@ }, uploadError() { this.$message.error('涓婁紶澶辫触') + this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� + this.loading.close() + }) this.$emit('uploadEnd') }, // // 鎷︽埅 beforeAvatarUpload(file) { + this.loading = Loading.service({ + lock: true, + text: 'Loading', + spinner: 'el-icon-loading', + background: 'rgba(0, 0, 0, 0.7)' + }) this.$emit('uploadBegin') return true } @@ -69,10 +76,12 @@ <style lang="scss" scoped> $image-width: 90px; + .avatar-uploader { width: $image-width; height: $image-width; } + ::v-deep .el-upload { border: 1px dashed #d9d9d9; border-radius: 6px; @@ -80,9 +89,11 @@ position: relative; overflow: hidden; } + .avatar-uploader .el-upload:hover { border-color: #409EFF; } + .avatar-uploader-icon { line-height: 90px; font-size: 28px; @@ -91,11 +102,13 @@ height: $image-width; text-align: center; } + .avatar { width: 90px; max-height: 90px; display: block; } + .tips-style { height: 13px; font-size: 13px; @@ -105,22 +118,24 @@ } </style> <style lang="scss" scoped> -::v-deep .el-upload--picture-card{ +::v-deep .el-upload--picture-card { width: 90px !important; height: 90px !important; } + ::v-deep .el-upload-list__item { width: 90px !important; height: 90px !important; } + .icon { - -webkit-transform: translate(-50%,-50%); - -ms-transform: translate(-50%,-50%); + -webkit-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); transform: translate(0%, -85%); } + ::v-deep .el-upload-list__item { width: 90px !important; height: 90px !important; } </style> - diff --git a/admin/src/components/operation/HiddenDangerParam.vue b/admin/src/components/operation/HiddenDangerParam.vue index 0205647..18cc589 100644 --- a/admin/src/components/operation/HiddenDangerParam.vue +++ b/admin/src/components/operation/HiddenDangerParam.vue @@ -61,6 +61,7 @@ :action="uploadImgUrl" :show-file-list="false" :on-success="uploadAvatarSuccess" + :on-error="uploadError" :before-upload="beforeUpload" > <div class="upload_wrap"> @@ -104,6 +105,7 @@ import dayjs from 'dayjs' import { allList, memberList } from '@/api/business/hiddenDangerParam' import { create } from '@/api/business/hiddenDanger' +import { Loading } from 'element-ui' export default { extends: BaseOpera, components: { @@ -112,6 +114,7 @@ data () { return { isShowModal: false, + loadingInstance: false, param: {}, userInfo: this.$store.state.userInfo, uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch', @@ -169,12 +172,30 @@ this.memberList = arr }, beforeUpload (file) { - if (['video/mp4', 'video/ogg', 'video/flv', 'video/avi', 'video/wmv', 'video/rmvb', 'image/jpeg', 'image/png', 'image/gif'].indexOf(file.type) == -1) { + if (['video/mp4', 'video/ogg', 'video/flv', 'video/avi', 'video/wmv', 'video/rmvb', 'image/jpeg','image/jpg', 'image/png', 'image/gif'].indexOf(file.type) == -1) { this.$message.error('璇蜂笂浼犳纭殑瑙嗛/鍥剧墖鏍煎紡') return false } + this.loadingInstance = Loading.service({ + lock: true, + text: 'Loading', + spinner: 'el-icon-loading', + background: 'rgba(0, 0, 0, 0.7)' + }) + }, + uploadError() { + this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� + if(this.loadingInstance){ + this.loadingInstance.close() + } + }) }, uploadAvatarSuccess (file) { + this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� + if(this.loadingInstance){ + this.loadingInstance.close() + } + }) console.log('file', file) const item = file.data[0] if (['.mp4', '.avi', '.flv', '.wmv'].some(char => item.imgaddr.includes(char))) { diff --git a/admin/src/views/meeting/components/OperaBookingsWindow.vue b/admin/src/views/meeting/components/OperaBookingsWindow.vue index 3f5b2c7..39adf61 100644 --- a/admin/src/views/meeting/components/OperaBookingsWindow.vue +++ b/admin/src/views/meeting/components/OperaBookingsWindow.vue @@ -1,88 +1,51 @@ <template> - <GlobalAlertWindow - :title="title" - :visible.sync="visible" - :confirm-working="isWorking" - @confirm="confirm" - width="840px" - > + <GlobalAlertWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm" + width="840px"> <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="锛�"> <el-form-item label="鍏宠仈浼氳瀹�" prop="roomId"> - <el-select - v-model="form.roomId" - filterable - clearable - :disabled="isEdit" - placeholder="璇烽�夋嫨鍏宠仈浼氳瀹�" - @change="selectRoom" - > + <el-select v-model="form.roomId" filterable clearable :disabled="isEdit" placeholder="璇烽�夋嫨鍏宠仈浼氳瀹�" + @change="selectRoom"> <el-option v-for="item in rooms()" :key="item.id" :value="item.id" :label="item.name" /> </el-select> </el-form-item> <el-form-item label="棰勫畾鏃ユ湡" prop="date"> - <el-date-picker - :disabled="isEdit" - v-model="form.date" - value-format="yyyy-MM-dd" - placeholder="璇烽�夋嫨棰勫畾鏃ユ湡" - @change="selectDate" - ></el-date-picker> + <el-date-picker :disabled="isEdit" v-model="form.date" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨棰勫畾鏃ユ湡" + @change="selectDate"></el-date-picker> </el-form-item> <el-form-item label="棰勫畾鏃堕棿" prop="times"> <div class="time-style"> - <div - class="time-item" - v-for="(item, index) in timelist" - :key="item.id" - :class="{ - 'time-item-sel': form.times.indexOf(index)!=-1, - 'time-item-disable': item.isUse, - 'disable': item.bookingTimeId - }" - @click="selectTimes(index, item)" - >{{ `${item.startTime}-${item.endTime}` }}</div> + <div class="time-item" v-for="(item, index) in timelist" :key="item.id" :class="{ + 'time-item-sel': form.times.indexOf(index) != -1, + 'time-item-disable': item.isUse, + 'disable': item.bookingTimeId + }" @click="selectTimes(index, item)">{{ `${item.startTime}-${item.endTime}` }}</div> </div> </el-form-item> <el-form-item label="浼氳涓婚" prop="name"> - <el-input v-model="form.name" placeholder="璇疯緭鍏ヤ細璁富棰�" :maxlength="30" v-trim/> + <el-input v-model="form.name" placeholder="璇疯緭鍏ヤ細璁富棰�" :maxlength="30" v-trim /> </el-form-item> - <el-form-item label="鍙備細浜哄憳"> - <!-- <el-input style="width:40%" disabled v-model="sysList" placeholder="閫夋嫨鍙備細浜哄憳" v-trim/> --> - <el-select - v-model="form.sysList" - filterable - clearable - multiple - placeholder="閫夋嫨閮ㄩ棬鎴愬憳" - > - <el-option - v-for="item in sysList" - :key="item.id" - :value="item.id" - :label="item.department?`${item.department.name}-${item.realname}`:item.realname" - ></el-option> - <!-- <el-option :key="1" :value="1" label="绂佺敤" /> --> - </el-select> - </el-form-item> + <div class="df_ac"> + <el-form-item label="鍙備細浜哄憳"> + <el-select v-model="form.sysList" filterable clearable multiple placeholder="閫夋嫨閮ㄩ棬鎴愬憳"> + <el-option v-for="item in sysList" :key="item.id" :value="item.id" + :label="item.department ? `${item.department.name}-${item.realname}` : item.realname"></el-option> + <!-- <el-option :key="1" :value="1" label="绂佺敤" /> --> + </el-select> + </el-form-item> + <el-form-item class="ml10" label-width="140px" label="鏄惁閫氱煡鍙備細浜哄憳"> + <el-radio v-model="form.joinNotice" :label="1">涓嶉�氱煡</el-radio> + <el-radio v-model="form.joinNotice" :label="0">閫氱煡</el-radio> + </el-form-item> + </div> <el-form-item label="浼氳鍐呭" prop="content"> - <el-input - type="textarea" - v-model="form.content" - :maxlength="300" - show-word-limit - :autosize="{ minRows: 4, maxRows: 12}" - placeholder="璇疯緭鍏ヤ細璁唴瀹�" - v-trim - /> + <el-input type="textarea" v-model="form.content" :maxlength="300" show-word-limit + :autosize="{ minRows: 4, maxRows: 12 }" placeholder="璇疯緭鍏ヤ細璁唴瀹�" v-trim /> </el-form-item> <el-form-item v-if="projectList.length" label="閫夋嫨鏈嶅姟椤圭洰" prop="projectList"> <el-checkbox-group v-model="form.projectList"> - <el-checkbox - v-for="project in projectList" - :label="project.id" - :key="project.id" - >{{project.name}}</el-checkbox> + <el-checkbox v-for="project in projectList" :label="project.id" + :key="project.id">{{ project.name }}</el-checkbox> </el-checkbox-group> </el-form-item> <el-form-item label="浼氳闄勪欢" prop="fileList"> @@ -90,24 +53,16 @@ <el-button type="primary" icon="el-icon-upload" @click="$refs.upFile.click()">浼氳闄勪欢</el-button> </div> <div class="data-list"> - <FileLink - :links="form.fileList" - linkName="fileFullUrl" - /> + <FileLink :links="form.fileList" linkName="fileFullUrl" /> </div> </el-form-item> <el-form-item label="浼氳澶囨敞" prop="remark"> - <el-input type="textarea" v-model="form.remark" placeholder="璇疯緭鍏ヤ細璁娉�" v-trim/> + <el-input type="textarea" v-model="form.remark" placeholder="璇疯緭鍏ヤ細璁娉�" v-trim /> </el-form-item> <input type="file" @change="upFiles" ref="upFile" style="display: none;" /> </el-form> - <el-dialog - title="浼氳瀹ら绾︽儏鍐�" - :visible.sync="isShowDetail" - append-to-body - width="600px" - > + <el-dialog title="浼氳瀹ら绾︽儏鍐�" :visible.sync="isShowDetail" append-to-body width="600px"> <div class="detail_modal"> <div class="h1">{{ activeInfo.meetingName }}</div> <div class="line"> @@ -144,7 +99,7 @@ name: 'OperaBookingsWindow', extends: BaseOpera, components: { GlobalAlertWindow, FileLink }, - data () { + data() { return { // 琛ㄥ崟鏁版嵁 form: { @@ -158,6 +113,7 @@ startTime: '', endTime: '', times: [], + joinNotice: 1, content: '', sysList: [], fileList: [] @@ -193,7 +149,7 @@ } }, inject: ['rooms'], - created () { + created() { this.config({ api: '/meeting/bookings', 'field.id': 'id' @@ -214,7 +170,7 @@ * @title 绐楀彛鏍囬 * @target 缂栬緫鐨勫璞� */ - open (title, target) { + open(title, target) { this.title = title this.visible = true this.timelist = [] @@ -242,7 +198,7 @@ this.selectRoom(this.form.roomId) }) }, - selectRoom (objId) { + selectRoom(objId) { this.getTimes() findListByObjId({ objId: objId, @@ -252,11 +208,11 @@ this.projectList = res }) }, - selectDate (v) { + selectDate(v) { // console.log(v); this.getTimes() }, - getTimes (isInit = false) { + getTimes(isInit = false) { this.form.times = [] this.timelist = [] @@ -293,7 +249,7 @@ }) } }, - getDetail (id) { + getDetail(id) { BookDetailById({ id }).then(res => { @@ -301,7 +257,7 @@ this.isShowDetail = true }) }, - selectTimes (index, item) { + selectTimes(index, item) { if (item.bookingTimeId) { this.getDetail(item.bookingTimeId) return @@ -331,7 +287,7 @@ } // console.log(this.form.times); }, - upFiles (file) { + upFiles(file) { const formdate = new FormData() this.isUploading = true formdate.append('file', file.target.files[0]) @@ -352,7 +308,7 @@ this.$refs.upFile.value = null }, // 纭鏂板缓 - __confirmCreate () { + __confirmCreate() { this.$refs.form.validate((valid) => { // debugger if (!valid) { @@ -401,7 +357,7 @@ }) }, // 纭淇敼 - __confirmEdit () { + __confirmEdit() { this.$refs.form.validate((valid) => { if (!valid) { return @@ -463,6 +419,7 @@ display: flex; flex-wrap: wrap; cursor: pointer; + .time-item { margin-right: 8px; margin-bottom: 8px; @@ -479,46 +436,54 @@ border: #cccccc solid 1px; cursor: pointer; } + .time-item-sel { border-color: $primary-color; background-color: #f6f9fe; color: $primary-color; } + .time-item-disable { color: #fff; border-color: #cccccc; background-color: #cccccc; } - .disable{ + + .disable { border-color: #bed6f9; background-color: #bed6f9; color: #fff; } } + .detail_modal { padding: 20px 16px; + .title { text-align: center; font-weight: 600; font-size: 16px; margin-bottom: 20px; } + .h1 { font-weight: 600; font-size: 16px; margin-bottom: 15px; } + .line { display: flex; margin-bottom: 10px; + .label { width: 70px; color: #888888; } + .value { color: #333333; } } } - </style> diff --git a/admin/src/views/meeting/components/OperaRoomsWindow.vue b/admin/src/views/meeting/components/OperaRoomsWindow.vue index 46e53f5..798bb36 100644 --- a/admin/src/views/meeting/components/OperaRoomsWindow.vue +++ b/admin/src/views/meeting/components/OperaRoomsWindow.vue @@ -202,11 +202,13 @@ }, uploadAvatarSuccess(file) { console.log('file', file) - this.form.multifileList.push({ + let temp = [] + temp.push({ fileurl: file.imgurl, fileurlFull: file.imgurlfull, type: 1 }) + this.form.multifileList = temp this.$set(this.form, 'videourl', file.imgurl) this.$set(this.form, 'videoFullUrl', file.imgurlfull) }, diff --git a/admin/src/views/platform/LogisticsRecord/subscribe.vue b/admin/src/views/platform/LogisticsRecord/subscribe.vue index 4c2a070..3673592 100644 --- a/admin/src/views/platform/LogisticsRecord/subscribe.vue +++ b/admin/src/views/platform/LogisticsRecord/subscribe.vue @@ -278,9 +278,13 @@ const param = this.param param.inReason = this.reasonList.find(item => param.reasonId == item.id).reason if (valid) { + this.subLoading = true platformBooksApply({ ...param }).then(res => { this.getList() + this.subLoading = false this.isShowEdit = false + }, () => { + this.subLoading = false }) } }) diff --git a/admin/src/views/platform/index.vue b/admin/src/views/platform/index.vue index 7b3ed4a..6c7401a 100644 --- a/admin/src/views/platform/index.vue +++ b/admin/src/views/platform/index.vue @@ -313,7 +313,7 @@ if (item.newStartDate) { const timeNum = time.getTime() - new Date(item.newStartDate).getTime() if (timeNum > 3600000) { - item.startDateTemp = dayjs.duration(timeNum).format('H灏忔椂m鍒唖s绉�') + item.startDateTemp = dayjs.duration(timeNum).format('H灏忔椂m鍒唖绉�') } else { item.startDateTemp = dayjs.duration(timeNum).format('m鍒唖绉�') } diff --git a/admin/src/views/task/dangetDetail.vue b/admin/src/views/task/dangetDetail.vue index 35c7845..2651ddb 100644 --- a/admin/src/views/task/dangetDetail.vue +++ b/admin/src/views/task/dangetDetail.vue @@ -258,6 +258,7 @@ class="avatar-uploader" :action="uploadUrl" :show-file-list="false" + :on-error="uploadError" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload" > @@ -291,6 +292,7 @@ :action="uploadUrl" :show-file-list="false" :on-success="handleAfterSuccess" + :on-error="uploadError" :before-upload="beforeAvatarUpload" > <img v-if="param.url" :src="param.url" class="avatar" /> @@ -360,6 +362,7 @@ :action="uploadUrl" :show-file-list="false" :on-success="handleBackSuccess" + :on-error="uploadError" :before-upload="beforeAvatarUpload" > <div class="upload_box"> @@ -406,6 +409,7 @@ <script> import GlobalWindow from '@/components/common/GlobalWindow' import { memberList } from '@/api/business/hiddenDangerParam' +import { Loading } from 'element-ui' import { uploadFile, hiddenDangerDetail, @@ -420,7 +424,7 @@ id: '', type: '', uploadUrl: uploadFile, - + loadingInstance: false, title: '璁垮棰勭害璇︽儏', isShowModal: false, info: {}, @@ -560,6 +564,11 @@ }, reject () { }, handleAvatarSuccess (res) { + this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� + if(this.loadingInstance){ + this.loadingInstance.close() + } + }) if (res.code === 200) { const str = res.data.url.indexOf('png') > 0 || res.data.url.indexOf('jpg') > 0 const arr = this.handleParam.dealBeforeFileList || [] @@ -572,6 +581,11 @@ } }, handleAfterSuccess (res) { + this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� + if(this.loadingInstance){ + this.loadingInstance.close() + } + }) if (res.code === 200) { const str = res.data.url.indexOf('png') > 0 || res.data.url.indexOf('jpg') > 0 const arr = this.handleParam.dealAfterFileList || [] @@ -584,6 +598,11 @@ } }, handleBackSuccess (res) { + this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� + if(this.loadingInstance){ + this.loadingInstance.close() + } + }) if (res.code === 200) { const str = res.data.url.indexOf('png') > 0 || res.data.url.indexOf('jpg') > 0 const arr = this.backForm.dealBeforeFileList || [] @@ -595,7 +614,19 @@ this.$set(this.backForm, 'dealBeforeFileList', arr) } }, - beforeAvatarUpload () { } + beforeAvatarUpload () { + this.loadingInstance = Loading.service({ + lock: true, + text: 'Loading', + spinner: 'el-icon-loading', + background: 'rgba(0, 0, 0, 0.7)' + }) + }, + uploadError() { + this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� + this.loadingInstance.close() + }) + }, } } </script> diff --git a/h5/.gitignore b/h5/.gitignore index 951e49c..ee6dfa3 100644 --- a/h5/.gitignore +++ b/h5/.gitignore @@ -6,6 +6,7 @@ uview-ui /dist +/unpackage # local env files diff --git a/h5/manifest.json b/h5/manifest.json index aa547f7..cd8f8b1 100644 --- a/h5/manifest.json +++ b/h5/manifest.json @@ -125,14 +125,15 @@ "historyApiFallback" : true, "disableHostCheck" : true, "proxy" : { - "/admin_interface" : { + "/gateway_interface" : { // 杩欎釜瀛楁鍚嶉渶涓庝綘閰嶇疆鐨刡asePrefixUrl涓�鑷达紝绯荤粺璇嗗埆鍒板甫鏈�/dev-api璇锋眰鐨勫湴鍧�鏃讹紝浼氬湪鍓嶉潰鎷兼帴涓婁唬鐞嗘湇鍔″櫒鍦板潃 // "target" : "http://172.20.10.7:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃 // "target" : "http://192.168.0.100:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃 - "target" : "http://10.50.250.253:8088/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" : { - "^/admin_interface" : "" + "^/gateway_interface" : "" } } }, diff --git a/h5/pages/driver/queueUp.vue b/h5/pages/driver/queueUp.vue index b0cb1a9..d6bbd89 100644 --- a/h5/pages/driver/queueUp.vue +++ b/h5/pages/driver/queueUp.vue @@ -14,6 +14,7 @@ <text v-if="activePlatform.signJobList">{{ activePlatform.workJobList.length }}</text> + <text v-else>0</text> <text class="unit">杈�</text> </view> <image @@ -28,6 +29,7 @@ <text v-if="activePlatform.workJobList">{{ activePlatform.signJobList.length }}</text> + <text v-else>0</text> <text class="unit">杈�</text> </view> <image diff --git a/h5/pages/driver/queueUpRecord.vue b/h5/pages/driver/queueUpRecord.vue index de92b96..c8f63d1 100644 --- a/h5/pages/driver/queueUpRecord.vue +++ b/h5/pages/driver/queueUpRecord.vue @@ -6,11 +6,11 @@ </view> <!-- --> <view class="main_list"> - <view class="item" :class="{ active: item.driverId == driverInfo.memberId }" v-for="item in dataList" :key="item.id"> + <view class="item" :class="{ active: item.drivierPhone == driverInfo.mobile }" v-for="item in dataList" :key="item.id"> <view class="status padding" v-if="item.status == 2">鎺掗槦涓�</view> <view class="status" v-else :class="{ padding: item.status != 5 }">{{ statusMap[item.status] }}</view> - <view v-if="item.driverId == driverInfo.memberId" class="me">鎴�</view> - <image v-if="item.driverId == driverInfo.memberId" class="avatar" src="@/static/driver/ic_truck_mine@2x.png" mode=""></image> + <view v-if="item.drivierPhone == driverInfo.mobile" class="me">鎴�</view> + <image v-if="item.drivierPhone == driverInfo.mobile" class="avatar" src="@/static/driver/ic_truck_mine@2x.png" mode=""></image> <image v-else class="avatar" src="@/static/driver/ic_truck@2x.png" mode=""></image> <view class="content"> <view class="id_card" v-if="item.carCodeFront">{{ item.carCodeFront.slice(0, 4) }}**{{ item.carCodeFront.slice(6) }}</view> @@ -23,6 +23,7 @@ </view> </view> </view> + </view> </view> </template> diff --git a/h5/pages/staff/meetingSubOrder.vue b/h5/pages/staff/meetingSubOrder.vue index a99b6a1..f8807b0 100644 --- a/h5/pages/staff/meetingSubOrder.vue +++ b/h5/pages/staff/meetingSubOrder.vue @@ -1,345 +1,361 @@ -<template> - <view class="main_app"> - <view class="module_list"> - <view class="item"> - <view class="name">浼氳鏃堕棿</view> - <view class="line" @click="handleBack"> - <view class="label"> - {{ param.activeDate || param.meetingDate }} - <text class="ml12" v-if="!param.id">{{ param.startTime }}-{{ param.endTime }}</text> - <text class="ml12" v-if="param.id">{{ param.meetingTime }}</text> - </view> - <u-icon name="arrow-right" color="#999999" size="14" /> - </view> - </view> - <view class="item"> - <view class="name">浼氳瀹�</view> - <view class="line"> - <view class="label">{{ param.roomName }}(鍙绾硔{ param.limitNum }}浜�)</view> - </view> - </view> - <view class="item"> - <view class="name">棰勭害浜�</view> - <view class="line"> - <view class="label">{{ userInfo.realname }}</view> - </view> - </view> - <view class="empty"></view> - <view class="item"> - <view class="name"> - <text>浼氳涓婚</text> - <text class="star">*</text> - </view> - <view class="line"> - <input - type="text" - v-model="param.name" - placeholder="璇疯緭鍏ヤ細璁富棰�" - placeholder-class="placeholder9" - class="label" - /> - </view> - </view> - <view class="item"> - <view class="name"> - <text>浼氳鍐呭</text> - </view> - <view class="line"> - <u-textarea - border="none" - v-model="param.content" - count - :maxlength="300" - placeholder="璇疯緭鍏ヤ細璁唴瀹�" - placeholder-class="placeholder9" - class="label" - /> - </view> - </view> - <view class="empty"></view> - <view class="item"> - <view class="name"> - 鍙備細浜哄憳 - <text class="star"></text> - </view> - <view class="line" @click="selPeople"> - <view class="label"> - <text v-if="param.sysList && param.sysList.length > 0"> - {{ param.sysList.map((i) => i.realname).join(",") }} - </text> - <text - v-else - class="placeholder9" - >璇烽�夋嫨</text - > - </view> - <u-icon - name="arrow-right" - color="#999999" - size="14" - /> - </view> - </view> - <view class="item" v-if="info.projectList && info.projectList.length > 0"> - <view class="name">閫夋嫨鏈嶅姟椤�</view> - <view class="line"> - <view class="label"> - <view - class="service_item" - :class="{ active: item.checked }" - v-for="(item, index) in info.projectList" - :key="index" - @click="serviceClick(item)" - > - {{ item.projectName }} - </view> - </view> - </view> - </view> - <view class="item"> - <view class="name"> - <text>澶囨敞</text> - </view> - <view class="line"> - <textarea - v-model="param.remark" - :maxlength="-1" - placeholder="璇疯緭鍏�" - placeholder-class="placeholder9" - class="label" - /> - </view> - </view> - - <view v-if="param.id" class="sub_btn" @click="onUpdate">纭淇敼</view> - <view v-else class="sub_btn" @click="onSubmit"> 纭棰勭害 </view> - </view> - </view> -</template> - -<script> -import { - reservationMeeting, - getRoomDetail, - meetingDetail, - updateById, - getAppRoomDetail -} from '@/api' -import dayjs from 'dayjs' -export default { - data() { - return { - param: {}, - userInfo: uni.getStorageSync('userInfo'), - info: {}, - } - }, - onLoad(option) { - if (option.id) { - uni.setNavigationBarTitle({ - title: '浼氳璇︽儏' - }) - this.getDetail(option.id) - } - }, - mounted() { - this.$eventBus.$on('meetingPeo', (res) => { - this.$set(this.param, 'sysList', res.map(i => { - i.userId = i.id - return i - })) - // this.$set(this.param, 'memberIds', res.map(i => i.id).join(',')) - // this.$set(this.param, 'memberNames', res.map(i => i.name).join(',')) - }) - this.$eventBus.$on('meetingSub', (res) => { - this.param = { ...res } - this.$set(this.param, 'activeDate', dayjs(res.yudingDate).format('YYYY骞碝鏈圖鏃�')) - const bookingTimeList = res.bookingTimeList.split(',').map(i => { - return { - timeId: Number(i) - } - }) - this.$set(this.param, 'bookingTimeList', bookingTimeList) - this.initOption() - }) - }, - methods: { - getDetail(id) { - meetingDetail({ id }).then(res => { - this.param = { ...res.data,name: res.data.meetingName, content: res.data.meetingContent, sysList: res.data.userResponseList } - // this.param = { ...res.data } - if(this.param.sysList && this.param.sysList.length > 0){ - this.param.sysList.forEach(i => { - i.userId = i.id - }) - } - getRoomDetail({ roomId: res.data.roomId }).then(ress => { - this.info = ress.data - if (this.info && this.info.projectList) { - this.info.projectList.forEach(i => { - i.checked = false - if(res.data.projectsResponseList && res.data.projectsResponseList.length > 0){ - res.data.projectsResponseList.forEach(item2 => { - if(i.projectId === item2.id){ - i.checked = true - } - }) - } - }) - } - }) - }) - }, - onUpdate() { - const { param, info } = this - if (!param.name) return uni.showToast({ - title: '璇疯緭鍏ヤ細璁富棰�', - icon: 'none' - }) - reservationMeeting({ - ...param, - projectList: info.projectList.filter(i => i.checked), - }).then(res => { - if (res.code === 200) { - setTimeout(() => { - uni.showToast({ - title: '淇敼鎴愬姛', - icon: 'success', - duration: 2000 - }) - }) - uni.redirectTo({ - url: '/pages/staff/index' - }) - } - }) - }, - handleBack() { - if(this.param.id) return - uni.navigateBack( ) - }, - onSubmit() { - const { param, info } = this - if (!param.name) return uni.showToast({ - title: '璇疯緭鍏ヤ細璁富棰�', - icon: 'none' - }) - // if (!param.sysList || param.sysList.length == 0) return uni.showToast({ - // title: '璇烽�夋嫨鍙備細浜哄憳', - // icon: 'none' - // }) - reservationMeeting({ - ...param, - startTime: `${param.yudingDate} ${param.startTime}:00`, - endTime: `${param.yudingDate} ${param.endTime}:00`, - projectList: info.projectList.filter(i => i.checked), - }).then(res => { - if (res.code === 200) { - setTimeout(() => { - uni.showToast({ - title: '棰勭害鎴愬姛', - icon: 'success', - duration: 2000 - }) - }) - uni.redirectTo({ - url: '/pages/staff/index' - }) - } - }) - }, - selPeople() { - const { param } = this - let startTime = new Date(param.yudingDate + ' ' + param.startTime).getTime() - let endTime = new Date(param.yudingDate + ' ' + param.endTime).getTime() - if(this.param.sysList && this.param.sysList.length > 0){ - setTimeout(() => { - this.$eventBus.$emit('meetingPeoDetail', this.param.sysList || []) - }, 500) - } - uni.navigateTo({ - url: `/pages/staff/meetingSel?startTime=${startTime}&endTime=${endTime}&limitNum=${this.param.limitNum}` - }) - }, - serviceClick(item) { - const { info } = this - info.projectList.forEach(ite => { - if (ite.projectId === item.projectId) { - ite.checked = !ite.checked - } - }) - this.$forceUpdate() - }, - initOption() { - const roomId = Number(this.param.roomId) - getRoomDetail({ roomId }).then(res => { - this.info = res.data - if (this.info && this.info.projectList) { - this.info.projectList.forEach(i => { - i.checked = false - - }) - } - }) - } - } -} -</script> - -<style lang="scss"> -.module_list { - .item { - border-bottom: 1rpx solid #e5e5e5; - padding: 30rpx 0; - .name { - color: #666666; - margin-bottom: 30rpx; - } - .line { - display: flex; - .label { - flex: 1; - display: flex; - flex-wrap: wrap; - align-items: center; - .service_item { - height: 64rpx; - line-height: 64rpx; - background: #f7f7f7; - border-radius: 4rpx; - padding: 0 24rpx; - margin-right: 20rpx; - margin-bottom: 12rpx; - } - .active { - background-color: #4d99a8; - color: #fff; - } - } - } - } - padding-bottom: 100rpx; -} -.empty { - width: 750rpx; - height: 20rpx; - background-color: #f7f7f7; - margin: 0 -30rpx; -} -.sub_btn { - width: 690rpx; - height: 72rpx; - line-height: 72rpx; - text-align: center; - background: $uni-color-primary; - box-shadow: 0rpx -1rpx 0rpx 0rpx #eeeeee; - border-radius: 36rpx; - font-size: 30rpx; - color: #ffffff; - margin-top: 20rpx; -} -.star { - margin-left: 4rpx; - color: #e42d2d; -} -</style> +<template> + <view class="main_app"> + <view class="module_list"> + <view class="item"> + <view class="name">浼氳鏃堕棿</view> + <view class="line" @click="handleBack"> + <view class="label"> + {{ param.activeDate || param.meetingDate }} + <text class="ml12" v-if="!param.id">{{ param.startTime }}-{{ param.endTime }}</text> + <text class="ml12" v-if="param.id">{{ param.meetingTime }}</text> + </view> + <u-icon name="arrow-right" color="#999999" size="14" /> + </view> + </view> + <view class="item"> + <view class="name">浼氳瀹�</view> + <view class="line"> + <view class="label">{{ param.roomName }}(鍙绾硔{ param.limitNum }}浜�)</view> + </view> + </view> + <view class="item"> + <view class="name">棰勭害浜�</view> + <view class="line"> + <view class="label">{{ userInfo.realname }}</view> + </view> + </view> + <view class="empty"></view> + <view class="item"> + <view class="name"> + <text>浼氳涓婚</text> + <text class="star">*</text> + </view> + <view class="line"> + <input type="text" v-model="param.name" placeholder="璇疯緭鍏ヤ細璁富棰�" placeholder-class="placeholder9" + class="label" /> + </view> + </view> + <view class="item"> + <view class="name"> + <text>浼氳鍐呭</text> + </view> + <view class="line"> + <u-textarea border="none" v-model="param.content" count :maxlength="300" placeholder="璇疯緭鍏ヤ細璁唴瀹�" + placeholder-class="placeholder9" class="label" /> + </view> + </view> + <view class="empty"></view> + <view class="item"> + <view class="name"> + 鍙備細浜哄憳 + <text class="star"></text> + </view> + <view class="line" @click="selPeople"> + <view class="label"> + <text v-if="param.sysList && param.sysList.length > 0"> + {{ param.sysList.map((i) => i.realname).join(",") }} + </text> + <text v-else class="placeholder9">璇烽�夋嫨</text> + </view> + <u-icon name="arrow-right" color="#999999" size="14" /> + </view> + </view> + <view class="item"> + <view class="name">鏄惁閫氱煡鍙備細浜哄憳</view> + <view class="line"> + <view class="label"> + <u-switch v-model="param.joinNotice" activeColor="#4d99a8" :activeValue="0" :inactiveValue="1"></u-switch> + <!-- <u-radio-group v-model="param.joinNotice"> + <u-radio label="涓嶉�氱煡" :name="1" activeColor="#4d99a8" class="mr24" /> + <u-radio label="閫氱煡" :name="0" activeColor="#4d99a8" /> + </u-radio-group> --> + </view> + </view> + </view> + <view class="item" v-if="info.projectList && info.projectList.length > 0"> + <view class="name">閫夋嫨鏈嶅姟椤�</view> + <view class="line"> + <view class="label"> + <view class="service_item" :class="{ active: item.checked }" v-for="(item, index) in info.projectList" + :key="index" @click="serviceClick(item)"> + {{ item.projectName }} + </view> + </view> + </view> + </view> + <view class="item"> + <view class="name"> + <text>澶囨敞</text> + </view> + <view class="line"> + <textarea v-model="param.remark" :maxlength="-1" placeholder="璇疯緭鍏�" placeholder-class="placeholder9" + class="label" /> + </view> + </view> + + <view v-if="param.id" class="sub_btn" @click="onUpdate">纭淇敼</view> + <view v-else class="sub_btn" @click="onSubmit"> 纭棰勭害 </view> + </view> + </view> +</template> + +<script> + import { + reservationMeeting, + getRoomDetail, + meetingDetail, + updateById, + getAppRoomDetail + } from '@/api' + import dayjs from 'dayjs' + export default { + data() { + return { + param: { + joinNotice: 1 + }, + userInfo: uni.getStorageSync('userInfo'), + info: {}, + } + }, + onLoad(option) { + if (option.id) { + uni.setNavigationBarTitle({ + title: '浼氳璇︽儏' + }) + this.getDetail(option.id) + } + }, + mounted() { + this.$eventBus.$on('meetingPeo', (res) => { + this.$set(this.param, 'sysList', res.map(i => { + i.userId = i.id + return i + })) + // this.$set(this.param, 'memberIds', res.map(i => i.id).join(',')) + // this.$set(this.param, 'memberNames', res.map(i => i.name).join(',')) + }) + this.$eventBus.$on('meetingSub', (res) => { + this.param = { + ...res + } + this.$set(this.param, 'activeDate', dayjs(res.yudingDate).format('YYYY骞碝鏈圖鏃�')) + const bookingTimeList = res.bookingTimeList.split(',').map(i => { + return { + timeId: Number(i) + } + }) + this.$set(this.param, 'bookingTimeList', bookingTimeList) + this.initOption() + }) + }, + methods: { + getDetail(id) { + meetingDetail({ + id + }).then(res => { + this.param = { + ...res.data, + name: res.data.meetingName, + content: res.data.meetingContent, + sysList: res.data.userResponseList + } + // this.param = { ...res.data } + if (this.param.sysList && this.param.sysList.length > 0) { + this.param.sysList.forEach(i => { + i.userId = i.id + }) + } + getRoomDetail({ + roomId: res.data.roomId + }).then(ress => { + this.info = ress.data + if (this.info && this.info.projectList) { + this.info.projectList.forEach(i => { + i.checked = false + if (res.data.projectsResponseList && res.data.projectsResponseList.length > 0) { + res.data.projectsResponseList.forEach(item2 => { + if (i.projectId === item2.id) { + i.checked = true + } + }) + } + }) + } + }) + }) + }, + onUpdate() { + const { + param, + info + } = this + if (!param.name) return uni.showToast({ + title: '璇疯緭鍏ヤ細璁富棰�', + icon: 'none' + }) + reservationMeeting({ + ...param, + projectList: info.projectList.filter(i => i.checked), + }).then(res => { + if (res.code === 200) { + setTimeout(() => { + uni.showToast({ + title: '淇敼鎴愬姛', + icon: 'success', + duration: 2000 + }) + }) + uni.redirectTo({ + url: '/pages/staff/index' + }) + } + }) + }, + handleBack() { + if (this.param.id) return + uni.navigateBack() + }, + onSubmit() { + const { + param, + info + } = this + if (!param.name) return uni.showToast({ + title: '璇疯緭鍏ヤ細璁富棰�', + icon: 'none' + }) + // if (!param.sysList || param.sysList.length == 0) return uni.showToast({ + // title: '璇烽�夋嫨鍙備細浜哄憳', + // icon: 'none' + // }) + reservationMeeting({ + ...param, + startTime: `${param.yudingDate} ${param.startTime}:00`, + endTime: `${param.yudingDate} ${param.endTime}:00`, + projectList: info.projectList.filter(i => i.checked), + }).then(res => { + if (res.code === 200) { + setTimeout(() => { + uni.showToast({ + title: '棰勭害鎴愬姛', + icon: 'success', + duration: 2000 + }) + }) + uni.redirectTo({ + url: '/pages/staff/index' + }) + } + }) + }, + selPeople() { + const { + param + } = this + let startTime = new Date(param.yudingDate + ' ' + param.startTime).getTime() + let endTime = new Date(param.yudingDate + ' ' + param.endTime).getTime() + if (this.param.sysList && this.param.sysList.length > 0) { + setTimeout(() => { + this.$eventBus.$emit('meetingPeoDetail', this.param.sysList || []) + }, 500) + } + uni.navigateTo({ + url: `/pages/staff/meetingSel?startTime=${startTime}&endTime=${endTime}&limitNum=${this.param.limitNum}` + }) + }, + serviceClick(item) { + const { + info + } = this + info.projectList.forEach(ite => { + if (ite.projectId === item.projectId) { + ite.checked = !ite.checked + } + }) + this.$forceUpdate() + }, + initOption() { + const roomId = Number(this.param.roomId) + getRoomDetail({ + roomId + }).then(res => { + this.info = res.data + if (this.info && this.info.projectList) { + this.info.projectList.forEach(i => { + i.checked = false + + }) + } + }) + } + } + } +</script> + +<style lang="scss"> + .module_list { + .item { + border-bottom: 1rpx solid #e5e5e5; + padding: 30rpx 0; + + .name { + color: #666666; + margin-bottom: 30rpx; + } + + .line { + display: flex; + + .label { + flex: 1; + display: flex; + flex-wrap: wrap; + align-items: center; + + .service_item { + height: 64rpx; + line-height: 64rpx; + background: #f7f7f7; + border-radius: 4rpx; + padding: 0 24rpx; + margin-right: 20rpx; + margin-bottom: 12rpx; + } + + .active { + background-color: #4d99a8; + color: #fff; + } + } + } + } + + padding-bottom: 100rpx; + } + + .empty { + width: 750rpx; + height: 20rpx; + background-color: #f7f7f7; + margin: 0 -30rpx; + } + + .sub_btn { + width: 690rpx; + height: 72rpx; + line-height: 72rpx; + text-align: center; + background: $uni-color-primary; + box-shadow: 0rpx -1rpx 0rpx 0rpx #eeeeee; + border-radius: 36rpx; + font-size: 30rpx; + color: #ffffff; + margin-top: 20rpx; + } + + .star { + margin-left: 4rpx; + color: #e42d2d; + } +</style> \ No newline at end of file diff --git a/h5/utils/config.js b/h5/utils/config.js index fc2d158..e4c0895 100644 --- a/h5/utils/config.js +++ b/h5/utils/config.js @@ -1,5 +1,5 @@ -export const baseUrl = 'admin_interface/' +export const baseUrl = 'gateway_interface/' // export const baseUrl = 'http://192.168.0.173/gateway_interface/' export const uploadAvatar = `${baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do` diff --git a/h5_meeting/manifest.json b/h5_meeting/manifest.json index 376b116..8c272f0 100644 --- a/h5_meeting/manifest.json +++ b/h5_meeting/manifest.json @@ -85,26 +85,28 @@ } } }, - "h5": { - "router": { - "mode": "hash", - "base": "./" - }, - "devServer": { - "port": 8091, - "historyApiFallback": true, - "disableHostCheck": true, - "proxy": { - "/gateway_interface": { - "target" : "http://10.50.250.253:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃 - "changeOrigin": true, // 鍏佽璺ㄥ煙 - "pathRewrite": { - "^/gateway_interface": "" - } - } - }, - "https": false - } + "h5" : { + "router" : { + "mode" : "hash", + "base" : "./" + }, + "devServer" : { + "port" : 8091, + "historyApiFallback" : true, + "disableHostCheck" : true, + "proxy" : { + "/gateway_interface" : { + // "target" : "http://10.50.250.253:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃 + // "target" : "http://192.168.0.173/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃 + "target" : "http://192.168.0.173/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃 + "changeOrigin" : true, // 鍏佽璺ㄥ煙 + "pathRewrite" : { + "^/gateway_interface" : "" + } + } + }, + "https" : false + } }, /* 蹇簲鐢ㄧ壒鏈夌浉鍏� */ "quickapp" : {}, @@ -128,5 +130,5 @@ "uniStatistics" : { "enable" : false }, - "vueVersion" : "3" + "vueVersion" : "2" } diff --git a/h5_meeting/pages/index/index.vue b/h5_meeting/pages/index/index.vue index fded8ae..26e91b2 100644 --- a/h5_meeting/pages/index/index.vue +++ b/h5_meeting/pages/index/index.vue @@ -131,7 +131,8 @@ }) } else { this.showQrbg = false - this.meetingInfo = {} + this.meetingInfo = {} + this.$forceUpdate() } }) }, diff --git a/h5_meeting/unpackage/release/apk/__UNI__EF8BAA7__20241008151948.apk b/h5_meeting/unpackage/release/apk/__UNI__EF8BAA7__20241008151948.apk deleted file mode 100644 index eff3492..0000000 --- a/h5_meeting/unpackage/release/apk/__UNI__EF8BAA7__20241008151948.apk +++ /dev/null Binary files differ diff --git "a/h5_meeting/unpackage/release/apk/\344\274\232\350\256\256\345\256\244.apk" "b/h5_meeting/unpackage/release/apk/\344\274\232\350\256\256\345\256\244.apk" deleted file mode 100644 index eff3492..0000000 --- "a/h5_meeting/unpackage/release/apk/\344\274\232\350\256\256\345\256\244.apk" +++ /dev/null Binary files differ diff --git a/h5_meeting/utils/config.js b/h5_meeting/utils/config.js index dda51c1..1d8ad8b 100644 --- a/h5_meeting/utils/config.js +++ b/h5_meeting/utils/config.js @@ -1,7 +1,7 @@ -// export const baseUrl = 'gateway_interface/' +// export const baseUrl = 'gateway_interface/'/ export const baseUrl = 'http://192.168.5.13/gateway_interface/' -// export const baseUrl = 'http://10.50.250.253:8088/gateway_interface/' +// export const baseUrl = 'http://192.168.0.173/gateway_interface/' export const statusMap = { 0: '寰呯‘璁�', diff --git a/pda/pages/index/center.vue b/pda/pages/index/center.vue index cba71b9..a852ade 100644 --- a/pda/pages/index/center.vue +++ b/pda/pages/index/center.vue @@ -302,7 +302,7 @@ if (item.newStartDate) { let timeNum = time.getTime() - new Date(item.newStartDate).getTime() if (timeNum > 3600000) { - item.startDateTemp = dayjs.duration(timeNum).format('H灏忔椂m鍒唖s绉�') + item.startDateTemp = dayjs.duration(timeNum).format('H灏忔椂m鍒唖绉�') } else { item.startDateTemp = dayjs.duration(timeNum).format('m鍒唖绉�') } diff --git a/screen/src/assets/images/FireFighting/468@2x.png b/screen/src/assets/images/FireFighting/468@2x.png new file mode 100644 index 0000000..53d5eb6 --- /dev/null +++ b/screen/src/assets/images/FireFighting/468@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/bg@2x.png b/screen/src/assets/images/FireFighting/bg@2x.png new file mode 100644 index 0000000..fdbbddf --- /dev/null +++ b/screen/src/assets/images/FireFighting/bg@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/bg_wendu@2x.png b/screen/src/assets/images/FireFighting/bg_wendu@2x.png new file mode 100644 index 0000000..9932766 --- /dev/null +++ b/screen/src/assets/images/FireFighting/bg_wendu@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/ic_chuli@2x.png b/screen/src/assets/images/FireFighting/ic_chuli@2x.png new file mode 100644 index 0000000..a4b4ffd --- /dev/null +++ b/screen/src/assets/images/FireFighting/ic_chuli@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/ic_gaojing_blue@2x.png b/screen/src/assets/images/FireFighting/ic_gaojing_blue@2x.png new file mode 100644 index 0000000..646cf85 --- /dev/null +++ b/screen/src/assets/images/FireFighting/ic_gaojing_blue@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/ic_gaojing_red@2x.png b/screen/src/assets/images/FireFighting/ic_gaojing_red@2x.png new file mode 100644 index 0000000..7237b9d --- /dev/null +++ b/screen/src/assets/images/FireFighting/ic_gaojing_red@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/ic_location@2x.png b/screen/src/assets/images/FireFighting/ic_location@2x.png new file mode 100644 index 0000000..8fb0996 --- /dev/null +++ b/screen/src/assets/images/FireFighting/ic_location@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/ic_shidu@2x.png b/screen/src/assets/images/FireFighting/ic_shidu@2x.png new file mode 100644 index 0000000..d358a33 --- /dev/null +++ b/screen/src/assets/images/FireFighting/ic_shidu@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/ic_tibao@2x.png b/screen/src/assets/images/FireFighting/ic_tibao@2x.png new file mode 100644 index 0000000..25bd1be --- /dev/null +++ b/screen/src/assets/images/FireFighting/ic_tibao@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/ic_title_green@2x.png b/screen/src/assets/images/FireFighting/ic_title_green@2x.png new file mode 100644 index 0000000..a173111 --- /dev/null +++ b/screen/src/assets/images/FireFighting/ic_title_green@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/ic_weixiu@2x.png b/screen/src/assets/images/FireFighting/ic_weixiu@2x.png new file mode 100644 index 0000000..873e249 --- /dev/null +++ b/screen/src/assets/images/FireFighting/ic_weixiu@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/ic_wendu@2x.png b/screen/src/assets/images/FireFighting/ic_wendu@2x.png new file mode 100644 index 0000000..9a9bfae --- /dev/null +++ b/screen/src/assets/images/FireFighting/ic_wendu@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/xiaofang_ar_left@2x.png b/screen/src/assets/images/FireFighting/xiaofang_ar_left@2x.png new file mode 100644 index 0000000..a3b8d32 --- /dev/null +++ b/screen/src/assets/images/FireFighting/xiaofang_ar_left@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/xiaofang_ar_right@2x.png b/screen/src/assets/images/FireFighting/xiaofang_ar_right@2x.png new file mode 100644 index 0000000..260e9dd --- /dev/null +++ b/screen/src/assets/images/FireFighting/xiaofang_ar_right@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/xiaofang_ic_baojing@2x.png b/screen/src/assets/images/FireFighting/xiaofang_ic_baojing@2x.png new file mode 100644 index 0000000..ec7f77f --- /dev/null +++ b/screen/src/assets/images/FireFighting/xiaofang_ic_baojing@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/xiaofang_ic_guzhang@2x.png b/screen/src/assets/images/FireFighting/xiaofang_ic_guzhang@2x.png new file mode 100644 index 0000000..befea8e --- /dev/null +++ b/screen/src/assets/images/FireFighting/xiaofang_ic_guzhang@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/xiaofang_ic_lixian@2x.png b/screen/src/assets/images/FireFighting/xiaofang_ic_lixian@2x.png new file mode 100644 index 0000000..bb71625 --- /dev/null +++ b/screen/src/assets/images/FireFighting/xiaofang_ic_lixian@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/xiaofang_ic_pingbi@2x.png b/screen/src/assets/images/FireFighting/xiaofang_ic_pingbi@2x.png new file mode 100644 index 0000000..bb89c83 --- /dev/null +++ b/screen/src/assets/images/FireFighting/xiaofang_ic_pingbi@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/xiaofang_ic_weizhi@2x.png b/screen/src/assets/images/FireFighting/xiaofang_ic_weizhi@2x.png new file mode 100644 index 0000000..2a0dfb4 --- /dev/null +++ b/screen/src/assets/images/FireFighting/xiaofang_ic_weizhi@2x.png Binary files differ diff --git a/screen/src/assets/images/FireFighting/xiaofang_ic_zaixian@2x.png b/screen/src/assets/images/FireFighting/xiaofang_ic_zaixian@2x.png new file mode 100644 index 0000000..06261c9 --- /dev/null +++ b/screen/src/assets/images/FireFighting/xiaofang_ic_zaixian@2x.png Binary files differ diff --git a/screen/src/assets/images/LogisticsCenter/bg@2x.png b/screen/src/assets/images/LogisticsCenter/bg@2x.png new file mode 100644 index 0000000..70f4243 --- /dev/null +++ b/screen/src/assets/images/LogisticsCenter/bg@2x.png Binary files differ diff --git a/screen/src/assets/images/LogisticsCenter/bg_number@2x.png b/screen/src/assets/images/LogisticsCenter/bg_number@2x.png new file mode 100644 index 0000000..b6d2078 --- /dev/null +++ b/screen/src/assets/images/LogisticsCenter/bg_number@2x.png Binary files differ diff --git a/screen/src/assets/images/LogisticsCenter/bottom.png b/screen/src/assets/images/LogisticsCenter/bottom.png new file mode 100644 index 0000000..d9777b5 --- /dev/null +++ b/screen/src/assets/images/LogisticsCenter/bottom.png Binary files differ diff --git a/screen/src/assets/images/LogisticsCenter/ic_jinrichuku@2x.png b/screen/src/assets/images/LogisticsCenter/ic_jinrichuku@2x.png new file mode 100644 index 0000000..40937cf --- /dev/null +++ b/screen/src/assets/images/LogisticsCenter/ic_jinrichuku@2x.png Binary files differ diff --git a/screen/src/assets/images/LogisticsCenter/ic_jinrijihua@2x.png b/screen/src/assets/images/LogisticsCenter/ic_jinrijihua@2x.png new file mode 100644 index 0000000..4f73ceb --- /dev/null +++ b/screen/src/assets/images/LogisticsCenter/ic_jinrijihua@2x.png Binary files differ diff --git a/screen/src/assets/images/LogisticsCenter/ic_jinriweichu@2x.png b/screen/src/assets/images/LogisticsCenter/ic_jinriweichu@2x.png new file mode 100644 index 0000000..8d1288b --- /dev/null +++ b/screen/src/assets/images/LogisticsCenter/ic_jinriweichu@2x.png Binary files differ diff --git a/screen/src/assets/images/LogisticsCenter/ic_search@2x.png b/screen/src/assets/images/LogisticsCenter/ic_search@2x.png new file mode 100644 index 0000000..2fbea92 --- /dev/null +++ b/screen/src/assets/images/LogisticsCenter/ic_search@2x.png Binary files differ diff --git a/screen/src/assets/images/LogisticsCenter/ic_title@2x.png b/screen/src/assets/images/LogisticsCenter/ic_title@2x.png new file mode 100644 index 0000000..fff0940 --- /dev/null +++ b/screen/src/assets/images/LogisticsCenter/ic_title@2x.png Binary files differ diff --git a/screen/src/assets/images/LogisticsCenter/position.png b/screen/src/assets/images/LogisticsCenter/position.png new file mode 100644 index 0000000..78379de --- /dev/null +++ b/screen/src/assets/images/LogisticsCenter/position.png Binary files differ diff --git a/screen/src/assets/images/ic_jindu@2x.png b/screen/src/assets/images/ic_jindu@2x.png new file mode 100644 index 0000000..61fabcb --- /dev/null +++ b/screen/src/assets/images/ic_jindu@2x.png Binary files differ diff --git a/screen/src/router/index.js b/screen/src/router/index.js index 8f104fe..367a3d5 100644 --- a/screen/src/router/index.js +++ b/screen/src/router/index.js @@ -6,28 +6,38 @@ routes: [ { path: '/', - component: () => import('../views/SecurityControl.vue') + component: () => import('../views/FireFighting.vue') }, { - path: '/PlatformCall', + path: '/PlatformCall', // 鏈堝彴鍙彿澶у睆 name: 'PlatformCall', component: () => import('../views/PlatformCall.vue') }, { - path: '/EnergyConsum', + path: '/EnergyConsum', // 鑳借�楃湅鏉� - 缁胯壊浣庣⒊杩愯惀 name: 'EnergyConsum', component: () => import('../views/EnergyConsum.vue') }, { - path: '/LogisticsControl', - name: 'LogisticsControl', + path: '/LogisticsEfficiency', // 鐗╂祦杩愯璋冨害鐪嬫澘- 璋冨害鑳芥晥 + name: 'LogisticsEfficiency', component: () => import('../views/LogisticsEfficiency.vue') }, { - path: '/SecurityControl', + path: '/SecurityControl', // 瀹夐槻绠℃帶澶у睆 - name: 'SecurityControl', component: () => import('../views/SecurityControl.vue') }, + { + path: '/LogisticsCenter', //搴撳埗绠$悊鐪嬫澘-鐗╂祦涓績 + name: 'LogisticsCenter', + component: () => import('../views/LogisticsCenter.vue') + }, + { + path: '/FireFighting', //娑堥槻鐩戞帶 + name: 'FireFighting', + component: () => import('../views/FireFighting.vue') + }, ] }) diff --git a/screen/src/views/EnergyConsum.vue b/screen/src/views/EnergyConsum.vue index d408457..c745f28 100644 --- a/screen/src/views/EnergyConsum.vue +++ b/screen/src/views/EnergyConsum.vue @@ -963,7 +963,7 @@ display: flex; justify-content: space-between; align-items: center; - height: 92px; + height: 90px; position: relative; padding: 0px 40px 16px; font-weight: 600; @@ -993,15 +993,14 @@ align-items: center; .time { - width: 180px; + width: 130px; display: flex; justify-content: flex-end; - padding-bottom: 10px; - font-size: 36px; + font-size: 30px; } .week { - margin-left: 36px; + margin-left: 20px; } } diff --git a/screen/src/views/FireFighting.vue b/screen/src/views/FireFighting.vue new file mode 100644 index 0000000..3f6231d --- /dev/null +++ b/screen/src/views/FireFighting.vue @@ -0,0 +1,1500 @@ +<template> + <v-scale-screen width="1920" height="960"> + <div class="main_app"> + <img src="@/assets/images/FireFighting/bg@2x.png" class="main_bg" alt="" /> + <div class="main_header"> + <img src="@/assets/images/maintitle@2x.png" class="main_header_bg" alt="" /> + <div class="title">瀹夋嘲鏅烘収鐗╂祦鍥尯-娑堥槻鎬佸娍鐩戞帶</div> + <div class="time_wrap"> + <span class="date">{{ date }}</span> + <span class="week">{{ week }}</span> + <span class="time">{{ time }}</span> + </div> + </div> + <div class="main_content"> + <div class="left_box"> + <div class="left_box_one"> + <div class="com_header"> + <div class="title"> + <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> + <div>浠婃棩鍚勭郴缁熻澶囩姸鎬佸強鍛婅鏁�</div> + </div> + <img src="@/assets/images/title@2x.png" class="bg" alt="" /> + </div> + <div class="list_wrap"> + <div class="list"> + <div class="header line"> + <span class="item name">璁惧绫诲瀷</span> + <span class="item">鎬绘暟</span> + <span class="item">鎶ヨ</span> + <span class="item">灞忚斀</span> + <span class="item">鏁呴殰</span> + <span class="item">绂荤嚎</span> + </div> + <template v-for="i in 5"> + <div class="line"> + <span class="item name">鐏伓鎶ヨ绯荤粺</span> + <span class="item">11</span> + <span class="item">11</span> + <span class="item">11</span> + <span class="item">11</span> + <span class="item">11</span> + </div> + <div class="separate"></div> + </template> + </div> + </div> + </div> + <div class="left_box_two"> + <div class="com_header"> + <div class="title"> + <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> + <div>鎶ヨ淇℃伅</div> + </div> + <img src="@/assets/images/title@2x.png" class="bg" alt="" /> + </div> + <div class="police_wrap"> + <div class="echart1" id="echart1"></div> + </div> + </div> + <div class="left_box_three"> + <div class="com_header"> + <div class="title"> + <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> + <div>鍛婅澶勭悊鍒嗘瀽</div> + </div> + <img src="@/assets/images/title@2x.png" class="bg" alt="" /> + </div> + <div class="dispose_wrap"> + <div class="echart2" id="echart2"></div> + </div> + </div> + </div> + <div class="center_box"> + <div class="center_box_one"> + <div class="static_wrap"> + <div class="item"> + <img src="@/assets/images/FireFighting/xiaofang_ic_zaixian@2x.png" alt=""> + <div class="content"> + <div class="name">鍦ㄧ嚎</div> + <div class="num">1000</div> + </div> + </div> + <div class="item"> + <img src="@/assets/images/FireFighting/xiaofang_ic_baojing@2x.png" alt=""> + <div class="content"> + <div class="name">鎶ヨ</div> + <div class="num">12</div> + </div> + </div> + <div class="item"> + <img src="@/assets/images/FireFighting/xiaofang_ic_guzhang@2x.png" alt=""> + <div class="content"> + <div class="name">鏁呴殰</div> + <div class="num">12</div> + </div> + </div> + <div class="item"> + <img src="@/assets/images/FireFighting/xiaofang_ic_lixian@2x.png" alt=""> + <div class="content"> + <div class="name">绂荤嚎</div> + <div class="num">12</div> + </div> + </div> + <div class="item"> + <img src="@/assets/images/FireFighting/xiaofang_ic_pingbi@2x.png" alt=""> + <div class="content"> + <div class="name">灞忚斀</div> + <div class="num">12</div> + </div> + </div> + </div> + </div> + <div class="center_box_two"> + <div class="content_wrap"> + <div class="header"> + <div class="left"> + <img class="icon" src="@/assets/images/FireFighting/468@2x.png" alt=""> + <span>娓╁害/婀垮害浼犳劅鍣�</span> + </div> + <div class="right"> + <img class="icon" src="@/assets/images/FireFighting/xiaofang_ar_left@2x.png" alt=""> + <div class="num">1/5</div> + <img class="icon" src="@/assets/images/FireFighting/xiaofang_ar_right@2x.png" alt=""> + </div> + </div> + <div class="list_wrap"> + <div class="title"> + <img class="icon" src="@/assets/images/FireFighting/ic_location@2x.png" alt=""> + <span>鍗歌揣鍖�1</span> + </div> + <div class="list"> + <div class="item"> + <img class="icon" src="@/assets/images/FireFighting/ic_wendu@2x.png" alt=""> + <div class="content"> + <div class="num">23<span>掳C</span></div> + <div class="la">闃堝�� 0锝�100掳C</div> + </div> + </div> + <div class="item"> + <img class="icon" src="@/assets/images/FireFighting/ic_shidu@2x.png" alt=""> + <div class="content"> + <div class="num">23<span>%</span></div> + <div class="la">闃堝�� 0锝�100%</div> + </div> + </div> + </div> + </div> + </div> + <div class="content_wrap"> + <div class="header"> + <div class="left"> + <img class="icon" src="@/assets/images/FireFighting/468@2x.png" alt=""> + <span>瀹炴椂浼犳劅鍣ㄦ娴�</span> + </div> + <div class="right"> + <img class="icon" src="@/assets/images/FireFighting/xiaofang_ar_left@2x.png" alt=""> + <div class="num">1/5</div> + <img class="icon" src="@/assets/images/FireFighting/xiaofang_ar_right@2x.png" alt=""> + </div> + </div> + <div class="list_wrap"> + <div class="title_wrap"> + <div class="title"> + <img class="icon" src="@/assets/images/FireFighting/ic_location@2x.png" alt=""> + <span>1璺�/姘村帇</span> + </div> + <div class="title"> + <img class="icon" src="@/assets/images/FireFighting/ic_location@2x.png" alt=""> + <span>2璺�/娑蹭綅</span> + </div> + </div> + <div class="list"> + <div class="watergage_wrap"> + <div class="watergage" id="watergage"></div> + <div class="unit">2.50 <span>Mpa</span></div> + <div class="place">闃堝�� 0锝�2.5Mpa</div> + </div> + <div class="item"> + <div class="liquidlevel_wrap"> + <div class="liquidlevel" id="liquidlevel"></div> + <div class="unit">3.45 <span>M</span></div> + <div class="place">闃堝�� 0锝�4.50M</div> + </div> + + </div> + </div> + </div> + </div> + </div> + </div> + <div class="right_box"> + <div class="right_box_one"> + <div class="com_header"> + <div class="title"> + <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> + <div>鏈勾娑堥槻璁惧/璁炬柦缁翠繚鎯呭喌</div> + </div> + <img src="@/assets/images/title@2x.png" class="bg" alt="" /> + </div> + <div class="content_wrap"> + <div class="list"> + <template v-for="i in 3"> + <div class="item"> + <div>宸茬淮淇�</div> + <div class="num active">500</div> + </div> + <div v-if="i < 3" class="separate"></div> + </template> + + </div> + <div class="footer"> + <img src="@/assets/images/FireFighting/ic_weixiu@2x.png" class="icon" alt=""> + <div class="content"> + <div>鏈湀鏂板缁翠繚</div> + <div class="num">40 <span>涓�</span></div> + </div> + </div> + </div> + </div> + <div class="right_box_two"> + <div class="com_header"> + <div class="title"> + <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> + <div>浠婃棩闅愭偅/鍛婅</div> + </div> + <img src="@/assets/images/title@2x.png" class="bg" alt="" /> + </div> + <div class="su_title"> + <img class="icon" src="@/assets/images/FireFighting/ic_title_green@2x.png" alt=""> + <div class="name">闅愭偅闅忔墜鎷�</div> + </div> + <div class="static_wrap"> + <div class="item"> + <img src="@/assets/images/FireFighting/ic_tibao@2x.png" alt=""> + <div class="content"> + <div class="name">鎻愭姤闅愭偅鏁�</div> + <div class="num"><span>10</span>涓�</div> + </div> + </div> + <div class="item"> + <img src="@/assets/images/FireFighting/ic_chuli@2x.png" alt=""> + <div class="content"> + <div class="name">澶勭悊闅愭偅鏁�</div> + <div class="num"><span class="today">3</span>涓�</div> + </div> + </div> + </div> + <div class="su_title"> + <img class="icon" src="@/assets/images/FireFighting/ic_title_green@2x.png" alt=""> + <div class="name">鍛婅淇℃伅</div> + </div> + <div class="list"> + <div class="item" v-for="i in 5"> + <div class="icon"> + <div class="circle"></div> + <div class="line"></div> + </div> + <div class="content"> + <div class="header"> + <div class="time"> + <span>123</span> + <span class="status">澶勭悊涓�</span> + </div> + <div class="have_time">宸茬粡鍙戠敓<span>1</span>鍒嗛挓</div> + </div> + <div class="wrap"> + <div class="title"> + <img class="xf" src="@/assets/images/FireFighting/ic_gaojing_red@2x.png" alt=""> + <span>娑堥槻璀﹀憡</span> + </div> + <div class="title"> + <img class="addr" src="@/assets/images/FireFighting/xiaofang_ic_weizhi@2x.png" alt=""> + <span>address</span> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + </v-scale-screen> +</template> + +<script setup> +import { ref, onMounted } from 'vue' +import VScaleScreen from 'v-scale-screen' +import Percent from '@/components/percent.vue' +import dayjs from 'dayjs' + +import * as echarts from 'echarts' +const colors = ['#FEAF01', '#01ABFE', '#51F9E4'] +const weekMap = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�',] +const date = ref(dayjs().format('YYYY.MM.DD')) +const week = ref(weekMap[new Date().getDay()]) +const time = ref(dayjs().format('HH:mm:ss')) +setInterval(() => { + date.value = dayjs().format('YYYY-MM-DD') + week.value = weekMap[new Date().getDay()] + time.value = dayjs().format('HH:mm:ss') + +}, 1000) + +const arr = ['#68e2e3', '#50afd3', '#377cdb', '#d5ae3a'] +const initEnergy = () => { + var myChart = echarts.init(document.querySelector('.energyRef')) + // 缁樺埗鍥捐〃 + const arr = ['#68e2e3', '#50afd3', '#377cdb', '#d5ae3a'] + myChart.setOption({ + grid: { + top: '20%', + left: '2%', + right: '2%', + bottom: '4%', + containLabel: true + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'line' + }, + }, + xAxis: { + type: 'category', + data: [1, 2, 3, 4, 4, 5] + }, + yAxis: { + type: 'value', + name: 'kw路h', + nameTextStyle: { + padding: [0, 0, 4, -30] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂� + }, + splitLine: { + show: true, + lineStyle: { + //杩欓噷杈撳叆绾挎潯鐨勬牱寮� + color: 'rgba(255,255,255,0.14)', + } + } + }, + series: [ + { + data: [1, 2, 3, 4, 5], + type: 'bar', + barWidth: 10, + itemStyle: { + normal: { + color: new echarts.graphic.LinearGradient( + 0, 0, 0, 1, + [ + { offset: 0, color: arr[1] }, + { offset: 1, color: '#080807' } + ] + ), + barBorderRadius: [10, 10, 0, 0] + } + } + } + ] + }) + window.addEventListener('resize', function () {//鎵ц + myChart.resize() + }) +} +const initEchart1 = () => { + const myChart = echarts.init(document.getElementById('echart1')) + const option = { + series: [ + + { + type: 'pie', + radius: ['86%', '100%'], + label: { + show: false, + position: 'center' + }, + padAngle: 5, + itemStyle: { + borderRadius: 10 + }, + color: colors, + labelLine: { + show: false + }, + data: [ + { value: 1048, name: 'Search Engine' }, + { value: 735, name: 'Direct' }, + { value: 580, name: 'Email' } + ] + } + ] + } + myChart.setOption(option) + window.addEventListener('resize', function () { // 鎵ц + myChart.resize() + }) +} +const initWatergage = () => { + const myChart = echarts.init(document.getElementById('watergage')) + var data_value = 2 + const option = { + barMaxWidth: 3, + polar: { + radius: '80%' + }, + grid: { + top: '0%', + left: '0%', + right: '%', + bottom: '0%', + containLabel: true + }, + angleAxis: { + show: false, + max: (360 * 100) / 270, + type: 'value', + startAngle: 225, + }, + radiusAxis: { + show: false, + type: 'category', + z: 10 + }, + series: [ + { + type: 'gauge', + min: 0, + max: 2.50, + splitNumber: 5, + radius: '100%', + center: ['50%', '50%'], + data: [data_value], + detail: { + formatter: (v) => v + '%', + color: '#152435', + fontSize: 1, + + }, + itemStyle: { + color: '#3DE6FF' + }, + pointer: { + width: 2, + length: '90%', + offsetCenter: [0, '3%'], + }, + axisLine: { + show: true, + lineStyle: { + width: 0, + color: [ + [0.05, '#1b6dff'], + [0.10, '#2084ff'], + [0.15, '#2596ff'], + [0.20, '#2db0ff'], + [0.25, '#31c0ff'], + [0.30, '#36d3ff'], + [0.35, '#4fe6ec'], + [0.40, '#6ae7d2'], + [0.45, '#84e8b9'], + [0.50, '#a5e999'], + [0.55, '#ccea75'], + [0.60, '#f8eb4a'], + [0.65, '#ffdd4f'], + [0.70, '#ffcb5a'], + [0.75, '#ffae6e'], + [0.80, '#ff9c7b'], + [0.85, '#ff8d87'], + [0.90, '#ff7d91'], + [0.95, '#ff6f9b'], + [1, '#ff5ca9'] + ] + + } + }, + axisTick: { + show: true, + length: 3, + splitNumber: 12, + lineStyle: { + width: 1, + color: 'auto', + }, + }, + axisLabel: { + distance: 12, + fontSize: 8, + color: 'auto', + }, + splitLine: { + show: true, + length: -5, + lineStyle: { + width: 1, + color: 'auto', + } + }, + z: 9, + }, + { + type: 'bar', + barGap: '-100%', + coordinateSystem: 'polar', + roundCap: true, + data: [ + { + value: 100, + itemStyle: { + color: new echarts.graphic.LinearGradient(0, 0, 1, 1, [ + { offset: 0, color: '#0A5EFF' }, + { offset: 0.45, color: '#20DDFF' }, + { offset: 1, color: '#FC10CB' } + ]) + } + } + ], + z: 3, + }, + { + type: 'pie', + radius: ['2%', '6%'], + center: ['50%', '50%'], + labelLine: { + show: false + }, + data: [ + { + value: 100, + itemStyle: { + color: '#3DE6FF', + opacity: 0.5 + } + } + ], + z: 2, + }, + { + type: 'pie', + radius: 4, + labelLine: { + show: false + }, + data: [ + { + value: 20, + itemStyle: { + color: '#3DE6FF' + } + } + ], + z: 1, + }, + ] + } + myChart.setOption(option) + window.addEventListener('resize', function () { // 鎵ц + myChart.resize() + }) +} +const initLiquidlevel = () => { + const myChart = echarts.init(document.getElementById('liquidlevel')) + var data = 65 + const option = { + tooltip: { + trigger: 'none', + }, + xAxis: { + data: ['鐧惧垎姣�'], + axisTick: { + show: false, + }, + axisLine: { + show: false, + }, + axisLabel: { + show: false, + textStyle: { + color: '#e54035', + }, + }, + }, + yAxis: { + splitLine: { + show: false, + }, + axisTick: { + show: false, + }, + axisLine: { + show: false, + }, + axisLabel: { + show: false, + }, + }, + series: [ + { + name: '鏈�涓婂眰绔嬩綋鍦�', + type: 'pictorialBar', + symbolSize: [260, 40], + symbolOffset: [0, -20], + z: 12, + itemStyle: { + normal: { + color: 'rgba(8,44,110, 1)', + }, + }, + data: [ + { + value: 100, + symbolPosition: 'end', + }, + ], + }, + { + name: '涓棿绔嬩綋鍦�', + type: 'pictorialBar', + symbolSize: [260, 40], + symbolOffset: [0, -20], + z: 12, + itemStyle: { + normal: { + color: () => + new echarts.graphic.LinearGradient(1, 1, 0, 0, [ + { + offset: 0, + color: '#03C7F9', + }, + { + offset: 1, + // color: '#03C7F922', + color: 'rgb(8,44,110)', + }, + ]), + shadowColor: '#03C7F9', + shadowBlur: 10, + shadowOffsetX: 0, + shadowOffsetY: 4, + }, + }, + data: [ + { + value: data, + symbolPosition: 'end', + }, + ], + }, + { + name: '鏈�搴曢儴绔嬩綋鍦�', + type: 'pictorialBar', + symbolSize: [260, 40], + symbolOffset: [0, 20], + z: 12, + itemStyle: { + normal: { + color: () => + new echarts.graphic.LinearGradient(0, 1, 1, 0, [ + { + offset: 0, + color: '#03C7F9', + }, + { + offset: 0.9, + // color: '#03C7F922', + color: 'rgba(8,44,110, 0.85)', + }, + ]), + // shadowColor: '#03C7F9', + // shadowBlur: 30, + // shadowOffsetX: 0, + // shadowOffsetY: -10, + }, + }, + data: [100 - data], + }, + { + //搴曢儴绔嬩綋鏌� + stack: '1', + type: 'bar', + itemStyle: { + normal: { + // color: 'rgba(8,44,110, 0.94)', + color: () => + new echarts.graphic.LinearGradient(0, 0, 1, 0, [ + { + offset: 0, + color: 'rgba(18,85,213,0.77)', + }, + { + offset: 1, + color: 'rgba(8,44,110, 0.77)', + }, + ]), + opacity: 0.77, + }, + }, + label: { + distance: 15, + show: true, + position: data > 58 ? 'inside' : 'top', + formatter: '{c}' + '%', + fontSize: 80, + color: '#1AFCFF', + textShadowColor: '#03C7F9', + textShadowBlur: 30, + textShadowOffsetX: 5, + textShadowOffsetY: 10, + }, + + silent: true, + barWidth: 250, + barGap: '-100%', // Make series be overlap + data: [data], + }, + { + //涓婇儴绔嬩綋鏌� + stack: '1', + type: 'bar', + itemStyle: { + normal: { + color: () => + new echarts.graphic.LinearGradient(1, 0, 0, 0, [ + { + offset: 0, + color: '#47C8FF77', + }, + { + offset: 0.05, + color: '#47C8FF44', + }, + { + offset: 0.15, + color: '#47C8FF00', + }, + { + offset: 0.85, + color: '#47C8FF00', + }, + { + offset: 0.95, + color: '#47C8FF44', + }, + { + offset: 1, + color: '#47C8FF77', + }, + ]), + }, + }, + silent: true, + barWidth: 300, + barGap: '-100%', // Make series be overlap + data: [100 - data], + }, + ], + } + myChart.setOption(option) + window.addEventListener('resize', function () { // 鎵ц + myChart.resize() + }) +} + +onMounted(() => { + // initEnergy() + // initEchart1() + initWatergage() + initLiquidlevel() +}) + + +</script> + +<style lang="scss" scoped> +div { + box-sizing: border-box; +} + +.main_content { + display: flex; + padding: 20px 25px 0; + + .left_box { + width: 450px; + + .left_box_one { + width: 100%; + margin-bottom: 20px; + border: 1px solid; + + .list_wrap { + padding: 10px 0; + height: 227px; + overflow: auto; + + .list { + .line { + display: flex; + height: 32px; + align-items: center; + font-size: 14px; + + .item { + flex: 1; + display: flex; + justify-content: center; + align-items: center; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + .name { + flex: 2; + } + + .warnning { + color: #FEAF01; + } + } + + .header { + background: rgba(134, 156, 201, 0.1); + font-weight: 500; + + .item { + border-right: 1px solid rgba(255, 255, 255, 0.2); + + &:nth-last-child(1) { + border: none; + } + } + } + + .separate { + width: 100%; + height: 2px; + background-color: rgba(255, 255, 255, 0.2); + /* background-color: red; */ + border-right: 4px solid #00F2F3; + border-left: 4px solid #00F2F3; + } + } + } + } + + .left_box_two { + margin-bottom: 20px; + + .police_wrap { + height: 225px; + + border: 1px solid; + + .echart1 { + width: 100%; + height: 100%; + } + } + } + + .left_box_three { + .dispose_wrap { + border: 1px solid; + height: 210px; + width: 100%; + + .echart2 { + width: 100%; + height: 100%; + } + } + } + } + + .center_box { + flex: 1; + padding: 16px 60px 0; + display: flex; + flex-direction: column; + justify-content: space-between; + + .center_box_one { + .static_wrap { + display: flex; + justify-content: space-between; + align-items: center; + margin: 30px 0 54px; + + .item { + display: flex; + + img { + width: 61px; + height: 63px; + margin-right: 15px; + } + + .content { + font-size: 15px; + + .num { + font-size: 12px; + color: #D2E0FF; + + span { + font-weight: bold; + font-size: 30px; + margin-right: 5px; + font-weight: 600; + background-image: -webkit-linear-gradient(top, + #01D9FE 0%, + #01D9FE 60%, + #fff 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + + .today { + background-image: -webkit-linear-gradient(top, + #fff 0%, + #20FFC5 50%, + #20FFC5 100%); + } + + .finish { + background-image: -webkit-linear-gradient(top, + #fff 0%, + #FFB120 50%, + #FFB120 100%); + } + } + } + } + } + } + + .center_box_two { + width: 100%; + display: flex; + + .content_wrap { + flex: 1; + margin-right: 20px; + + .title_wrap { + display: flex; + + .title { + flex: 1; + } + } + + &:nth-last-child(1) { + margin-right: 0; + } + + .header { + display: flex; + justify-content: space-between; + align-items: center; + font-weight: bold; + font-size: 16px; + text-shadow: 0px 2px 8px #01ABFE; + margin-bottom: 20px; + + .left { + display: flex; + align-items: center; + + .icon { + width: 14px; + height: 28px; + margin-right: 10px; + } + } + + .right { + display: flex; + align-items: center; + + .num { + margin: 0 40px; + } + + .icon { + width: 13px; + height: 16px; + } + } + } + + .list_wrap { + height: 206px; + background-image: url('@/assets/images/FireFighting/bg_wendu@2x.png'); + background-size: cover; + + .title { + height: 46px; + display: flex; + align-items: center; + color: #D2E0FF; + padding-left: 20px; + + .icon { + width: 16px; + margin-right: 8px; + } + } + + .list { + height: 160px; + display: flex; + justify-content: space-evenly; + + .item { + display: flex; + align-items: center; + + .icon { + width: 70px; + height: 70px; + margin-right: 10px; + } + + .content { + .num { + font-size: 28px; + font-weight: 500; + + span { + font-style: 14px; + font-weight: 400; + } + } + + .la { + font-size: 13px; + color: #869CC9; + } + } + } + } + + .watergage_wrap { + text-align: center; + + .watergage { + width: 130px; + height: 112px; + } + + .unit { + font-weight: 500; + font-size: 18px; + position: relative; + bottom: 16px; + left: 4px; + + span { + font-size: 12px; + font-weight: 400; + } + } + + .place { + position: relative; + bottom: 16px; + left: 4px; + font-size: 13px; + color: #869CC9; + } + } + + .liquidlevel_wrap { + transform: scale(0.24); + color: #fff; + text-align: center; + position: relative; + left: 20px; + bottom: 10px; + .unit { + font-weight: 500; + font-size: 80px; + position: relative; + bottom: 24px; + left: 4px; + + span { + font-size: 52px; + font-weight: 400; + } + } + + .place { + position: relative; + bottom: 10px; + left: 4px; + font-size:44px; + color: #869CC9; + } + + .liquidlevel { + width: 320px; + height: 420px; + + } + } + + + } + } + + } + } + + .right_box { + width: 450px; + + .right_box_one { + .content_wrap { + height: 176px; + + .list { + display: flex; + align-items: center; + + .item { + height: 116px; + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + .num { + margin-top: 12px; + font-weight: bold; + font-size: 32px; + } + + .active { + color: #00F2F3; + } + } + + .separate { + width: 1px; + height: 50px; + background-color: rgba(255, 255, 255, 0.21); + } + } + + .footer { + display: flex; + + .icon { + width: 40px; + height: 41px; + margin-right: 2px; + } + + .content { + flex: 1; + font-size: 16px; + height: 40px; + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 20px; + background: linear-gradient(270deg, rgba(1, 217, 254, 0) 0%, rgba(1, 217, 254, 0.19) 100%); + border: 1px solid; + border-image: linear-gradient(270deg, rgba(1, 217, 254, 0), rgba(1, 217, 254, 0.6)) 1 1; + + .num { + font-size: 20px; + font-weight: bold; + + span { + font-size: 13px; + color: #869CC9; + } + } + } + } + } + } + + .right_box_two { + .su_title { + display: flex; + align-items: center; + font-weight: 500; + font-size: 16px; + margin: 20px; + + .icon { + width: 17px; + height: 17px; + margin-right: 7px; + } + } + + .static_wrap { + display: flex; + justify-content: space-evenly; + align-items: center; + height: 110px; + + .item { + display: flex; + align-items: center; + + img { + width: 80px; + height: 80px; + margin-right: 8px; + } + + .content { + font-size: 14px; + + .num { + font-size: 12px; + color: #D2E0FF; + margin-top: 8px; + + span { + font-weight: bold; + font-size: 24px; + margin-right: 4px; + font-weight: 600; + background-image: -webkit-linear-gradient(top, + #01D9FE 0%, + #01D9FE 60%, + #fff 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + + .today { + background-image: -webkit-linear-gradient(top, + #fff 0%, + #FFB120 50%, + #FFB120 100%); + } + } + } + } + } + + .list { + height: 330px; + overflow: auto; + margin-top: 15px; + scrollbar-width: none; + + .item { + display: flex; + font-size: 13px; + color: #D2E0FF; + + .icon { + width: 40px; + display: flex; + flex-direction: column; + align-items: center; + padding-top: 10px; + + .circle { + width: 7px; + height: 7px; + border-radius: 50%; + background: #01D9FE; + box-shadow: 0px 0px 1px 4px #34788f; + /* opacity: 0.52; */ + } + + .line { + margin-top: 3px; + width: 1px; + flex: 1; + background-color: #153947; + } + } + + .content { + flex: 1; + + .header { + display: flex; + justify-content: space-between; + align-items: center; + + .time { + display: flex; + align-items: center; + + .status { + height: 18px; + line-height: 18px; + border-radius: 2px; + padding: 2px 4px; + border: 1px solid #869CC9; + font-size: 12px; + margin-left: 8px; + } + } + + .have_time { + font-size: 12px; + color: #D2E0FF; + + span { + color: #FEAF01; + } + } + } + + .wrap { + height: 40px; + background: linear-gradient(270deg, rgba(254, 85, 1, 0) 0%, rgba(254, 85, 1, 0.19) 100%); + border-radius: 2px 0px 0px 2px; + display: flex; + align-items: center; + border: 1px solid; + margin-bottom: 20px; + margin-top: 8px; + padding: 0 10px; + border-image: linear-gradient(270deg, rgba(254, 85, 1, 0), rgba(254, 85, 1, 0.6)) 1 1; + + .title { + flex: 4; + font-weight: bold; + font-size: 15px; + color: #FFFFFF; + display: flex; + align-items: center; + + span { + margin-left: 4px; + } + + .xf { + width: 14px; + height: 14px; + } + + .addr { + width: 12px; + height: 12px; + } + } + + .address { + flex: 6; + } + } + } + } + } + } + } +} + +.main_header { + display: flex; + justify-content: space-between; + align-items: center; + height: 90px; + position: relative; + padding: 0px 40px 16px; + font-weight: 600; + font-size: 36px; + + .title { + background-image: -webkit-linear-gradient(top, + #ffffff 0%, + #c8ddff 70%, + #85b4ff 80%, + #74a9ff 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + + .time_wrap { + font-size: 26px; + font-weight: 600; + background-image: -webkit-linear-gradient(top, + #ffffff 0%, + #c8ddff 50%, + #85b4ff 80%, + #74a9ff 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + display: flex; + align-items: center; + + .time { + width: 130px; + display: flex; + justify-content: flex-end; + font-size: 30px; + } + + .week { + margin-left: 20px; + } + } + + .main_header_bg { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + object-fit: cover; + z-index: -1; + } +} + +.com_header { + height: 40px; + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 15px 0 13px; + position: relative; + + .title { + display: flex; + align-items: center; + font-weight: bold; + font-size: 16px; + background-image: -webkit-linear-gradient(top, + #ffffff 0%, + #c8ddff 66%, + #85b4ff 72%, + #74a9ff 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + + .icon { + width: 16px; + height: 16px; + margin-right: 14px; + } + } + + .tabs { + display: flex; + align-items: center; + font-size: 14px; + color: #d2e0ff; + + .separate { + width: 1px; + height: 14px; + background-color: #d2e0ff; + margin: 0 6px; + } + + .active { + color: #0094eb; + } + } +} + +.main_app { + width: 1920px; + height: 960px; + /* width: 100%; + height: 100vh; */ + background: #0b2539; + color: #FFFFFF; + position: relative; + z-index: -2; + font-size: 14px; + + .main_bg { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + object-fit: cover; + z-index: -1; + } +} + +.bg { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + object-fit: cover; + z-index: -1; +} +</style> \ No newline at end of file diff --git a/screen/src/views/LogisticsCenter.vue b/screen/src/views/LogisticsCenter.vue new file mode 100644 index 0000000..096746a --- /dev/null +++ b/screen/src/views/LogisticsCenter.vue @@ -0,0 +1,1312 @@ +<template> + <v-scale-screen width="1920" height="960"> + <div class="main_app"> + <img src="@/assets/images/LogisticsCenter/bg@2x.png" class="main_bg" alt="" /> + <div class="main_header"> + <img src="@/assets/images/maintitle@2x.png" class="main_header_bg" alt="" /> + <div class="title">瀹夊窘涓儫鐗╂祦涓績杩愯澶у睆</div> + <div class="time_wrap"> + <span class="date">{{ date }}</span> + <span class="week">{{ week }}</span> + <span class="time">{{ time }}</span> + </div> + </div> + <div class="main_content"> + <div class="left_box"> + <div class="com_header"> + <div class="title"> + <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> + <div>璁㈠崟鍦ㄩ�旇窡韪�</div> + </div> + <img src="@/assets/images/title@2x.png" class="bg" alt="" /> + </div> + <div class="left_box_one"> + <div class="second_title"> + <div class="title"> + <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" /> + <div>鏈勾绱鍑哄簱閲�</div> + </div> + </div> + <div class="content_wrap"> + <div class="num_wrap"> + <div class="num_list"> + <div class="num" v-for="i in '200000'"> + {{ i }} + <img class="bg" src="@/assets/images/LogisticsCenter/bg_number@2x.png" alt=""> + </div> + </div> + <div class="content"> + <div class="unit_wrap"> + <span class="la">鍚屾瘮</span> + <img src="@/assets/images/ic_up.png" class="icon" alt=""> + <span>10.2%</span> + <span class="la" style="margin-left: 30px;margin-right: 10px;">绱鍑哄簱杞︽</span> + <span>3900</span> + </div> + + </div> + </div> + <div class="echart_wrap"> + <div class="echart1" id="echart1"></div> + <div class="list"> + <div class="item" v-for="item, i in StockOutData" :key="i"> + <div :style="{ background: colors[i] }" class="icon"></div> + <div class="text">{{ item.name }}</div> + <div class="num">{{ item.value }}</div> + </div> + </div> + </div> + </div> + </div> + <div class="left_box_two"> + <div class="second_title"> + <div class="title"> + <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" /> + <div>杩�7鏃ュ埌璐ф儏鍐�</div> + </div> + </div> + <div class="energy_wrap"> + <div class="energyRef"></div> + </div> + </div> + <div class="left_box_three"> + <div class="second_title"> + <div class="title"> + <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" /> + <div>褰撳墠杩愯緭浠诲姟</div> + </div> + <div class="search_wrap"> + <img src="@/assets/images/LogisticsCenter/ic_search@2x.png" alt=""> + <span>璁㈠崟鏌ヨ</span> + </div> + </div> + <div class="list_wrap"> + <div class="header line"> + <span class="item">杩愯緭杞﹁締</span> + <span class="item">鐘舵��</span> + <span class="item">浣嶇疆</span> + <span class="item">浠诲姟涓嬭揪鏃堕棿</span> + </div> + <div class="line" v-for="i in 5"> + <span class="item">鐨朅23bbb</span> + <span class="item">11</span> + <span class="item">11</span> + <span class="item">11</span> + </div> + </div> + </div> + </div> + <div class="center_box"> + <div class="center_box_one"> + <div class="header_wrap"> + <div class="left"> + <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> + <span>鍑哄簱鑳藉姏</span> + </div> + <div class="right"> + <img src="@/assets/images/LogisticsCenter/position.png" class="posi" alt=""> + <span>鍏ㄧ渷</span> + <img src="@/assets/images/LogisticsCenter/bottom.png" class="icon" alt=""> + </div> + </div> + <div class="static_wrap"> + <div class="item"> + <img src="@/assets/images/LogisticsCenter/ic_jinrijihua@2x.png" alt=""> + <div class="content"> + <div class="name">浠婃棩璁″垝閲�</div> + <div class="num"><span>1000</span>涓囨敮</div> + <div class="unit">杞︽锛�10</div> + </div> + </div> + <div class="item"> + <img src="@/assets/images/LogisticsCenter/ic_jinrichuku@2x.png" alt=""> + <div class="content"> + <div class="name">浠婃棩鍑哄簱閲�</div> + <div class="num"><span class="today">1000</span>涓囨敮</div> + <div class="unit">杞︽锛�10</div> + </div> + </div> + <div class="item"> + <img src="@/assets/images/LogisticsCenter/ic_jinriweichu@2x.png" alt=""> + <div class="content"> + <div class="name">浠婃棩鏈嚭搴撻噺</div> + <div class="num"><span class="finish">1000</span>涓囨敮</div> + <div class="unit">杞︽锛�10</div> + </div> + </div> + </div> + <div class="footer"> + <span>鍗犲嚭搴撹兘鍔�</span> + <span class="num">80%</span> + </div> + </div> + <div class="center_box_two"></div> + </div> + <div class="right_box"> + <div class="com_header"> + <div class="title"> + <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> + <div>浠撳偍涓�搴撳埗</div> + </div> + <img src="@/assets/images/title@2x.png" class="bg" alt="" /> + </div> + <div class="right_box_one"> + <div class="second_title"> + <div class="title"> + <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" /> + <div>鏈勾绱鍏ュ簱閲�</div> + </div> + </div> + <div class="content_wrap"> + <div class="num_wrap"> + <div class="num_list"> + <div class="num" v-for="i in '200000'"> + {{ i }} + <img class="bg" src="@/assets/images/LogisticsCenter/bg_number@2x.png" alt=""> + </div> + </div> + <div class="content"> + <div class="unit_wrap"> + <span class="la">鍚屾瘮</span> + <img src="@/assets/images/ic_up.png" class="icon" alt=""> + <span>10.2%</span> + <span class="la" style="margin-left: 30px;margin-right: 10px;">绱鍑哄簱杞︽</span> + <span>3900</span> + </div> + + </div> + </div> + <div class="static_wrap"> + <div class="echart_wrap"> + <div class="echart3" id="echart3"></div> + <div class="pie_text"> + <div class="fs30">30%</div> + </div> + </div> + <div class="text">璁″垝瀹屾垚閲�</div> + </div> + </div> + </div> + <div class="right_box_two"> + <div class="second_title"> + <div class="title"> + <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" /> + <div>杩涢攢瀛樿繍钀�</div> + </div> + <div class="tabs"> + <div class="tab active">7澶�</div> + <div class="separate"></div> + <div class="tab">30澶�</div> + <div class="separate"></div> + <div class="tab">1骞�</div> + </div> + </div> + <div class="echart4_wrap"> + <div class="echart4" id="echart4"></div> + </div> + </div> + <div class="right_box_three"> + <div class="second_title"> + <div class="title"> + <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" /> + <div>搴撳瓨鍒╃敤鐜�</div> + </div> + </div> + <div class="echart5_wrap"> + <div class="echart5" id="echart5"></div> + </div> + </div> + </div> + </div> + </div> + </v-scale-screen> +</template> + +<script setup> +import { ref, onMounted } from 'vue' +import VScaleScreen from 'v-scale-screen' +import Percent from '@/components/percent.vue' +import dayjs from 'dayjs' + +import * as echarts from 'echarts' +const weekMap = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�',] +const date = ref(dayjs().format('YYYY.MM.DD')) +const week = ref(weekMap[new Date().getDay()]) +const time = ref(dayjs().format('HH:mm:ss')) +setInterval(() => { + date.value = dayjs().format('YYYY-MM-DD') + week.value = weekMap[new Date().getDay()] + time.value = dayjs().format('HH:mm:ss') + +}, 1000) + +const colors = ['#0193FE', '#FFB642', '#5fc6d5'] +const StockOutData = ref([]) +const getStockOut = () => { + let arr = [] + arr.push({ name: '璁垮', value: 20 }) + arr.push({ name: '鍏虫柟', value: 30 }) + arr.sort((a, b) => b.value - a.value) + StockOutData.value = arr + initEchart1() +} +const initEchart1 = () => { + const myChart = echarts.init(document.getElementById('echart1')) + const option = { + tooltip: { + trigger: 'item' + }, + series: [ + { + type: 'pie', + radius: ['72%', '96%'], + label: { + show: false, + position: 'center' + }, + color: colors, + labelLine: { + show: false + }, + data: StockOutData.value + } + ] + } + myChart.setOption(option) + window.addEventListener('resize', function () { // 鎵ц + myChart.resize() + }) +} +const initEchart3 = () => { + const myChart = echarts.init(document.getElementById('echart3')) + const option = { + tooltip: { + trigger: 'item' + }, + series: [ + { + type: 'pie', + radius: ['80%', '96%'], + label: { + show: false, + position: 'center' + }, + color: ['#72ecc5', '#19373a'], + labelLine: { + show: false + }, + data: StockOutData.value + } + ] + } + myChart.setOption(option) + window.addEventListener('resize', function () { // 鎵ц + myChart.resize() + }) +} +const initEchart4 = () => { + // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥 + const myChart = echarts.init(document.getElementById('echart4')) + // 缁樺埗鍥捐〃 + myChart.setOption({ + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'line' + }, + formatter: function (params) { + setTimeout(() => { + console.log('params', params) + }) + return ` + <div style="background-color: #091123;margin: -12px;padding: 14px;border: 2px solid rgba(1,217,254,0.5);color: #fff;"> + <div>${params[0].name}鎬婚攢鍞(涓囧厓)</div> + <div style="display: flex;align-items: center;"> + <div style="width: 10px;height: 10px;border-radius: 50%;background-color: #ebbf40;"></div> + <div style="margin: 0 4px 0 6px;">鎬婚攢鍞�</div> + <span style="color: #ebbf40;">${params[0].value}</span> + </div> + </div> + ` + } + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: [1, 2, 3, 4, 5, 5] + }, + yAxis: { + type: 'value', + name: '涓囨敮', + nameTextStyle: { + padding: [0, 0, 0, -16] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂� + }, + splitLine: { + show: true, + lineStyle: { + //杩欓噷杈撳叆绾挎潯鐨勬牱寮� + color: 'rgba(255,255,255,0.14)', + type: 'dashed', + }, + splitNumber: 4 + } + }, + grid: { + top: '18%', + left: '0%', + right: '2%', + bottom: '2%', + containLabel: true + }, + legend: { + data: ['鎬诲叆搴撻噺', '鎬诲嚭搴撻噺'] + }, + series: [ + { + name: '鎬诲叆搴撻噺', + data: [10, 2, 30, 4, 4, 30].map(i => { + return { + name: i, + value: i, + } + }), + type: 'line', + areaStyle: { + normal: { + color: { + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: "#4191f6" // 0% 澶勭殑棰滆壊 + }, + { + offset: .4, + color: "#203d79" // 0% 澶勭殑棰滆壊 + }, + { + offset: 1, + color: "#1b1b12" // 100% 澶勭殑棰滆壊 + }], + globalCoord: false // 缂虹渷涓� false + } + } + }, + lineStyle: { // 绾挎潯鏍峰紡 + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, color: '#4191f6' // 0% 澶勭殑棰滆壊 + }, { + offset: 1, color: '#4191f6' // 100% 澶勭殑棰滆壊 + }], + }, + width: 1.5, // 绾挎潯绮楃粏 + }, + symbol: 'circle', + symbolSize: 10, + itemStyle: { + normal: { + color: '#4191f6', //鎶樼嚎鐐圭殑棰滆壊 + }, + }, + smooth: true + }, + { + name: '鎬诲嚭搴撻噺', + data: [30, 2, 10, 4, 4, 20].map(i => { + return { + name: i, + value: i, + } + }), + type: 'line', + areaStyle: { + normal: { + color: { + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, + color: "rgba(192, 156, 53,.7)" // 0% 澶勭殑棰滆壊 + }, { + offset: 1, + color: "#1b1b12" // 100% 澶勭殑棰滆壊 + }], + globalCoord: false // 缂虹渷涓� false + } + } + }, + lineStyle: { // 绾挎潯鏍峰紡 + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, color: '#F3BD00' // 0% 澶勭殑棰滆壊 + }, { + offset: 1, color: '#F3BD00' // 100% 澶勭殑棰滆壊 + }], + }, + width: 2, // 绾挎潯绮楃粏 + }, + symbol: 'circle', + symbolSize: 10, + itemStyle: { + normal: { + color: '#F3BD00', //鎶樼嚎鐐圭殑棰滆壊 + }, + }, + smooth: true + } + ] + }) + + window.addEventListener('resize', function () {//鎵ц + myChart.resize() + }) +} +const initEchart5 = () => { + // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥 + const myChart = echarts.init(document.getElementById('echart5')) + // 缁樺埗鍥捐〃 + myChart.setOption({ + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'cross', + crossStyle: { + color: '#999' + } + } + }, + toolbox: { + feature: { + dataView: { show: true, readOnly: false }, + magicType: { show: true, type: ['line', 'bar'] }, + restore: { show: true }, + saveAsImage: { show: true } + } + }, + legend: { + data: ['Evaporation', 'Precipitation', 'Temperature'] + }, + xAxis: [ + { + type: 'category', + data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], + axisPointer: { + type: 'shadow' + } + } + ], + yAxis: [ + { + type: 'value', + name: 'Precipitation', + min: 0, + max: 250, + interval: 50, + axisLabel: { + formatter: '{value} ml' + } + }, + { + type: 'value', + name: 'Temperature', + min: 0, + max: 25, + interval: 5, + axisLabel: { + formatter: '{value} 掳C' + } + } + ], + series: [ + { + name: 'Evaporation', + type: 'bar', + tooltip: { + valueFormatter: function (value) { + return value + ' ml' + } + }, + data: [ + 2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3 + ] + }, + { + name: 'Precipitation', + type: 'bar', + tooltip: { + valueFormatter: function (value) { + return value + ' ml' + } + }, + data: [ + 2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3 + ] + }, + { + name: 'Temperature', + type: 'line', + yAxisIndex: 1, + tooltip: { + valueFormatter: function (value) { + return value + ' 掳C' + } + }, + data: [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2] + } + ] + }) + + window.addEventListener('resize', function () {//鎵ц + myChart.resize() + }) +} + +const arr = ['#68e2e3', '#50afd3', '#377cdb', '#d5ae3a'] +const initEnergy = () => { + var myChart = echarts.init(document.querySelector('.energyRef')) + // 缁樺埗鍥捐〃 + const arr = ['#68e2e3', '#50afd3', '#377cdb', '#d5ae3a'] + myChart.setOption({ + grid: { + top: '20%', + left: '2%', + right: '2%', + bottom: '4%', + containLabel: true + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'line' + }, + }, + xAxis: { + type: 'category', + data: [1, 2, 3, 4, 4, 5] + }, + yAxis: { + type: 'value', + name: 'kw路h', + nameTextStyle: { + padding: [0, 0, 4, -30] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂� + }, + splitLine: { + show: true, + lineStyle: { + //杩欓噷杈撳叆绾挎潯鐨勬牱寮� + color: 'rgba(255,255,255,0.14)', + } + } + }, + series: [ + { + data: [1, 2, 3, 4, 5], + type: 'bar', + barWidth: 10, + itemStyle: { + normal: { + color: new echarts.graphic.LinearGradient( + 0, 0, 0, 1, + [ + { offset: 0, color: arr[1] }, + { offset: 1, color: '#080807' } + ] + ), + barBorderRadius: [10, 10, 0, 0] + } + } + } + ] + }) + window.addEventListener('resize', function () {//鎵ц + myChart.resize() + }) +} +const initEchart2 = () => { + const myChart = echarts.init(document.getElementById('echart1')) + const option = { + series: [ + { + type: 'pie', + radius: ['86%', '100%'], + label: { + show: false, + position: 'center' + }, + padAngle: 5, + itemStyle: { + borderRadius: 10 + }, + color: colors, + labelLine: { + show: false + }, + data: [ + { value: 1048, name: 'Search Engine' }, + { value: 735, name: 'Direct' }, + { value: 580, name: 'Email' } + ] + } + ] + } + myChart.setOption(option) + window.addEventListener('resize', function () { // 鎵ц + myChart.resize() + }) +} + +onMounted(() => { + initEnergy() + getStockOut() + initEchart2() + initEchart3() + initEchart4() + initEchart5() +}) + + +</script> + +<style lang="scss" scoped> +div { + box-sizing: border-box; +} + +.main_content { + display: flex; + padding: 20px 25px 0; + + .left_box { + width: 440px; + + .left_box_one { + margin-top: 20px; + padding: 0px 10px 30px 20px; + border: 1px solid; + + .content_wrap { + display: flex; + justify-content: space-between; + + .num_wrap { + width: 272px; + + .num_list { + display: flex; + margin-bottom: 20px; + + .num { + width: 30px; + height: 46px; + display: flex; + justify-content: center; + align-items: center; + position: relative; + font-weight: 600; + font-size: 32px; + margin-right: 5px; + } + } + + .content { + display: flex; + color: #D2E0FF; + + .la { + color: #869CC9; + } + + .unit_wrap { + display: flex; + align-items: center; + } + + .icon { + width: 10px; + height: 12px; + margin-right: 6px; + margin-left: 4px; + } + } + } + + .echart_wrap { + flex: 1; + display: flex; + align-items: center; + height: 48px; + + .echart1 { + width: 46px; + height: 46px; + margin-right: 8px; + } + + .list { + flex: 1; + font-size: 13px; + + .item { + display: flex; + align-items: center; + margin: 8px 0; + + .icon { + width: 10px; + height: 10px; + border-radius: 50%; + margin-right: 4px; + background: linear-gradient(270deg, #29aeff 0%, #207ff7 100%); + } + + .text { + margin-right: 6px; + } + } + } + } + } + } + + .left_box_two { + margin-bottom: 20px; + border: 1px solid; + + .energy_wrap { + width: 100%; + height: 250px; + + .energyRef { + width: 100%; + height: 100%; + } + } + } + + .left_box_three { + width: 440px; + padding: 0 15px; + border: 1px solid; + + .second_title { + margin-bottom: 10px; + } + + .list_wrap { + .line { + display: flex; + height: 40px; + align-items: center; + font-size: 14px; + color: #D2E0FF; + + &:nth-of-type(2n) { + background: rgba(134, 156, 201, 0.05); + } + + .item { + flex: 1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + } + + .header { + font-weight: 500; + color: #01D9FE; + } + } + } + } + + .center_box { + flex: 1; + padding: 0 20px; + margin: 0 40px; + + .center_box_one { + background: rgba(255, 255, 255, 0.02); + height: 230px; + border-top: 2px solid #306ba1; + padding-top: 20px; + + .header_wrap { + display: flex; + justify-content: space-between; + margin-bottom: 28px; + font-weight: bold; + font-size: 18px; + background-image: -webkit-linear-gradient(top, + #ffffff 0%, + #c8ddff 66%, + #85b4ff 72%, + #74a9ff 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + + .left { + display: flex; + align-items: center; + + img { + width: 16px; + margin-right: 6px; + } + } + + .right { + display: flex; + align-items: center; + cursor: pointer; + + .posi { + width: 16px; + margin-right: 8px; + } + + .icon { + width: 14px; + margin-left: 2px; + } + } + } + + .static_wrap { + display: flex; + justify-content: space-between; + align-items: center; + margin: 30px 0 14px; + + .item { + display: flex; + + img { + width: 68px; + height: 71px; + margin-right: 15px; + } + + .content { + font-size: 15px; + + .num { + font-size: 12px; + color: #D2E0FF; + + span { + font-weight: bold; + font-size: 30px; + margin-right: 5px; + font-weight: 600; + background-image: -webkit-linear-gradient(top, + #01D9FE 0%, + #01D9FE 60%, + #fff 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + + .today { + background-image: -webkit-linear-gradient(top, + #fff 0%, + #20FFC5 50%, + #20FFC5 100%); + } + + .finish { + background-image: -webkit-linear-gradient(top, + #fff 0%, + #FFB120 50%, + #FFB120 100%); + } + } + + .unit { + font-size: 13px; + color: #D2E0FF; + margin-top: 2px; + } + } + } + } + + .footer { + font-weight: 500; + font-size: 16px; + display: flex; + align-items: center; + + .num { + font-weight: bold; + font-size: 24px; + color: #01D9FE; + margin-left: 8px; + } + } + } + + .center_box_two { + width: 100%; + border: 1px solid; + } + } + + .right_box { + width: 440px; + + .right_box_one { + margin-top: 20px; + padding: 0px 10px 30px 20px; + border: 1px solid; + + .content_wrap { + display: flex; + justify-content: space-between; + + .num_wrap { + width: 280px; + + .num_list { + display: flex; + margin-bottom: 20px; + + .num { + width: 30px; + height: 46px; + display: flex; + justify-content: center; + align-items: center; + position: relative; + font-weight: 600; + font-size: 32px; + margin-right: 5px; + } + } + + .content { + display: flex; + color: #D2E0FF; + + .la { + color: #869CC9; + } + + .unit_wrap { + display: flex; + align-items: center; + } + + .icon { + width: 10px; + height: 12px; + margin-right: 6px; + margin-left: 4px; + } + } + } + + .static_wrap { + flex: 1; + + .echart_wrap { + width: 54px; + height: 54px; + position: relative; + margin-bottom: 12px; + + .echart3 { + width: 54px; + height: 54px; + } + + .pie_text { + width: 38px; + height: 38px; + border: 1px dashed rgba(210, 224, 255, 0.48); + border-radius: 50%; + position: absolute; + + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + z-index: 999; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + font-size: 12px; + + .fs30 { + font-weight: 600; + font-size: 14px; + color: #28F0C4; + } + } + + } + + .text { + font-size: 13px; + color: #869CC9; + } + } + } + } + + .right_box_two { + border: 1px solid; + padding: 10px 15px; + + .echart4_wrap { + width: 410px; + height: 216px; + + .echart4 { + width: 410px; + height: 216px; + } + } + } + + .right_box_three { + border: 1px solid; + + .echart5_wrap { + height: 240px; + width: 410px; + + .echart5 { + height: 240px; + width: 410px; + } + } + } + } +} + +.main_header { + display: flex; + justify-content: space-between; + align-items: center; + height: 90px; + position: relative; + padding: 0px 40px 16px; + font-weight: 600; + font-size: 36px; + + .title { + background-image: -webkit-linear-gradient(top, + #ffffff 0%, + #c8ddff 70%, + #85b4ff 80%, + #74a9ff 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + + .time_wrap { + font-size: 26px; + font-weight: 600; + background-image: -webkit-linear-gradient(top, + #ffffff 0%, + #c8ddff 50%, + #85b4ff 80%, + #74a9ff 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + display: flex; + align-items: center; + + .time { + width: 130px; + display: flex; + justify-content: flex-end; + font-size: 30px; + } + + .week { + margin-left: 20px; + } + } + + .main_header_bg { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + object-fit: cover; + z-index: -1; + } +} + +.com_header { + height: 40px; + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 15px 0 13px; + position: relative; + + .title { + display: flex; + align-items: center; + font-weight: bold; + font-size: 18px; + background-image: -webkit-linear-gradient(top, + #ffffff 0%, + #c8ddff 66%, + #85b4ff 72%, + #74a9ff 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + + .icon { + width: 16px; + height: 16px; + margin-right: 14px; + } + } + + .tabs { + display: flex; + align-items: center; + font-size: 14px; + color: #d2e0ff; + + .separate { + width: 1px; + height: 14px; + background-color: #d2e0ff; + margin: 0 6px; + } + + .active { + color: #0094eb; + } + } +} + +.second_title { + height: 24px; + display: flex; + justify-content: space-between; + align-items: center; + position: relative; + font-size: 16px; + margin-bottom: 20px; + + .title { + display: flex; + align-items: center; + font-weight: 500; + font-size: 16px; + color: #FFFFFF; + + .icon { + width: 16px; + height: 16px; + margin-right: 10px; + } + } + + .num_wrap { + font-weight: 400; + font-size: 14px; + color: #D2E0FF; + display: flex; + align-items: center; + + .val { + font-weight: bold; + font-size: 16px; + color: #FFFFFF; + } + } + + .search_wrap { + display: flex; + justify-content: center; + align-items: center; + font-size: 14px; + color: #869CC9; + width: 96px; + height: 28px; + border-radius: 14px; + border: 1px solid #869CC9; + + img { + width: 14px; + height: 14px; + margin-right: 3px; + } + } + + .tabs { + display: flex; + align-items: center; + font-size: 14px; + color: #d2e0ff; + + .separate { + width: 1px; + height: 14px; + background-color: #d2e0ff; + margin: 0 6px; + } + + .active { + color: #0094eb; + } + } +} + +.main_app { + width: 1920px; + height: 960px; + /* width: 100%; + height: 100vh; */ + background: #0b2539; + color: #FFFFFF; + position: relative; + z-index: -2; + font-size: 14px; + + .main_bg { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + object-fit: cover; + z-index: -1; + } +} + +.bg { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + object-fit: cover; + z-index: -1; +} +</style> \ No newline at end of file diff --git a/screen/src/views/LogisticsEfficiency.vue b/screen/src/views/LogisticsEfficiency.vue index ea14ba6..77c7610 100644 --- a/screen/src/views/LogisticsEfficiency.vue +++ b/screen/src/views/LogisticsEfficiency.vue @@ -836,15 +836,14 @@ align-items: center; .time { - width: 180px; + width: 130px; display: flex; justify-content: flex-end; - padding-bottom: 10px; - font-size: 36px; + font-size: 30px; } .week { - margin-left: 36px; + margin-left: 20px; } } diff --git a/screen/src/views/SecurityControl.vue b/screen/src/views/SecurityControl.vue index 33bdaad..8c78854 100644 --- a/screen/src/views/SecurityControl.vue +++ b/screen/src/views/SecurityControl.vue @@ -915,15 +915,14 @@ align-items: center; .time { - width: 180px; + width: 130px; display: flex; justify-content: flex-end; - padding-bottom: 10px; - font-size: 36px; + font-size: 30px; } .week { - margin-left: 36px; + margin-left: 20px; } } -- Gitblit v1.9.3