lin
2024-04-17 2f03f1d400487fe9d2f79bcc2ddc602d0ecf7281
src/views/place/components/baseAllInfo.vue
@@ -4,7 +4,19 @@
      <div class="content-box">
        <box-title class="m10" :classVal="9" :title="'基本信息'"></box-title>
        <avue-form v-if="baseShow" ref="baseForm" :option="option" v-model="form">
          <template slot-scope="{ row, size, index }" slot="houseCodeBinds">
            <el-select v-model="form.houseCodeBinds" filterable remote multiple :remote-method="onRemoteMethod"
              @change="onSelectChange" placeholder="请选择标准地址" reserve-keyword>
              <el-option v-for="item in standardAddressList" :key="item.addressCode" :label="item.addressName"
                :value="item.addressCode">
              </el-option>
            </el-select>
          </template>
        </avue-form>
        <box-title class="m10" :classVal="9" :title="'房东信息'"></box-title>
        <avue-form v-if="restShow" ref="restForm" :option="houseOwnerOption" v-model="placeForm"></avue-form>
        <box-title class="m10" :classVal="9" :title="'其他信息'"></box-title>
        <avue-form v-if="restShow" ref="restForm" :option="optionDetail" v-model="placeForm"></avue-form>
@@ -28,7 +40,7 @@
<script>
  import {
    getPlace,
    getPlaceDetaill,
    getPlaceExt,
    holdRemove,
    holdAdd,
@@ -36,6 +48,7 @@
    getHoldList,
    update,
    updatePlaceExt,
    getPlaceAddressList
  } from "@/api/place/place"
  import {
    getPlaceList
@@ -74,6 +87,7 @@
              span: 12,
              label: "场所名称",
              prop: "placeName",
              labelWidth: 120,
              rules: [{
                required: true,
                message: "请输入场所名称",
@@ -86,6 +100,7 @@
            {
              label: "负责人",
              prop: "principal",
              labelWidth: 120,
              rules: [{
                required: false,
                message: "请输入负责人",
@@ -97,6 +112,7 @@
              width: 96,
              label: "手机号码",
              prop: "principalPhone",
              labelWidth: 120,
              search: true,
              searchSpan: 4,
              slot: true,
@@ -110,6 +126,7 @@
              width: 120,
              overHidden: true,
              label: "身份证号",
              labelWidth: 120,
              prop: "principalIdCard",
              search: true,
              searchSpan: 4,
@@ -125,6 +142,7 @@
              hide: true,
              parent: false,
              label: "所属社区",
              labelWidth: 120,
              prop: "neiCode",
              search: false,
              type: "tree",
@@ -148,6 +166,7 @@
              label: "所属网格",
              prop: "gridCode",
              type: "tree",
              labelWidth: 120,
              cell: true,
              props: {
                label: "gridName",
@@ -166,6 +185,7 @@
              span: 7,
              label: "场所标签",
              prop: "label",
              labelWidth: 120,
              type: "select",
              dicUrl: "/api/blade-category/category/getCategory?level=2",
              cascader: ["smallLabel"],
@@ -201,6 +221,7 @@
              label: "标签颜色",
              prop: "color",
              type: "select",
              labelWidth: 120,
              dicData: [{
                  label: "绿",
                  value: "green",
@@ -224,6 +245,7 @@
              span: 12,
              label: "九小场所",
              prop: "isNine",
              labelWidth: 120,
              type: "select",
              dicData: [{
                  label: "是",
@@ -245,6 +267,7 @@
              span: 12,
              label: "九小分类",
              prop: "nineType",
              labelWidth: 120,
              type: "select",
              display: false,
              dicUrl: "/api/blade-system/dict-biz/dictionary?code=nineType",
@@ -259,6 +282,7 @@
              span: 12,
              label: "阵地",
              prop: "isFront",
              labelWidth: 120,
              type: "select",
              dicData: [{
                  label: "是",
@@ -281,6 +305,7 @@
              label: "阵地类型",
              prop: "frontType",
              type: "select",
              labelWidth: 120,
              display: false,
              row: true,
              dicUrl: "/api/blade-system/dict-biz/dictionary?code=frontType",
@@ -290,13 +315,53 @@
                label: "dictValue",
                value: "dictKey",
              },
            },
            {
              span: 12,
              label: "三级消防单位",
              prop: "threeFireProtection",
              labelWidth: 120,
              type: "select",
              dicData: [{
                  label: "是",
                  value: 1,
                },
                {
                  label: "否",
                  value: 2,
                }
              ],
              hide: true,
              rules: [{
                required: false,
                message: "请选择三级消防单位",
                trigger: "blur",
              }],
            },
            {
              span: 12,
              label: "无炸类型",
              prop: "noExplosionCategory",
              type: "select",
              labelWidth: 120,
              display: true,
              row: true,
              dicUrl: "/api/blade-system/dict-biz/dictionary?code=noExplosionCategory",
              dataType: "number",
              hide: true,
              props: {
                label: "dictValue",
                value: "dictKey",
              },
            },
            {
              label: "场所照片",
              prop: "imageUrls",
              width: 80,
              type: "upload",
              labelWidth: 120,
              listType: "picture-card",
              dataType: "string",
              multiple: true,
@@ -306,7 +371,7 @@
                name: "name",
                url: "link",
              },
              span: 12,
              span: 24,
            },
            {
              width: 160,
@@ -316,8 +381,10 @@
              prop: "location",
              type: "map",
              dataType: "string",
              span: 12,
              labelWidth: 120,
              span: 24,
              value: [117.96646, 28.431002, ""],
              cascader: ['houseCodeBinds'],
              rules: [{
                required: true,
                message: "请选择地址",
@@ -327,31 +394,56 @@
            {
              width: 160,
              overHidden: true,
              display: false,
              labelWidth: 120,
              hide: true,
              label: "地址",
              prop: "addressName",
              span: 12
            },
            // {
            //   width: 160,
            //   overHidden: true,
            //   slot: true,
            //   label: "标准地址",
            //   prop: "houseCodeBinds",
            //   span: 24,
            //   type: 'select',
            //   labelWidth:120,
            //   dataType: "object",
            //   remote: true,
            //   multiple: true,
            //   hide: true,
            //   display: false,
            //   filterable:true,
            //   dicUrl: `/api/blade-doorplateAddress/doorplateAddress/getPlaceList`,
            //   props: {
            //     label: 'addressName',
            //     value: 'addressCode',
            //   },
            //   dicData: [],
            //   rules: [{
            //     required: false,
            //     message: "请选择标准地址",
            //     trigger: "blur",
            //   }, ]
            // },
            {
              span: 24,
              hide: true,
              prop: "houseCodeBinds",
              slot: true,
              label: "标准地址",
              prop: "houseCodeBinds",
              span: 24,
              type: 'select',
              dataType: "string",
              remote: true,
              multiple: true,
              hide: true,
              dicUrl: `/api/blade-doorplateAddress/doorplateAddress/getPlaceList?addressName={{key}}`,
              props: {
                label: 'addressName',
                value: 'addressCode',
              },
              dicData: [],
              rules: [{
                required: true,
                message: "请选择地址",
                trigger: "blur",
              }, ],
              labelWidth: 120,
            },
            {
              label: "备注",
              prop: "remark",
              type: 'textarea',
              labelWidth: 120,
              hide: true,
              span: 24,
              rules: [{
@@ -368,12 +460,13 @@
          submitBtn: false,
          emptyBtn: false,
          column: [{
              labelWidth: 100,
              label: "法人信息",
              prop: "legalPerson",
            },
            {
              width: 96,
              labelWidth: 100,
              label: "法人电话",
              prop: "legalTel",
              search: true,
@@ -385,6 +478,7 @@
                trigger: "blur",
              }, ],
            },
            {
              label: "营业执照",
@@ -437,15 +531,54 @@
          index: true,
          dialogClickModal: false,
          column: [{
              label: "名称",
              labelWidth: 100,
              label: "姓名",
              prop: "name",
              searchSpan: 4,
              search: true,
            },
            {
              labelWidth: 100,
              label: "性别",
              prop: "gender",
              type: "select",
              dicData: [{
                  label: "男",
                  value: 1
                },
                {
                  label: "女",
                  value: 0
                },
                {
                  label: "未知",
                  value: "3"
                }
              ],
            },
            {
              labelWidth: 100,
              span: 12,
              label: "民族",
              prop: "ethnicity",
              type: "select",
              row: true,
              dicUrl: "/api/blade-system/dict-biz/dictionary?code=nationType",
              dataType: "number",
              props: {
                label: "dictValue",
                value: "dictKey",
              },
            },
            {
              labelWidth: 100,
              label: "身份证号",
              prop: "idCard",
            },
            {
              width: 96,
              label: "手机号码",
              labelWidth: 100,
              label: "电话号码",
              prop: "telephone",
              search: true,
              searchSpan: 4,
@@ -458,12 +591,89 @@
            },
            {
              label: "暂住地",
              labelWidth: 100,
              label: "现居住地",
              prop: "tempAddress",
              searchSpan: 4,
              search: true,
            },
          ],
            {
              labelWidth: 100,
              label: "岗位",
              prop: "jobNature",
              // hide: true
            },
            {
              label: "从业人员照片",
              prop: "employerImg",
              labelWidth: 100,
              type: "upload",
              listType: "picture-card",
              dataType: "string",
              multiple: true,
              action: "/api/blade-resource/oss/endpoint/put-file",
              propsHttp: {
                res: "data",
                name: "name",
                url: "link",
              },
              span: 24,
              hide: true
            },
            {
              label: "入职时间",
              labelWidth: 100,
              hide: true,
              row: true,
              prop: "resignationTime",
              type: "datetime",
              format: "yyyy-MM-dd",
              valueFormat: "yyyy-MM-dd",
              // format: "yyyy-MM-dd hh:mm:ss",
              // valueFormat: "yyyy-MM-dd hh:mm:ss",
              rules: [{
                required: false,
                message: "请选择入职时间",
                trigger: "blur",
              }]
            },
            {
              label: "离职时间",
              labelWidth: 100,
              hide: true,
              row: true,
              prop: "employmentTime",
              type: "datetime",
              format: "yyyy-MM-dd",
              valueFormat: "yyyy-MM-dd",
              // format: "yyyy-MM-dd hh:mm:ss",
              // valueFormat: "yyyy-MM-dd hh:mm:ss",
              rules: [{
                required: false,
                message: "请选择离职时间",
                trigger: "blur",
              }]
            },
            {
              labelWidth: 100,
              label: "状态",
              prop: "resignationFlag",
              // hide: true
              type: "select",
              display: false,
              dicData: [{
                  label: "在职",
                  value: 1
                },
                {
                  label: "离职",
                  value: 2
                }
              ],
            },
          ]
        },
        holdPage: {
          pageSize: 20,
@@ -471,6 +681,88 @@
          total: 0,
        },
        houseHoldForm: {},
        houseOwnerOption: {
          submitBtn: false,
          emptyBtn: false,
          column: [
            {
              width: 96,
              label: "姓名",
              prop: "landlordName",
              search: true,
              searchSpan: 4,
              slot: true,
              overHidden: true
            },
            {
              width: 96,
              label: "身份证号",
              prop: "landlordIdCard",
              search: true,
              searchSpan: 4,
              slot: true,
              overHidden: true,
              rules: [{
                // validator: validatorPhone,
                trigger: "blur",
              }, ],
            },
            {
              width: 96,
              label: "手机号",
              prop: "landlordPhone",
              search: true,
              searchSpan: 4,
              slot: true,
              overHidden: true,
              rules: [{
                validator: validatorPhone,
                trigger: "blur",
              }, ],
            },
          ],
        },
        userOption: {
          submitBtn: false,
          emptyBtn: false,
          column: [
            {
              width: 96,
              label: "电话",
              prop: "legalTel",
              search: true,
              searchSpan: 4,
              slot: true,
              overHidden: true,
              rules: [{
                validator: validatorPhone,
                trigger: "blur",
              }, ],
            },
            {
              width: 96,
              label: "微信号",
              prop: "legalTel",
              search: true,
              searchSpan: 4,
              slot: true,
              overHidden: true,
              rules: [{
                validator: validatorPhone,
                trigger: "blur",
              }, ],
            },
          ],
        },
        standardAddressList: [], //标准地址数据
        standardAddress: "",
        standardAddressSearchKey: ""
      }
    },
@@ -481,6 +773,13 @@
    inject: ["placeElement"],
    watch: {
      'form.houseBindList': {
        handler(newData) {
          console.log("=======>", newData)
        }
      },
      'form.isNine': {
        handler(newData) {
          if (newData) {
@@ -511,11 +810,23 @@
              frontTypeColumn.display = false
            }
          }
        },
        }
      },
      'form.addressName': {
        handler(newData) {
          console.log("111111")
          const column = this.findObject(this.option.column, "houseCodeBinds")
          if (newData) {
            column.display = true;
          } else {
            column.display = false
          }
        }
      }
    },
    methods: {
      initOpen(newData) {
        console.log("item==>", newData);
        this.curRow = newData
        this.roleBox = true
        this.baseShow = false
@@ -526,18 +837,23 @@
        const that = this
        that.$axios
          .all([getPlace(newData["id"]), getPlaceExt({
          .all([getPlaceDetaill(newData["houseCode"]), getPlaceExt({
            placeId: newData["id"]
          }), getPlaceList()])
          .then(
            that.$axios.spread(function(baseInfo, restInfo) {
              console.log("houseCodeBinds===>", baseInfo.data.data.houseCodeBinds)
              that.form = baseInfo.data.data
              that.form.addressName = that.form.location;
              that.form.location = [
                that.form.lng,
                that.form.lat,
                that.form.location,
              ].join(",")
              if (baseInfo.data.data.houseCodeBinds) {
                that.standardAddressList = baseInfo.data.data.houseBindList;
                that.form.houseCodeBinds = baseInfo.data.data.houseCodeBinds.split(",")
              }
              if (that.form.imageUrls && that.form.imageUrls.length) {
                that.form.imageUrls = that.form.imageUrls
@@ -567,6 +883,9 @@
              that.baseShow = true
              const data = restInfo.data.data
              if (data) {
                let imageUrls = data.imageUrls
                let planImageUrls = data.planImageUrls
@@ -591,12 +910,16 @@
                  ...data,
                  imageUrls,
                  planImageUrls,
                }
              }
              that.restShow = true
            })
          )
        that.getPlaceAddressListRequest()
      },
      locationDispose(data) {
@@ -734,7 +1057,11 @@
        }
        delete this.form.smallLabel
        if (Array.isArray(this.form.houseCodeBinds)) {
          this.form.houseCodeBinds = this.form.houseCodeBinds.join(",")
        }
        this.form.placeExtEntity = null
        this.$refs.baseForm.validate((valid, done, msg) => {
          if (valid) {
            that.$axios
@@ -786,6 +1113,27 @@
        this.restShow = false
        this.roleBox = false
      },
      getPlaceAddressListRequest(query) {
        getPlaceAddressList({
          addressName: query
        }).then(res => {
          this.standardAddressList = res.data.data;
        })
      },
      onSelectChange(e) {
        console.log("selectChange===>", e);
        // this.getPlaceAddressListRequest()
      },
      onRemoteMethod(query) {
        console.log("remote===>", query)
        this.getPlaceAddressListRequest(query)
      },
    },
  }
</script>
@@ -813,4 +1161,4 @@
      justify-content: center;
    }
  }
</style>
</style>