linwe
2024-07-11 e67424ddc49981db440cf3dc9ef2ee847f2192fb
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="handleSubmit">
        <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; ">
@@ -40,11 +67,18 @@
<script>
  import {
    setToken,
    setRefreshToken,
    removeToken,
    removeRefreshToken,
  } from "@/util/auth";
  import {
    getList,
    remove,
    update,
    add,
    getDetail
    getDetail,
    synchronizeData
  } from "@/api/task/eCallEventTwo"
  import {
    add as circleAdd,
@@ -53,6 +87,9 @@
    getList as getHouseList,
    getDetatil as getHouseDetail
  } from "@/api/doorplateAddress/doorplateAddress.js"
  import {
    getDept
  } from "@/api/system/dept"
  import {
    mapGetters
  } from "vuex"
@@ -74,7 +111,9 @@
      }
      return {
        editPopup: false,
        form: {},
        editForm: {},
        query: {},
        loading: true,
        page: {
@@ -88,11 +127,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,
@@ -108,92 +149,14 @@
          column: [{
              label: "工单号",
              prop: "orderCode",
              viewDisplay: false,
              span: 12,
              searchSpan: 4,
              width: 100,
              width: 160,
              overHidden: true,
              search: true,
              searchLabelWidth: 76,
              rules: [{
                required: true,
                message: "请输入工单号",
                trigger: "blur",
              }, ],
            },
            {
              width: 100,
              label: "诉求来源",
              prop: "issueOrigin",
              span: 12,
              searchSpan: 4,
              dataType: "number",
              type: "select",
              dicData: [{
                label: "热线",
                value: 0
              }, {
                label: "公安110",
                value: 1
              }, {
                label: "微信",
                value: 2
              }, {
                label: "微博",
                value: 3
              }],
              rules: [{
                required: true,
                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,
              prop: "issueContent",
              search: false,
              rules: [{
                required: true,
                message: "请选择诉求内容",
                trigger: "blur",
              }, ],
            },
            {
              label: "诉求用户类别",
              prop: "applicantType",
              span: 12,
              searchSpan: 4,
              width: 100,
              labelWidth: 120,
              type: "select",
              dicData: [{
                label: "个人",
                value: 0
              }, {
                label: "企业",
                value: 1
              }],
              // hide: true,
              // search: true,
            },
            {
              width: 110,
@@ -204,7 +167,7 @@
              searchLabelWidth: 120,
              search: true,
              rules: [{
                required: false,
                required: true,
                message: "请输入诉求人姓名",
                trigger: "blur",
              }, ],
@@ -218,14 +181,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,231 +207,266 @@
                  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",
              label: "诉求来源",
              prop: "issueOrigin",
              disabled: true,
              span: 12,
              searchSpan: 4,
              dataType: "number",
              type: "select",
              dicUrl: "/api/blade-system/dict-biz/dictionary?code=ehjb_org",
              props: {
                label: "dictValue",
                value: "dictKey",
              },
              rules: [{
                required: true,
                message: "请选择现场联系电话",
                message: "请选择诉求来源",
                trigger: "blur",
              }, ],
            },
            {
              label: "网格",
              prop: "applicantGrid",
              submitBtn: "保存",
              hide: true,
              // type: 'map',
              dataType: "string",
              // span: 24,
              // value: [117.966460, 28.431002, ""]
              width: 156,
              label: "诉求标题",
              prop: "issueTitle",
              search: true,
              searchSpan: 4,
              width: 160,
              overHidden: true,
              rules: [{
                required: true,
                message: "请选择诉求标题",
                trigger: "blur",
              }],
            },
            {
              label: "诉求用户类别",
              prop: "applicantType",
              span: 12,
              searchSpan: 4,
              width: 100,
              type: "select",
              dicData: [{
                label: "个人",
                value: "0"
              }, {
                label: "企业",
                value: "1"
              }],
              rules: [{
                required: true,
                message: "请输入诉求用户类别",
                trigger: "blur",
              }],
            },
            {
              width: 110,
              label: "诉求人行政区划",
              labelWidth: 120,
              prop: "applicantDistrict",
              // type: "upload",
              listType: "picture-card",
              dataType: "string",
              multiple: true,
              row: true,
              // span: 24,
              label: "办结内容",
              parent: false,
              prop: "issueContent",
              search: false,
              type: 'textarea',
              width: 160,
              span: 24,
              overHidden: true,
              rules: [{
                required: true,
                message: "请选择办结内容",
                trigger: "blur",
              }, ],
            },
            {
              label: "事发地址",
              prop: "sceneAddr",
              // type: "textarea",
              submitBtn: "保存",
              hide: true,
              type: 'map',
              dataType: "string",
              type: 'textarea',
              span: 24,
              value: [117.966460, 28.431002, ""]
              minRows: 2,
              maxRows: 4,
              rules: [{
                required: true,
                message: "请输入事发地址",
                trigger: "blur",
              }],
            },
            {
              label: "事发地址网格",
              prop: "sceneAddrGrid",
              labelWidth: 120,
              // type: "textarea",
              // hide: true,
              // span: 24,
              prop: "sceneGeo",
              dataType: "string",
              type: 'map',
              hide: true,
              width: 100,
              viewDisplay: false,
              // dataType: "string",
              span: 24,
              // value: [117.966460, 28.431002, ""]
            },
            {
              label: "事发地点-经度",
              prop: "sceneGeoLng",
              disabled: true,
              width: 100,
              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,
              // span: 24,
            },
            {
              label: "事发场所",
              prop: "scenePlace",
              // type: "textarea",
              // hide: true,
              // span: 24,
              type: "tree",
              dicUrl: "/api/blade-counties/counties/list",
              props: {
                label: "name",
                value: "code"
              },
            },
            // {
            //   label: "事发地点-经度",
            //   prop: "sceneGeoLat",
            //   type: "select",
            //   hide: true,
            // },
            // {
            //   label: "事发地点-维度",
            //   prop: "sceneGeoLng",
            //   type: "select",
            //   hide: true,
            //   label: "事发场所",
            //   width: 100,
            //   prop: "scenePlace",
            // },
            {
              label: "诉求类别",
              prop: "issueType",
              type: "select",
              dicData: [{
                label: "咨询",
                value: 0
              }, {
                label: "投诉",
                value: 1
              }, {
                label: "求助",
                value: 2
              }, {
                label: "举报",
                value: 3
              }, {
                label: "建议",
                value: 4
              label: "受理时间",
              prop: "createTime",
              type: "datetime",
              format: "yyyy-MM-dd HH:mm:ss",
              valueFormat: "yyyy-MM-dd HH:mm:ss",
              // labelWidth: 100,
              rules: [{
                required: true,
                message: "请输入受理时间",
                trigger: "blur",
              }],
              // hide: true,
            },
            {
              label: "归口类型",
              prop: "issueClazz",
              // type: "select",
              // hide: true,
              // type: "tree",
              type: "cascader",
              dicUrl: "/api/blade-issueClazz/issueClazz/tree",
              // showAllLevels: false,
              props: {
                label: "title",
                value: "id"
              },
              rules: [{
                required: true,
                message: "请选择归口类型",
                trigger: "blur",
              }, ],
              span: 12,
              filterable: true,
            },
            {
              label: "承办单位",
              prop: "acptOrgName",
              // type: "tree",
              // type: "cascader",
              // dicUrl: "/api/blade-issueClazz/issueClazz/tree",
              // props: {
              //   label: "title",
              //   value: "id"
              // },
              rules: [{
                required: true,
                message: "请选择归口类型",
                trigger: "blur",
              }, ],
              span: 12,
            },
            {
              label: "紧急程度",
              prop: "issueLevel",
              type: "select",
              value: "1",
              dicData: [{
                label: "一般",
                value: 0
                value: "0"
              }, {
                label: "即办",
                value: 1
                value: "1"
              }, {
                label: "重大",
                value: "2"
              }, {
                label: "紧急重大",
                value: "3"
              }],
              // 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: "handleWay",
              label: "是否保密",
              prop: "is_secret",
              type: "select",
              value: "1",
              dicData: [{
                label: "方式一",
                value: 0
                label: "否",
                value: "0"
              }, {
                label: "方式二",
                value: 1
              }, {
                label: "方式三",
                value: 2
                label: "是",
                value: "1"
              }],
              // type: "select",
              // hide: true,
              rules: [{
                required: true,
                message: "请选择是否保密",
                trigger: "blur",
              }, ],
            },
            {
              label: "外部处办方式",
              prop: "externalHandleWay",
              labelWidth: 120,
              // 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: "issue_type",
              // disabled: true,
              // addDisplay: false,
              type: "select",
              value: "2",
              dicData: [{
                label: "咨询",
                value: "0"
              }, {
                label: "投诉",
                value: "1"
              }, {
                label: "求助",
                value: "2"
              }, {
                label: "举报",
                value: "3"
              }, {
                label: "建议",
                value: "4"
              }, {
                label: "表扬",
                value: "5"
              }, {
                label: "无效投诉",
                value: "6"
              }],
              rules: [{
                required: true,
                message: "请选择诉求类型",
                trigger: "blur",
              }, ],
            },
            {
              label: "工单附件",
              prop: "images",
              type: "upload",
              // listType: "picture-card",
              dataType: "string",
              multiple: true,
              action: "/api/blade-resource/oss/endpoint/put-file-attach",
@@ -466,147 +475,79 @@
                name: 'name',
                url: "link",
              },
              // hide: true,
            },
            {
              label: "工单状态",
              prop: "status",
              disabled: true,
              addDisplay: false,
              type: "select",
              value: "2",
              dicData: [{
                label: "受理",
                value: 0
                value: "1"
              }, {
                label: "处理中",
                value: 1
                value: "2"
              }, {
                label: "已归档",
                value: 2
                value: "3"
              }],
              // 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",
              dicData: [{
                label: "否",
                value: "N"
              }, {
                label: "是",
                value: "Y"
              }],
              // hide: true,
            },
            {
              label: "已答复",
              prop: "tagResp",
              type: "select",
              dicData: [{
                label: "否",
                value: "N"
              }, {
                label: "是",
                value: "Y"
              }],
            },
            {
              label: "已办结",
              prop: "tagDone",
              type: "select",
              dicData: [{
                label: "否",
                value: "N"
              }, {
                label: "是",
                value: "Y"
              }],
            },
            {
              label: "已回访",
              prop: "tagCheck",
              type: "select",
              dicData: [{
                label: "否",
                value: "N"
              }, {
                label: "是",
                value: "Y"
              }],
            },
            {
              label: "已电话回访",
              prop: "tagChkTel",
              type: "select",
              dicData: [{
                label: "否",
                value: "N"
              }, {
                label: "是",
                value: "Y"
              }],
            },
            {
              label: "核实/督办",
              prop: "tagRedo",
              type: "select",
              dicData: [{
                label: "否",
                value: "N"
              }, {
                label: "是",
                value: "Y"
              }],
            },
          ],
        },
        data: [],
        dept: {},
      }
    },
    watch: {
      "form.location": {
      "form.sceneGeo": {
        // form是表单或者表格绑定的数据集,v-model='form'
        handler(val) {
          if (typeof val == "string") {
            var arr = val.split(",")
          if (typeof val == "object") {
            console.log("*****11**********" + val)
            console.log("*****789111**********" + !val)
            if (val.length <= 0) {
              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]
            this.form.location = arr[2]
          }
        },
        immediate: true,
      },
      "editForm.sceneGeo": {
        // form是表单或者表格绑定的数据集,v-model='form'
        handler(val) {
          if (typeof val == "object") {
            if (val.length <= 0) {
              return
            }
            console.log("*****789**********" + val)
            console.log("*****78910**********" + !val)
            var arr = val
            //经纬度替换
            this.editForm.sceneGeoLat = arr[1]
            this.editForm.sceneGeoLng = arr[0]
            this.editForm.location = arr[2]
          }
        },
      },
    },
    // created() {
    //   const token = this.$route.query.token
    //   if (token) {
    //     setToken(token)
    //   }
    // },
    computed: {
      ...mapGetters(["permission", "userInfo"]),
      permissionList() {
@@ -639,20 +580,42 @@
      }
    },
    methods: {
      getDeptInfo() {
        getDept(this.userInfo.dept_id).then(res => {
          this.dept = res.data.data
          this.form.issueOrigin = res.data.data.sort
          // console.log("*********res.data.data*************" + JSON.stringify(res.data.data))
        })
      },
      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]
      },
      locationDispose(data) {
        return {
          longitude: data[0],
          latitude: data[1],
          sceneAddr: data[2]
        }
      },
      rowSave(row, 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(",")
        // }
        console.log("777777777777777777777" + JSON.stringify(row))
        // 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(
          () => {
            this.onLoad(this.page)
@@ -668,16 +631,25 @@
          }
        )
      },
      handleSubmit(form, done) {
        update(form).then(
          () => {
            this.onLoad(this.page)
            this.editPopup = false
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            done()
          },
          (error) => {
            window.console.log(error)
            loading()
          }
        )
      },
      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)
@@ -762,6 +734,12 @@
      popupClose() {
        this.sharePopup = false
      },
      handleEdit(row) {
        getDetail(row.orderId).then((res) => {
          this.editForm = res.data.data
          this.editPopup = true
        })
      },
      handleDelete() {
        if (this.selectionList.length === 0) {
          this.$message.warning("请选择至少一条数据")
@@ -786,16 +764,8 @@
      },
      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
            // if (this.form.imageUrls.length > 0) {
            //   var urls = []
            //   var names = this.form.imageUrls.split(",")
            //   names.forEach(name => {
            //     urls.push(website.minioUrl + name)
            //   })
            //   this.form.imageUrls = urls.join(",")
            // }
          })
        }
        // con
@@ -827,26 +797,20 @@
          values.dateTime = null
        }
        this.loading = true
        this.getDeptInfo();
        getList(page.currentPage, page.pageSize, values).then((res) => {
          const data = res.data.data
          this.page.total = data.total
          this.data = data.records
          this.data.forEach(item => {
            // this.$set(item, 'phoneflag', false)
            // if (item.imageUrls) {
            //   if (item.imageUrls.length > 0) {
            //     var urls = []
            //     var names = item.imageUrls.split(",")
            //     names.forEach(name => {
            //       urls.push(website.minioUrl + name)
            //     })
            //     item.imageUrls = urls.join(",")
            //   }
            // }
          })
          this.loading = false
          this.selectionClear()
        })
        // synchronizeData().then((res) => {
        // })
      }
    },
  }