shuishen
2024-03-16 e27410aca7eb65b11fec83adb39643399bf3a6b4
src/views/place/components/baseAllInfo.vue
@@ -1,545 +1,1013 @@
<template>
  <el-dialog class="place-info-box" title="场所维护" append-to-body :visible.sync="roleBox" center @close="roleBoxClose">
    <div class="cur-container-box">
        <div class="content-box">
            <box-title class="m10" :classVal="9" :title="'基本信息'"></box-title>
            <avue-form ref="baseForm" :option="option" v-model="form"></avue-form>
      <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">
        </avue-form>
            <box-title class="m10" :classVal="9" :title="'其他信息'"></box-title>
            <avue-form ref="restForm" :option="optionDetail" v-model="placeForm"></avue-form>
            <box-title class="m10" :classVal="9" :title="'从业人员'"></box-title>
            <avue-crud :option="placeOption" :table-loading="loading" :data="placeExt" ref="crud" v-model="houseHoldForm"
                :permission="permissionList" @row-del="houseHoldRowDel" @row-update="houseHoldRowUpdate"
                @row-save="houseHoldRowSave" :page.sync="holdPage" @current-change="holdCurrentChange"
                @size-change="holdSizeChange" @refresh-change="refreshHoldChange" @on-load="holdOnLoad">
            </avue-crud>
        </div>
        <box-title class="m10" :classVal="9" :title="'房东信息'"></box-title>
        <avue-form v-if="restShow" ref="restForm" :option="houseOwnerOption" v-model="form"></avue-form>
        <div class="footer-btn-box">
            <el-button size="small" type="primary" @click="dataUpdate">保 存</el-button>
        <box-title class="m10" :classVal="9" :title="'其他信息'"></box-title>
        <avue-form v-if="restShow" ref="restForm" :option="optionDetail" v-model="placeForm"></avue-form>
            <el-button size="small" @click="closeRowDetails">关 闭</el-button>
        </div>
        <box-title class="m10" :classVal="9" :title="'从业人员'"></box-title>
        <avue-crud :option="placeOption" :table-loading="loading" :data="placeExt" ref="crud" v-model="houseHoldForm"
          :permission="permissionList" @row-del="houseHoldRowDel" @row-update="houseHoldRowUpdate"
          @row-save="houseHoldRowSave" :page.sync="holdPage" @current-change="holdCurrentChange"
          @size-change="holdSizeChange" @refresh-change="refreshHoldChange" @on-load="holdOnLoad">
        </avue-crud>
      </div>
      <div class="footer-btn-box">
        <el-button size="small" type="primary" @click="dataUpdate">保 存</el-button>
        <el-button size="small" @click="roleBoxClose">关 闭</el-button>
      </div>
    </div>
  </el-dialog>
</template>
<script>
import {
    getPlace,
    getPlaceExt,
    holdRemove,
    holdAdd,
    holdUpdate,
    getHoldList,
    update,
    updatePlaceExt,
  getPlaceDetaill,
  getPlaceExt,
  holdRemove,
  holdAdd,
  holdUpdate,
  getHoldList,
  update,
  updatePlaceExt,
} from "@/api/place/place"
import {
  getPlaceList
} from "@/api/doorplateAddress/doorplateAddress"
import website from "@/config/website"
import website from '@/config/website'
import boxTitle from './boxTitle'
import boxTitle from "./boxTitle"
export default {
    data () {
        return {
            placeExt: [],
            form: {},
            option: {
                submitBtn: false,
                emptyBtn: false,
                column: [
                    {
                        span: 12,
                        label: "场所名称",
                        prop: "placeName",
                        rules: [{
                            required: true,
                            message: "请输入场所名称",
                            trigger: "blur",
                        }],
                    },
                    {
                        span: 7,
                        label: "场所标签",
                        prop: "label",
                        type: "cascader",
                        dicUrl: "/api/blade-category/category/getCategory?level=2",
                        cascader: ["smallLabel"],
                        props: {
                            label: "categoryName",
                            value: "categoryNo"
                        },
                        dataType: "string",
                        hide: true,
                        rules: [{
                            required: true,
                            message: "请输入场所标签",
                            trigger: "blur",
                        },],
                    },
                    {
                        span: 5,
                        label: "",
                        labelWidth: 20,
                        prop: "smallLabel",
                        type: "cascader",
                        dicUrl: "/api/blade-category/category/getCategory?parentNo={{label}}",
                        props: {
                            label: "categoryName",
                            value: "categoryNo"
                        },
                        dataType: "string",
                        hide: true,
                    },
                    {
                        label: "负责人",
                        prop: "principal",
                        rules: [{
                            required: false,
                            message: "请输入负责人",
                            trigger: "blur",
                        }],
                    },
                    {
                        width: 110,
                        label: "电话",
                        prop: "principalPhone",
                        search: true,
                        searchSpan: 4,
                        slot: true,
                    },
                    {
                        hide: true,
                        parent: false,
                        label: "所属社区",
                        prop: "neiCode",
                        search: false,
                        width: 150,
                        type: "tree",
                        dicUrl: "/api/blade-system/region/tree",
                        props: {
                            label: "name",
                            value: "id",
                        },
                        cascader: ["gridId"],
                        rules: [
                            {
                                required: true,
                                message: "请选择所属社区",
                                trigger: "blur",
                            },
                        ],
                    },
                    {
                        hide: true,
                        label: "所属网格",
                        prop: "gridId",
                        type: "tree",
                        cell: true,
                        props: {
                            label: "gridName",
                            value: "id",
                        },
                        dicUrl:
                            "/api/blade-grid/grid/getGridList?communityCode={{neiCode}}",
                        rules: [
                            {
                                required: true,
                                message: "请选择所属网格",
                                trigger: "blur",
                            },
                        ],
                    },
                    {
                        label: "场所照片",
                        prop: "imageUrls",
                        width: 80,
                        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,
                    },
                    {
                        width: 160,
                        overHidden: true,
                        slot: true,
                        label: "位置",
                        prop: "location",
                        type: 'map',
                        dataType: "string",
                        span: 24,
                        value: [117.966460, 28.431002, ""],
                        rules: [
                            {
                                required: true,
                                message: "请选择位置",
                                trigger: "blur",
                            },
                        ],
                    },
                ]
            },
            placeForm: {},
            optionDetail: {
                submitBtn: false,
                emptyBtn: false,
                column: [
                    {
                        label: '法人信息',
                        prop: 'legalPerson'
                    },
                    {
                        label: '法人电话',
                        prop: 'legalTel'
                    },
                    {
                        label: "营业执照",
                        prop: "imageUrls",
                        width: 80,
                        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,
                    },
                    {
                        label: "场所平面图",
                        prop: "planImageUrls",
                        width: 80,
                        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,
                    },
                ]
            },
            loading: true,
            placeOption: {
                menu: true,
                height: 300,
                calcHeight: 54,
                dialogWidth: 950,
                tip: false,
                searchShow: false,
                addBtn: true,
                delBtn: true,
                editBtn: true,
                border: true,
                index: true,
                dialogClickModal: false,
                column: [{
                    label: "名称",
                    prop: "name",
                    searchSpan: 4,
                    search: true,
                }, {
                    label: "电话",
                    prop: "telephone",
                    searchSpan: 4,
                    search: true,
                }, {
                    label: "暂住地",
                    prop: "tempAddress",
                    searchSpan: 4,
                    search: true,
                },]
            },
            holdPage: {
                pageSize: 20,
                currentPage: 1,
                total: 0,
            },
            houseHoldForm: {},
  data() {
    //手机号格式校验
    let validatorPhone = function (rule, value, callback) {
      if (value) {
        if (!/^1[3456789]\d{9}$/.test(value)) {
          callback(new Error("手机号格式有误!"))
        } else {
          callback()
        }
      }
      callback()
    }
    return {
      roleBox: false,
      baseShow: false,
      restShow: false,
      placeExt: [],
      form: {},
      option: {
        submitBtn: false,
        emptyBtn: false,
        column: [{
          span: 12,
          label: "场所名称",
          prop: "placeName",
          rules: [{
            required: true,
            message: "请输入场所名称",
            trigger: "blur",
          },],
        },
        {
          label: "负责人",
          prop: "principal",
          rules: [{
            required: false,
            message: "请输入负责人",
            trigger: "blur",
          },],
        },
        {
          width: 96,
          label: "手机号码",
          prop: "principalPhone",
          search: true,
          searchSpan: 4,
          slot: true,
          overHidden: true,
          rules: [{
            validator: validatorPhone,
            trigger: "blur",
          },],
        },
        {
          width: 120,
          overHidden: true,
          label: "身份证号",
          prop: "principalIdCard",
          search: true,
          searchSpan: 4,
          slot: true,
          rules: [{
            required: false,
            message: "请输身份证号",
            trigger: "blur",
          }],
        },
        {
          hide: true,
          parent: false,
          label: "所属社区",
          prop: "neiCode",
          search: false,
          type: "tree",
          dicUrl: "/api/blade-system/region/tree",
          props: {
            label: "name",
            value: "id",
          },
          cascader: ["gridCode"],
          // dicFormatter: (res) => {
          //  return dsposeData(res.data)
          // },
          rules: [{
            required: true,
            message: "请选择所属社区",
            trigger: "blur",
          },],
        },
        {
          hide: true,
          label: "所属网格",
          prop: "gridCode",
          type: "tree",
          cell: true,
          props: {
            label: "gridName",
            value: "gridCode",
          },
          // dataType: 'string',
          dicUrl: "/api/blade-grid/grid/getGridList?communityCode={{neiCode}}",
          rules: [{
            required: true,
            message: "请选择所属网格",
            trigger: "blur",
          },],
        },
        {
          span: 7,
          label: "场所标签",
          prop: "label",
          type: "select",
          dicUrl: "/api/blade-category/category/getCategory?level=2",
          cascader: ["smallLabel"],
          props: {
            label: "categoryName",
            value: "categoryNo",
          },
          dataType: "string",
          hide: true,
          rules: [{
            required: true,
            message: "请输入场所标签",
            trigger: "blur",
          },],
        },
        {
          span: 5,
          label: "",
          labelWidth: 20,
          prop: "smallLabel",
          type: "select",
          dicUrl: "/api/blade-category/category/getCategory?parentNo={{label}}",
          props: {
            label: "categoryName",
            value: "categoryNo",
          },
          dataType: "string",
          hide: true,
        },
        {
          span: 12,
          label: "标签颜色",
          prop: "color",
          type: "select",
          dicData: [{
            label: "绿",
            value: "green",
          },
          {
            label: "黄",
            value: "yellow",
          },
          {
            label: "红",
            value: "red",
          },
          ],
          props: {
            label: "label",
            value: "value",
          },
          hide: true,
        },
        {
          span: 12,
          label: "九小场所",
          prop: "isNine",
          type: "select",
          dicData: [{
            label: "是",
            value: 1,
          },
          {
            label: "否",
            value: 2,
          }
          ],
          rules: [{
            required: true,
            message: "请选择九小分类",
            trigger: "blur",
          },],
          hide: true,
        },
        {
          span: 12,
          label: "九小分类",
          prop: "nineType",
          type: "select",
          display: false,
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=nineType",
          dataType: "number",
          hide: true,
          props: {
            label: "dictValue",
            value: "dictKey",
          },
        },
        {
          span: 12,
          label: "阵地",
          prop: "isFront",
          type: "select",
          dicData: [{
            label: "是",
            value: 1,
          },
          {
            label: "否",
            value: 2,
          }
          ],
          hide: true,
          rules: [{
            required: true,
            message: "请选择阵地",
            trigger: "blur",
          },],
        },
        {
          span: 12,
          label: "阵地类型",
          prop: "frontType",
          type: "select",
          display: false,
          row: true,
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=frontType",
          dataType: "number",
          hide: true,
          props: {
            label: "dictValue",
            value: "dictKey",
          },
        },
        {
          label: "场所照片",
          prop: "imageUrls",
          width: 80,
          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: 12,
        },
        {
          width: 160,
          overHidden: true,
          slot: true,
          label: "地址",
          prop: "location",
          type: "map",
          dataType: "string",
          span: 12,
          value: [117.96646, 28.431002, ""],
          cascader: ['houseCodeBinds'],
          rules: [{
            required: true,
            message: "请选择地址",
            trigger: "blur",
          },],
        },
        {
          width: 160,
          overHidden: true,
          display: false,
          hide: true,
          label: "地址",
          prop: "addressName",
          span: 12
        },
        {
          width: 160,
          overHidden: true,
          slot: true,
          label: "标准地址",
          prop: "houseCodeBinds",
          span: 24,
          type: 'tree',
          dataType: "object",
          remote: true,
          multiple: true,
          hide: true,
          display: false,
          dicUrl: `/api/blade-doorplateAddress/doorplateAddress/getPlaceList?addressName={{addressName}}`,
          props: {
            label: 'addressName',
            value: 'addressCode',
          },
          dicData: [],
          rules: [{
            required: false,
            message: "请选择地址",
            trigger: "blur",
          },],
        },
        {
          label: "备注",
          prop: "remark",
          type: 'textarea',
          hide: true,
          span: 24,
          rules: [{
            required: false,
            message: "请输入场所备注",
            trigger: "blur",
          },],
        },
        ],
      },
      placeForm: {},
      optionDetail: {
        submitBtn: false,
        emptyBtn: false,
        column: [{
          labelWidth: 100,
          label: "法人信息",
          prop: "legalPerson",
        },
        {
          labelWidth: 100,
          label: "法人电话",
          prop: "legalTel",
          search: true,
          searchSpan: 4,
          slot: true,
          overHidden: true,
          rules: [{
            validator: validatorPhone,
            trigger: "blur",
          },],
        },
        {
          label: "营业执照",
          prop: "imageUrls",
          width: 80,
          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,
        },
        {
          label: "场所平面图",
          prop: "planImageUrls",
          width: 80,
          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,
        },
        ],
      },
      loading: true,
      placeOption: {
        menu: true,
        height: 300,
        calcHeight: 54,
        dialogWidth: 950,
        tip: false,
        searchShow: false,
        addBtn: true,
        delBtn: true,
        editBtn: true,
        border: true,
        index: true,
        dialogClickModal: false,
        column: [{
          labelWidth: 100,
          label: "名称",
          prop: "name",
          searchSpan: 4,
          search: true,
        },
        {
          labelWidth: 100,
          label: "手机号码",
          prop: "telephone",
          search: true,
          searchSpan: 4,
          slot: true,
          overHidden: true,
          rules: [{
            validator: validatorPhone,
            trigger: "blur",
          },],
        },
        {
          labelWidth: 100,
          label: "暂住地",
          prop: "tempAddress",
          searchSpan: 4,
          search: true,
        },
        {
          labelWidth: 100,
          label: "微信号",
          prop: "wxAccount",
        },
        {
          labelWidth: 100,
          label: "性别",
          prop: "gender",
          type: "select",
          dicData: [{
            label: "男",
            value: 1
          },
          {
            label: "女",
            value: 0
          },
          {
            label: "未知",
            value: "3"
          }
          ],
        },
        {
          labelWidth: 100,
          label: "身份证号",
          prop: "idCard",
        },
        {
          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: "employer",
          hide:true
        },
        {
          labelWidth: 100,
          label: "岗位性质",
          prop: "jobNature",
          hide:true
        },
        {
          labelWidth: 100,
          label: "户籍地址",
          prop: "registeredAddress",
        },
        ]
      },
      holdPage: {
        pageSize: 20,
        currentPage: 1,
        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",
            },],
          },
          {
            width: 96,
            label: "微信号",
            prop: "legalTel",
            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",
            },],
          },
        ],
      },
    }
  },
  components: {
    boxTitle
  },
  inject: ["placeElement"],
  watch: {
    'form.houseBindList': {
      handler(newData) {
        console.log("=======>", newData)
      }
    },
    components: { boxTitle },
    'form.isNine': {
      handler(newData) {
        if (newData) {
          let nineTypeColumn = this.findObject(
            this.option.column,
            'nineType'
          )
    inject: ["placeElement"],
    watch: {
        'placeElement.curRow': {
            handler (newData) {
                const that = this
                if (newData && 'id' in newData && newData['id'] != null && newData['id'] != '') {
                    that.$axios.all([
                        getPlace(newData['id']),
                        getPlaceExt({ placeId: newData['id'] }),
                    ]).then(that.$axios.spread(function (baseInfo, restInfo) {
                        that.form = baseInfo.data.data
                        that.form.location = [that.form.lng, that.form.lat, that.form.location].join(',')
                        if (that.form.imageUrls && that.form.imageUrls.length) {
                            that.form.imageUrls = that.form.imageUrls.split(",").filter(item => item != '').map(item => website.minioUrl + item).join(',')
                        }
                        if (that.form.placePoiLabelVOList && that.form.placePoiLabelVOList.length) {
                            let lebelTwo = that.form.placePoiLabelVOList.find(item => {
                                return item.type == 2
                            })
                            if (lebelTwo) that.form.label = String(lebelTwo.poiCode)
                            let lebelThree = that.form.placePoiLabelVOList.find(item => {
                                return item.type == 3
                            })
                            if (lebelThree) that.form.smallLabel = String(lebelThree.poiCode)
                        }
                        const data = restInfo.data.data
                        if (data) {
                            let imageUrls = data.imageUrls
                            let planImageUrls = data.planImageUrls
                            if (imageUrls && imageUrls.length) {
                                imageUrls = imageUrls.split(',').filter(item => item != '').map(item => website.minioUrl + item).join(",")
                            }
                            if (planImageUrls && planImageUrls.length) {
                                planImageUrls = planImageUrls.split(',').filter(item => item != '').map(item => website.minioUrl + item).join(",")
                            }
                            that.placeForm = {
                                ...data,
                                imageUrls,
                                planImageUrls
                            }
                        }
                    }))
                    that.holdOnLoad(this.holdPage)
                }
            },
            immediate: true
          if (newData == 1) {
            nineTypeColumn.display = true
          } else {
            nineTypeColumn.display = false
          }
        }
      },
    },
    'form.isFront': {
      handler(newData) {
        if (newData) {
          let frontTypeColumn = this.findObject(
            this.option.column,
            'frontType'
          )
    methods: {
        locationDispose (data) {
            data = data.split(',')
          if (newData == 1) {
            frontTypeColumn.display = true
          } else {
            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
      this.restShow = false
      this.form = {}
      this.placeForm = {}
            return {
                longitude: data[0],
                latitude: data[1],
                location: data[2]
      const that = this
      that.$axios
        .all([getPlaceDetaill(newData["houseCode"]), getPlaceExt({
          placeId: newData["id"]
        }), getPlaceList()])
        .then(
          that.$axios.spread(function (baseInfo, restInfo) {
            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 (that.form.imageUrls && that.form.imageUrls.length) {
              that.form.imageUrls = that.form.imageUrls
                .split(",")
                .filter((item) => item != "")
                .map((item) => website.minioUrl + item)
                .join(",")
            }
        },
        selectionClear () {
            this.$nextTick(() => {
                this.$refs.crud && this.$refs.crud.toggleSelection()
            })
        },
            if (
              that.form.placePoiLabelVOList &&
              that.form.placePoiLabelVOList.length
            ) {
              let lebelTwo = that.form.placePoiLabelVOList.find((item) => {
                return item.type == 2
              })
        houseHoldRowUpdate (row, index, done, loading) {
            holdUpdate(row).then(
                () => {
                    this.holdOnLoad(this.holdPage)
                    this.$message({
                        type: "success",
                        message: "操作成功!",
                    })
                    done()
                },
                (error) => {
                    window.console.log(error)
                    loading()
                }
              if (lebelTwo) that.form.label = String(lebelTwo.poiCode)
              let lebelThree = that.form.placePoiLabelVOList.find((item) => {
                return item.type == 3
              })
              if (lebelThree) that.form.smallLabel = String(lebelThree.poiCode)
            }
            that.baseShow = true
            const data = restInfo.data.data
            if (data) {
              let imageUrls = data.imageUrls
              let planImageUrls = data.planImageUrls
              if (imageUrls && imageUrls.length) {
                imageUrls = imageUrls
                  .split(",")
                  .filter((item) => item != "")
                  .map((item) => website.minioUrl + item)
                  .join(",")
              }
              if (planImageUrls && planImageUrls.length) {
                planImageUrls = planImageUrls
                  .split(",")
                  .filter((item) => item != "")
                  .map((item) => website.minioUrl + item)
                  .join(",")
              }
              that.placeForm = {
                ...data,
                imageUrls,
                planImageUrls,
              }
            }
            that.restShow = true
          })
        )
    },
    locationDispose(data) {
      data = data.split(",")
      return {
        longitude: data[0],
        latitude: data[1],
        location: data[2],
      }
    },
    selectionClear() {
      this.$nextTick(() => {
        this.$refs.crud && this.$refs.crud.toggleSelection()
      })
    },
    houseHoldRowUpdate(row, index, done, loading) {
      holdUpdate(row).then(
        () => {
          this.holdOnLoad(this.holdPage)
          this.$message({
            type: "success",
            message: "操作成功!",
          })
          done()
        },
        (error) => {
          window.console.log(error)
          loading()
        }
      )
    },
    houseHoldRowDel(row) {
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          return holdRemove(row.id)
        })
        .then(() => {
          this.holdOnLoad(this.holdPage)
          this.$message({
            type: "success",
            message: "操作成功!",
          })
        })
    },
    houseHoldRowSave(row, done, loading) {
      holdAdd({
        ...row,
        placeId: this.curRow.id,
      }).then(
        () => {
          this.holdOnLoad(this.holdPage)
          this.$message({
            type: "success",
            message: "操作成功!",
          })
          done()
        },
        (error) => {
          window.console.log(error)
          loading()
        }
      )
    },
    refreshHoldChange() {
      this.holdOnLoad(this.holdPage)
    },
    holdOnLoad(holdPage, params = {}) {
      if (!this.curRow.id) return
      let values = {
        ...params,
        placeId: this.curRow.id,
      }
      getHoldList(holdPage.currentPage, holdPage.pageSize, values).then(
        (res) => {
          const data = res.data.data
          this.holdPage.total = data.total
          this.placeExt = data.records
          this.loading = false
          this.selectionClear()
        }
      )
    },
    holdCurrentChange(currentPage) {
      this.holdPage.currentPage = currentPage
    },
    holdSizeChange(pageSize) {
      this.holdPage.pageSize = pageSize
    },
    desposeImage(data) {
      if (data) {
        if (data.length > 0) {
          var urls = []
          var split = data.split(",").filter((item) => item != "")
          split.forEach((url) => {
            var names = url.split("jczz/")
            urls.push(names[1])
          })
          data = urls.join(",")
        }
      }
      return data
    },
    dataUpdate() {
      const that = this
      let imageUrls = this.desposeImage(this.form.imageUrls)
      let placeImages = this.desposeImage(this.placeForm.imageUrls)
      let placePlanImageUrls = this.desposeImage(this.placeForm.planImageUrls)
      let label = this.form.label
      if (this.form.smallLabel != "") {
        label = label + "," + this.form.smallLabel
      }
      delete this.form.smallLabel
      if(Array.isArray(this.form.houseCodeBinds) ){
         this.form.houseCodeBinds = this.form.houseCodeBinds.join(",")
      }
      this.$refs.baseForm.validate((valid, done, msg) => {
        if (valid) {
          that.$axios
            .all([
              update({
                // ...this.placeElement.curRow,
                ...this.form,
                imageUrls,
                label,
                ...this.locationDispose(this.form.location),
              }),
              updatePlaceExt({
                ...this.placeForm,
                imageUrls: placeImages,
                planImageUrls: placePlanImageUrls,
              }),
            ])
            .then(
              that.$axios.spread(function () {
                that.$message({
                  type: "success",
                  message: "操作成功!",
                })
                that.roleBoxClose()
                that.placeElement.onLoad(
                  that.placeElement.page,
                  that.placeElement.query
                )
                done()
              })
            )
        },
        houseHoldRowDel (row) {
            this.$confirm("确定将选择数据删除?", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning",
            })
                .then(() => {
                    return holdRemove(row.id)
                })
                .then(() => {
                    this.holdOnLoad(this.holdPage)
                    this.$message({
                        type: "success",
                        message: "操作成功!",
                    })
                })
        },
        houseHoldRowSave (row, done, loading) {
            holdAdd({
                ...row,
                placeId: this.placeElement.curRow.id
            }).then(
                () => {
                    this.holdOnLoad(this.holdPage)
                    this.$message({
                        type: "success",
                        message: "操作成功!",
                    })
                    done()
                },
                (error) => {
                    window.console.log(error)
                    loading()
                }
            )
        },
        refreshHoldChange () {
            this.holdOnLoad(this.holdPage)
        },
        holdOnLoad (holdPage, params = {}) {
            if (!this.placeElement.curRow.id) return
            let values = {
                ...params,
                placeId: this.placeElement.curRow.id
            }
            getHoldList(holdPage.currentPage, holdPage.pageSize, values).then((res) => {
                const data = res.data.data
                this.holdPage.total = data.total
                this.placeExt = data.records
                this.loading = false
                this.selectionClear()
            })
        },
        holdCurrentChange (currentPage) {
            this.holdPage.currentPage = currentPage
        },
        holdSizeChange (pageSize) {
            this.holdPage.pageSize = pageSize
        },
        dataUpdate () {
            const that = this
            let imageUrls = this.form.imageUrls
            if (imageUrls.length > 0) {
                var urls = []
                var split = imageUrls.split(",").filter(item => item != '')
                split.forEach(url => {
                    var names = url.split("jczz/")
                    urls.push(names[1])
                })
                imageUrls = urls.join(",")
            }
            let label = this.form.label
            if (this.form.smallLabel != '') {
                label = label + ',' + this.form.smallLabel
            }
            delete this.form.smallLabel
            this.$refs.baseForm.validate((valid, done, msg) => {
                if (valid) {
                    that.$axios.all([
                        update({
                            // ...this.placeElement.curRow,
                            ...this.form,
                            imageUrls,
                            label,
                            ...this.locationDispose(this.form.location)
                        }),
                        updatePlaceExt(this.placeForm)
                    ]).then(that.$axios.spread(function () {
                        that.$message({
                            type: "success",
                            message: "操作成功!",
                        })
                        that.closeRowDetails()
                        that.placeElement.onLoad(that.placeElement.page, that.placeElement.query)
                        done()
                    }))
                } else {
                    console.log('error submit!!')
                    return false
                }
            })
        },
        closeRowDetails () {
            this.placeElement.roleBox = false
        } else {
          console.log("error submit!!")
          return false
        }
      })
    },
    roleBoxClose() {
      this.form = {}
      this.placeForm = {}
      this.$refs.baseForm && this.$refs.baseForm.resetForm()
      this.$refs.restForm && this.$refs.restForm.resetForm()
      this.baseShow = false
      this.restShow = false
      this.roleBox = false
    },
  },
}
</script>
<style lang="scss" scoped>
.cur-container-box {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  overflow: hidden;
  .content-box {
    margin: 0 4px;
    padding: 0 10px;
    height: 0;
    flex: 1;
    overflow: hidden;
    overflow-y: auto;
  }
    .content-box {
        margin: 0 4px;
        padding: 0 10px;
        height: 0;
        flex: 1;
        overflow: hidden;
        overflow-y: auto;
    }
    .footer-btn-box {
        margin-top: 10px;
        display: flex;
        justify-content: center;
    }
  .footer-btn-box {
    margin-top: 10px;
    display: flex;
    justify-content: center;
  }
}
</style>