保安监管系统-验收版本
+
liuyg
2021-12-01 fadbd95daeb9f807c8b8cba4c8b45f83ca3a3890
src/views/securityUnitOperation/operationAnalysis.vue
@@ -2,40 +2,30 @@
  <div class="yyPage">
    <el-row :gutter="20">
      <el-col :span="14">
        <div class="rowContent first-menu" style="position: relative;">
        <div class="rowContent first-menu" style="position: relative">
          <div class="rowTitle">
            <img src="../../../public/img/bajgxt/u1618.png" />
            <span>数据概览</span>
            <el-select
            <avue-input-tree
              class="select1"
              ref="treeForm"
              v-model="node.title"
              placeholder="请选择"
            >
              <el-option style="height: auto;" :value="node">
                <el-tree
                  :data="options1"
                  default-expand-all
                  node-key="id"
                  @node-click="handleNodeClick"
                  :props="props"
                >
                </el-tree>
              </el-option>
            </el-select>
            <el-select
              default-expand-all
              v-model="value1"
              placeholder="请选择辖区"
              type="tree"
              :dic="options1"
              :props="props"
              @change="handleNodeClick"
            ></avue-input-tree>
            <avue-input-tree
              class="select2"
              default-expand-all
              v-model="value2"
              placeholder="请选择"
              placeholder="请选择公司"
              type="tree"
              :dic="options2"
              :props="props2"
              @change="changeCompanys"
            >
              <el-option
                v-for="item in options2"
                :key="item.departmentid"
                :label="item.enterpriseName"
                :value="item.departmentid"
              ></el-option>
            </el-select>
            ></avue-input-tree>
            <el-button @click="toOperationTable">进入数据统计表</el-button>
          </div>
@@ -80,33 +70,33 @@
            <span>预警分析</span>
          </div>
          <div class="col-content" style="margin-left: 55px;">
          <div class="col-content" style="margin-left: 55px">
            <div
              class="box-card"
              style="margin-right: 50px;cursor: pointer; "
              style="margin-right: 50px; cursor: pointer"
              @click="showTable('fw')"
            >
              <span>服务对象预警(家)</span>
              <span>{{ card.czBaoan }}</span>
              <span>服务对象不多于1家</span>
              <span>{{ yj.fuwu }}</span>
              <span>服务对象小于2家</span>
            </div>
            <div
              class="box-card"
              style="margin-right: 50px;cursor: pointer;"
              style="margin-right: 50px; cursor: pointer"
              @click="showTable('pq')"
            >
              <span>派遣预警(家)</span>
              <span>{{ card.kh }}</span>
              <span>派遣比例低于50%</span>
              <span>{{ yj.paiqian }}</span>
              <span>派遣率小于50%</span>
            </div>
            <div
              class="box-card"
              style="margin-right: 50px;cursor: pointer;"
              style="margin-right: 50px; cursor: pointer"
              @click="showTable('cz')"
            >
              <span>持证上岗预警(家)</span>
              <span>{{ card.sheb }}</span>
              <span>持证率低于50%</span>
              <span>{{ yj.chizheng }}</span>
              <span>持证率小于50%</span>
            </div>
          </div>
        </div>
@@ -171,116 +161,117 @@
          <el-table-column :key="gridData.type" type="index"> </el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="realName"
            prop="enterprisename"
            label="保安公司名称"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="deptName"
            prop="jurisdictionName"
            label="所属辖区"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="sex"
            prop="znum"
            label="服务对象数"
            :formatter="sexFormatter"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="cardid"
            prop="dispatchUnitName"
            label="服务单位名称"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
          <!-- <el-table-column
            :key="gridData.type"
            prop="age"
            label="备注"
            :show-overflow-tooltip="true"
            width="100"
          ></el-table-column>
          ></el-table-column> -->
        </template>
        <template v-if="gridData.type === 'pq'">
          <el-table-column :key="gridData.type" type="index"> </el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="enterpriseName"
            prop="enterprisename"
            label="保安公司名称"
            width="180"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="znum"
            prop="jurisdictionName"
            label="所属辖区"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="cznum"
            prop="znum"
            label="保安总人数"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="czl"
            prop="cnum"
            label="派遣人数"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="sbnum"
            prop="pnum"
            label="派遣比例"
            :formatter="kslFormatter"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
          <!-- <el-table-column
            :key="gridData.type"
            prop="sbl"
            label="备注"
            :show-overflow-tooltip="true"
          ></el-table-column>
          ></el-table-column> -->
        </template>
        <template v-if="gridData.type === 'cz'">
          <el-table-column :key="gridData.type" type="index"> </el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="enterpriseName"
            prop="enterprisename"
            label="保安公司名称"
            width="180"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="znum"
            prop="jurisdictionName"
            label="所属辖区"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="cznum"
            prop="znum"
            label="保安总人数"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="painum"
            prop="cnum"
            label="持证人数"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            :key="gridData.type"
            prop="fwnum"
            prop="pnum"
            label="持证比例"
            :formatter="kslFormatter"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
          <!-- <el-table-column
            :key="gridData.type"
            prop="pql"
            label="备注"
            :show-overflow-tooltip="true"
          ></el-table-column>
          ></el-table-column> -->
        </template>
      </el-table>
      <el-pagination
@@ -305,7 +296,10 @@
  getCompanys,
  queryYearKh,
  queryYearG,
  selectAge
  selectAge,
  getSecurityUnitServerLessPage,
  getSecurityUnitDispatcherLessPage,
  getSecurityUnitHoldLessPage,
} from "../../api/securityUnitOperation/securityUnitOperation";
export default {
  data() {
@@ -327,33 +321,38 @@
        sheb: 0,
        addsheb: 0,
        baoanPq: 0,
        addbaoanPq: 0
        addbaoanPq: 0,
      },
      yj: {
        fuwu: 0,
        paiqian: 0,
        chizheng: 0,
      },
      options0: [
        {
          value: "2012",
          label: "2012年"
          label: "2012年",
        },
        {
          value: "2011",
          label: "2011年"
          label: "2011年",
        },
        {
          value: "2010",
          label: "2010年"
          label: "2010年",
        },
        {
          value: "2009",
          label: "2009年"
          label: "2009年",
        },
        {
          value: "2008",
          label: "2008年"
          label: "2008年",
        },
        {
          value: "2007",
          label: "2007年"
        }
          label: "2007年",
        },
      ],
      options1: [],
      options2: [],
@@ -366,17 +365,22 @@
        middleEchart1: null,
        middleEchart2: null,
        bottomEchart: null,
        bottomEchart1: null
        bottomEchart1: null,
      },
      ageData: {
        qing: 0,
        zhong: 0,
        lao: 0
        lao: 0,
      },
      props: {
        children: "children",
        label: "title",
        value: "id"
        value: "id",
      },
      props2: {
        children: "children",
        label: "enterpriseName",
        value: "departmentid",
      },
      node: {}, //选中的记录
      gridData: {
@@ -384,38 +388,56 @@
        total: 0,
        current: 1,
        type: "fw",
        title: ""
        title: "",
      },
      dialogloading: false,
      dialogTableVisible: false
      dialogTableVisible: false,
    };
  },
  methods: {
    kslFormatter(row) {
      if (row.pnum && row.pnum !== "0") {
        return row.pnum + "%";
      } else {
        return row.pnum;
      }
    },
    changePage() {
      this.showcurTable(this.gridData.type);
    },
    showTable(type) {
      this.gridData.type = type;
      this.gridData.current = 1;
      this.gridData.data = [];
      this.showcurTable(type);
    },
    showcurTable(type) {
      this.dialogTableVisible = true;
      // this.dialogloading = true;
      if (type === "fw") {
        this.gridData.title = "服务对象预警保安公司";
        this.getSecurityUnitServerLessPage();
      } else if (type === "pq") {
        this.gridData.title = "派遣预警保安公司";
        this.getSecurityUnitDispatcherLessPage();
      } else if (type === "cz") {
        this.gridData.title = "持证上岗预警保安公司";
        this.getSecurityUnitHoldLessPage();
      }
    },
    //点击节点
    handleNodeClick(data) {
      this.node = data;
      this.value1 = data.id;
      this.$refs.treeForm.blur();
      // debugger
      this.value1 = data;
      this.getCompanys();
    },
    setAgeEchart() {
      this.loading4 = true;
      let params = {
        jurisdiction: this.value1,
        deptid: this.value2
        deptid: this.value2,
      };
      selectAge(params).then(res => {
      selectAge(params).then((res) => {
        if (res.data.code === 200) {
          if (!this.echartDom.bottomEchart1) {
            this.echartDom.bottomEchart1 = echarts.init(
@@ -442,18 +464,19 @@
          "&enterpriseName=" +
          this.enterpriseName +
          "&jurisdiction1=" +
          this.value1
          this.value1,
      });
    },
    getFenju() {
      this.options1 = [];
      this.value1 = "";
      this.node = {};
      lazyTrees().then(res => {
      lazyTrees().then((res) => {
        if (res.data.code === 200) {
          this.options1 = res.data.data;
          this.value1 = this.options1[0] ? this.options1[0].id : "";
          // this.value1 = this.options1[0] ? this.options1[0].id : "";
          this.node = this.options1[0];
          // debugger
          this.getCompanys();
        } else {
          this.$message.error(res.msg);
@@ -462,10 +485,10 @@
    },
    getCompanys() {
      getCompanys({ jurisdiction: this.value1 }).then(res => {
      getCompanys({ jurisdiction: this.value1 }).then((res) => {
        if (res.data.code === 200) {
          this.options2 = res.data.data;
          this.value2 = this.options2[0] ? this.options2[0].departmentid : "";
          // this.value2 = this.options2[0] ? this.options2[0].departmentid : "";
          this.enterpriseName = this.options2[0]
            ? this.options2[0].enterpriseName
            : "";
@@ -476,9 +499,9 @@
    getQueryCounts() {
      let params = {
        jurisdiction: this.value1,
        deptid: this.value2
        deptid: this.value2,
      };
      queryCounts(params).then(res => {
      queryCounts(params).then((res) => {
        if (res.data.code === 200) {
          let data = res.data.data[0];
          this.card = {
@@ -495,7 +518,7 @@
            sheb: data.sheb.thisnum,
            addsheb: data.sheb.thisnum - data.sheb.lastnum,
            baoanPq: data.paiq.thisnum,
            addbaoanPq: data.paiq.thisnum - data.paiq.lastnum
            addbaoanPq: data.paiq.thisnum - data.paiq.lastnum,
          };
        }
      });
@@ -504,9 +527,9 @@
      this.loading2 = true;
      let params = {
        jurisdiction: this.value1,
        deptid: this.value2
        deptid: this.value2,
      };
      queryYearKh(params).then(res => {
      queryYearKh(params).then((res) => {
        if (res.data.code === 200) {
          if (!this.echartDom.middleEchart2) {
            this.echartDom.middleEchart2 = echarts.init(
@@ -525,9 +548,9 @@
      this.loading3 = true;
      let params = {
        jurisdiction: this.value1,
        deptid: this.value2
        deptid: this.value2,
      };
      queryYearG(params).then(res => {
      queryYearG(params).then((res) => {
        if (res.data.code === 200) {
          if (!this.echartDom.middleEchart1) {
            this.echartDom.middleEchart1 = echarts.init(
@@ -566,16 +589,75 @@
        sheb: 0,
        addsheb: 0,
        baoanPq: 0,
        addbaoanPq: 0
        addbaoanPq: 0,
      };
      this.yj = {
        fuwu: 0,
        paiqian: 0,
        chizheng: 0,
      };
      this.ageData = {
        qing: 0,
        zhong: 0,
        lao: 0
        lao: 0,
      };
    },
    getSecurityUnitServerLessPage() {
      let params = {
        jurisdiction: this.value1,
        departmentid: this.value2,
        current: this.gridData.current,
        size: 10,
      };
      getSecurityUnitServerLessPage(params).then((res) => {
        if (res.data.code === 200) {
          this.yj.fuwu = res.data.data.total;
          this.gridData.data = res.data.data.records;
          this.gridData.total = res.data.data.total;
        }
        if (this.dialogloading) {
          this.dialogloading = false;
        }
      });
    },
    getSecurityUnitDispatcherLessPage() {
      let params = {
        jurisdiction: this.value1,
        departmentid: this.value2,
        current: this.gridData.current,
        size: 10,
      };
      getSecurityUnitDispatcherLessPage(params).then((res) => {
        if (res.data.code === 200) {
          this.yj.paiqian = res.data.data.total;
          this.gridData.data = res.data.data.records;
          this.gridData.total = res.data.data.total;
        }
        if (this.dialogloading) {
          this.dialogloading = false;
        }
      });
    },
    getSecurityUnitHoldLessPage() {
      let params = {
        jurisdiction: this.value1,
        departmentid: this.value2,
        current: this.gridData.current,
        size: 10,
      };
      getSecurityUnitHoldLessPage(params).then((res) => {
        if (res.data.code === 200) {
          this.yj.chizheng = res.data.data.total;
          this.gridData.data = res.data.data.records;
          this.gridData.total = res.data.data.total;
        }
        if (this.dialogloading) {
          this.dialogloading = false;
        }
      });
    },
    changeCompanys() {
      this.options2.forEach(item => {
      this.options2.forEach((item) => {
        if (item.departmentid === this.value2) {
          this.enterpriseName = item.enterpriseName;
        }
@@ -585,11 +667,14 @@
      this.getQueryYearKh();
      this.getQueryYearG();
      this.setAgeEchart();
    }
      this.getSecurityUnitServerLessPage();
      this.getSecurityUnitDispatcherLessPage();
      this.getSecurityUnitHoldLessPage();
    },
  },
  mounted() {
    this.getFenju();
  }
  },
};
</script>
<style lang="scss" scoped>