linwe
2024-06-12 91fbddb0c07bcab4f88f247a3367e9efb0154c2d
src/views/place/practitioner.vue
@@ -1,49 +1,55 @@
<template>
  <basic-container>
    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" v-model="form"
      :permission="permissionList" @row-save="rowSave" :before-open="beforeOpen" @search-change="searchChange"
      @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
      @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
      <template slot-scope="{row}" slot="location">
        <span v-text="showLocation(row.location)"></span>
      :permission="permissionList" @row-save="rowSave" @row-del="rowDel" :before-open="beforeOpen"
      @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
      @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
      <template slot-scope="{row, size}" slot="age">
        <el-tag :size="size">{{
      row.age
    }}</el-tag>
      </template>
      <template slot-scope="{row}" slot="lng">
        <span v-text="decimalProcessing(row.lng)"></span>
      <template slot-scope="{row, size}" slot="gender">
        <el-tag :size="size" :type="showGender(row.gender).type">{{
      showGender(row.gender).text
    }}</el-tag>
      </template>
      <template slot-scope="{row}" slot="lat">
        <span v-text="decimalProcessing(row.lat)"></span>
      <template slot-scope="{row, size}" slot="resignationFlag">
        <el-tag :size="size" :type="showResignationFlag(row.resignationFlag).type">{{
      showResignationFlag(row.resignationFlag).text
    }}</el-tag>
      </template>
      <template slot-scope="{row, size}" slot="confirmFlag">
        <el-tag :size="size" :type="showConfirmFlag(row.confirmFlag).type">{{
            showConfirmFlag(row.confirmFlag).text
        }}</el-tag>
      <template slot-scope="{row, size}" slot="telephone">
        <el-button :size="size" type="text" @click="showStringDispose(row, 'telephoneflag')"
          v-text="textDispose(row, 'telephoneflag', 'telephone')">
        </el-button>
      </template>
      <template slot-scope="{row, size}" slot="source">
        <el-tag :size="size" :type="showSource(row.source).type">{{ showSource(row.source).text
                    }}</el-tag>
      <template slot-scope="{row, size}" slot="idCard">
        <el-button :size="size" type="text" @click="showStringDispose(row, 'idCardflag')"
          v-text="textDispose(row, 'idCardflag', 'idCard')">
        </el-button>
      </template>
      <template slot="menuLeft">
        <!-- <el-button size="small" icon="el-icon-delete" plain v-if="permission.place_delete" @click="handleDelete">删 除
                </el-button> -->
        <el-button type="primary" size="small" @click="handleQueryAlarm(1)">未成年人 ({{countInfo.minors}}) 人
        <el-button type="primary" size="small" @click="handleQueryAlarm(1)">未成年人 ({{ countInfo.minors }}) 人
        </el-button>
        <el-button type="primary" size="small" @click="handleQueryAlarm(2)">少数民族 ({{countInfo.nationalMinority}}) 人
        <el-button type="primary" size="small" @click="handleQueryAlarm(2)">少数民族 ({{ countInfo.nationalMinority }}) 人
        </el-button>
      </template>
      <template slot-scope="{row, size}" slot="menu">
        <el-button :size="size" type="text" icon="el-icon-s-check" v-if="permission.place_audit_cur"
        <!-- <el-button :size="size" type="text" icon="el-icon-s-check" v-if="permission.place_audit_cur"
          @click="auditCur({ ...row, confirmFlag: 1 })">审核
        </el-button>
        <el-button :size="size" type="text" icon="el-icon-edit" v-if="permission.place_manage_tenants"
          @click="ManageTenants(row)">场所维护
        </el-button>
        </el-button> -->
      </template>
      <template slot-scope="{row, size}" slot="principalPhone">
@@ -70,13 +76,12 @@
<script>
  import {
    getPractitionerList as getList,
    remove,
    update,
    add,
    getPlace,
    getWarningPersonnelCount as getCount
  } from "@/api/place/place"
  import {
    remove
  } from "@/api/place/practitioner"
  import {
    mapGetters
  } from "vuex"
@@ -88,7 +93,6 @@
  export default {
    data() {
      //手机号格式校验
      let validatorPhone = function(rule, value, callback) {
        if (value) {
@@ -114,28 +118,49 @@
        datetime: "",
        selectionList: [],
        option: {
          // header:true,
          labelWidth: 120,
          searchLabelWidth: 96,
          searchShow: true,
          searchMenuSpan: 3,
          // menuWidth: 280,
          menu: false,
          menuWidth: 160,
          height: "auto",
          calcHeight: 54,
          dialogWidth: 950,
          tip: false,
          border: true,
          //stripe:true,
          addBtn: false,
          index: true,
          viewBtn: false,
          viewBtn: true,
          editBtn: false,
          // selection: true,
          delBtn: true,
          dialogClickModal: false,
          // menuFixed: 'right',
          delBtn: false,
          column: [{
              width: 110,
              label: "所属街道",
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              prop: "townStreetName",
              search: true,
              searchSpan: 4
            },
            {
              width: 156,
              overHidden: true,
              label: "所属社区",
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              prop: "neiName",
              search: true,
              searchSpan: 4,
              rules: [{
                required: true,
                message: "请选择所属社区",
                trigger: "blur",
              }],
            }, {
              overHidden: true,
              label: "姓名",
              span: 12,
@@ -146,18 +171,32 @@
            },
            {
              label: "电话号码",
              prop: "telephone",
              searchSpan: 4,
              searchLabelWidth: 110,
              search: true,
              label: "性别",
              prop: "gender",
              width: 80,
              align: "center",
              type: "select",
              dicData: [{
                  label: "男",
                  value: 1
                },
                {
                  label: "女",
                  value: 0
                }
              ]
            },
            {
              overHidden: true,
              label: "微信号",
              prop: "wxAccount",
              searchSpan: 4,
              slot: true,
              label: "民族",
              width: 80,
              dicUrl: "/api/blade-system/dict-biz/tree?code=nationType",
              props: {
                label: "title",
                value: "key",
              },
              prop: "ethnicity",
              type: "select",
              dataType: "number"
            },
            {
              overHidden: true,
@@ -167,63 +206,79 @@
              width: 160,
              searchSpan: 4,
              slot: true,
            },
            {
              label: "民族",
              label: "电话号码",
              prop: "telephone",
              searchSpan: 4,
              searchLabelWidth: 110,
              search: true,
            },
            {
              width: 80,
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              dicUrl: "/api/blade-system/dict-biz/tree?code=nationType",
              props: {
                label: "title",
                value: "key",
              },
              prop: "ethnicity",
              searchSpan: 4
            },
            {
              width: 160,
              label: "年龄",
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              prop: "age",
              searchSpan: 4
            },
            {
              label: "岗位性质",
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              prop: "jobNature",
              searchSpan: 4
            }, {
              label: "工作单位",
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              prop: "employer",
              searchSpan: 4
              align: "center"
            },
            {
              minWidth: 160,
              label: "现居住地",
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              prop: "tempAddress",
            },
            {
              label: "岗位",
              prop: "jobNature",
            }, {
              width: 110,
              label: '从业人员照片',
              prop: 'employerImg',
              fileType: 'img',
              type: "upload",
              listType: "picture-card",
              dataType: "string",
              disabled: true,
              row: true,
              span: 12,
            }, {
              label: "工作单位",
              prop: "employer",
              searchSpan: 4
            },
            {
              minWidth: 160,
              label: "户籍地址",
              width: 160,
              label: "标签",
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              prop: "registeredAddress",
              prop: "categoryName",
              searchSpan: 4
            },
            {
              label: "状态",
              prop: "resignationFlag",
              align: 'center',
              searchSpan: 4,
              search: true,
              type: "select",
              dicData: [{
                  label: "在职",
                  value: "1"
                },
                {
                  label: "已离职",
                  value: "2"
                }
              ]
            },
            {
              label: "入职时间",
              prop: "employmentTime",
              hide: true,
            },
            {
              label: "离职时间",
              prop: "resignationTime",
              hide: true,
            },
            {
              label: "预警人员",
@@ -248,25 +303,6 @@
                  value: 3
                }
              ],
            }, {
              width: 160,
              label: "标签",
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              prop: "categoryName",
              searchSpan: 4
            }, {
              width: 110,
              label: '从业人员照片',
              prop: 'employerImg',
              fileType: 'img',
              type: "upload",
              listType: "picture-card",
              dataType: "string",
              disabled: true,
              span: 12,
              labelWidth: 110,
            },
          ],
        },
@@ -294,10 +330,10 @@
      ...mapGetters(["permission", "userInfo"]),
      permissionList() {
        return {
          addBtn: this.vaildData(this.permission.place_add, true),
          viewBtn: this.vaildData(this.permission.place_view, true),
          delBtn: this.vaildData(this.permission.place_delete, true),
          editBtn: this.vaildData(this.permission.place_edit, true),
          // addBtn: this.vaildData(this.permission.place_add, true),
          viewBtn: this.vaildData(this.permission.place_practitioner_view, true),
          delBtn: this.vaildData(this.permission.place_practitioner_delete, true),
          // editBtn: this.vaildData(this.permission.place_edit, true),
        }
      },
      ids() {
@@ -340,7 +376,7 @@
        }
      },
      showSource() {
      showResignationFlag() {
        return (data) => {
          let tags = {
            text: '',
@@ -349,13 +385,13 @@
          if (data == 1) {
            tags = {
              text: '是',
              text: '在职',
              type: 'success'
            }
          } else if (data == 2) {
            tags = {
              text: '否',
              type: 'info'
              text: '已离职',
              type: 'danger'
            }
          }
@@ -363,15 +399,26 @@
        }
      },
      showLocation() {
      showGender() {
        return (data) => {
          if (data != null && data.indexOf(',') != -1) {
            data = data.split(',')
            return data[2]
          } else {
            return data || ''
          let tags = {
            text: '',
            type: ''
          }
          if (data == 1) {
            tags = {
              text: '男',
              type: 'primary'
            }
          } else if (data == 0) {
            tags = {
              text: '女',
              type: 'primary'
            }
          }
          return tags
        }
      },
@@ -416,6 +463,23 @@
          latitude: data[1],
          location: data[2]
        }
      },
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          })
          .then(() => {
            return remove(row.id)
          })
          .then(() => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!"
            })
          })
      },
      auditCur(row) {
@@ -510,32 +574,15 @@
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getPlace(this.form.id).then((res) => {
            this.form = res.data.data
            this.form.location = [this.form.lng, this.form.lat, this.form.location].join(',')
            // if (this.form.imageUrls.length) {
            //     this.form.imageUrls = this.form.imageUrls.split(",").filter(item => item != '').map(item => website.minioUrl + item).join(',')
            // }
            // if (this.form.placePoiLabelVOList.length) {
            //     let lebelTwo = this.form.placePoiLabelVOList.find(item => {
            //         return item.type == 2
            //     })
            //     if (lebelTwo) this.form.label = String(lebelTwo.poiCode)
            //     let lebelThree = this.form.placePoiLabelVOList.find(item => {
            //         return item.type == 3
            //     })
            //     if (lebelThree) this.form.smallLabel = String(lebelThree.poiCode)
            // }
            done()
          })
        } else {
          if (this.form.resignationFlag) {
            if (this.form.resignationFlag == 1) {
              this.form.resignationFlag = '在职'
            }
            if (this.form.resignationFlag == 2) {
              this.form.resignationFlag = '已离职'
            }
            // this.form.employerImg = this.form.employerImg.split(",").filter(item => item != '').map(item => website.minioUrl + item).join(',')
          }
          done()
        }
      },
@@ -561,8 +608,8 @@
          this.getPeopleCount();
          this.data.forEach(item => {
            this.$set(item, 'principalPhoneflag', false)
            this.$set(item, 'principalIdCardflag', false)
            this.$set(item, 'telephoneflag', false)
            this.$set(item, 'idCardflag', false)
            if (item.employerImg && item.employerImg != '' && item.employerImg != null && item.employerImg
              .length) {
              var urls = []
@@ -580,8 +627,12 @@
      },
      getPeopleCount() {
        getCount().then(res => {
      getPeopleCount(params = {}) {
        // 在职的
        // params = {
        //   resignationFlag:1
        // }
        getCount(params).then(res => {
          this.countInfo = res.data.data;
        })
      }