linwe
2024-08-09 5e2aafeede13d337380f736567caf74f49713be7
代码优化
3 files modified
2 files added
478 ■■■■ changed files
src/api/task/smsTask.js 50 ●●●●● patch | view | raw | blame | history
src/views/task/customTask/index.vue 23 ●●●●● patch | view | raw | blame | history
src/views/task/index.vue 39 ●●●● patch | view | raw | blame | history
src/views/task/smsTask/smsTask.vue 292 ●●●●● patch | view | raw | blame | history
src/views/userHouse/houseList.vue 74 ●●●● patch | view | raw | blame | history
src/api/task/smsTask.js
New file
@@ -0,0 +1,50 @@
import request from '@/router/axios';
export const getList = (current, size, params) => {
  return request({
    url: '/api/blade-smsTask/smsTask/list',
    method: 'get',
    params: {
      ...params,
      current,
      size,
    }
  })
}
export const getDetail = (id) => {
  return request({
    url: '/api/blade-smsTask/smsTask/detail',
    method: 'get',
    params: {
      id
    }
  })
}
export const remove = (ids) => {
  return request({
    url: '/api/blade-smsTask/smsTask/remove',
    method: 'post',
    params: {
      ids,
    }
  })
}
export const add = (row) => {
  return request({
    url: '/api/blade-smsTask/smsTask/submit',
    method: 'post',
    data: row
  })
}
export const update = (row) => {
  return request({
    url: '/api/blade-smsTask/smsTask/submit',
    method: 'post',
    data: row
  })
}
src/views/task/customTask/index.vue
@@ -19,36 +19,15 @@
        <el-button :size="size" type="text" icon="el-icon-video-play" @click.stop="handleEnable(row,2)">启用
        </el-button>
      </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; ">
        <el-radio-group v-model="circleRadio">
          <el-radio :label="0">邻里圈</el-radio>
          <el-radio :label="1">协同圈</el-radio>
        </el-radio-group>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="sharePopup = false">取 消</el-button>
        <el-button type="primary" @click="shareCircle()">确 定</el-button>
      </span>
    </el-dialog>
  </basic-container>
</template>
src/views/task/index.vue
@@ -2,10 +2,9 @@
<template>
    <basic-container>
        <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
            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">
      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">删
                    除
@@ -30,8 +29,16 @@
</template>
<script>
import { getList, remove, update, add, getReportForRepairs } from "@/api/task/reportForRepairs"
import { mapGetters } from "vuex"
  import {
    getList,
    remove,
    update,
    add,
    getReportForRepairs
  } from "@/api/task/reportForRepairs"
  import {
    mapGetters
  } from "vuex"
import website from '@/config/website'
export default {
@@ -39,13 +46,11 @@
        return {
            taskForm: {},
            taskOption: {
                column: [
                    {
          column: [{
                        label: '姓名',
                        prop: 'name',
                        value: 'small'
                    }
                ]
          }]
            },
            taskVisible: false,
            form: {},
@@ -64,7 +69,6 @@
                searchShow: true,
                searchMenuSpan: 3,
                menuWidth: 160,
                height: "auto",
                calcHeight: 54,
                dialogWidth: 950,
@@ -79,8 +83,7 @@
                selection: true,
                // excelBtn: true,
                dialogClickModal: false,
                column: [
                    {
          column: [{
                        label: "类型",
                        prop: "type",
                        span: 24,
@@ -182,8 +185,7 @@
            data: [],
        }
    },
    watch: {
    },
    watch: {},
    computed: {
        ...mapGetters(["permission", "userInfo"]),
        permissionList () {
@@ -225,8 +227,7 @@
        taskApply (row) {
            var that = this
            this.taskVisible = true
            this.$nextTick(() => {
            })
        this.$nextTick(() => {})
        },
        rowSave (row, done, loading) {
            if (row.imageUrls.length > 0) {
@@ -363,7 +364,9 @@
            this.onLoad(this.page, this.query)
        },
        onLoad (page, params = {}) {
            const { dateTime } = this.query
        const {
          dateTime
        } = this.query
            let values = {
                ...params,
            }
src/views/task/smsTask/smsTask.vue
New file
@@ -0,0 +1,292 @@
<template>
  <basic-container>
    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" :permission="permissionList"
      :before-open="beforeOpen" v-model="form" ref="crud" @row-update="rowUpdate" @row-save="rowSave" @row-del="rowDel"
      @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 type="danger" size="small" icon="el-icon-delete" plain v-if="permission.smsTask_delete"
          @click="handleDelete">删 除
        </el-button>
      </template>
    </avue-crud>
  </basic-container>
</template>
<script>
  import {
    getList,
    getDetail,
    add,
    update,
    remove
  } from "@/api/task/smsTask";
  // import option from "@/const/smsTask/smsTask";
  import {
    mapGetters
  } from "vuex";
  export default {
    data() {
      return {
        form: {},
        query: {},
        loading: true,
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        },
        selectionList: [],
        option: {
          labelWidth: 120,
          searchLabelWidth: 66,
          searchShow: true,
          searchMenuSpan: 3,
          menuWidth: 260,
          height: "auto",
          calcHeight: 54,
          dialogWidth: 950,
          tip: false,
          border: true,
          index: true,
          viewBtn: true,
          eidtBtn: true,
          selection: true,
          dialogClickModal: false,
          column: [{
              label: "任务名称",
              prop: "name",
              searchSpan: 4,
              search: true,
            },
            {
              parent: false,
              label: "所属社区",
              prop: "community",
              // search: true,
              type: "tree",
              dicUrl: "/api/blade-system/region/treeToCommunity",
              props: {
                label: "name",
                value: "id",
              },
              cascader: ["districtId"],
              rules: [{
                required: true,
                message: "请选择所属社区",
                trigger: "blur",
              }, ],
            },
            {
              label: "小区",
              prop: "districtId",
              searchSpan: 5,
              // search: true,
              type: 'tree',
              // type: 'select',
              cascader: ["buildingCode"],
              dicUrl: `/api/blade-district/district/page?communityCode={{community}}&size=1000`,
              props: {
                label: "name",
                value: "id",
                res: 'data.records'
              },
              nodeClick: (data, node, nodeComp) => {
                this.form.districtName = data.name
              },
              hide: true,
              span: 12,
              labelWidth: 120,
              width: 220,
              rules: [{
                required: true,
                message: "请选择小区",
                trigger: "blur",
              }, ],
            },
            {
              hide: true,
              parent: false,
              label: "楼栋",
              prop: "buildingCode",
              // search: true,
              type: "tree",
              dicUrl: `/api/blade-doorplateAddress/doorplateAddress/getHouseBuildingCode?districtId={{districtId}}`,
              props: {
                label: "buildingName",
                value: "buildingCode",
              },
              nodeClick: (data, node, nodeComp) => {
                this.form.buildingName = data.buildingName
              },
              rules: [{
                required: true,
                message: "请选择所属楼栋",
                trigger: "blur",
              }, ],
            },
            {
              label: "小区",
              prop: "districtName",
              editDisplay: false,
              addDisplay: false,
            }, {
              label: "楼栋",
              prop: "buildingName",
              editDisplay: false,
              addDisplay: false,
            },
            {
              // width: 120,
              parent: false,
              label: "模版名称",
              prop: "smsTemplate",
              type: "select",
              dicUrl: '/api/blade-smsTemplate/smsTemplate/customList?name={{key}}',
              props: {
                label: "title",
                value: "id",
              },
            },
          ],
        },
        data: []
      };
    },
    computed: {
      ...mapGetters(["permission"]),
      permissionList() {
        return {
          addBtn: this.vaildData(this.permission.smsTask_add, true),
          viewBtn: this.vaildData(this.permission.smsTask_view, true),
          delBtn: this.vaildData(this.permission.smsTask_delete, true),
          editBtn: this.vaildData(this.permission.smsTask_edit, true)
        };
      },
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
          ids.push(ele.id);
        });
        return ids.join(",");
      }
    },
    methods: {
      rowSave(row, done, loading) {
        add(row).then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
          done();
        }, error => {
          loading();
          window.console.log(error);
        });
      },
      rowUpdate(row, index, done, loading) {
        update(row).then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
          done();
        }, error => {
          loading();
          console.log(error);
        });
      },
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          })
          .then(() => {
            return remove(row.id);
          })
          .then(() => {
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            });
          });
      },
      handleDelete() {
        if (this.selectionList.length === 0) {
          this.$message.warning("请选择至少一条数据");
          return;
        }
        this.$confirm("确定将选择数据删除?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          })
          .then(() => {
            return remove(this.ids);
          })
          .then(() => {
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            });
            this.$refs.crud.toggleSelection();
          });
      },
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getDetail(this.form.id).then(res => {
            this.form = res.data.data;
          });
        }
        done();
      },
      searchReset() {
        this.query = {};
        this.onLoad(this.page);
      },
      searchChange(params, done) {
        this.query = params;
        this.page.currentPage = 1;
        this.onLoad(this.page, params);
        done();
      },
      selectionChange(list) {
        this.selectionList = list;
      },
      selectionClear() {
        this.selectionList = [];
        this.$refs.crud.toggleSelection();
      },
      currentChange(currentPage) {
        this.page.currentPage = currentPage;
      },
      sizeChange(pageSize) {
        this.page.pageSize = pageSize;
      },
      refreshChange() {
        this.onLoad(this.page, this.query);
      },
      onLoad(page, params = {}) {
        this.loading = true;
        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.selectionClear();
        });
      }
    }
  };
</script>
<style>
</style>
src/views/userHouse/houseList.vue
@@ -3,10 +3,10 @@
        <el-col :span="24">
            <basic-container>
                <avue-crud :option="option" :search.sync="search" :table-loading="loading" :data="data" ref="crud"
                    v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
                    @row-save="rowSave" :before-open="beforeOpen" :page.sync="page" @search-change="searchChange"
                    @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
                    @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
          v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate" @row-save="rowSave"
          :before-open="beforeOpen" :page.sync="page" @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 type="danger" size="small" plain icon="el-icon-delete" v-if="permission.house_del"
                            @click="handleDelete">删 除
@@ -29,11 +29,11 @@
                    </template>
                    <template slot-scope="{row, size}" slot="menu">
                        <el-button :size="size" type="text" icon="el-icon-circle-plus-outline"
                            v-if="permission.house_manager" @click="handleHouseholdManager(row)">住户管理
            <el-button :size="size" type="text" icon="el-icon-circle-plus-outline" v-if="permission.house_manager"
              @click="handleHouseholdManager(row)">住户管理
                        </el-button>
                        <el-button :size="size" type="text" icon="el-icon-circle-plus-outline"
                            v-if="permission.house_tag" @click="manageLabel(row)">标签
            <el-button :size="size" type="text" icon="el-icon-circle-plus-outline" v-if="permission.house_tag"
              @click="manageLabel(row)">标签
                        </el-button>
                    </template>
@@ -49,8 +49,8 @@
                </avue-crud>
                <el-dialog title="用户角色配置" append-to-body :visible.sync="roleBox" width="345px">
                    <el-tree :data="roleGrantList" show-checkbox check-strictly default-expand-all node-key="id"
                        ref="treeRole" :default-checked-keys="roleTreeObj" :props="props">
          <el-tree :data="roleGrantList" show-checkbox check-strictly default-expand-all node-key="id" ref="treeRole"
            :default-checked-keys="roleTreeObj" :props="props">
                    </el-tree>
                    <span slot="footer" class="dialog-footer">
@@ -61,8 +61,8 @@
                <el-dialog title="标签管理" append-to-body :visible.sync="labelFlag" center width="600px">
                    <div id="" class="grid-container2">
                        <div class="grid-item" :style="{ backgroundColor: getColor(item.color) }"
                            v-for="(item, index) in labelData" :key="index" @click="changLabel(item)">
            <div class="grid-item" :style="{ backgroundColor: getColor(item.color) }" v-for="(item, index) in labelData"
              :key="index" @click="changLabel(item)">
                            {{ item.name }}
                        </div>
                    </div>
@@ -72,8 +72,7 @@
          </span> -->
                </el-dialog>
                <el-dialog :title="'编辑标签   ' + currentLabel.name" append-to-body :visible.sync="editLabelFlge"
                    width="655px">
        <el-dialog :title="'编辑标签   ' + currentLabel.name" append-to-body :visible.sync="editLabelFlge" width="655px">
                    <avue-form :option="labelOption" v-model="labelForm" :submit="onsubmit">
                    </avue-form>
                    <span slot="footer" class="dialog-footer">
@@ -101,7 +100,9 @@
</template>
<script>
import { setHouseLabelColor } from '@/util/util'
  import {
    setHouseLabelColor
  } from '@/util/util'
import {
    getList,
@@ -225,8 +226,7 @@
                viewBtn: true,
                dialogType: 'drawer',
                dialogClickModal: false,
                column: [
                    {
          column: [{
                        label: "房屋编号",
                        prop: "houseCode",
                        width: 180,
@@ -256,13 +256,11 @@
                        searchLabelWidth: 66,
                        hide: true,
                        value: [117.966460, 28.431002, ""],
                        rules: [
                            {
              rules: [{
                                required: true,
                                message: "请选择巡查地址",
                                trigger: "blur",
                            },
                        ],
              }, ],
                    },
                    {
@@ -271,7 +269,7 @@
                        label: "小区名称",
                        prop: "districtCode",
                        type: 'tree',
                        dicUrl: `/api/blade-district/district/getDistrictTree`,
              dicUrl: `/api/blade-district/district/getDistrictTree?id={{key}}`,
                        props: {
                            label: "name",
                            value: "id"
@@ -334,13 +332,11 @@
                            value: "id",
                        },
                        cascader: ["gridCode"],
                        rules: [
                            {
              rules: [{
                                required: true,
                                message: "请选择所属社区",
                                trigger: "blur",
                            },
                        ],
              }, ],
                    },
                    {
@@ -368,15 +364,12 @@
                            label: "gridName",
                            value: "gridCode",
                        },
                        dicUrl:
                            "/api/blade-grid/grid/getGridList?communityCode={{neiCode}}",
                        rules: [
                            {
              dicUrl: "/api/blade-grid/grid/getGridList?communityCode={{neiCode}}",
              rules: [{
                                required: true,
                                message: "请选择所属网格",
                                trigger: "blur",
                            },
                        ],
              }, ],
                    },
                    {
@@ -402,12 +395,10 @@
                        label: "电话",
                        prop: "phone",
                        slot: true,
                        rules: [
                            {
              rules: [{
                                validator: validatorPhone,
                                trigger: 'blur'
                            }
                        ],
              }],
                    },
                    {
@@ -698,8 +689,10 @@
                row.imageUrls = urls.join(",")
            }
            add({ ...row, ...this.locationDispose(row.location) }
            ).then(() => {
        add({
          ...row,
          ...this.locationDispose(row.location)
        }).then(() => {
                this.initFlag = false
                this.onLoad(this.page)
                this.$message({
@@ -723,7 +716,10 @@
                row.imageUrls = urls.join(",")
            }
            update({ ...row, ...this.locationDispose(row.location) }).then(() => {
        update({
          ...row,
          ...this.locationDispose(row.location)
        }).then(() => {
                this.initFlag = false
                this.onLoad(this.page)
                this.$message({