| | |
| | | <div class="list"> |
| | | <div class="item" style="width: 100%"> |
| | | <div class="label">申请人</div> |
| | | <div class="value">{{ model.memberName || '' }} {{ model.memberPhone || '' }} ({{ model.companyName || '' }}) |
| | | <div class="value">{{ model.memberName || '' }} {{ model.memberPhone || '' }} ({{ model.companyName || '' |
| | | }}) |
| | | </div> |
| | | </div> |
| | | <div class="item"> |
| | |
| | | </div> |
| | | <div class="item"> |
| | | <div class="label">司机信息</div> |
| | | <div class="value" v-if="model.driverId != null">{{ model.driverName || '' }} {{ model.driverPhone || '' }} |
| | | <div class="value" v-if="model.driverId != null">{{ model.driverName || '' }} {{ model.driverPhone || '' |
| | | }} |
| | | </div> |
| | | <div class="value" v-if="model.driverId == null">未指派</div> |
| | | </div> |
| | |
| | | import { driveList } from '@/api/business/member' |
| | | import { approveDo } from '@/api/business/approve' |
| | | import { mapState } from 'vuex' |
| | | |
| | | export default { |
| | | name: 'OperaCarUseBookWindow', |
| | | components: { GlobalWindow }, |
| | |
| | | }, |
| | | agreeOpen() { |
| | | this.isShowProblem = true |
| | | this.$set(this.dealForm, 'driverId', this.model.driverId) |
| | | |
| | | this.$set(this.dealForm, 'checkInfo', '') |
| | | this.loadMemberList() |
| | | }, |
| | |
| | | open(title, target, type) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.form.memberIdList = null |
| | | this.form.type = type |
| | | this.getfindCompanyTreePage() |
| | | // 新建组织 |
| | |
| | | <el-input v-model="form.code" placeholder="请输入员工工号" v-trim /> |
| | | </el-form-item> |
| | | <el-form-item label="入职日期" prop="jobDate"> |
| | | <el-date-picker |
| | | v-model="form.jobDate" |
| | | value-format="yyyy-MM-dd" |
| | | type="date"> |
| | | <el-date-picker v-model="form.jobDate" value-format="yyyy-MM-dd" type="date"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="是否党员" prop="isDangyuan"> |
| | |
| | | this.title = title |
| | | this.department = depart |
| | | this.visible = true |
| | | this.form = { |
| | | id: null, |
| | | name: '', |
| | | type: '', |
| | | company: [], |
| | | code: '', |
| | | idcardNo: '', |
| | | idcardNoNew: '', |
| | | linkName: '', |
| | | idcardDecode: '', |
| | | companyId: null, |
| | | idcardType: 0, |
| | | phone: '', |
| | | faceImg: '', |
| | | jobDate: null, |
| | | isDangyuan: 0, |
| | | positionId: null, |
| | | faceImgFull: '' |
| | | } |
| | | this.companyType = companyType |
| | | this.getPositionList() |
| | | // 新建 |
| | |
| | | .upload_wrap{ |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .avatar-uploader{ |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | ::v-deep .avatar{ |
| | | max-width: 90px; |
| | | max-height: 90px; |
| | | } |
| | | |
| | | .content{ |
| | | display: flex; |
| | | flex-direction: column; |
| | |
| | | width="600px" |
| | | :visible.sync="isShowModal" |
| | | :confirm-working="isWorking" |
| | | @close="close" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="param" ref="paramRef" :rules="rules"> |
| | |
| | | this.getfindCompanyTreePage() |
| | | }, |
| | | getfindCompanyTreePage() { |
| | | companyGetListPost({}) |
| | | companyGetListPost({queryHiddenDanger: 1}) |
| | | .then(res => { |
| | | if (res && res.length > 0) { |
| | | this.department = res |
| | |
| | | }, |
| | | getAddrList() { |
| | | const { companyId } = this.param |
| | | this.$set(this.param, 'areaId', '') |
| | | this.$set(this.param, 'checkUserId', '') |
| | | allList({ type: 0,companyId }).then(res => { // 位置 |
| | | this.addrList = res || [] |
| | | }) |
| | |
| | | handleDelImg (i) { |
| | | this.fileList.splice(i, 1) |
| | | }, |
| | | close(){ |
| | | this.isShowModal = false |
| | | this.$emit('close') |
| | | }, |
| | | // 同步信息 |
| | | confirm () { |
| | | this.$refs.paramRef.validate((valid) => { |
| | |
| | | </div> |
| | | </div> |
| | | <el-transfer filterable :title="['未选', '已选']" openAll :props="{ label: 'name', key: 'keyTemp' }" |
| | | filter-placeholder="搜索员工" v-model="searchForm.objIds" :data="memberList" class="transfer"> |
| | | filter-placeholder="搜索员工" v-model="searchForm.objIds" :right-default-checked="searchForm.objIdsT" :data="memberList" class="transfer"> |
| | | </el-transfer> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | |
| | | import { approveTemplSave, approveTemplByType } from '@/api' |
| | | import { fetchList } from '@/api/business/company' |
| | | import { fetchList as memberListPost } from '@/api/business/member' |
| | | import { getSystemDictData } from '@/api/other/other' |
| | | |
| | | export default { |
| | | name: 'config', |
| | | components: { |
| | |
| | | ], |
| | | activeIndex: 0, |
| | | |
| | | param: {}, |
| | | param: { |
| | | objIdsT: [] |
| | | }, |
| | | searchForm: {}, |
| | | isShowTransfer: false, |
| | | memberList: [], |
| | |
| | | |
| | | // 获取组织树 |
| | | getfindCompanyTreePage() { |
| | | fetchList() |
| | | fetchList(2) |
| | | .then(res => { |
| | | if (res && res.length > 0) { |
| | | res[0].fsStatus = 1 |
| | |
| | | console.log(row) |
| | | this.$set(this.searchForm, 'companyId', row.id) |
| | | this.$set(this.searchForm, 'erpOrgId', row.erpId) |
| | | this.$set(this.searchForm, 'objIdsT', this.searchForm.objIds) |
| | | console.log('searchForm.objIds', this.searchForm.objIds); |
| | | |
| | | this.getMemberList() |
| | | }, |
| | | TransferSub() { |
| | |
| | | <div> |
| | | <FileLink |
| | | :links="form.fileList" |
| | | linkName="fileFullUrl" |
| | | linkName="fileurlFull" |
| | | :isUpload="false" |
| | | /> |
| | | </div> |
| | |
| | | this.isShowTime = false
|
| | | },
|
| | | initConfig() { |
| | | deptListPost({}).then(res => { |
| | | deptListPost({queryHiddenDanger: 1}).then(res => { |
| | | this.deptList = [res.data] |
| | | })
|
| | | DangerConfigType({
|
| | |
| | | } else {
|
| | |
|
| | | }
|
| | | if(this.info.driverId && this.info.driverName){ |
| | | this.$set(this.param, 'driverId', this.info.driverId) |
| | | this.$set(this.param, 'driverName', this.info.driverName) |
| | | }
|
| | | this.showApprModal = true
|
| | | },
|
| | | getDriveList() {
|
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | // 安防管控大屏 中心数据 |
| | | export const getEnergyCenterData = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/security/centerData', data) |
| | |
| | | export const getVisitRetentionData = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/security/visitRetentionData', data) |
| | | } |
| | | // 安防管控大屏 访客分析 |
| | | export const afgetVisitData = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/security/getVisitData', data) |
| | | } |
| | | |
| | | // 能耗看板 中心数据 |
| | | export const zxcenterData = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/energy/centerData', data) |
| | | } |
| | | // 能耗看板 月能耗、油耗分析 |
| | | export const zxenergyDataList = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/energy/energyDataList', data) |
| | | } |
| | | // 能耗看板 上月油耗排行 |
| | | export const zxlastMonthOil = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/energy/lastMonthOil', data) |
| | | } |
| | | // 能耗看板 实时负荷曲线 |
| | | export const zxloadCurve = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/energy/loadCurve', data) |
| | | } |
| | |
| | | routes: [ |
| | | { |
| | | path: '/', |
| | | component: () => import('../views/SecurityControl.vue') |
| | | component: () => import('../views/EnergyConsum.vue') |
| | | }, |
| | | { |
| | | path: '/PlatformCall', // 月台叫号大屏 |
| | |
| | | <div class="com_header"> |
| | | <div class="title"> |
| | | <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> |
| | | <div>实时三相电流/电压</div> |
| | | <div>本年累计循环烟箱</div> |
| | | </div> |
| | | <img src="@/assets/images/title@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="content"> |
| | | <div class="item"> |
| | | <div class="lab">A相电流(A)</div> |
| | | <div class="val">60</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="lab">B相电流(A)</div> |
| | | <div class="val">60</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="lab">C相电流(A)</div> |
| | | <div class="val">60</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="lab">有功功率(KW)</div> |
| | | <div class="val">60</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="lab">功率因数</div> |
| | | <div class="val">60</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="lab">有功电度(°)</div> |
| | | <div class="val">60</div> |
| | | <img src="@/assets/images/nenghao_ic1.png" class="co2" alt=""> |
| | | <div> |
| | | <div class="name">本年累计循环烟箱</div> |
| | | <div><span class="num">{{ data1.smokeBoxTotal }}</span><span>只</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <img class="icon" src="@/assets/images/ic_yongdian@2x.png" alt="" /> |
| | | <div class="content"> |
| | | <div class="name">上月用电(kw·h)</div> |
| | | <div class="num">450</div> |
| | | <div class="num">{{ data1.electricityQuantity }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="static"> |
| | | <span class="lab">同比</span> |
| | | <img class="icon" src="@/assets/images/ic_up.webp" alt="" /> |
| | | <span class="val">11</span> |
| | | <span class="val">{{ data1.electricityYear }}</span> |
| | | <span class="lab">环比</span> |
| | | <img class="icon" src="@/assets/images/ic_down.webp" alt="" /> |
| | | <span class="val">11</span> |
| | | <span class="val">{{ data1.gasMonth }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="item"> |
| | |
| | | <img class="icon" src="@/assets/images/ic_yongshui@2x.png" alt="" /> |
| | | <div class="content"> |
| | | <div class="name">上月用水(t)</div> |
| | | <div class="num">450</div> |
| | | <div class="num">{{ data1.waterQuantity }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="static"> |
| | | <span class="lab">同比</span> |
| | | <img class="icon" src="@/assets/images/ic_up.webp" alt="" /> |
| | | <span class="val">11</span> |
| | | <span class="val">{{ data1.waterMonth }}</span> |
| | | <span class="lab">环比</span> |
| | | <img class="icon" src="@/assets/images/ic_down.webp" alt="" /> |
| | | <span class="val">11</span> |
| | | <span class="val">{{ data1.waterYear }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="item"> |
| | |
| | | <img class="icon" src="@/assets/images/ic_yongqi@2x.png" alt="" /> |
| | | <div class="content"> |
| | | <div class="name">上月用气(t)</div> |
| | | <div class="num">450</div> |
| | | <div class="num">{{ data1.gasQuantity }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="static"> |
| | | <span class="lab">同比</span> |
| | | <img class="icon" src="@/assets/images/ic_up.webp" alt="" /> |
| | | <span class="val">11</span> |
| | | <span class="val">{{ data1.gasMonth }}</span> |
| | | <span class="lab">环比</span> |
| | | <img class="icon" src="@/assets/images/ic_down.webp" alt="" /> |
| | | <span class="val">11</span> |
| | | <span class="val">{{ data1.gasYear }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="center_box_two"> |
| | | <img class="bg" src="@/assets/images/img_city@2x.png" alt="" /> |
| | | <div class="item item1"> |
| | | <div class="num fs_linear">240<span class="unit">kw·h</span></div> |
| | | <div class="num fs_linear">{{ data1.workHouseQuantity }}<span class="unit">kw·h</span></div> |
| | | <div class="name">联合工房</div> |
| | | <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="item item2"> |
| | | <div class="num fs_linear">240<span class="unit">kw·h</span></div> |
| | | <div class="name">联合工房</div> |
| | | <div class="num fs_linear">{{ data1.officeQuantity }}<span class="unit">kw·h</span></div> |
| | | <div class="name">办公楼</div> |
| | | <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="item item3"> |
| | | <div class="num fs_linear">240<span class="unit">kw·h</span></div> |
| | | <div class="name">联合工房</div> |
| | | <div class="num fs_linear">{{ data1.parkQuantity }}<span class="unit">kw·h</span></div> |
| | | <div class="name">物流园区</div> |
| | | <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="item item4"> |
| | | <div class="num fs_linear">240<span class="unit">kw·h</span></div> |
| | | <div class="name">联合工房</div> |
| | | <div class="num fs_linear">{{ data1.productHouseQuantity }}<span class="unit">kw·h</span></div> |
| | | <div class="name">成品库</div> |
| | | <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="item item5"> |
| | | <div class="num fs_linear">240<span class="unit">kw·h</span></div> |
| | | <div class="name">联合工房</div> |
| | | <div class="num fs_linear">{{ data1.powerQuantity }}<span class="unit">kw·h</span></div> |
| | | <div class="name">动力站房</div> |
| | | <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="bottom_wrap"> |
| | | <div class="bottom bottom1"> |
| | | <div class="num fs_linear">240</div> |
| | | <div class="num fs_linear">{{ data1.yesterdayElectricity }}</div> |
| | | <div class="name">昨日用电</div> |
| | | <div class="unit">kw·h</div> |
| | | <img src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="bottom bottom2"> |
| | | <div class="num">240</div> |
| | | <div class="num">{{ data1.todayElectricity }}</div> |
| | | <div class="name">今日用电</div> |
| | | <div class="unit">kw·h</div> |
| | | <img src="@/assets/images/ic_dianliang@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="bottom bottom3"> |
| | | <div class="num fs_linear">240</div> |
| | | <div class="num fs_linear">{{ data1.monthElectricity }}</div> |
| | | <div class="name">本月用电</div> |
| | | <div class="unit">kw·h</div> |
| | | <img src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" /> |
| | |
| | | <img src="@/assets/images/ic_co2@2x.png" class="co2" alt=""> |
| | | <div> |
| | | <div class="name">本月累计碳排放</div> |
| | | <div><span class="num">22.22</span><span>吨</span></div> |
| | | <div><span class="num">{{ data1.carbon }}</span><span>吨</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | import ChargeRate from '@/components/ChargeRate.vue' |
| | | import * as echarts from 'echarts' |
| | | import VScaleScreen from 'v-scale-screen' |
| | | import { |
| | | zxcenterData, |
| | | zxenergyDataList, |
| | | zxlastMonthOil, |
| | | zxloadCurve, |
| | | } from '@/api' |
| | | |
| | | |
| | | const weekMap = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六',] |
| | |
| | | xAxis: { |
| | | type: 'category', |
| | | boundaryGap: false, |
| | | data: [1, 2, 3, 4, 5, 5] |
| | | data: data4.value.map(i => i.timeData) |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | |
| | | }, |
| | | series: [ |
| | | { |
| | | data: [1, 2, 3, 4, 4, 4000].map(i => { |
| | | return { |
| | | name: i, |
| | | value: i, |
| | | } |
| | | }), |
| | | data: data4.value.map(i => i.energy), |
| | | type: 'line', |
| | | areaStyle: { |
| | | normal: { |
| | |
| | | }) |
| | | } |
| | | |
| | | onMounted(() => { |
| | | initOperation() |
| | | const data1 = ref({}) |
| | | const getData1 = () => { |
| | | zxcenterData().then(res => { |
| | | const result = res.data |
| | | }) |
| | | } |
| | | const data2 = ref([]) |
| | | const getData2 = () => { |
| | | zxenergyDataList().then(res => { |
| | | const result = res.data |
| | | data2.value = result |
| | | }) |
| | | } |
| | | const data3 = ref([]) |
| | | const getData3 = () => { |
| | | zxlastMonthOil().then(res => { |
| | | const result = res.data |
| | | data3.value = result |
| | | }) |
| | | } |
| | | const data4 = ref([]) |
| | | const getData4 = () => { |
| | | zxloadCurve().then(res => { |
| | | const result = res.data |
| | | data4.value = result |
| | | initLoadReal() |
| | | initEnergy() |
| | | }) |
| | | } |
| | | |
| | | onMounted(() => { |
| | | getData1() |
| | | getData2() |
| | | getData3() |
| | | getData4() |
| | | |
| | | }) |
| | | |
| | | |
| | |
| | | margin-bottom: 20px; |
| | | |
| | | .content { |
| | | width: 100%; |
| | | padding: 24px 5%; |
| | | height: 164px; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | .item { |
| | | width: 33.3%; |
| | | margin-bottom: 12px; |
| | | |
| | | .lab { |
| | | font-size: 14px; |
| | | color: #ffffff; |
| | | .co2 { |
| | | width: 100px; |
| | | margin-right: 30px; |
| | | } |
| | | |
| | | .val { |
| | | .num { |
| | | margin-top: 10px; |
| | | color: #01D9FE; |
| | | font-weight: 600; |
| | | font-size: 20px; |
| | | color: #01d9fe; |
| | | margin-top: 4px; |
| | | } |
| | | font-size: 36px; |
| | | margin-right: 2px; |
| | | } |
| | | } |
| | | } |
| | |
| | | <div class="item"> |
| | | <div class="name">待访问</div> |
| | | <div class="num_wrap"> |
| | | <span class="num">22</span> |
| | | <span class="num">{{ data4.waitVisitNum }}</span> |
| | | <span>人</span> |
| | | </div> |
| | | </div> |
| | | <div class="spacing"></div> |
| | | <div class="item"> |
| | | <div class="name">已登机</div> |
| | | <div class="name">已登记</div> |
| | | <div class="num_wrap"> |
| | | <span class="num">22</span> |
| | | <span class="num">{{ data4.registerVisitNum }}</span> |
| | | <span>人</span> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="item"> |
| | | <div class="name">已离开</div> |
| | | <div class="num_wrap"> |
| | | <span class="num">22</span> |
| | | <span class="num">{{ data4.levelNum }}</span> |
| | | <span>人</span> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="item"> |
| | | <div class="name">滞留</div> |
| | | <div class="num_wrap"> |
| | | <span class="num">22</span> |
| | | <span class="num">{{ data4.retentionNum }}</span> |
| | | <span>人</span> |
| | | </div> |
| | | </div> |
| | |
| | | import duration from 'dayjs/plugin/duration' |
| | | dayjs.extend(duration) |
| | | import * as echarts from 'echarts' |
| | | import { getEnergyCenterData, getSecurityDeviceData, getVisitRetentionData } from '@/api' |
| | | import { getEnergyCenterData, getSecurityDeviceData, getVisitRetentionData, afgetVisitData } from '@/api' |
| | | |
| | | |
| | | const weekMap = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六',] |
| | |
| | | offset: 1, |
| | | color: '#61d3f9' |
| | | }])] |
| | | const data = [] |
| | | data.push({ name: '待访问', value: data4.value.waitVisitNum,rate: data4.value.waitVisitRata }) |
| | | data.push({ name: '已登记', value: data4.value.registerVisitNum,rate: data4.value.registerVisitRata }) |
| | | data.push({ name: '已离开', value: data4.value.levelNum,rate: data4.value.levelRata }) |
| | | data.push({ name: '滞留', value: data4.value.retentionNum,rate: data4.value.retentionRata }) |
| | | const option = { |
| | | color: colors, |
| | | tooltip: { |
| | |
| | | color: "#000" |
| | | }, |
| | | itemHeight: 2, |
| | | data: ['待访问', '已登记', '已离开', '滞留'] |
| | | data: data.map(i => i.name) |
| | | }, |
| | | series: [ |
| | | { |
| | |
| | | borderWidth: 0, |
| | | borderColor: '#fff' |
| | | }, |
| | | data: [ |
| | | { value: 100, name: '待访问', }, |
| | | { value: 50, name: '已登记' }, |
| | | { value: 20, name: '已离开' }, |
| | | { value: 30, name: '滞留' }, |
| | | |
| | | ] |
| | | data |
| | | }, |
| | | { |
| | | type: 'funnel', |
| | |
| | | opacity: 1 |
| | | } |
| | | }, |
| | | data: [ |
| | | { value: 100, name: '待访问', }, |
| | | { value: 50, name: '已登记' }, |
| | | { value: 20, name: '已离开' }, |
| | | { value: 30, name: '滞留' }, |
| | | |
| | | ] |
| | | data |
| | | }, |
| | | ] |
| | | } |
| | |
| | | }) |
| | | }) |
| | | } |
| | | const data4 = ref({}) |
| | | const getData4 = () => { |
| | | afgetVisitData().then(res => { |
| | | const result = res.data || {} |
| | | dataList4.value = result |
| | | initEchart3() |
| | | }) |
| | | } |
| | | |
| | | |
| | | onMounted(() => { |
| | | getData1() |
| | | getData2() |
| | | getData3() |
| | | initEchart3() |
| | | getData4() |
| | | |
| | | // initEchart1() |
| | | }) |
| | | |
| | |
| | | server: { |
| | | proxy: { |
| | | "/gateway_interface": { |
| | | // target: "http://192.168.0.138:10010", |
| | | target: "http://192.168.0.103:10010", |
| | | // target: "http://10.50.250.253:8088/gateway_interface", |
| | | target: "http://192.168.0.173/gateway_interface", |
| | | // target: "http://192.168.0.173/gateway_interface", |
| | | changeOrigin: true, |
| | | rewrite: (path) => path.replace(/^\/gateway_interface/, ""), |
| | | }, |