admin/src/assets/images/default_homeimg.png
admin/src/components/operation/OperCarUseBookParamWindow.vue
@@ -139,7 +139,7 @@ v-for="(item, i) in timeList" :key="i" > {{ item.startHours }}-{{ item.endHours }} {{ item.startHours }} - {{ item.endHours }} </div> </div> </div> @@ -168,20 +168,22 @@ <el-form-item label="用车开始时间" prop="startTime"> <el-date-picker v-model="form.startTime" format="yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" :picker-options="pickerOptions" @change="seletedShiwaiDate" :default-time="defaultTime" :picker-options="pickerOptionsNow" @change="seletedShiwaiDate(1)" > </el-date-picker> </el-form-item> <el-form-item label="用车结束时间" prop="endTime"> <el-date-picker v-model="form.endTime" format="yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" :default-time="defaultTime" :picker-options="pickerOptions" @change="seletedShiwaiDate" > @@ -283,6 +285,7 @@ memberList: [], timeList: [], defaultTime: dayjs().format('HH:mm:ss'), selDatetime: '', colorOptions: [ { color: this.$store.state.primaryColor, name: '已选择' }, @@ -329,6 +332,11 @@ }, selectableRange: '00:00:00 - 23:59:59' }, pickerOptionsNow: { disabledDate: (time) => { return time.getTime() < Date.now() - 8.64e7; } }, // 验证规则 rules: { type: [{ required: true, message: '请选择', trigger: 'change' }], @@ -350,16 +358,6 @@ handler (newValue, oldValue) { if (newValue) { this.$set(this.pickerOptions, 'selectableRange', this.form.startTime.slice(11, 19) + ' - ' + this.form.endTime.slice(11, 19)) // this.startPickerOptions = this.startPickerOptions } }, deep: true, immediate: true }, 'form.startTime': { handler (newValue, oldValue) { if (newValue) { this.$set(this.pickerOptions, 'selectableRange', this.form.startTime.slice(11, 19) + ' - ' + '23:59:59') // this.startPickerOptions = this.startPickerOptions } }, @@ -417,6 +415,7 @@ this.isShowTime = true } else { this.clearTime() this.selDatetime = '' this.isShowShiwai = true } }, @@ -505,10 +504,13 @@ seletedDate (e) { this.gettimes() }, seletedShiwaiDate () { seletedShiwaiDate (str) { const { form } = this if(str && str == 1){ this.$set(this.form, 'endTime', '') } if (form.startTime && form.endTime) { this.selDatetime = form.startTime + '-' + form.endTime this.selDatetime = form.startTime + ' - ' + form.endTime carUseBookList({ carId: form.carId, startTime: form.startTime, admin/src/views/business/internalMember.vue
@@ -96,8 +96,8 @@ <el-table-column prop="positionName" label="岗位" min-width="100px"></el-table-column> <el-table-column prop="isDangyuan" label="是否党员" min-width="100px"> <template slot-scope="{row}"> <span v-if="row.isDangyuan ==1 " style="color: green">党员</span> <span v-else >非党员</span> <span v-if="row.isDangyuan ==1" style="color: green">党员</span> <span v-if="row.isDangyuan ==0">非党员</span> </template> </el-table-column> <el-table-column prop="jobDate" label="入职日期" min-width="100px"></el-table-column> admin/src/views/business/relativeMember.vue
@@ -102,7 +102,7 @@ <el-table-column prop="isDangyuan" label="是否党员" min-width="100px"> <template slot-scope="{row}"> <span v-if="row.isDangyuan ==1 " style="color: green">党员</span> <span v-else >非党员</span> <span v-if="row.isDangyuan ==0">非党员</span> </template> </el-table-column> <el-table-column prop="jobDate" label="入职日期" min-width="100px"> </el-table-column> admin/src/views/business/visits.vue
@@ -16,10 +16,10 @@ <el-option label="待提交审批" value="0"></el-option> <el-option label="审批中" value="1"></el-option> <el-option label="审核通过" value="2"></el-option> <el-option label="审核不通过" value="3"></el-option> <el-option label="审批驳回" value="3"></el-option> <el-option label="取消" value="4"></el-option> <el-option label="预约成功" value="5"></el-option> <el-option label="预约失败" value="6"></el-option> <el-option label="下发成功" value="5"></el-option> <el-option label="下发失败" value="6"></el-option> <el-option label="拜访中" value="7"></el-option> <el-option label="已签离" value="8"></el-option> <el-option label="已失效" value="9"></el-option> @@ -75,9 +75,9 @@ <el-table-column prop="status" fixed="right" label="状态" min-width="100px"> <template slot-scope="{row}"> <span style="color: rgba(245, 154, 35, 0.996);" v-if="row.status === 0">待提交审批</span> <span v-if="row.status === 1" style="color: rgba(245, 154, 35, 0.996);">处理中</span> <span v-if="row.status === 2" style="color: rgba(245, 154, 35, 0.996);">已同意</span> <span style="color: gray;" v-if="row.status === 3">已拒绝</span> <span v-if="row.status === 1" style="color: rgba(245, 154, 35, 0.996);">审批中</span> <span v-if="row.status === 2" style="color: rgba(245, 154, 35, 0.996);">审核通过</span> <span style="color: gray;" v-if="row.status === 3">审批驳回</span> <span v-if="row.status === 4" style="color: gray">取消</span> <span v-if="row.status === 5" style="color: green">下发成功</span> <span v-if="row.status === 6" style="color: gray">下发失败</span> admin/src/views/index.vue
@@ -149,7 +149,7 @@ <div class="btn" v-permissions="['business:staging:query']" @click="handleDetail(item)">处理</div> </div> <div v-if="taskList.length == 0" class="empty"> <img src="@/assets/images/default_nodata.png" alt=""> <img src="@/assets/images/default_homeimg.png" alt=""> </div> </div> </div> @@ -180,7 +180,7 @@ </div> </div> <div v-if="warningList.length == 0" class="empty"> <img src="@/assets/images/default_nodata.png" alt=""> <img src="@/assets/images/default_homeimg.png" alt=""> </div> </div> </div> admin/src/views/meeting/bookings.vue
@@ -66,7 +66,7 @@ @click="exportExcel">导出</el-button> </li> </ul> <el-table v-loading="isWorking.search" :data="tableData.list" stripe border <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange"> <!-- <el-table-column type="selection" align="center" width="55"></el-table-column> --> <el-table-column prop="name" label="会议主题" align="center" min-width="120px" show-overflow-tooltip> admin/src/views/meeting/components/OperaBookingsWindow.vue
@@ -12,6 +12,7 @@ v-model="form.roomId" filterable clearable :disabled="isEdit" placeholder="请选择关联会议室" @change="selectRoom" > @@ -20,6 +21,7 @@ </el-form-item> <el-form-item label="预定日期" prop="date"> <el-date-picker :disabled="isEdit" v-model="form.date" value-format="yyyy-MM-dd" placeholder="请选择预定日期" @@ -464,9 +466,9 @@ .time-item { margin-right: 8px; margin-bottom: 8px; border: #111 solid 1px; border: #cccccc solid 1px; font-size: 14px; font-weight: 500; font-weight: 400; line-height: 14px; width: 124px; height: 36px; admin/src/views/meeting/devices.vue
@@ -38,7 +38,6 @@ v-loading="isWorking.search" :data="tableData.list" stripe border @selection-change="handleSelectionChange" > <el-table-column type="index" prop="index" label="序号" align="center" min-width="50px"></el-table-column> admin/src/views/meeting/notice.vue
@@ -25,7 +25,6 @@ v-loading="isWorking.search" :data="tableData.list" stripe border @selection-change="handleSelectionChange" > <el-table-column type="selection" width="55"></el-table-column> admin/src/views/meeting/projects.vue
@@ -50,7 +50,6 @@ v-loading="isWorking.search" :data="tableData.list" stripe border @selection-change="handleSelectionChange" > <el-table-column label="图标" align="center" min-width="100px"> admin/src/views/meeting/roomStatistics.vue
@@ -57,7 +57,6 @@ v-loading="isWorking.search" :data="tableData.list" stripe border @selection-change="handleSelectionChange" > <el-table-column prop="roomName" label="会议室" align="center" min-width="120px"></el-table-column> admin/src/views/meeting/rooms.vue
@@ -41,7 +41,6 @@ v-loading="isWorking.search" :data="tableData.list" stripe border @selection-change="handleSelectionChange" > <!-- <el-table-column type="selection" width="55"></el-table-column> --> admin/src/views/meeting/userStatistics.vue
@@ -48,7 +48,6 @@ v-loading="isWorking.search" :data="tableData.list" stripe border @selection-change="handleSelectionChange" > <!-- <el-table-column prop="roomName" label="会议室" align="center" min-width="100px"></el-table-column> --> h5/pages/driver/reserved.vue
@@ -48,7 +48,7 @@ <text>总运输量</text> </view> <view class="value"> <input type="number" placeholder="请输入总运输量" v-model="param.totalNum" placeholder-style="color: #999999;" /> <input type="number" @blur="checkSurplus" placeholder="请输入总运输量" v-model="param.totalNum" placeholder-style="color: #999999;" /> <text class="unit">万支</text> </view> </view> @@ -122,7 +122,7 @@ <script> import keyboardInput from '@/components/keyboard-input/keyboard-input.vue'; import { uploadUrl, driverCarApply,driverCarApplyEdit, driverReasonList, driverApplyDetail } from '@/api'; import { uploadUrl, driverCarApply,driverCarApplyEdit, driverReasonList, driverApplyDetail, checkSurplusNum } from '@/api'; import dayjs from 'dayjs' export default { components: { @@ -150,6 +150,21 @@ this.initData() }, methods: { checkSurplus() { const { arriveDate, reasonId, totalNum } = this.param if(!arriveDate || !reasonId || !totalNum) return checkSurplusNum({ arriveDate: arriveDate + ':00', reasonId, totalNum }).then(res => { console.log('res', res); if( res.data == 0 || res.data < Number(totalNum)){ this.showToast(`当日剩余可预约作业量不足请选择其他到场日期`) } }) }, reasonClick() { if(this.param.id){ return @@ -196,10 +211,12 @@ const index = e.indexs[0] this.$set(this.param, 'inReason', reasonList[index].reason) this.$set(this.param, 'reasonId', reasonList[index].id) this.checkSurplus() this.showReason = false }, setinDate(e) { this.$set(this.param, 'arriveDate', dayjs(e.value).format('YYYY-MM-DD HH:mm')) this.checkSurplus() this.showDatetime = false }, inTypeClick(e) { h5/pages/staffLogin/forgetPsd.vue
@@ -123,7 +123,7 @@ width: 100%; height: 100vh; display: flex; padding-top: 160rpx; padding-top: 130rpx; box-sizing: border-box; align-items: center; flex-direction: column; @@ -146,7 +146,7 @@ font-weight: 600; color: #333333; margin-top: 40rpx; margin-bottom: 120rpx; margin-bottom: 80rpx; } .login_list { width: 100%; screen/src/router/index.js
@@ -6,7 +6,7 @@ routes: [ { path: '/', component: () => import('../views/LogisticsEfficiency.vue') component: () => import('../views/SecurityControl.vue') }, { path: '/PlatformCall', screen/src/views/SecurityControl.vue
@@ -245,6 +245,181 @@ </div> </div> </div> <div class="main_footer"> <div class="car_warning"> <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="table"> <div class="line header"> <div>车牌</div> <div class="dept">拜访部门</div> <div class="time">超时时长</div> </div> <div class="line"> <div>皖A33234</div> <div class="dept">综合管理科</div> <div class="time">10:21</div> </div> <div class="separate"></div> <div class="line"> <div>皖A33234</div> <div class="dept">综合管理科</div> <div class="time">10:21</div> </div> <div class="separate"></div> </div> </div> <div class="safe_warning"> <div class="com_header"> <div class="title"> <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> <div>安防告警</div> </div> <div class="tabs"> <div class="tab active">全部</div> <div class="separate"></div> <div class="tab">区域告警</div> <div class="separate"></div> <div class="tab">行为告警</div> </div> <img src="@/assets/images/title@2x.png" class="bg" alt="" /> </div> <div class="list"> <div class="item"> <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">消防警告</div> <div class="title">address</div> </div> </div> </div> <div class="item"> <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">消防警告</div> <div class="title">address</div> </div> </div> </div> </div> </div> <div class="garden_warning"> <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"> <div class="sa_static"> <div class="echart_wrap"> <div class="pie_text"> <div class="fs30"><strong>300</strong></div> <div>总计</div> </div> <div class="echart" id="echart2"></div> </div> <div class="list"> <div class="item"> <div class="line"> <div :style="{ background: colors[1] }" class="icon"></div> <div class="text">在线</div> </div> <div :style="{ color: colors[1] }" class="num">100</div> </div> <div class="item"> <div class="line"> <div :style="{ background: colors[2] }" class="icon"></div> <div class="text">离线</div> </div> <div :style="{ color: colors[2] }" class="num">100</div> </div> </div> </div> <div class="table"> <div class="line header"> <div class="driver">设备类型</div> <div>总数</div> <div>在线数</div> <div>离线数</div> <div>在线率</div> </div> <div class="line"> <div class="driver">门禁设备</div> <div>10</div> <div>10</div> <div>10</div> <div>10</div> </div> <div class="separate"></div> <div class="line"> <div class="driver">门禁设备</div> <div>10</div> <div>10</div> <div>10</div> <div>10</div> </div> <div class="separate"></div> </div> </div> </div> <div class="visitor_warning"> <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="table"> <div class="line header"> <div>姓名</div> <div class="dept">拜访部门</div> <div class="dept">超时时长</div> </div> <div class="line"> <div>name</div> <div class="dept">综合管理科</div> <div class="dept">10:21</div> </div> <div class="separate"></div> <div class="line"> <div>name</div> <div class="dept">综合管理科</div> <div class="dept">10:21</div> </div> <div class="separate"></div> </div> </div> </div> </div> </v-scale-screen> </template> @@ -361,10 +536,43 @@ myChart.resize() }) } const initEchart2 = () => { const myChart = echarts.init(document.getElementById('echart2')) 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() initEchart1() initEchart2() }) @@ -640,6 +848,7 @@ display: flex; justify-content: space-between; padding: 20px; .item { font-size: 12px; color: #D2E0FF; @@ -648,14 +857,16 @@ display: flex; align-items: flex-end; margin-top: 8px; .num{ .num { font-size: 22px; line-height: 22px; color: #FFFFFF; } } } .spacing{ .spacing { width: 1px; height: 40px; background-color: #405173; @@ -727,6 +938,284 @@ } } .main_footer { /* margin-top: 20px; */ display: flex; padding: 20px 25px 0; .car_warning { width: 360px; .table { margin-top: 15px; .line { display: flex; align-items: center; font-size: 14px; height: 32px; div { flex: 3; height: 16px; display: flex; align-items: center; justify-content: center; } .dept { flex: 5; } .time { flex: 4; } } .header { background: rgba(134, 156, 201, 0.1); font-weight: 500; div { 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; } } } .safe_warning { width: 406px; margin-left: 20px; margin-right: 20px; .list { height: 147px; 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: 3px; .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; height: calc(100% - 10px); 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; } .address { flex: 6; } } } } } } .garden_warning { flex: 1; margin-right: 20px; .content { display: flex; .sa_static { width: 285px; margin-top: 15px; display: flex; justify-content: center; align-items: center; padding: 16px 24px; .echart_wrap { position: relative; .pie_text { width: 82px; height: 82px; border: 1px dashed rgba(1, 217, 254, 0.7); 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: bold; font-size: 18px; margin-bottom: 4px; } } } .echart { width: 110px; height: 110px; } .list { margin-left: 36px; flex: 1; display: flex; flex-direction: column; justify-content: space-between; height: 110px; .item { width: 100%; font-size: 14px; .line { display: flex; align-items: center; margin-bottom: 6px; .icon { width: 12px; height: 12px; border-radius: 50%; margin-right: 10px; background: linear-gradient(270deg, #29aeff 0%, #207ff7 100%); } } .num { margin-left: 20px; } } } } .table { .line { div { justify-content: flex-end; padding-right: 10px; } .driver { flex: 4; justify-content: center; } } .header { div { justify-content: center; padding-right: 0; } } } } } .visitor_warning { width: 360px; .table{ .line{ div{ .dept{ flex: 5; } } } } } } .com_header { height: 40px; display: flex; @@ -774,6 +1263,56 @@ } } .table { margin-top: 15px; flex: 1; .line { display: flex; align-items: center; font-size: 14px; height: 32px; div { flex: 3; height: 16px; display: flex; align-items: center; justify-content: center; } .dept { flex: 5; } .time { flex: 4; } } .header { background: rgba(134, 156, 201, 0.1); font-weight: 500; div { 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; } } .second_title { height: 24px; display: flex; @@ -816,10 +1355,8 @@ height: 960px; /* width: 100%; height: 100vh; */ background: #0b2539; color: #FFFFFF; position: relative; z-index: -2; font-size: 14px; .main_bg {