linwe
2024-05-24 2fbf3247052e795dfbc3a30a02ce704dc5488c7a
src/views/cGovernance/taskECallTwo/index.vue
@@ -5,9 +5,12 @@
      v-model="form" :permission="permissionList" @row-update="rowUpdate" @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="menuLeft">
        <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删
          除
      <template slot-scope="{row, size}" slot="menu">
        <el-button size="small" type="text" icon="el-icon-edit" plain @click="handleEdit(row)">编辑
        </el-button>
        <el-button size="small" type="text" icon="el-icon-delete" plain @click="rowDel(row)">删除
        </el-button>
      </template>
@@ -21,7 +24,31 @@
          v-text="textDispose(row, 'phoneflag', 'phone')">
        </el-button>
      </template>
      <template slot-scope="{type, disabled}" slot="sceneGeoForm">
        <el-button type="primary" style="font-size: 14px;  border: none;" icon="el-icon-map-location"
          @click="openMap()">获取位置</el-button>
        <avue-input-map style="position: fixed; top: -11111111111111px;" ref="avueInputMap" :params="form.params"
          placeholder="请选择地图" v-model="form.sceneGeo"></avue-input-map>
      </template>
    </avue-crud>
    <el-dialog title="编辑" append-to-body :visible.sync="editPopup" center @close="editClose">
      <avue-form ref="formRef" :option="option" v-model="editForm" @submit="rowUpdate">
        <template slot-scope="{type, disabled}" slot="sceneGeo">
          <el-button type="primary" style="font-size: 14px;  border: none;" icon="el-icon-map-location"
            @click="openMapTwo()">获取位置</el-button>
          <avue-input-map style="position: fixed; top: -11111111111111px;" ref="avueInputMapTwo"
            :params="editForm.params" placeholder="请选择地图" v-model="editForm.sceneGeo"></avue-input-map>
        </template>
      </avue-form>
    </el-dialog>
    <el-dialog title="分享" append-to-body :visible.sync="sharePopup" center @close="popupClose">
      <div style="display: flex; justify-content: center; ">
@@ -74,7 +101,9 @@
      }
      return {
        editPopup: false,
        form: {},
        editForm: {},
        query: {},
        loading: true,
        page: {
@@ -88,11 +117,13 @@
        circleRadio: 0,
        shareCircleRow: {},
        option: {
          labelWidth: 96,
          labelWidth: 130,
          // searchLabelWidth: 96,
          searchShow: true,
          searchMenuSpan: 3,
          menuWidth: 310,
          delBtn: false,
          editBtn: false,
          height: "auto",
          calcHeight: 54,
@@ -120,6 +151,18 @@
              }, ],
            },
            {
              width: 156,
              label: "诉求主题",
              prop: "issueTitle",
              search: true,
              searchSpan: 4,
              rules: [{
                required: true,
                message: "请选择诉求主题",
                trigger: "blur",
              }],
            },
            {
              width: 100,
              label: "诉求来源",
              prop: "issueOrigin",
@@ -145,26 +188,7 @@
                message: "请选择诉求来源",
                trigger: "blur",
              }, ],
              // search: true,
            },
            {
              width: 156,
              overHidden: true,
              label: "诉求主题",
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              prop: "issueTitle",
              search: true,
              searchSpan: 4,
              rules: [{
                required: true,
                message: "请选择诉求主题",
                trigger: "blur",
              }],
            },
            {
              label: "诉求内容",
              parent: false,
@@ -183,17 +207,14 @@
              span: 12,
              searchSpan: 4,
              width: 100,
              labelWidth: 120,
              type: "select",
              dicData: [{
                label: "个人",
                value: 0
                value: "0"
              }, {
                label: "企业",
                value: 1
                value: "1"
              }],
              // hide: true,
              // search: true,
            },
            {
              width: 110,
@@ -204,7 +225,7 @@
              searchLabelWidth: 120,
              search: true,
              rules: [{
                required: false,
                required: true,
                message: "请输入诉求人姓名",
                trigger: "blur",
              }, ],
@@ -218,14 +239,25 @@
              type: "select",
              dicData: [{
                label: "男",
                value: 0
                value: "0"
              }, {
                label: "女",
                value: 1
                value: "1"
              }],
              rules: [{
                  required: false,
                  message: "请输入诉求人性别",
                required: true,
                message: "请输入诉求人性别",
                trigger: "blur",
              }],
              slot: true
            },
            {
              width: 100,
              label: "现场联系电话",
              prop: "applicantPhone",
              rules: [{
                  required: true,
                  message: "请输入现场联系电话",
                  trigger: "blur",
                },
                {
@@ -233,108 +265,54 @@
                  trigger: 'blur'
                }
              ],
              slot: true
            },
            {
              label: "诉求人住址",
              prop: "applicantHomeaddr",
              overHidden: true,
              rules: [{
                required: true,
                message: "请输入诉求人住址",
                trigger: "blur",
              }, ],
            },
            {
              width: 100,
              label: "现场联系电话",
              prop: "applicantPhone",
              labelWidth: 120,
              // type: "date",
              // format: "yyyy-MM-dd",
              // valueFormat: "yyyy-MM-dd",
              rules: [{
                required: true,
                message: "请选择现场联系电话",
                trigger: "blur",
              }, ],
            },
            {
              label: "网格",
              prop: "applicantGrid",
              submitBtn: "保存",
              hide: true,
              parent: false,
              type: "tree",
              dicUrl: "/api/blade-system/dept/treeByDept?deptId=1123598813738675201",
              props: {
                label: "title",
                value: "id"
              },
              // rules: [{
              //   required: true,
              //   message: "请选择网格",
              //   trigger: "blur",
              // }, ],
            },
            {
              width: 110,
              label: "诉求人行政区划",
              labelWidth: 120,
              prop: "applicantDistrict",
              type: "tree",
              dicUrl: "/api/blade-counties/counties/list",
              props: {
                label: "name",
                value: "code"
              },
              // rules: [{
              //   required: true,
              //   message: "请选择事发地址网格",
              //   trigger: "blur",
              // }, ],
              // span: 24,
            },
            {
              label: "事发地址",
              prop: "sceneAddr",
              submitBtn: "保存",
              hide: true,
              type: 'map',
              type: 'textarea',
              span: 24,
              value: [117.966460, 28.431002, ""],
              mapChange: (params) => {
                console.log('高德回调参数', params)
              },
              //高德初始化参数
              params: {
                zoom: 10,
                zoomEnable: false,
                dragEnable: false,
              }
              minRows: 2,
              maxRows: 4,
              rules: [{
                required: true,
                message: "请输入事发地址",
                trigger: "blur",
              }],
            },
            {
              prop: "sceneGeo",
              dataType: "string",
              type: 'map',
              // dataType: "string",
              span: 24,
              // value: [117.966460, 28.431002, ""]
            },
            {
              label: "事发地址网格",
              prop: "sceneAddrGrid",
              labelWidth: 120,
              parent: false,
              type: "tree",
              dicUrl: "/api/blade-system/dept/treeByDept?deptId=1123598813738675201",
              props: {
                label: "title",
                value: "id"
              },
              // rules: [{
              //   required: true,
              //   message: "请选择事发地址网格",
              //   trigger: "blur",
              // }, ],
              label: "事发地点-经度",
              prop: "sceneGeoLng",
              disabled: true,
              rules: [{
                required: true,
                message: "请输入事发地点-经度",
                trigger: "blur",
              }, ],
            },
            {
              label: "事发地点-纬度",
              prop: "sceneGeoLat",
              disabled: true,
              rules: [{
                required: true,
                message: "请输入事发地点-纬度",
                trigger: "blur",
              }],
            },
            {
              label: "事发所属行政区划",
              prop: "sceneDistrict",
              labelWidth: 130,
              // type: "textarea",
              hide: true,
              type: "tree",
              dicUrl: "/api/blade-counties/counties/list",
@@ -342,71 +320,26 @@
                label: "name",
                value: "code"
              },
              // rules: [{
              //   required: true,
              //   message: "请选择事发地址网格",
              //   trigger: "blur",
              // }, ],
              // span: 24,
            },
            {
              label: "事发场所",
              prop: "scenePlace",
              // type: "textarea",
              // hide: true,
              // span: 24,
            },
            // {
            //   label: "事发地点-经度",
            //   prop: "sceneGeoLat",
            //   type: "select",
            //   hide: true,
            // },
            // {
            //   label: "事发地点-维度",
            //   prop: "sceneGeoLng",
            //   type: "select",
            //   hide: true,
            // },
            {
              label: "诉求类别",
              prop: "issueType",
              type: "select",
              dicData: [{
                label: "咨询",
                value: 0
              }, {
                label: "投诉",
                value: 1
              }, {
                label: "求助",
                value: 2
              }, {
                label: "举报",
                value: 3
              }, {
                label: "建议",
                value: 4
              }],
              // hide: true,
            },
            {
              label: "归口类型",
              prop: "issueClazz",
              // type: "select",
              // hide: true,
              type: "tree",
              dicUrl: "/api/blade-issueClazz/issueClazz/tree",
              props: {
                label: "title",
                value: "id"
              },
              // dicUrl: "/api/blade-issueClazz/issueClazz/tree",
              // props: {
              //   label: "title",
              //   value: "id"
              // },
              // rules: [{
              //   required: true,
              //   message: "请选择事发地址网格",
              //   message: "请选择归口类型",
              //   trigger: "blur",
              // }, ],
              // span: 24,
              span: 12,
            },
            {
              label: "紧急程度",
@@ -414,80 +347,16 @@
              type: "select",
              dicData: [{
                label: "一般",
                value: 0
                value: "0"
              }, {
                label: "即办",
                value: 1
                value: "1"
              }],
              // hide: true,
            },
            {
              label: "办理时限(分钟)",
              prop: "deadline",
              labelWidth: 130,
              // type: "select",
              // hide: true,
            },
            {
              label: "关联工单ID",
              prop: "linkOrders",
              // type: "select",
              // hide: true,
            },
            {
              label: "关联工单号",
              prop: "linkOrdersCode",
              // type: "select",
              // hide: true,
            },
            {
              label: "知识引用",
              prop: "wikiRef",
              // type: "select",
              // hide: true,
            },
            // {
            // label: "受理单位",
            // prop: "acptOrgCode",
            // type: "select",
            // hide: true,
            // },
            // {
            //   label: "受理单位",
            //   prop: "acptOrgName",
            //   type: "select",
            //   hide: true,
            // },
            {
              label: "直接答复内容",
              prop: "directFeed",
              labelWidth: 120,
              // type: "select",
              // hide: true,
            },
            {
              label: "直接答复人员",
              prop: "directFeedHandler",
              labelWidth: 120,
              // type: "select",
              // hide: true,
            },
            {
              label: "直接答复时间",
              prop: "directFeedTime",
              type: "date",
              format: "yyyy-MM-dd",
              valueFormat: "yyyy-MM-dd",
              labelWidth: 120,
              // type: "select",
              // hide: true,
            },
            {
              label: "工单附件",
              prop: "images",
              type: "upload",
              // listType: "picture-card",
              dataType: "string",
              multiple: true,
              action: "/api/blade-resource/oss/endpoint/put-file-attach",
@@ -496,57 +365,29 @@
                name: 'name',
                url: "link",
              },
              // hide: true,
            },
            {
              label: "工单状态",
              prop: "status",
              disabled: true,
              type: "select",
              value: "0",
              dicData: [{
                label: "受理",
                value: 0
                value: "0"
              }, {
                label: "处理中",
                value: 1
                value: "1"
              }, {
                label: "已归档",
                value: 2
                value: "2"
              }],
              // hide: true,
            },
            {
              label: "交办标签",
              prop: "tagApply",
              type: "select",
              dicData: [{
                label: "未交办",
                value: "N"
              }, {
                label: "已交办",
                value: "Y"
              }, {
                label: "已退回",
                value: "R"
              }],
              // hide: true,
            },
            {
              label: "已延期",
              prop: "tagDelay",
              type: "select",
              dicData: [{
                label: "否",
                value: "N"
              }, {
                label: "是",
                value: "Y"
              }],
              // hide: true,
            },
            {
              label: "已反馈",
              prop: "tagDoing",
              type: "select",
              value: "Y",
              dicData: [{
                label: "否",
                value: "N"
@@ -554,12 +395,11 @@
                label: "是",
                value: "Y"
              }],
              // hide: true,
            },
            {
              label: "已答复",
              prop: "tagResp",
              value: "Y",
              type: "select",
              dicData: [{
                label: "否",
@@ -572,6 +412,7 @@
            {
              label: "已办结",
              prop: "tagDone",
              value: "Y",
              type: "select",
              dicData: [{
                label: "否",
@@ -584,18 +425,7 @@
            {
              label: "已回访",
              prop: "tagCheck",
              type: "select",
              dicData: [{
                label: "否",
                value: "N"
              }, {
                label: "是",
                value: "Y"
              }],
            },
            {
              label: "已电话回访",
              prop: "tagChkTel",
              value: "Y",
              type: "select",
              dicData: [{
                label: "否",
@@ -608,6 +438,7 @@
            {
              label: "核实/督办",
              prop: "tagRedo",
              value: "Y",
              type: "select",
              dicData: [{
                label: "否",
@@ -623,15 +454,37 @@
      }
    },
    watch: {
      "form.location": {
      "form.sceneGeo": {
        // form是表单或者表格绑定的数据集,v-model='form'
        handler(val) {
          if (typeof val == "string") {
            var arr = val.split(",")
          if (typeof val == "object") {
            if (!val) {
              return
            }
            console.log("*****789**********" + val)
            var arr = val
            //经纬度替换
            this.form.lat = arr[1]
            this.form.lng = arr[0]
            this.form.address = arr[2]
            this.form.sceneGeoLat = arr[1]
            this.form.sceneGeoLng = arr[0]
          }
        },
        immediate: true,
      },
      "editForm.sceneGeo": {
        // form是表单或者表格绑定的数据集,v-model='form'
        handler(val) {
          if (typeof val == "object") {
            if (!val) {
              return
            }
            console.log("*****789**********" + val)
            var arr = val
            //经纬度替换
            this.editForm.sceneGeoLat = arr[1]
            this.editForm.sceneGeoLng = arr[0]
          }
        },
        immediate: true,
@@ -669,6 +522,15 @@
      }
    },
    methods: {
      openMap() {
        this.$refs.avueInputMap.box = true
        console.log(this.$refs.avueInputMap)
      },
      openMapTwo() {
        this.$refs.avueInputMapTwo.box = true
        console.log(this.$refs.avueInputMap)
      },
      showStringDispose(row, type) {
        row[type] = !row[type]
      },
@@ -684,10 +546,10 @@
      rowSave(row, done, loading) {
        console.log("777777777777777777777" + JSON.stringify(row))
        let local = this.locationDispose(row.sceneAddr)
        row.sceneAddr = local.sceneAddr
        row.sceneGeoLat = local.latitude
        row.sceneGeoLng = local.longitude
        // let local = this.locationDispose(row.sceneAddr)
        // row.sceneAddr = local.sceneAddr
        // row.sceneGeoLat = local.latitude
        // row.sceneGeoLng = local.longitude
        console.log("88888888888888888888888888" + JSON.stringify(row))
        add(row).then(
          () => {
@@ -705,15 +567,7 @@
        )
      },
      rowUpdate(row, index, done, loading) {
        if (row.imageUrls.length > 0) {
          var urls = []
          var split = row.imageUrls.split(",")
          split.forEach(url => {
            var names = url.split("jczz/")
            urls.push(names[1])
          })
          row.imageUrls = urls.join(",")
        }
        update(row).then(
          () => {
            this.onLoad(this.page)
@@ -736,7 +590,7 @@
            type: "warning",
          })
          .then(() => {
            return remove(row.id)
            return remove(row.orderId)
          })
          .then(() => {
            this.onLoad(this.page)
@@ -798,6 +652,10 @@
      popupClose() {
        this.sharePopup = false
      },
      handleEdit(row) {
        this.editForm = row
        this.editPopup = true
      },
      handleDelete() {
        if (this.selectionList.length === 0) {
          this.$message.warning("请选择至少一条数据")
@@ -822,8 +680,9 @@
      },
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getDetail(this.form.id).then((res) => {
          getDetail(this.form.orderId).then((res) => {
            this.form = res.data.data
            // this.form.sceneAddr = [this.form.sceneGeoLng, this.form.sceneGeoLat, this.form.sceneAddr].join(',')
            // if (this.form.imageUrls.length > 0) {
            //   var urls = []
            //   var names = this.form.imageUrls.split(",")