ll
liukangdong
2024-10-31 3b2791d8a76d96c698990b2fe1fbe443fa8bd8de
ll
已添加1个文件
已修改13个文件
294 ■■■■■ 文件已修改
admin/src/components/business/OperaCarUseBookWindow.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaHiddenDangerParamWindow.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaMemberWindow.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/operation/HiddenDangerParam.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/approvalConfiguration.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/meeting/components/OperaBookingsDetailWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/snapshot.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/vehicle/sendACarDetail.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/api/index.js 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/nenghao_ic1.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/router/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/views/EnergyConsum.vue 151 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/views/SecurityControl.vue 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/vite.config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaCarUseBookWindow.vue
@@ -18,7 +18,8 @@
          <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">
@@ -27,7 +28,8 @@
            </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>
@@ -166,6 +168,7 @@
import { driveList } from '@/api/business/member'
import { approveDo } from '@/api/business/approve'
import { mapState } from 'vuex'
export default {
  name: 'OperaCarUseBookWindow',
  components: { GlobalWindow },
@@ -230,6 +233,8 @@
    },
    agreeOpen() {
      this.isShowProblem = true
      this.$set(this.dealForm, 'driverId', this.model.driverId)
      this.$set(this.dealForm, 'checkInfo', '')
      this.loadMemberList()
    },
admin/src/components/business/OperaHiddenDangerParamWindow.vue
@@ -67,6 +67,7 @@
    open(title, target, type) {
      this.title = title
      this.visible = true
      this.form.memberIdList = null
      this.form.type = type
      this.getfindCompanyTreePage()
      // 新建组织
admin/src/components/business/OperaMemberWindow.vue
@@ -34,10 +34,7 @@
        <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">
@@ -136,6 +133,25 @@
      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()
      // 新建
@@ -183,15 +199,18 @@
.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;
admin/src/components/operation/HiddenDangerParam.vue
@@ -4,6 +4,7 @@
    width="600px"
    :visible.sync="isShowModal"
    :confirm-working="isWorking"
    @close="close"
    @confirm="confirm"
  >
    <el-form :model="param" ref="paramRef" :rules="rules">
@@ -161,7 +162,7 @@
      this.getfindCompanyTreePage()
    },
    getfindCompanyTreePage() {
      companyGetListPost({})
      companyGetListPost({queryHiddenDanger: 1})
        .then(res => {
          if (res && res.length > 0) {
            this.department = res
@@ -170,6 +171,8 @@
    },
    getAddrList() {
      const { companyId } = this.param
      this.$set(this.param, 'areaId', '')
      this.$set(this.param, 'checkUserId', '')
      allList({ type: 0,companyId }).then(res => { // 位置
        this.addrList = res || []
      })
@@ -239,6 +242,10 @@
    handleDelImg (i) {
      this.fileList.splice(i, 1)
    },
    close(){
      this.isShowModal = false
      this.$emit('close')
    },
    // 同步信息
    confirm () {
      this.$refs.paramRef.validate((valid) => {
admin/src/views/business/approvalConfiguration.vue
@@ -179,7 +179,7 @@
          </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">
@@ -197,6 +197,8 @@
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: {
@@ -213,7 +215,9 @@
      ],
      activeIndex: 0,
      param: {},
      param: {
        objIdsT: []
      },
      searchForm: {},
      isShowTransfer: false,
      memberList: [],
@@ -313,7 +317,7 @@
    // 获取组织树
    getfindCompanyTreePage() {
      fetchList()
      fetchList(2)
        .then(res => {
          if (res && res.length > 0) {
            res[0].fsStatus = 1
@@ -350,6 +354,9 @@
      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() {
admin/src/views/meeting/components/OperaBookingsDetailWindow.vue
@@ -32,7 +32,7 @@
        <div>
          <FileLink
            :links="form.fileList"
            linkName="fileFullUrl"
            linkName="fileurlFull"
            :isUpload="false"
          />
        </div>
h5/pages/staff/snapshot.vue
@@ -251,7 +251,7 @@
                this.isShowTime = false
            },
            initConfig() {
                deptListPost({}).then(res => {
                deptListPost({queryHiddenDanger: 1}).then(res => {
                    this.deptList = [res.data]
                })
                DangerConfigType({
h5/pages/staff/vehicle/sendACarDetail.vue
@@ -255,6 +255,10 @@
                } 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() {
screen/src/api/index.js
@@ -97,8 +97,6 @@
}
// 安防管控大屏 中心数据
export const getEnergyCenterData = (data) => {
  return request('visitsAdmin/cloudService/board/api/security/centerData', data)
@@ -111,3 +109,24 @@
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)
}
screen/src/assets/images/nenghao_ic1.png
screen/src/router/index.js
@@ -5,7 +5,7 @@
  routes: [
    {
      path: '/',
      component: () => import('../views/SecurityControl.vue')
      component: () => import('../views/EnergyConsum.vue')
    },
    {
      path: '/PlatformCall', // 月台叫号大屏
screen/src/views/EnergyConsum.vue
@@ -17,34 +17,15 @@
            <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>
@@ -88,16 +69,16 @@
                  <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">
@@ -105,16 +86,16 @@
                  <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">
@@ -122,16 +103,16 @@
                  <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>
@@ -139,45 +120,45 @@
          <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="" />
@@ -198,7 +179,7 @@
              <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>
@@ -246,6 +227,12 @@
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 = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六',]
@@ -401,7 +388,7 @@
    xAxis: {
      type: 'category',
      boundaryGap: false,
      data: [1, 2, 3, 4, 5, 5]
      data: data4.value.map(i => i.timeData)
    },
    yAxis: {
      type: 'value',
@@ -428,12 +415,7 @@
    },
    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: {
@@ -546,10 +528,41 @@
  })
}
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()
})
@@ -568,26 +581,22 @@
      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;
        }
      }
    }
screen/src/views/SecurityControl.vue
@@ -201,15 +201,15 @@
              <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>
@@ -217,7 +217,7 @@
              <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>
@@ -225,7 +225,7 @@
              <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>
@@ -419,7 +419,7 @@
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 = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六',]
@@ -594,6 +594,11 @@
      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: {
@@ -617,7 +622,7 @@
        color: "#000"
      },
      itemHeight: 2,
      data: ['待访问', '已登记', '已离开', '滞留']
      data: data.map(i => i.name)
    },
    series: [
      {
@@ -639,13 +644,7 @@
          borderWidth: 0,
          borderColor: '#fff'
        },
        data: [
          { value: 100, name: '待访问', },
          { value: 50, name: '已登记' },
          { value: 20, name: '已离开' },
          { value: 30, name: '滞留' },
        ]
        data
      },
      {
        type: 'funnel',
@@ -691,13 +690,7 @@
            opacity: 1
          }
        },
        data: [
          { value: 100, name: '待访问', },
          { value: 50, name: '已登记' },
          { value: 20, name: '已离开' },
          { value: 30, name: '滞留' },
        ]
        data
      },
    ]
  }
@@ -752,12 +745,22 @@
    })
  })
}
const data4 = ref({})
const getData4 = () => {
  afgetVisitData().then(res => {
    const result = res.data || {}
    dataList4.value = result
    initEchart3()
  })
}
onMounted(() => {
  getData1()
  getData2()
  getData3()
  initEchart3()
  getData4()
  // initEchart1()
})
screen/vite.config.js
@@ -25,9 +25,9 @@
  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/, ""),
      },