Lou
2024-01-11 f54ba6cd72447a2b16fa999a768dc6efdaa0c5ae
Merge branch 'master' of http://s16s652780.51mypc.cn:49896/r/jczz_web
14 files modified
6 files added
4061 ■■■■ changed files
src/api/userHouse/list/houseHold.js 12 ●●●●● patch | view | raw | blame | history
src/api/userHouse/list/userHouseList.js 13 ●●●●● patch | view | raw | blame | history
src/views/article/components/deitDiscussion.vue 150 ●●●● patch | view | raw | blame | history
src/views/article/components/discussionManageChild.vue 23 ●●●● patch | view | raw | blame | history
src/views/article/components/publicSignUpChild.vue 92 ●●●●● patch | view | raw | blame | history
src/views/article/publicSignUp.vue 40 ●●●● patch | view | raw | blame | history
src/views/place/components/auditBase.vue 90 ●●●●● patch | view | raw | blame | history
src/views/place/index.vue 4 ●●●● patch | view | raw | blame | history
src/views/property/inviteTenders.vue 25 ●●●● patch | view | raw | blame | history
src/views/property/ownersCommittee.vue 645 ●●●●● patch | view | raw | blame | history
src/views/property/propertyCapitalApply.vue 13 ●●●● patch | view | raw | blame | history
src/views/propertySupervision/ownersCommittee.vue 650 ●●●●● patch | view | raw | blame | history
src/views/propertySupervision/propertyCapitalManage.vue 506 ●●●●● patch | view | raw | blame | history
src/views/propertySupervision/residentSupervision.vue 8 ●●●●● patch | view | raw | blame | history
src/views/publicSecurity/components/communityKeyNotePersonnel.vue 418 ●●●●● patch | view | raw | blame | history
src/views/publicSecurity/components/userHouseList.vue 1122 ●●●●● patch | view | raw | blame | history
src/views/publicSecurity/keynotePersonnelManage.vue 223 ●●●● patch | view | raw | blame | history
src/views/publicSecurity/keynotePlaceManage.vue 13 ●●●●● patch | view | raw | blame | history
src/views/wel/index.vue 2 ●●● patch | view | raw | blame | history
src/views/work/process/maintenanceFundApply/edit.vue 12 ●●●● patch | view | raw | blame | history
src/api/userHouse/list/houseHold.js
@@ -12,6 +12,18 @@
  })
}
export const getKeynotePersonnelPage = (current, size, params) => {
  return request({
    url: '/api/blade-household/household/getKeynotePersonnelPage',
    method: 'get',
    params: {
      ...params,
      current,
      size,
    }
  })
}
export const getAllHouseHold = ( params) => {
  return request({
    url: '/api/blade-household/household/getAllHouseHold',
src/api/userHouse/list/userHouseList.js
@@ -88,7 +88,18 @@
export const statisticalLabels = (current, size, params) => {
  return request({
    url: '/api/blade-houseLabel/userHouseLabel/statisticalLabels',
    url: '/api/blade-householdLabel/householdLabel/getRegionStatisticalLabels',
    method: 'get',
    params: {
      ...params,
      current,
      size,
    }
  })
}
export const getCommunityStatisticalLabels = (current, size, params) => {
  return request({
    url: '/api/blade-householdLabel/householdLabel/getCommunityStatisticalLabels',
    method: 'get',
    params: {
      ...params,
src/views/article/components/deitDiscussion.vue
@@ -10,35 +10,7 @@
-->
<template>
  <div>
    <el-dialog title="" append-to-body :visible.sync="popupTableShow" width="80%" :before-close="handleClose">
      <span slot="title" class="dialog-footer">
        {{ ontitle }}
      </span>
      <div id="" v-if="editFlag">
        <avue-form @submit="handleSubmit" :option="optionDiscuss" @reset-change="handleReset" v-model="disCussFrom">
        </avue-form>
      </div>
      <div id="" v-if="!editFlag">
        <avue-crud :table-loading="loading" :option="optionList" :data="data" v-model="form" ref="crud"
          @row-update="rowUpdate" @row-del="rowDel">
          <template slot="menuLeft" v-if="!editFlag">
            <el-button type="primary" size="small" plain icon="el-icon-circle-plus-outline" @click="add()">添加
            </el-button>
          </template>
          <template #icon="scope">
            <i :class="scope.row.icon" style="font-size:14px"></i>
          </template>
          <template #menu="{ row, size }">
            <el-button v-if="row.level === 1" :size="size" text type="primary" @click="edit(row)">编辑</el-button>
            <el-button v-if="row.level === 1" :size="size" text type="danger" @click="deletes(row)">删除</el-button>
            <el-button v-if="row.level === 2" :size="size" text type="primary" @click="openUser(row, 1)">
              选择此项人数:{{ row.number }} 详情</el-button>
          </template>
        </avue-crud>
      </div>
    </el-dialog>
    <el-dialog title="" append-to-body :visible.sync="popupTableUserShow" width="50%" :before-close="userHandleClose">
      <avue-crud :data="userData" :page="userPage" :option="userOption"></avue-crud>
@@ -60,6 +32,9 @@
  } from "@/api/discuss/userTopics"
  import website from '@/config/website'
  import {
    getLists,
    getList,
@@ -74,116 +49,11 @@
      return {
        popupTableShow: false,
        popupTableUserShow: false,
        loading: true,
        ontitle: '编辑议题',
        editFlag: false,
        disCussFrom: {
          discussContent: '',
          optionRange: 0,
          sort: 1,
          optionContent: '',
          optionDetail: '',
          number: '',
          createTime: '',
          updateTime: '',
          deleteFlag: '',
          articleId: '',
          parentId: '',
          level: '',
          children: [{
            optionContent: '',
            optionDetail: '',
            number: '',
            createTime: '',
            updateTime: '',
            deleteFlag: '',
            articleId: '',
            parentId: '',
            level: '',
          }]
        },
        optionDiscuss: {
          emptyText: '取消',
          column: [{
              label: '议题',
              prop: 'discussContent',
              type: 'input',
              row: true,
            },
            {
              label: '选项范围',
              prop: 'optionRange',
              type: 'radio',
              button: true,
              row: true,
              dicData: [{
                label: '多选',
                value: 1
              }, {
                label: '单选',
                value: 0
              }]
            },
            {
              label: '排序',
              prop: 'sort',
              controlsPosition: '',
              type: 'number'
            },
            {
              label: '选项内容',
              prop: 'children',
              type: 'dynamic',
              span: 24,
              children: {
                column: [{
                  label: '选项标题',
                  prop: 'optionContent',
                  type: 'input',
                  rules: [{
                    required: true,
                    message: '请输入选项标题',
                    trigger: 'blur'
                  }]
                }, {
                  label: '选项说明',
                  prop: 'optionDetail',
                  type: 'input',
                }]
              }
            },
          ]
        },
        // 表单数据
        form: {},
        data: [],
        optionList: {
          headerAlign: 'center',
          align: 'center',
          border: true,
          addBtn: false,
          editBtn: false,
          delBtn: false,
          defaultExpandAll: true,
          rowKey: 'id',
          rowParentKey: 'parentId',
          column: [{
              label: '标题',
              prop: 'discussContent',
            },
            {
              label: '选项内容',
              prop: 'optionContent',
            }
          ]
        },
        articleId: '',
        userData: [],
        userOption: {
          addBtn: false,
@@ -194,6 +64,11 @@
          }, {
            label: '头像',
            prop: 'avatar'
          }, {
            label: '签名',
            type: 'upload',
            listType: "picture-img",
            prop: 'signaturePath'
          }, {
            label: '手机',
            prop: 'phone'
@@ -358,6 +233,15 @@
          const data = res.data.data
          this.userPage.total = data.total
          this.userData = data.records
          this.userData.forEach(item => {
            if (item.avatar.length > 0) {
              item.avatar = website.minioUrl + item.avatar
            }
            if (item.signaturePath && item.signaturePath.length > 0) {
              item.signaturePath = website.minioUrl + item.signaturePath
              // console.log("=====>", item.signaturePath)
            }
          })
        })
      },
src/views/article/components/discussionManageChild.vue
@@ -7,7 +7,9 @@
</template>
<script>
import { getPersonPublicSelect } from "@/api/public"
  import {
    getPersonPublicSelect
  } from "@/api/public"
import {
    getListPd,
@@ -84,12 +86,13 @@
                addBtn: false,
                searchMenuSpan: 3,
                menuWidth: 500,
                column: [{
                    label: '标题',
                    prop: 'title',
                    searchSpan: 4,
                    span: 6,
                },
          column: [
            //   {
            //     label: '标题',
            //     prop: 'title',
            //     searchSpan: 4,
            //     span: 6,
            // },
                {
                    label: '参与人数',
                    prop: 'topsCount',
@@ -189,13 +192,11 @@
                        value: 'id',
                    },
                    dicData: [],
                    rules: [
                        {
              rules: [{
                            required: true,
                            message: '请输入姓名',
                            trigger: 'blur'
                        }
                    ],
              }],
                },
                {
src/views/article/components/publicSignUpChild.vue
@@ -1,34 +1,8 @@
<template>
  <!-- <basicContainer> -->
  <!-- <avue-crud :data="data" ref="crud" :table-loading="loading" @current-change="currentChange"
            @search-change="searchChange" @search-reset="searchReset" @size-change="sizeChange" :option="option"
            v-model="data" :page="page" @selection-change="selectionChange" @row-del="rowDel"
            @refresh-change="refreshChange" @on-load="onLoad">
            <template slot="menuLeft">
                <el-button type="danger" size="small" plain icon="el-icon-delete" v-if="permission.user_delete"
                    @click="handleDelete">批量删除
                </el-button>
            </template>
            <template slot-scope="scope" slot="menu">
                <el-button type="text" icon="el-icon-s-custom" size="small" @click.stop="openDilog(scope.row, 0)">
                    编辑
                </el-button>
                <el-button type="primary" icon="el-icon-s-custom" size="small" @click.stop="openUser(scope.row, 0)">
                    参与用户
                </el-button>
            </template>
        </avue-crud> -->
  <!--  <el-dialog title="" append-to-body :visible.sync="dialogVisibles" width="50%" :before-close="handleClose">
            <avue-form @submit="handleSubmit" :option="optionEnroll" v-model="discussForm">
            </avue-form>
        </el-dialog> -->
  <div>
    <el-dialog title="" append-to-body :visible.sync="dialogVisiblesUser" width="50%" :before-close="userHandleClose">
      <avue-crud ref="DataUser" :option="option1" v-model="dataUser" :page="pageUser"></avue-crud>
      <avue-crud ref="DataUser" :option="userOption" :data="dataUser" v-model="dataUser" :page="pageUser"></avue-crud>
    </el-dialog>
  </div>
@@ -54,6 +28,8 @@
  import {
    getDictionary
  } from '@/api/system/dict'
  import website from '@/config/website'
  export default {
    data() {
@@ -135,41 +111,36 @@
        form: {},
        // 选择行
        selectionList: [],
        // 表单配置
        option: {
          selection: true,
          height: "auto",
          calcHeight: 54,
          align: 'center',
          menuAlign: 'center',
        userOption: {
          addBtn: false,
          editBtn: false,
          searchMenuSpan: 3,
          searchBtn: true,
          menuWidth: 500,
          menu: false,
          column: [{
              label: 'ID',
              prop: 'id',
              searchSpan: 4,
              // search: true,
              label: '姓名',
              prop: 'name'
            }, {
              label: '头像',
              type: 'upload',
              listType: "picture-img",
              prop: 'avatar'
            },
            {
              label: '标题',
              prop: 'title',
              searchSpan: 4,
              search: true,
              label: '签名',
              type: 'upload',
              listType: "picture-img",
              prop: 'signaturePath'
            },
            {
              label: '参与人数',
              prop: 'enrollCount',
              searchSpan: 4,
              search: true,
            },
            {
              label: '截止时间',
              prop: 'endTime',
              searchSpan: 4,
              search: true,
              label: '手机',
              prop: 'phone'
            }, {
              label: '小区',
              prop: 'aoiName'
            }, {
              label: '地址',
              prop: 'addressName'
            }, {
              label: '时间',
              prop: 'createTime'
            }
          ]
        },
@@ -202,6 +173,15 @@
          const data = res.data.data
          this.pageUser.total = data.total
          this.dataUser = data.records
          this.dataUser.forEach(item => {
            if (item.avatar.length > 0) {
              item.avatar = website.minioUrl + item.avatar
            }
            if (item.signaturePath && item.signaturePath.length > 0) {
              item.signaturePath = website.minioUrl + item.signaturePath
              console.log("=====>", item.signaturePath)
            }
          })
          this.loading = false
          // this.selectionClear()
        })
src/views/article/publicSignUp.vue
@@ -1,10 +1,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">删
                    除
@@ -18,12 +17,10 @@
                <el-button icon="el-icon-user" :size="size" :type="type" @click.stop="openUserPopup(row)">
                    参与用户
                </el-button>
                <el-button v-if="row.publish == '1'" icon="el-icon-close" :size="size" :type="type"
                    @click.stop="updateFb(row)">
        <el-button v-if="row.publish == '1'" icon="el-icon-close" :size="size" :type="type" @click.stop="updateFb(row)">
                    撤销
                </el-button>
                <el-button v-if="row.publish == '0'" icon="el-icon-check" :size="size" :type="type"
                    @click.stop="updateFb(row)">
        <el-button v-if="row.publish == '0'" icon="el-icon-check" :size="size" :type="type" @click.stop="updateFb(row)">
                    发布
                </el-button>
            </template>
@@ -133,8 +130,7 @@
                selection: true,
                excelBtn: true,
                dialogClickModal: false,
                column: [
                    {
          column: [{
                        label: "文章标题",
                        prop: "title",
                        span: 24,
@@ -287,17 +283,19 @@
            },
            data: [],
            optionEnroll: {
                column: [{
                    label: "",
                    type: 'title',
                    prop: "title",
                    span: 24,
                    row: true,
                    offset: 2,
                    styles: {
                        fontSize: '24px'
                    }
                }, {
          column: [
            //   {
            //     label: "",
            //     type: 'title',
            //     prop: "title",
            //     span: 24,
            //     row: true,
            //     offset: 2,
            //     styles: {
            //         fontSize: '24px'
            //     }
            // },
            {
                    labelWidth: 100,
                    label: '开启',
                    prop: 'openFlag',
src/views/place/components/auditBase.vue
@@ -1,18 +1,13 @@
<template>
    <div class="cur-container-box">
        <div class="content-box">
            审核当前项
        </div>
        <div class="footer-btn-box">
            <el-button type="primary" size="small" @click="auditPass">通 过</el-button>
            <el-button size="small" @click="auditTurnDown">驳 回</el-button>
        </div>
        <avue-form ref="replyForm" :option="option" v-model="form" :close-on-click-modal="false">
        <el-dialog append-to-body :visible.sync="auditTurnDownPopup" width="30%" :close-on-click-modal="false"
            @close="popupClose" :show-close="false">
            <avue-form ref="replyForm" :option="option" v-model="form" @submit="handleSubmit" @reset-change="handleReset">
            <template slot-scope="{size}" slot="menuForm">
                <el-button type="primary" :size="size" @click="handleSubmit">通 过</el-button>
                <el-button :size="size" @click="handleReset">驳 回</el-button>
            </template>
            </avue-form>
        </el-dialog>
    </div>
</template>
@@ -26,27 +21,20 @@
    data () {
        return {
            auditTurnDownPopup: false,
            form: {},
            option: {
                submitBtn: true,
                submitText: '确定',
                emptyBtn: true,
                emptyText: '取消',
                submitBtn: false,
                emptyBtn: false,
                column: [
                    {
                        span: 24,
                        label: "驳回原因",
                        span: 23,
                        row: true,
                        label: "审批意见",
                        prop: "confirmNotion",
                        type: 'textarea',
                        minRows: 3,
                        maxRows: 5,
                        rules: [{
                            required: true,
                            message: "请输入驳回原因",
                            trigger: "blur",
                        }],
                        rules: [],
                    }
                ]
            },
@@ -54,50 +42,46 @@
    },
    methods: {
        popupClose () {
            this.$refs.replyForm && this.$refs.replyForm.resetForm()
        },
        auditPass () {
        handleSubmit () {
            setCheckPlaceExt({
                confirmFlag: 2,
                id: this.placeElement.curAuditRow.placeExtId
            }).then(() => {
                this.placeElement.auditBasePopup = false
                this.$message({
                    type: "success",
                    message: "操作成功!",
                })
                this.placeElement.onLoad(this.placeElement.page)
            })
        },
        auditTurnDown () {
            this.placeElement.auditBasePopup = false
            this.auditTurnDownPopup = true
        },
        handleSubmit (form, done) {
            setCheckPlaceExt({
                confirmFlag: 3,
                id: this.placeElement.curAuditRow.placeExtId,
                confirmNotion: form.confirmNotion
                confirmNotion: this.form.confirmNotion
            }).then(() => {
                this.auditTurnDownPopup = false
                this.$message({
                    type: "success",
                    message: "操作成功!",
                })
                this.$refs.replyForm && this.$refs.replyForm.resetForm()
                this.placeElement.auditBasePopup = false
                this.placeElement.onLoad(this.placeElement.page)
                done()
            })
        },
        handleReset () {
            this.auditTurnDownPopup = false
            if ('confirmNotion' in this.form && this.form.confirmNotion.trim() == '' || !this.form.confirmNotion) {
                this.$message({
                    type: 'warning',
                    message: "请输入审批意见!",
                })
        }
            setCheckPlaceExt({
                confirmFlag: 3,
                id: this.placeElement.curAuditRow.placeExtId,
                confirmNotion: this.form.confirmNotion
            }).then(() => {
                this.$message({
                    type: "success",
                    message: "操作成功!",
                })
                this.$refs.replyForm && this.$refs.replyForm.resetForm()
                this.placeElement.auditBasePopup = false
                this.placeElement.onLoad(this.placeElement.page)
            })
        },
    }
}
</script>
src/views/place/index.vue
@@ -38,8 +38,8 @@
            </template>
            <template slot-scope="{row, size}" slot="menu">
                <el-button :size="size" type="text" :disabled="row.confirmFlag == 2 || row.confirmFlag == 4"
                    icon="el-icon-s-check" v-if="permission.place_audit_cur" @click="auditCur(row)">审核
                <el-button :size="size" type="text" icon="el-icon-s-check" v-if="permission.place_audit_cur"
                    @click="auditCur({ ...row, confirmFlag: 1 })">审核
                </el-button>
                <el-button :size="size" type="text" icon="el-icon-edit" v-if="permission.place_manage_tenants"
src/views/property/inviteTenders.vue
@@ -1,33 +1,20 @@
<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">删
                    除
                </el-button>
                <!--  <el-button size="small" icon="el-icon-s-order" plain @click="kqcomment">开启评论
        </el-button>
        <el-button size="small" icon="el-icon-s-release" plain @click="gbcomment">关闭评论
        </el-button> -->
            </template>
            <template slot-scope="{type,size,row }" slot="menu">
                <el-button icon="el-icon-circle-plus-outline" :size="size" :type="type" @click.stop="openDilog(row, 0)">
                    公益报名
                </el-button>
                <el-button icon="el-icon-circle-plus-outline" :size="size" :type="type" @click.stop="openDilog(row, 1)">
                    创建议题
                </el-button>
                <el-button v-if="row.publish == '1'" icon="el-icon-close" :size="size" :type="type"
                    @click.stop="updateFb(row)">
        <el-button v-if="row.publish == '1'" icon="el-icon-close" :size="size" :type="type" @click.stop="updateFb(row)">
                    撤销
                </el-button>
                <el-button v-if="row.publish == '0'" icon="el-icon-check" :size="size" :type="type"
                    @click.stop="updateFb(row)">
        <el-button v-if="row.publish == '0'" icon="el-icon-check" :size="size" :type="type" @click.stop="updateFb(row)">
                    发布
                </el-button>
            </template>
@@ -207,7 +194,7 @@
                    value: 2,
                    slot: true,
                    searchSpan: 4,
                    search: true,
              // search: true,
                    type: "select",
                    rules: [{
                        required: true,
src/views/property/ownersCommittee.vue
New file
@@ -0,0 +1,645 @@
<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">
      <template slot="menuLeft">
        <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删
          除
        </el-button>
      </template>
      <template slot-scope="{type,size,row }" slot="menu">
        <el-button v-if="row.publish == '1'" icon="el-icon-close" :size="size" :type="type" @click.stop="updateFb(row)">
          撤销
        </el-button>
        <el-button v-if="row.publish == '0'" icon="el-icon-check" :size="size" :type="type" @click.stop="updateFb(row)">
          发布
        </el-button>
      </template>
      <template slot-scope="{ row, size }" slot="publish">
        <el-tag :size="size" :type="showStatus(row.publish, 1).type" v-text="showStatus(row.publish, 1).text">
        </el-tag>
      </template>
      <template slot-scope="{ row, size }" slot="iscomment">
        <el-tag :size="size" :type="showStatus(row.iscomment, 2).type" v-text="showStatus(row.iscomment, 2).text">
        </el-tag>
      </template>
    </avue-crud>
  </basic-container>
</template>
<script>
  import {
    getList,
    remove,
    update,
    add,
    getNotice,
    upcomment
  } from "@/api/article/article"
  import {
    addPd,
  } from "@/api/discuss/publicDiscuss"
  import website from '@/config/website'
  import {
    getDistrictTree
  } from "@/api/district/index"
  import {
    mapGetters
  } from "vuex"
  export default {
    data() {
      return {
        discussForm: {
          ontitle: '',
          title: '',
          openFlag: 0,
          numberRestrictions: 0,
          voteRestrictions: 0,
          userRestrictions: 0,
          endTime: '',
          articleId: '',
          createTime: '',
          updateTime: '',
          deleteFlag: '',
          repeatVote: 0,
          voteNumberPublic: 0,
          appointUser: '',
          userIds: '',
          eventType: 1,
        },
        dialogVisibles: false,
        form: {},
        query: {},
        loading: true,
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0,
        },
        datetime: "",
        selectionList: [],
        option: {
          labelWidth: 96,
          searchLabelWidth: 96,
          searchShow: true,
          searchMenuSpan: 3,
          menuWidth: 450,
          height: "auto",
          calcHeight: 54,
          dialogWidth: 950,
          tip: false,
          border: false,
          //stripe:true,
          index: true,
          viewBtn: true,
          selection: true,
          excelBtn: true,
          dialogClickModal: false,
          column: [{
              label: "标题",
              prop: "title",
              span: 24,
              row: true,
              searchSpan: 4,
              search: true,
              rules: [{
                required: true,
                message: "请输入业主大会标题",
                trigger: "blur",
              }, ],
            },
            {
              width: 110,
              label: "封面",
              prop: "url",
              // align:'center',
              type: "upload",
              listType: "picture-img",
              action: "/api/blade-resource/oss/endpoint/put-file",
              propsHttp: {
                res: "data",
                url: "link",
              },
              // hide: true,
              span: 24,
            },
            {
              width: 100,
              label: "业主大会类型",
              prop: "type",
              value: 5,
              slot: true,
              searchSpan: 4,
              // search: true,
              type: "select",
              rules: [{
                required: true,
                message: "请选择招标类型",
                trigger: "blur",
              }, ],
              dicData: [{
                label: "业主大会",
                value: 5,
              }],
            },
            // {
            //   label: "招标来源",
            //   prop: "sourceName",
            //   search: true,
            //   searchSpan: 4,
            //   span: 24,
            //   rules: [{
            //     required: true,
            //     message: "请输入招标类型",
            //     trigger: "blur",
            //   }, ],
            // },
            {
              label: "公示范围",
              prop: "articleList",
              span: 12,
              minRows: 2,
              type: "cascader",
              multiple: true,
              tags: true,
              dicData: [],
              rules: [{
                required: true,
                message: "请选择业主大会范围",
                trigger: "blur",
              }, ],
              props: {
                label: "name",
                value: 'id'
              },
              hide: true,
            },
            {
              label: "发布时间",
              prop: "dateTime",
              type: "daterange",
              format: "yyyy-MM-dd",
              valueFormat: "yyyy-MM-dd",
              searchSpan: 6,
              searchRange: true,
              hide: true,
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              search: true,
              rules: [{
                required: true,
                message: "请选择发布时间",
                trigger: "blur",
              }, ],
            },
            {
              width: 144,
              label: "发布时间",
              prop: "createTime",
              type: "date",
              format: "yyyy-MM-dd",
              valueFormat: "yyyy-MM-dd HH:mm:ss",
            },
            {
              width: 100,
              label: "发布状态",
              prop: "publish",
              value: "0",
              slot: true,
              searchSpan: 4,
              search: true,
              type: "select",
              display: false,
              rules: [{
                required: true,
                message: "请选择发布状态",
                trigger: "blur",
              }, ],
              dicData: [{
                  label: "未发布",
                  value: "0",
                },
                {
                  label: "已发布",
                  value: "1",
                }
              ],
            },
            {
              width: 100,
              label: "评论区",
              prop: "iscomment",
              slot: true,
              type: "select",
              dicData: [{
                  label: "关闭",
                  value: "0",
                },
                {
                  label: "开启",
                  value: "1",
                }
              ],
            },
            {
              label: "内容",
              prop: "content",
              component: "AvueUeditor",
              options: {
                action: "/api/blade-resource/oss/endpoint/put-file",
                // customConfig: {
                //   lineHeights: ['1', '1.15', '1.6', '2', '2.5', '3']
                // },//wangEditor编辑的配置
                props: {
                  res: "data",
                  url: "link",
                },
              },
              hide: true,
              minRows: 6,
              span: 24,
            },
          ],
        },
        data: [],
        districtTree: [],
      }
    },
    watch: {
      "form.articleType": {
        handler(val) {
          if (val) {
            var videoUrl = this.findObject(this.option.column, "videoUrl")
            var content = this.findObject(this.option.column, "content")
            if (val.indexOf('ksp') != -1) {
              videoUrl.display = true
              content.display = false
              videoUrl.rules = [{
                required: false,
                message: "请选择视频",
                trigger: "blur",
              }, ]
            } else {
              videoUrl.display = false
              content.display = true
              videoUrl.rules = ""
            }
          }
        },
        immediate: true,
      }
    },
    computed: {
      ...mapGetters(["permission", "userInfo"]),
      permissionList() {
        return {
          addBtn: this.vaildData(this.permission.article_add, true),
          viewBtn: this.vaildData(this.permission.article_view, true),
          delBtn: this.vaildData(this.permission.article_delete, true),
          editBtn: this.vaildData(this.permission.article_edit, true),
        }
      },
      ids() {
        let ids = []
        this.selectionList.forEach((ele) => {
          ids.push(ele.id)
        })
        return ids.join(",")
      },
      showStatus() {
        return (data, type) => {
          if (data == 0) {
            return {
              text: type == 1 ? '未发布' : '关闭',
              type: 'info'
            }
          } else if (data == 1) {
            return {
              text: type == 1 ? '已发布' : '开启',
              type: 'success'
            }
          }
        }
      }
    },
    methods: {
      openDilog(row, type) {
        this.dialogVisibles = true
        this.discussForm.eventType = type
        this.discussForm.articleId = row.id
        this.discussForm.title = row.title
        if (type == 0) {
          this.discussForm.ontitle = '公益报名'
        } else {
          this.discussForm.ontitle = '创建议题'
        }
      },
      handleSubmit(form, done) {
        done()
        addPd(form).then(
          () => {
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            this.dialogVisibles = false
            done()
          },
          (error) => {
            window.console.log(error)
            // loading();
          }
        )
      },
      handleClose(done) {
        done()
        // this.$confirm('确认关闭?')
        //   .then(_ => {
        //     done();
        //   })
        //   .catch(_ => {});
      },
      rowSave(row, done, loading) {
        row['type'] = 5
        row.userid = this.userInfo.user_id
        row.articleRange = JSON.stringify(row.articleList)
        if (row.url.length > 0) {
          var urls = []
          var split = row.url.split(",")
          split.forEach(url => {
            var names = url.split("jczz/")
            urls.push(names[1])
          })
          row.url = urls.join(",")
        }
        add(row).then(
          () => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            done()
          },
          (error) => {
            window.console.log(error)
            loading()
          }
        )
      },
      rowUpdate(row, index, done, loading) {
        row.articleRange = JSON.stringify(row.articleList)
        if (row.url.length > 0) {
          var urls = []
          var split = row.url.split(",")
          split.forEach(url => {
            var names = url.split("jczz/")
            urls.push(names[1])
          })
          row.url = urls.join(",")
        }
        update(row).then(
          () => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            done()
          },
          (error) => {
            window.console.log(error)
            loading()
          }
        )
      },
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
          })
          .then(() => {
            return remove(row.id)
          })
          .then(() => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
          })
      },
      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()
      },
      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)) {
          getNotice(this.form.id).then((res) => {
            let data = res.data.data
            // data.forEach(item=>{
            if (data.url.length > 0) {
              var urls = []
              var names = data.url.split(",")
              names.forEach(name => {
                urls.push(website.minioUrl + name)
              })
              data.url = urls.join(",")
            }
            data.articleList = JSON.parse(data.articleRange)
            this.form = data
          })
        }
        // con
        done()
      },
      currentChange(currentPage) {
        this.page.currentPage = currentPage
      },
      sizeChange(pageSize) {
        this.page.pageSize = pageSize
      },
      refreshChange() {
        this.onLoad(this.page, this.query)
      },
      onLoad(page, params = {}) {
        const {
          dateTime
        } = this.query
        let values = {
          ...params,
        }
        if (dateTime) {
          values = {
            ...params,
            startTime: dateTime[0],
            endTime: dateTime[1],
            ...this.query,
          }
          values.dateTime = null
        }
        values.type = 5
        this.loading = true
        console.log(values)
        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 => {
            if (item.url.length > 0) {
              var urls = []
              var names = item.url.split(",")
              names.forEach(name => {
                urls.push(website.minioUrl + name)
              })
              item.url = urls.join(",")
            }
          })
          this.loading = false
          this.selectionClear()
        })
        getDistrictTree(params = {}).then((res) => {
          const data = res.data.data
          this.districtTree = data
          const column = this.findObject(this.option.column, "articleList")
          column.dicData = res.data.data
          this.loading = false
        })
      },
      updateFb(row) {
        if (row.publish == "0") {
          row.publish = "1"
        } else {
          row.publish = "0"
        }
        if (row.url.length > 0) {
          var urls = []
          var split = row.url.split(",")
          split.forEach(url => {
            var names = url.split("jczz/")
            urls.push(names[1])
          })
          row.url = urls.join(",")
        }
        update(row).then(
          () => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            done()
          },
          (error) => {
            window.console.log(error)
            loading()
          }
        )
      },
      kqcomment() {
        if (this.selectionList.length === 0) {
          this.$message.warning("请选择至少一条数据")
          return
        }
        this.$confirm("确定将选择数据开启评论?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
          }).then(() => {
            return upcomment(this.ids, "1")
          })
          .then(() => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            this.$refs.crud.toggleSelection()
          })
      },
      gbcomment() {
        if (this.selectionList.length === 0) {
          this.$message.warning("请选择至少一条数据")
          return
        }
        this.$confirm("确定将选择数据开启评论?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
          }).then(() => {
            return upcomment(this.ids, "0")
          })
          .then(() => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            this.$refs.crud.toggleSelection()
          })
      }
    },
  }
</script>
<style>
  .avue-upload__icon {
    line-height: 6;
  }
</style>
src/views/property/propertyCapitalApply.vue
@@ -2,17 +2,18 @@
<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-scope="{ row, size, index }" slot="menu">
        <el-button :size="size" type="text" v-if="row.applyStatus === 4" @click="handleWork(row)">调整申请
        </el-button>
        <el-button :size="size" type="text" @click="goDetail(row)">查看申请
        </el-button>
        <el-button :size="size" type="text" @click="goDetail(row)">删 除
        </el-button>
                <!-- <el-button :size="size" type="text" @click="goDetail(row)">删 除
        </el-button> -->
      </template>
      <!-- <template slot="menuLeft">
         <el-button size="small" icon="el-icon-delete" plain v-if="permission.propertyCapitalApply_delete"
@@ -59,7 +60,7 @@
          searchLabelWidth: 96,
          searchShow: true,
          searchMenuSpan: 3,
          menuWidth: 140,
                menuWidth: 210,
          height: "auto",
          calcHeight: 54,
src/views/propertySupervision/ownersCommittee.vue
New file
@@ -0,0 +1,650 @@
<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">
      <!-- <template slot="menuLeft">
        <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删
          除
        </el-button>
      </template> -->
      <!-- <template slot-scope="{type,size,row }" slot="menu">
        <el-button v-if="row.publish == '1'" icon="el-icon-close" :size="size" :type="type" @click.stop="updateFb(row)">
          撤销
        </el-button>
        <el-button v-if="row.publish == '0'" icon="el-icon-check" :size="size" :type="type" @click.stop="updateFb(row)">
          发布
        </el-button>
      </template> -->
      <template slot-scope="{ row, size }" slot="publish">
        <el-tag :size="size" :type="showStatus(row.publish, 1).type" v-text="showStatus(row.publish, 1).text">
        </el-tag>
      </template>
      <template slot-scope="{ row, size }" slot="iscomment">
        <el-tag :size="size" :type="showStatus(row.iscomment, 2).type" v-text="showStatus(row.iscomment, 2).text">
        </el-tag>
      </template>
    </avue-crud>
  </basic-container>
</template>
<script>
  import {
    getList,
    remove,
    update,
    add,
    getNotice,
    upcomment
  } from "@/api/article/article"
  import {
    addPd,
  } from "@/api/discuss/publicDiscuss"
  import website from '@/config/website'
  import {
    getDistrictTree
  } from "@/api/district/index"
  import {
    mapGetters
  } from "vuex"
  export default {
    data() {
      return {
        discussForm: {
          ontitle: '',
          title: '',
          openFlag: 0,
          numberRestrictions: 0,
          voteRestrictions: 0,
          userRestrictions: 0,
          endTime: '',
          articleId: '',
          createTime: '',
          updateTime: '',
          deleteFlag: '',
          repeatVote: 0,
          voteNumberPublic: 0,
          appointUser: '',
          userIds: '',
          eventType: 1,
        },
        dialogVisibles: false,
        form: {},
        query: {},
        loading: true,
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0,
        },
        datetime: "",
        selectionList: [],
        option: {
          labelWidth: 96,
          searchLabelWidth: 96,
          searchShow: true,
          searchMenuSpan: 3,
          menuWidth: 450,
          height: "auto",
          calcHeight: 54,
          dialogWidth: 950,
          tip: false,
          border: false,
          //stripe:true,
          index: true,
          addBtn: false,
          viewBtn: false,
          delBtn: false,
          editBtn: false,
          selection: false,
          excelBtn: false,
          menu: false,
          dialogClickModal: false,
          column: [{
              label: "标题",
              prop: "title",
              span: 24,
              row: true,
              searchSpan: 4,
              search: true,
              rules: [{
                required: true,
                message: "请输入业主大会标题",
                trigger: "blur",
              }, ],
            },
            {
              width: 110,
              label: "封面",
              prop: "url",
              // align:'center',
              type: "upload",
              listType: "picture-img",
              action: "/api/blade-resource/oss/endpoint/put-file",
              propsHttp: {
                res: "data",
                url: "link",
              },
              // hide: true,
              span: 24,
            },
            {
              width: 100,
              label: "业主大会类型",
              prop: "type",
              value: 5,
              slot: true,
              searchSpan: 4,
              // search: true,
              type: "select",
              rules: [{
                required: true,
                message: "请选择招标类型",
                trigger: "blur",
              }, ],
              dicData: [{
                label: "业主大会",
                value: 5,
              }],
            },
            // {
            //   label: "招标来源",
            //   prop: "sourceName",
            //   search: true,
            //   searchSpan: 4,
            //   span: 24,
            //   rules: [{
            //     required: true,
            //     message: "请输入招标类型",
            //     trigger: "blur",
            //   }, ],
            // },
            {
              label: "公示范围",
              prop: "articleList",
              span: 12,
              minRows: 2,
              type: "cascader",
              multiple: true,
              tags: true,
              dicData: [],
              rules: [{
                required: true,
                message: "请选择业主大会范围",
                trigger: "blur",
              }, ],
              props: {
                label: "name",
                value: 'id'
              },
              hide: true,
            },
            {
              label: "发布时间",
              prop: "dateTime",
              type: "daterange",
              format: "yyyy-MM-dd",
              valueFormat: "yyyy-MM-dd",
              searchSpan: 6,
              searchRange: true,
              hide: true,
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              search: true,
              rules: [{
                required: true,
                message: "请选择发布时间",
                trigger: "blur",
              }, ],
            },
            {
              width: 144,
              label: "发布时间",
              prop: "createTime",
              type: "date",
              format: "yyyy-MM-dd",
              valueFormat: "yyyy-MM-dd HH:mm:ss",
            },
            // {
            //   width: 100,
            //   label: "发布状态",
            //   prop: "publish",
            //   value: "0",
            //   slot: true,
            //   searchSpan: 4,
            //   search: true,
            //   type: "select",
            //   display: false,
            //   rules: [{
            //     required: true,
            //     message: "请选择发布状态",
            //     trigger: "blur",
            //   }, ],
            //   dicData: [{
            //       label: "未发布",
            //       value: "0",
            //     },
            //     {
            //       label: "已发布",
            //       value: "1",
            //     }
            //   ],
            // },
            // {
            //   width: 100,
            //   label: "评论区",
            //   prop: "iscomment",
            //   slot: true,
            //   type: "select",
            //   dicData: [{
            //       label: "关闭",
            //       value: "0",
            //     },
            //     {
            //       label: "开启",
            //       value: "1",
            //     }
            //   ],
            // },
            {
              label: "内容",
              prop: "content",
              component: "AvueUeditor",
              options: {
                action: "/api/blade-resource/oss/endpoint/put-file",
                // customConfig: {
                //   lineHeights: ['1', '1.15', '1.6', '2', '2.5', '3']
                // },//wangEditor编辑的配置
                props: {
                  res: "data",
                  url: "link",
                },
              },
              hide: true,
              minRows: 6,
              span: 24,
            },
          ],
        },
        data: [],
        districtTree: [],
      }
    },
    watch: {
      "form.articleType": {
        handler(val) {
          if (val) {
            var videoUrl = this.findObject(this.option.column, "videoUrl")
            var content = this.findObject(this.option.column, "content")
            if (val.indexOf('ksp') != -1) {
              videoUrl.display = true
              content.display = false
              videoUrl.rules = [{
                required: false,
                message: "请选择视频",
                trigger: "blur",
              }, ]
            } else {
              videoUrl.display = false
              content.display = true
              videoUrl.rules = ""
            }
          }
        },
        immediate: true,
      }
    },
    computed: {
      ...mapGetters(["permission", "userInfo"]),
      permissionList() {
        return {
          addBtn: this.vaildData(this.permission.article_add, true),
          viewBtn: this.vaildData(this.permission.article_view, true),
          delBtn: this.vaildData(this.permission.article_delete, true),
          editBtn: this.vaildData(this.permission.article_edit, true),
        }
      },
      ids() {
        let ids = []
        this.selectionList.forEach((ele) => {
          ids.push(ele.id)
        })
        return ids.join(",")
      },
      showStatus() {
        return (data, type) => {
          if (data == 0) {
            return {
              text: type == 1 ? '未发布' : '关闭',
              type: 'info'
            }
          } else if (data == 1) {
            return {
              text: type == 1 ? '已发布' : '开启',
              type: 'success'
            }
          }
        }
      }
    },
    methods: {
      openDilog(row, type) {
        this.dialogVisibles = true
        this.discussForm.eventType = type
        this.discussForm.articleId = row.id
        this.discussForm.title = row.title
        if (type == 0) {
          this.discussForm.ontitle = '公益报名'
        } else {
          this.discussForm.ontitle = '创建议题'
        }
      },
      handleSubmit(form, done) {
        done()
        addPd(form).then(
          () => {
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            this.dialogVisibles = false
            done()
          },
          (error) => {
            window.console.log(error)
            // loading();
          }
        )
      },
      handleClose(done) {
        done()
        // this.$confirm('确认关闭?')
        //   .then(_ => {
        //     done();
        //   })
        //   .catch(_ => {});
      },
      rowSave(row, done, loading) {
        row['type'] = 5
        row.userid = this.userInfo.user_id
        row.articleRange = JSON.stringify(row.articleList)
        if (row.url.length > 0) {
          var urls = []
          var split = row.url.split(",")
          split.forEach(url => {
            var names = url.split("jczz/")
            urls.push(names[1])
          })
          row.url = urls.join(",")
        }
        add(row).then(
          () => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            done()
          },
          (error) => {
            window.console.log(error)
            loading()
          }
        )
      },
      rowUpdate(row, index, done, loading) {
        row.articleRange = JSON.stringify(row.articleList)
        if (row.url.length > 0) {
          var urls = []
          var split = row.url.split(",")
          split.forEach(url => {
            var names = url.split("jczz/")
            urls.push(names[1])
          })
          row.url = urls.join(",")
        }
        update(row).then(
          () => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            done()
          },
          (error) => {
            window.console.log(error)
            loading()
          }
        )
      },
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
          })
          .then(() => {
            return remove(row.id)
          })
          .then(() => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
          })
      },
      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()
      },
      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)) {
          getNotice(this.form.id).then((res) => {
            let data = res.data.data
            // data.forEach(item=>{
            if (data.url.length > 0) {
              var urls = []
              var names = data.url.split(",")
              names.forEach(name => {
                urls.push(website.minioUrl + name)
              })
              data.url = urls.join(",")
            }
            data.articleList = JSON.parse(data.articleRange)
            this.form = data
          })
        }
        // con
        done()
      },
      currentChange(currentPage) {
        this.page.currentPage = currentPage
      },
      sizeChange(pageSize) {
        this.page.pageSize = pageSize
      },
      refreshChange() {
        this.onLoad(this.page, this.query)
      },
      onLoad(page, params = {}) {
        const {
          dateTime
        } = this.query
        let values = {
          ...params,
        }
        if (dateTime) {
          values = {
            ...params,
            startTime: dateTime[0],
            endTime: dateTime[1],
            ...this.query,
          }
          values.dateTime = null
        }
        values.type = 5
        values.publish = 1
        this.loading = true
        console.log(values)
        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 => {
            if (item.url.length > 0) {
              var urls = []
              var names = item.url.split(",")
              names.forEach(name => {
                urls.push(website.minioUrl + name)
              })
              item.url = urls.join(",")
            }
          })
          this.loading = false
          this.selectionClear()
        })
        getDistrictTree(params = {}).then((res) => {
          const data = res.data.data
          this.districtTree = data
          const column = this.findObject(this.option.column, "articleList")
          column.dicData = res.data.data
          this.loading = false
        })
      },
      updateFb(row) {
        if (row.publish == "0") {
          row.publish = "1"
        } else {
          row.publish = "0"
        }
        if (row.url.length > 0) {
          var urls = []
          var split = row.url.split(",")
          split.forEach(url => {
            var names = url.split("jczz/")
            urls.push(names[1])
          })
          row.url = urls.join(",")
        }
        update(row).then(
          () => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            done()
          },
          (error) => {
            window.console.log(error)
            loading()
          }
        )
      },
      kqcomment() {
        if (this.selectionList.length === 0) {
          this.$message.warning("请选择至少一条数据")
          return
        }
        this.$confirm("确定将选择数据开启评论?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
          }).then(() => {
            return upcomment(this.ids, "1")
          })
          .then(() => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            this.$refs.crud.toggleSelection()
          })
      },
      gbcomment() {
        if (this.selectionList.length === 0) {
          this.$message.warning("请选择至少一条数据")
          return
        }
        this.$confirm("确定将选择数据开启评论?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
          }).then(() => {
            return upcomment(this.ids, "0")
          })
          .then(() => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            this.$refs.crud.toggleSelection()
          })
      }
    },
  }
</script>
<style>
  .avue-upload__icon {
    line-height: 6;
  }
</style>
src/views/propertySupervision/propertyCapitalManage.vue
New file
@@ -0,0 +1,506 @@
<!-- 物业公司管理 -->
<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">
      <template slot-scope="{ row, size, index }" slot="menu">
        <!-- <el-button :size="size" type="text" v-if="row.applyStatus === 4" @click="handleWork(row)">调整申请
                </el-button> -->
        <el-button :size="size" type="text" @click="goDetail(row)">查看申请
        </el-button>
        <!-- <el-button :size="size" type="text" @click="goDetail(row)">删 除
        </el-button> -->
      </template>
      <!-- <template slot="menuLeft">
         <el-button size="small" icon="el-icon-delete" plain v-if="permission.propertyCapitalApply_delete"
          @click="handleDelete">删 除
        </el-button>
      </template> -->
      <!-- <template slot="constructionSchemeUrlsType" slot-scope="{file}">
        <span>{{ file }}</span>
      </template> -->
    </avue-crud>
  </basic-container>
</template>
<script>
  import {
    getList,
    remove,
    update,
    add,
    getPropertyCapitalApply
  } from "@/api/property/propertyCapitalApply"
  import {
    mapGetters
  } from "vuex"
  import website from '@/config/website'
  import func from "@/util/func"
  export default {
    data() {
      return {
        form: {
          // constructionSchemeUrls:[]
        },
        query: {},
        loading: true,
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0,
        },
        datetime: "",
        selectionList: [],
        option: {
          labelWidth: 154,
          searchLabelWidth: 96,
          searchShow: true,
          searchMenuSpan: 3,
          menuWidth: 210,
          height: "auto",
          calcHeight: 54,
          dialogWidth: 1150,
          tip: false,
          border: true,
          //stripe:true,
          index: true,
          editBtn: false,
          viewBtn: false,
          delBtn: false,
          selection: true,
          dialogClickModal: false,
          column: [{
              width: 220,
              overHidden: true,
              label: '小区名称',
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              prop: "districtName",
              search: true,
              searchSpan: 4,
              rules: [{
                required: true,
                message: "请输入小区名称",
                trigger: "blur",
              }],
            },
            {
              hide: true,
              parent: false,
              label: "小区",
              prop: "districtId",
              search: false,
              type: 'tree',
              dicUrl: `/api/blade-district/district/getDistrictTree`,
              props: {
                label: "name",
                value: "id"
              },
              defaultExpandedKeys: ["361102003"],
              span: 12,
              width: 260,
              rules: [{
                required: true,
                message: "请选择小区",
                trigger: "blur",
              }, ],
            },
            {
              label: '维修项目名称',
              prop: 'name',
              searchSpan: 5,
              searchLabelWidth: 124,
              search: true,
              span: 12,
              rules: [{
                required: true,
                message: "请输入维修项目名称",
                trigger: "blur",
              }, ],
            },
            {
              width: 100,
              label: "预计开工时间",
              prop: "runTime",
              span: 12,
              type: "date",
              format: "yyyy-MM-dd",
              valueFormat: "yyyy-MM-dd",
              rules: [{
                required: true,
                message: "请选择合同开始时间",
                trigger: "blur",
              }, ],
            },
            {
              width: 100,
              label: "预计竣工时间",
              prop: "completedTime",
              span: 12,
              type: "date",
              format: "yyyy-MM-dd",
              valueFormat: "yyyy-MM-dd",
              rules: [{
                required: true,
                message: "请选择合同结束时间",
                trigger: "blur",
              }, ],
            },
            {
              label: "项目分摊方式",
              prop: "allocationWay",
              value: '按建筑面积分摊',
              span: 14,
              row: true,
            },
            {
              width: 110,
              label: '联系人',
              prop: 'linkman',
              span: 12,
              searchSpan: 4,
              searchLabelWidth: 80,
              search: true,
              rules: [{
                required: true,
                message: "请输入联系人",
                trigger: "blur",
              }, ],
            },
            {
              width: 120,
              label: '联系方式',
              prop: 'linkPhone',
              span: 12,
              rules: [{
                required: true,
                message: "请输入联系方式",
                trigger: "blur",
              }, ],
            },
            {
              width: 100,
              label: '申请时间',
              prop: 'applyTime',
              span: 12,
              display: false,
            }, {
              label: '审核进度',
              prop: 'applyStatus',
              span: 12,
              display: false,
              dicData: [{
                label: "待审核",
                value: 0,
              }, {
                label: "业委会",
                value: 1,
              }, {
                label: "街道",
                value: 2,
              }, {
                label: "住建局",
                value: 3,
              }, {
                label: "调整申请",
                value: 4,
              }, {
                label: "审核通过",
                value: 5,
              }, {
                label: "审核不通过",
                value: 6,
              }]
            },
            {
              label: "项目预算总金额(元)",
              prop: "budgetAmount",
              span: 12,
              hide: true,
              type: 'number',
              precision: 2,
              value: '0.00'
            },
            {
              label: "实际预算金额(元)",
              prop: "actualAmount",
              span: 12,
              hide: true,
              type: 'number',
              precision: 2,
              value: '0.00'
            },
            {
              label: "自筹金额(元)",
              prop: "selfAmount",
              span: 12,
              hide: true,
              type: 'number',
              precision: 2,
              value: '0.00'
            },
            {
              label: "预算应拨付金额(元)",
              prop: "budgetAppropriateAmount",
              span: 12,
              hide: true,
              type: 'number',
              precision: 2,
              value: '0.00'
            },
            {
              label: "项目摘要",
              span: 24,
              hide: true,
              prop: "projectDigest",
              placeholder: "例如:“XX小区XX栋XX设施设备维修,总的预算金额是X,是否含有审价,本次维修涉及范围共XX户,总面积的建筑面积为XX平方米”",
              type: "textarea"
            },
            {
              label: "项目进度描述",
              span: 24,
              hide: true,
              prop: "projectDescribe",
              type: "textarea"
            },
            {
              label: '施工方案附件',
              prop: 'constructionSchemeUrls',
              type: 'upload',
              span: 24,
              hide: true,
              multiple: true,
              // showFileList: true,
              propsHttp: {
                res: 'data',
                name: "originalName",
                url: "link"
              },
              action: '/api/blade-resource/oss/endpoint/put-file-attach',
              rules: [{
                required: true,
                message: "请上传施工方案",
                trigger: "blur",
              }, ],
            }
          ],
        },
        data: [],
      }
    },
    watch: {},
    computed: {
      ...mapGetters(["permission", "userInfo"]),
      permissionList() {
        return {
          addBtn: this.vaildData(this.permission.propertyCapitalApply_add, true),
          viewBtn: this.vaildData(this.permission.propertyCapitalApply_view, true),
          delBtn: this.vaildData(this.permission.propertyCapitalApply_delete, true),
          editBtn: this.vaildData(this.permission.propertyCapitalApply_edit, true),
        }
      },
      ids() {
        let ids = []
        this.selectionList.forEach((ele) => {
          ids.push(ele.id)
        })
        return ids.join(",")
      },
    },
    methods: {
      handleWork(row) {
        this.$router.push({
          path: `/work/process/maintenanceFundApply/edit/${row.taskId}/${row.processInstanceId}/${row.id}`
        })
      },
      goDetail(row) {
        this.$router.push({
          path: `/work/process/maintenanceFundApply/detail/${row.processInstanceId}/${row.id}`
        })
      },
      rowSave(row, done, loading) {
        row.constructionSchemeUrls = func.join(row.constructionSchemeUrls)
        if (row.constructionSchemeUrls.length > 0) {
          var urls = []
          var split = row.constructionSchemeUrls.split(",")
          split.forEach(url => {
            var names = url.split("jczz/")
            urls.push(names[1])
          })
          row.constructionSchemeUrls = urls.join(",")
        }
        row.propertyFlag = 1
        add(row).then(
          () => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            done()
          },
          (error) => {
            window.console.log(error)
            loading()
          }
        )
      },
      rowUpdate(row, index, done, loading) {
        if (row.constructionSchemeUrls.length > 0) {
          var urls = []
          var split = row.constructionSchemeUrls.split(",")
          split.forEach(url => {
            var names = url.split("jczz/")
            urls.push(names[1])
          })
          row.constructionSchemeUrls = urls.join(",")
        }
        update(row).then(
          () => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            done()
          },
          (error) => {
            window.console.log(error)
            loading()
          }
        )
      },
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
          })
          .then(() => {
            return remove(row.id)
          })
          .then(() => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
          })
      },
      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()
      },
      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)) {
          getPropertyCapitalApply(this.form.id).then((res) => {
            this.form = res.data.data
            this.form.propertyFlag = 1
            if (this.form.constructionSchemeUrls.length > 0) {
              var urls = []
              var names = this.form.constructionSchemeUrls.split(",")
              names.forEach(name => {
                urls.push(website.minioUrl + name)
              })
              this.form.constructionSchemeUrls = urls.join(",")
            }
          })
        }
        // con
        done()
      },
      currentChange(currentPage) {
        this.page.currentPage = currentPage
      },
      sizeChange(pageSize) {
        this.page.pageSize = pageSize
      },
      refreshChange() {
        this.onLoad(this.page, this.query)
      },
      onLoad(page, params = {}) {
        const {
          dateTime
        } = this.query
        let values = {
          ...params,
        }
        if (dateTime) {
          values = {
            ...params,
            startTime: dateTime[0],
            endTime: dateTime[1],
            ...this.query,
          }
          values.dateTime = null
        }
        this.loading = true
        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 => {
            if (item.constructionSchemeUrls.length > 0) {
              var urls = []
              var names = item.constructionSchemeUrls.split(",")
              names.forEach(name => {
                urls.push(website.minioUrl + name)
              })
              item.constructionSchemeUrls = urls.join(",")
            }
          })
          this.loading = false
          this.selectionClear()
        })
      }
    }
  }
</script>
<style>
  .avue-upload__icon {
    line-height: 6;
  }
</style>
src/views/propertySupervision/residentSupervision.vue
New file
@@ -0,0 +1,8 @@
<template>
</template>
<script>
</script>
<style>
</style>
src/views/publicSecurity/components/communityKeyNotePersonnel.vue
New file
@@ -0,0 +1,418 @@
<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">
      <template slot-scope="scope" slot="menu">
        <el-button type="text" size="small" icon="el-icon-view" plain @click="lookDetail(scope.row)">查 看
        </el-button>
      </template>
    </avue-crud>
    <el-dialog title="" append-to-body :visible.sync="auditBasePopup" width="80%">
      <userHouseList ref="userHouseList"></userHouseList>
    </el-dialog>
  </basic-container>
</template>
<script>
  import {
    getCommunityStatisticalLabels
  } from "@/api/userHouse/list/userHouseList"
  import {
    mapGetters
  } from "vuex"
  import website from '@/config/website'
  import userHouseList from '../components/userHouseList.vue'
  export default {
    data() {
      return {
        taskType: 0,
        curRow: {},
        roleBox: false,
        form: {},
        query: {},
        loading: true,
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0,
        },
        datetime: "",
        selectionList: [],
        option: {
          height: "auto",
          calcHeight: 54,
          dialogWidth: 950,
          tip: false,
          searchShow: true,
          searchMenuSpan: 3,
          menuWidth: 280,
          // menu: false,
          border: true,
          //stripe:true,
          index: true,
          // viewBtn: true,
          editBtn: false,
          delBtn: false,
          addBtn: false,
          // selection: true,
          dialogClickModal: false,
          column: [{
              span: 12,
              label: "所属社区",
              prop: "communityName",
              align: 'center',
              searchSpan: 4,
              // search: true,
              // hide: true,
            },
            {
              span: 12,
              label: "刑释解教人员",
              prop: "number1",
              align: 'center',
              searchSpan: 4,
            },
            {
              span: 12,
              label: "肇事肇祸精神障碍患者",
              prop: "number2",
              align: 'center',
              searchSpan: 4,
            },
            {
              span: 12,
              label: "一般精神障碍患者",
              prop: "number3",
              align: 'center',
              searchSpan: 4,
            },
            {
              span: 12,
              label: "重点对象",
              prop: "number4",
              align: 'center',
              searchSpan: 4,
            },
            {
              span: 12,
              label: "取保候审",
              prop: "number5",
              align: 'center',
              searchSpan: 4,
            },
          ],
        },
        data: [],
        regionCode: '',
        auditBasePopup: false,
      }
    },
    provide() {
      return {
        placeElement: this,
      }
    },
    components: {
      userHouseList,
    },
    watch: {},
    computed: {
      ...mapGetters(["permission", "userInfo"]),
      permissionList() {
        return {
          addBtn: this.vaildData(this.permission.place_add, true),
          viewBtn: this.vaildData(this.permission.place_view, true),
          delBtn: this.vaildData(this.permission.place_delete, true),
          editBtn: this.vaildData(this.permission.place_edit, true),
        }
      },
      ids() {
        let ids = []
        this.selectionList.forEach((ele) => {
          ids.push(ele.id)
        })
        return ids.join(",")
      },
    },
    methods: {
      init(row) {
        this.regionCode = row.regionCode
        this.onLoad(this.page, this.query)
        // console.log(JSON.stringify(row))
      },
      colseDetail() {
        this.auditBasePopup = false
        this.onLoad(this.page)
      },
      lookDetail(row) {
        this.auditBasePopup = true
        var that = this
        this.$nextTick(() => {
          that.$refs.userHouseList.init(row)
        })
      },
      auditCur(row) {
        this.curAuditRow = row
        this.auditBasePopup = true
      },
      roleBoxClose() {
        this.curRow = {}
      },
      ManageTenants(item) {
        this.curRow = item
        this.roleBox = true
      },
      rowSave(row, done, loading) {
        if (row.imageUrls.length > 0) {
          var urls = []
          var split = row.imageUrls.split(",").filter(item => item != '')
          split.forEach(url => {
            var names = url.split("jczz/")
            urls.push(names[1])
          })
          row.imageUrls = urls.join(",")
        }
        let label = row.label
        if (row.smallLabel != '') {
          label = label + ',' + row.smallLabel
        }
        delete row.smallLabel
        add({
          ...row,
          label
        }).then(
          () => {
            this.onLoad(this.page)
            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(",").filter(item => item != '')
          split.forEach(url => {
            var names = url.split("jczz/")
            urls.push(names[1])
          })
          row.imageUrls = urls.join(",")
        }
        let label = row.label
        if (row.smallLabel != '') {
          label = label + ',' + row.smallLabel
        }
        delete row.smallLabel
        update({
          ...row,
          label
        }).then(
          () => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            done()
          },
          (error) => {
            window.console.log(error)
            loading()
          }
        )
      },
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
          })
          .then(() => {
            row.isDeleted = 1
            return removeTask(row)
          })
          .then(() => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
          })
      },
      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.$nextTick(() => {
          this.$refs.crud && this.$refs.crud.toggleSelection()
        })
      },
      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)) {
          // getPlace(this.form.id).then((res) => {
          //   this.form = res.data.data
          //   if (this.form.imageUrls.length) {
          //     this.form.imageUrls = this.form.imageUrls.split(",").filter(item => item != '').map(item => website
          //       .minioUrl + item).join(',')
          //   }
          //   if (this.form.placePoiLabelVOList.length) {
          //     let lebelTwo = this.form.placePoiLabelVOList.find(item => {
          //       return item.type == 2
          //     })
          //     if (lebelTwo) this.form.label = String(lebelTwo.poiCode)
          //     let lebelThree = this.form.placePoiLabelVOList.find(item => {
          //       return item.type == 3
          //     })
          //     if (lebelThree) this.form.smallLabel = String(lebelThree.poiCode)
          //   }
          //   done()
          // })
        } else {
          done()
        }
      },
      currentChange(currentPage) {
        this.page.currentPage = currentPage
        this.onLoad(this.page, this.query)
      },
      sizeChange(pageSize) {
        this.page.pageSize = pageSize
        this.onLoad(this.page, this.query)
      },
      refreshChange() {
        this.onLoad(this.page, this.query)
      },
      onLoad(page, params = {}) {
        const {
          dateTime
        } = this.query
        let values = {
          ...params,
        }
        values.regionCode = this.regionCode
        this.loading = true
        getCommunityStatisticalLabels(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 => {
            if (item.imageUrls && item.imageUrls != '' && item.imageUrls != null && item.imageUrls.length) {
              var urls = []
              var names = item.imageUrls.split(",").filter(item => item != '')
              names.forEach(name => {
                urls.push(website.minioUrl + name)
              })
              item.imageUrls = urls.join(",")
            }
          })
          this.loading = false
          this.selectionClear()
        })
      }
    }
  }
</script>
<style lang="scss" scoped>
  .avue-upload__icon {
    line-height: 6;
  }
  .cur-container-box {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
    overflow: hidden;
    .content-box {
      margin: 0 4px;
      padding: 0 16px;
      height: 0;
      flex: 1;
      overflow: hidden;
      overflow-y: auto;
    }
    .footer-btn-box {
      margin-top: 10px;
      display: flex;
      justify-content: center;
    }
  }
</style>
src/views/publicSecurity/components/userHouseList.vue
New file
@@ -0,0 +1,1122 @@
<template>
  <el-row>
    <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">
          <template slot-scope="{row, size}" slot="menu">
            <el-button :size="size" type="text" icon="el-icon-circle-plus-outline" v-if="permission.househould_manager"
              @click="manageLabel(row)">标签
            </el-button>
          </template>
          <template slot-scope="{row, size}" slot="phoneNumber">
            <el-button :size="size" type="text" @click="showStringDispose(row, 'phoneNumberflag')">
              {{ textDispose(row, 'phoneNumberflag', 'phoneNumber') }}
            </el-button>
          </template>
          <template slot-scope="{row, size}" slot="idCard">
            <el-button :size="size" type="text" @click="showStringDispose(row, 'idCardflag')"
              v-text="textDispose(row, 'idCardflag', 'idCard')"></el-button>
          </template>
          <template slot-scope="{row, size}" slot="householdLabelList">
            {{ labelDispose(row.householdLabelList) }}
          </template>
        </avue-crud>
        <el-dialog title="用户角色配置" append-to-body :visible.sync="roleBox" width="345px" center>
          <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">
            <el-button size="small" @click="roleBox = false">取 消</el-button>
            <el-button size="small" type="primary" @click="submitRole">确 定</el-button>
          </span>
        </el-dialog>
        <el-dialog title="标签管理" append-to-body :visible.sync="labelFlag" center width="600px">
          <div>
            <div class="grid-container2">
              <div class="grid-item" :style="{ backgroundColor: item2.color }" v-for="(item2, index2) in labelData"
                @click="changLabel(item2)" :key="index2">
                {{ item2.name }}
              </div>
            </div>
          </div>
        </el-dialog>
        <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">
            <el-button size="small" @click="editLabelFlge = false">取 消</el-button>
            <el-button size="small" type="primary" @click="onsubmit">确 定</el-button>
          </span>
        </el-dialog>
        <el-dialog title="用户数据导入" append-to-body :visible.sync="excelBox" width="555px">
          <avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter">
            <template slot="excelTemplate">
              <el-button size="small" type="primary" @click="handleTemplate">
                点击下载<i class="el-icon-download el-icon--right"></i>
              </el-button>
            </template>
          </avue-form>
        </el-dialog>
      </basic-container>
    </el-col>
  </el-row>
</template>
<script>
  import {
    getKeynotePersonnelPage,
    remove,
    add,
    update,
    getDetatil,
    getDetatils
  } from "@/api/userHouse/list/houseHold.js"
  import {
    removeHouseholdLabel,
    saveOrUpdateHouseholdLabel
  } from "@/api/userHouse/list/userHouseList.js"
  import {
    getLabelList,
  } from '@/api/label/label'
  import {
    exportBlob
  } from "@/api/common"
  import {
    mapGetters
  } from "vuex"
  import {
    getToken
  } from '@/util/auth'
  import {
    downloadXls,
    findParentOrCur,
  } from "@/util/util"
  import {
    dateNow
  } from "@/util/date"
  import NProgress from 'nprogress'
  import 'nprogress/nprogress.css'
  import Qs from "qs"
  export default {
    data() {
      let isCardId = function(rule, value, callback) {
        // 15位和18位身份证号码的正则表达式
        var regIdCard =
          /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/
        // 如果通过该验证,说明身份证格式正确,但准确性还需计算
        if (regIdCard.test(value)) {
          if (value.length == 18) {
            var idCardWi = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10,
              5, 8, 4, 2) // 将前17位加权因子保存在数组里
            var idCardY = new Array(1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2) // 这是除以11后,可能产生的11位余数、验证码,也保存成数组
            var idCardWiSum = 0 // 用来保存前17位各自乖以加权因子后的总和
            for (var i = 0; i < 17; i++) {
              idCardWiSum += value.substring(i, i + 1) * idCardWi[i]
            }
            var idCardMod = idCardWiSum % 11 // 计算出校验码所在数组的位置
            var idCardLast = value.substring(17) // 得到最后一位身份证号码
            // 如果等于2,则说明校验码是10,身份证号码最后一位应该是X
            if (idCardMod == 2) {
              if (idCardLast == "X" || idCardLast == "x") {
                callback()
              } else {
                callback(new Error("身份证号格式有误!"))
              }
            } else {
              // 用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
              if (idCardLast == idCardY[idCardMod]) {
                callback()
              } else {
                callback(new Error("身份证号格式有误!"))
              }
            }
          } else {
            callback()
          }
        } else {
          //alert("身份证格式不正确!");
          callback(new Error("身份证号格式有误!"))
        }
        callback()
      }
      //手机号格式校验
      let validatorPhone = function(rule, value, callback) {
        if (value) {
          if (!/^1[3456789]\d{9}$/.test(value)) {
            callback(new Error('手机号格式有误!'))
          } else {
            callback()
          }
        }
        callback()
      }
      return {
        labelData: [],
        form: {},
        search: {},
        excelBox: false,
        selectionList: [],
        labelFlag: false,
        editLabelFlge: false,
        query: {},
        loading: true,
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        },
        option: {
          labelWidth: 144,
          searchLabelWidth: 96,
          searchShow: true,
          searchMenuSpan: 3,
          menuWidth: 280,
          height: 'auto',
          calcHeight: 80,
          tip: false,
          border: true,
          index: true,
          selection: true,
          viewBtn: false,
          addBtn: false,
          delBtn: false,
          editBtn: false,
          dialogType: 'drawer',
          dialogClickModal: false,
          menuFixed: 'right',
          column: [{
              label: "与业主关系",
              prop: "relationship",
              type: "select",
              dicUrl: "/api/blade-system/dict-biz/dictionary?code=roleRelation",
              dataType: "number",
              hide: true,
              props: {
                label: "dictValue",
                value: "dictKey",
              },
              rules: [{
                required: true,
                message: "请选择与业主关系",
                trigger: "blur",
              }],
            },
            {
              width: 110,
              label: "姓名",
              prop: "name",
              searchSpan: 3,
              searchLabelWidth: 66,
              search: true,
              rules: [{
                required: true,
                message: "请输入姓名",
                trigger: "blur",
              }],
            },
            {
              hide: true,
              label: "证件类型",
              prop: "cardType",
              type: "select",
              dicUrl: "/api/blade-system/dict-biz/dictionary?code=cardType",
              dataType: "number",
              props: {
                label: "dictValue",
                value: "dictKey",
              },
            },
            {
              width: 160,
              display: true,
              label: "身份证号",
              prop: "idCard",
              search: true,
              searchSpan: 4,
              slot: true,
              rules: [{
                validator: isCardId,
                trigger: 'blur'
              }],
            },
            {
              hide: true,
              display: false,
              width: 160,
              label: "证件号码",
              prop: "cardNo",
            },
            {
              label: "出生日期",
              prop: "birthday",
              type: "date",
              format: "yyyy-MM-dd",
              valueFormat: "yyyy-MM-dd",
              hide: true,
            },
            {
              width: 60,
              label: "性别",
              prop: "gender",
              type: "select",
              dicData: [{
                  label: "男",
                  value: 1
                },
                {
                  label: "女",
                  value: 0
                },
                {
                  label: "未知",
                  value: "3"
                }
              ],
            },
            {
              width: 120,
              label: "手机号码",
              prop: "phoneNumber",
              search: true,
              searchSpan: 4,
              slot: true,
              rules: [{
                  required: true,
                  message: "请输入手机号码",
                  trigger: "blur",
                },
                {
                  validator: validatorPhone,
                  trigger: 'blur'
                }
              ],
            },
            {
              label: "居住情况",
              prop: "residentialStatus",
              type: "select",
              hide: true,
              dicUrl: "/api/blade-system/dict-biz/dictionary?code=residentialStatusType",
              dataType: "number",
              props: {
                label: "dictValue",
                value: "dictKey",
              },
            },
            {
              label: "其他联系方式",
              prop: "otherContact",
              hide: true,
              rules: [{
                validator: validatorPhone,
                trigger: 'blur'
              }],
            },
            {
              label: "是否主要联系人",
              prop: "isPrimaryContact",
              type: "select",
              dicUrl: "/api/blade-system/dict-biz/dictionary?code=primaryContactType",
              dataType: "number",
              hide: true,
              props: {
                label: "dictValue",
                value: "dictKey",
              },
            },
            // {
            // label: "关系",
            // prop: "roleType",
            // type: "select",
            // dicUrl: "/api/blade-system/dict-biz/dictionary?code=roleType",
            // dataType: "number",
            //     props: {
            //         label: "dictValue",
            //         value: "dictKey",
            //     },
            // },
            {
              width: 220,
              overHidden: true,
              label: '小区名称',
              prop: "aoiName",
              search: true,
              searchSpan: 4,
              display: false
            },
            {
              width: 110,
              label: "所属街道",
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              prop: "townStreetName",
              search: true,
              searchSpan: 4
            },
            {
              width: 156,
              overHidden: true,
              label: "所属社区",
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              prop: "neiName",
              search: true,
              searchSpan: 4
            },
            {
              width: 110,
              overHidden: true,
              label: "所属网格",
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              prop: "gridName",
            },
            {
              width: 156,
              overHidden: true,
              label: "地址",
              prop: "address",
              display: false
            },
            {
              hide: true,
              parent: false,
              width: 160,
              label: "籍贯地区",
              prop: "nativePlaceAdcode",
              type: "tree",
              typeformat(item, label, value) {
                return item.addressDetail
              },
              change: ({
                value,
                column,
                item,
                dic
              }) => {
                item.addressDetail = findParentOrCur(dic, item.id)
              },
              props: {
                label: 'name',
                value: 'id'
              },
              dicUrl: `/api/blade-system/region/getBaseTree`,
            },
            {
              hide: true,
              label: "户籍类型",
              prop: "residentType",
              type: "select",
              dicUrl: "/api/blade-system/dict-biz/dictionary?code=residentType",
              dataType: "number",
              props: {
                label: "dictValue",
                value: "dictKey",
              },
            },
            {
              hide: true,
              parent: false,
              width: 160,
              label: "户籍地区",
              prop: "residentAdcode",
              type: "tree",
              typeformat(item, label, value) {
                return item.addressDetail
              },
              change: ({
                value,
                column,
                item,
                dic
              }) => {
                item.addressDetail = findParentOrCur(dic, item.id)
              },
              props: {
                label: 'name',
                value: 'id'
              },
              dicUrl: `/api/blade-system/region/getBaseTree`,
            },
            {
              label: "户籍地址",
              prop: "hukouRegistration",
              hide: true,
            },
            {
              disabled: false,
              label: "居住地区",
              prop: "homeAdcode",
              hide: true,
              type: 'select',
              props: {
                label: 'name',
                value: 'code'
              },
              dicUrl: `/api/blade-system/region/select?code=361102`,
            },
            {
              disabled: false,
              label: "现居住地",
              prop: "currentAddress",
              hide: true,
            },
            {
              width: 210,
              overHidden: true,
              label: "标签",
              prop: "householdLabelList",
              display: false
            },
            {
              label: "民族",
              prop: "ethnicity",
              type: "select",
              hide: true,
              dicUrl: "/api/blade-system/dict-biz/dictionary?code=nationType",
              dataType: "number",
              props: {
                label: "dictValue",
                value: "dictKey",
              },
            },
            {
              label: "学历",
              prop: "education",
              type: "select",
              hide: true,
              dicUrl: "/api/blade-system/dict-biz/dictionary?code=educationType",
              dataType: "number",
              props: {
                label: "dictValue",
                value: "dictKey",
              },
            },
            {
              hide: true,
              width: 160,
              label: "职业类别",
              prop: "occupation"
            },
            {
              label: "工作单位",
              prop: "employer",
              hide: true,
            },
            {
              hide: true,
              width: 160,
              label: "工作单位地址",
              prop: "cmpyRegAddr"
            },
            {
              label: "工作状态",
              prop: "workStatus",
              type: "select",
              hide: true,
              dicUrl: "/api/blade-system/dict-biz/dictionary?code=workStatusType",
              dataType: "number",
              props: {
                label: "dictValue",
                value: "dictKey",
              },
            },
            {
              label: "婚姻状态",
              prop: "maritalStatus",
              type: "select",
              hide: true,
              dicUrl: "/api/blade-system/dict-biz/dictionary?code=marriageStatusType",
              dataType: "number",
              props: {
                label: "dictValue",
                value: "dictKey",
              },
            },
            {
              hide: true,
              width: 160,
              label: "宗教信仰",
              prop: "religiousBelief",
            },
            {
              hide: true,
              label: "健康状态",
              prop: "healthStatus",
              type: "select",
              dicUrl: "/api/blade-system/dict-biz/dictionary?code=healthStatus",
              dataType: "number",
              props: {
                label: "dictValue",
                value: "dictKey",
              },
            },
            {
              disabled: true,
              hide: true,
              width: 160,
              label: "疾病名称",
              prop: "diseaseName"
            },
            {
              hide: true,
              width: 160,
              label: "外出去向",
              prop: "goOutWhere"
            },
            {
              hide: true,
              width: 160,
              label: "外出原因",
              prop: "goOutReason"
            },
            {
              hide: true,
              label: "外出时间",
              prop: "goOutTime",
              type: "date",
              format: "yyyy-MM-dd",
              valueFormat: "yyyy-MM-dd",
              width: 160,
            },
            {
              hide: true,
              width: 160,
              label: "外出详址",
              prop: "goOutAddr"
            },
            {
              label: "车牌号",
              prop: "cardNumber",
              hide: true,
            },
          ]
        },
        data: [],
        excelForm: {},
        labelForm: {},
        labelOption: {
          submitBtn: false,
          emptyBtn: false,
          column: [{
            label: '级别',
            prop: 'color',
            type: 'radio',
            button: true,
            row: true,
            dicData: [{
              label: '撤销',
              value: '#EBEDF0'
            }, {
              label: '绿',
              value: '#30D17C'
            }, {
              label: '黄',
              value: '#FFB42B'
            }, {
              label: '红',
              value: '#EA1F1F'
            }],
            rules: [{
              required: true,
              message: "请选择",
              trigger: "blur"
            }]
          }, {
            row: true,
            label: '备注',
            prop: 'remark',
            type: 'input'
          }]
        },
        excelOption: {
          submitBtn: false,
          emptyBtn: false,
          column: [{
              label: '模板上传',
              prop: 'excelFile',
              type: 'upload',
              drag: true,
              loadText: '模板上传中,请稍等',
              span: 24,
              propsHttp: {
                res: 'data'
              },
              tip: '请上传 .xls,.xlsx 标准格式文件',
              action: "/api/blade-system/user/import-user"
            },
            {
              label: "数据覆盖",
              prop: "isCovered",
              type: "switch",
              align: "center",
              width: 80,
              dicData: [{
                  label: "否",
                  value: 0
                },
                {
                  label: "是",
                  value: 1
                }
              ],
              value: 0,
              slot: true,
              rules: [{
                required: true,
                message: "请选择是否覆盖",
                trigger: "blur"
              }]
            },
            {
              label: '模板下载',
              prop: 'excelTemplate',
              formslot: true,
              span: 24,
            }
          ]
        },
        currentLabel: {},
        currentRow: {},
        householdLabelList: [],
      }
    },
    watch: {
      'form.source': {
        handler(newData) {
          let currentAddressColumn = this.findObject(
            this.option.column,
            'currentAddress'
          )
          let homeAdcodeColumn = this.findObject(
            this.option.column,
            'homeAdcode'
          )
          if (newData == 1) {
            currentAddressColumn.disabled = true
            homeAdcodeColumn.disabled = true
          } else {
            currentAddressColumn.disabled = false
            homeAdcodeColumn.disabled = false
          }
        },
      },
      'form.cardType': {
        handler(newData) {
          let idCardColumn = this.findObject(
            this.option.column,
            'idCard'
          )
          let cardNoColumn = this.findObject(
            this.option.column,
            'cardNo'
          )
          if (newData == 111) {
            idCardColumn.display = true
            cardNoColumn.display = false
          } else {
            idCardColumn.display = false
            cardNoColumn.display = true
          }
        },
      },
      'form.healthStatus': {
        handler(newData) {
          let diseaseNameColumn = this.findObject(
            this.option.column,
            'diseaseName'
          )
          if (newData == 3) {
            diseaseNameColumn.disabled = false
          } else {
            diseaseNameColumn.disabled = true
          }
        },
      },
    },
    computed: {
      ...mapGetters(["userInfo", "permission"]),
      permissionList() {
        return {
          addBtn: this.vaildData(this.permission.household_add, false),
          viewBtn: this.vaildData(this.permission.household_view, true),
          delBtn: this.vaildData(this.permission.household_delete, true),
          editBtn: this.vaildData(this.permission.household_edit, true)
        }
      },
      textDispose() {
        return (row, flag, type) => {
          if (row[flag] || row[type] == null) {
            return row[type]
          } else {
            if (type == 'idCard') {
              return row[type].replace(/^(.{6})(?:\d+)(.{4})$/, "$1******$2")
            } else {
              return row[type].replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2")
            }
          }
        }
      },
      labelDispose() {
        return (list) => {
          return list.map(item => item.labelName).join(',')
        }
      }
    },
    mounted() {},
    methods: {
      init(row) {
        console.log(JSON.stringify(row))
        this.query.regionCode = row.communityCode
        this.onLoad(this.page, this.query)
      },
      onsubmit() {
        if (this.labelForm.color === '#EBEDF0') {
          let params = {
            householdId: this.currentRow.id,
            labelId: this.currentLabel.id
          }
          removeHouseholdLabel(params).then(res => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!"
            })
            this.editLabelFlge = false
            this.manageLabel(this.currentRow)
            this.loading = false
          })
        } else {
          this.labelForm.houseCode = this.currentRow.houseCode
          this.labelForm.householdId = this.currentRow.id
          this.labelForm.labelId = this.currentLabel.id
          this.labelForm.lableType = 1
          saveOrUpdateHouseholdLabel(this.labelForm).then(res => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!"
            })
            this.editLabelFlge = false
            this.manageLabel(this.currentRow)
            this.loading = false
          })
        }
      },
      changLabel(item) {
        this.editLabelFlge = true
        this.currentLabel = item
        this.labelForm.color = item.color
        this.labelForm.remark = item.remark
      },
      manageLabel(item) {
        this.loading = true
        this.currentRow = item
        this.labelFlag = true
        let params = {
          parentId: 103
        }
        // 查询标签
        getLabelList(Object.assign(params)).then(res => {
          const data = res.data.data
          // this.labelData = data;
          // 查询详情
          getDetatils(item.id).then(res => {
            this.householdLabelList = res.data.data.householdLabelList
            // 将细类放到一起
            data.forEach(e => {
              e.children.forEach(f => {
                if (this.householdLabelList.length > 0) {
                  this.householdLabelList.forEach(h => {
                    if (Number(f.id) == h.labelId) {
                      f['color'] = h.color
                      f['remark'] = h.remark
                    }
                  })
                }
              })
            })
            this.labelData = data
            this.loading = false
          })
        })
      },
      rowSave(row, done, loading) {
        add(row).then(() => {
          this.initFlag = false
          this.onLoad(this.page)
          this.$message({
            type: "success",
            message: "操作成功!"
          })
          done()
        }, error => {
          window.console.log(error)
          loading()
        })
      },
      rowUpdate(row, index, done, loading) {
        update(row).then(() => {
          this.initFlag = false
          this.onLoad(this.page)
          this.$message({
            type: "success",
            message: "操作成功!"
          })
          done()
        }, error => {
          window.console.log(error)
          loading()
        })
      },
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          })
          .then(() => {
            return remove(row.id)
          })
          .then(() => {
            this.onLoad(this.page)
            this.$message({
              type: "success",
              message: "操作成功!"
            })
          })
      },
      searchReset() {
        this.query = {}
        this.treeDeptId = ''
        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();
      },
      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()
          })
      },
      handleImport() {
        this.excelBox = true
      },
      uploadAfter(res, done, loading, column) {
        this.excelBox = false
        this.refreshChange()
        done()
      },
      handleExport() {
        this.$confirm("是否导出住户数据?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }).then(() => {
          NProgress.start()
          var data = {
            ...this.query
          }
          data = Qs.stringify(data)
          exportBlob(
            `/api/blade-household/household/export-household?${this.website.tokenHeader}=${getToken()}&` + data
          ).then(res => {
            downloadXls(res.data, `住户数据表${dateNow()}.xlsx`)
            NProgress.done()
          })
        })
      },
      handleTemplate() {
        exportBlob(`/api/blade-system/user/export-template?${this.website.tokenHeader}=${getToken()}`).then(res => {
          downloadXls(res.data, "住户数据模板.xlsx")
        })
      },
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getDetatils(this.form.id).then(res => {
            this.form = res.data.data
            done()
          })
        }
        this.initFlag = true
      },
      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
        getKeynotePersonnelPage(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
          const data = {
            ...res.data.data,
            records: res.data.data.records.map(item => {
              return {
                ...item,
                'phoneNumberflag': false,
                'idCardflag': false
              }
            })
          }
          this.page.total = data.total
          this.data = data.records
          this.loading = false
          this.selectionClear()
        })
      },
      showStringDispose(row, type) {
        row[type] = !row[type]
      }
    }
  }
</script>
<style>
  .box {
    height: 800px;
  }
  .grid-container2 {
    /* display: grid;
    grid-template-columns: auto auto auto auto;
    grid-gap: 10px; */
    display: flex;
    flex-wrap: wrap;
    padding-bottom: 20px;
  }
  .grid-item {
    padding: 8px 14px;
    border: 1px solid #dcdfe6;
    margin-right: 10px;
    margin-bottom: 10px;
    border-radius: 20px;
  }
  .grid-item:hover {
    background-color: #e8f4ff;
    color: #017BFC;
    cursor: pointer;
  }
  .el-scrollbar {
    height: 100%;
  }
  .box .el-scrollbar__wrap {
    overflow: scroll;
  }
</style>
src/views/publicSecurity/keynotePersonnelManage.vue
@@ -6,22 +6,13 @@
      @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
      <template slot-scope="scope" slot="menu">
        <el-button type="text" size="small" icon="el-icon-view" plain @click="lookDetail(scope.row,0)">查 看
        </el-button>
        <el-button type="text" size="small" icon="el-icon-s-check" v-if="scope.row.status == 1" plain
          @click="lookDetail(scope.row,1)">审 核
        </el-button>
        <el-button type="text" size="small" icon="el-icon-delete" plain @click="rowDel(scope.row)">删 除
        <el-button type="text" size="small" icon="el-icon-view" plain @click="lookDetail(scope.row)">查 看
        </el-button>
      </template>
    </avue-crud>
    <el-dialog title="" append-to-body :visible.sync="auditBasePopup" width="60%">
      <campusReporting @colseDetail="colseDetail" v-if="taskType == 6" ref="campusReporting"></campusReporting>
      <hotelReporting @colseDetail="colseDetail" v-if="taskType == 2" ref="hotelReporting"></hotelReporting>
      <labelReporting @colseDetail="colseDetail" v-if="taskType == 3" ref="labelReporting"></labelReporting>
    <el-dialog title="" append-to-body :visible.sync="auditBasePopup" width="80%">
      <communityKeyNotePersonnel ref="communityKeyNotePersonnel"></communityKeyNotePersonnel>
    </el-dialog>
  </basic-container>
</template>
@@ -29,23 +20,16 @@
<script>
  import {
    statisticalLabels
  } from "/src/api/userHouse/list/userHouseList"
  } from "@/api/userHouse/list/userHouseList"
  // import {
  //   getList,
  //   removeTask,
  //   update,
  //   add,
  // } from "@/api/task/task"
  import {
    mapGetters
  } from "vuex"
  import communityKeyNotePersonnel from './components/communityKeyNotePersonnel.vue'
  import website from '@/config/website'
  import campusReporting from './components/campusReporting'
  import hotelReporting from './components/hotelReporting'
  import labelReporting from './components/labelReporting'
  export default {
    data() {
@@ -80,161 +64,61 @@
          // viewBtn: true,
          editBtn: false,
          delBtn: false,
          selection: true,
          addBtn: false,
          // selection: true,
          dialogClickModal: false,
          column: [
          column: [{
              span: 12,
              label: "所属街道",
              prop: "regionName",
              searchSpan: 4,
              align: 'center',
              // search: true,
              // hide: true,
            },
            // {
            //   span: 12,
            //   label: "场所名称",
            //   prop: "name",
            //   label: "所属社区",
            //   prop: "communityName",
            //   align: 'center',
            //   searchSpan: 4,
            //   search: true,
            //   // hide: true,
            // },
            {
              span: 12,
              label: "社区",
              prop: "communityName",
              label: "刑释解教人员",
              prop: "number1",
              align: 'center',
              searchSpan: 4,
              search: true,
              hide: true,
            },
            {
              span: 12,
              label: "小区",
              prop: "districtName",
              label: "肇事肇祸精神障碍患者",
              prop: "number2",
              align: 'center',
              searchSpan: 4,
              search: true,
              hide: true,
            },
            {
              span: 12,
              label: "名称",
              prop: "realName",
              label: "一般精神障碍患者",
              prop: "number3",
              align: 'center',
              searchSpan: 4,
              search: true,
            }, {
              span: 12,
              label: "电话",
              prop: "phone",
              searchSpan: 4,
              search: true,
            }, {
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              label: '类型',
              prop: 'reportType',
              type: 'radio',
              slot: true,
              search: true,
              searchSpan: 3,
              dicData: [{
                label: '旅馆安全',
                value: 2
              }, {
                label: '打金店',
                value: 3
              }, {
                label: '二手手机维修',
                value: 4
              }, {
                label: '二手车交易',
                value: 5
              }, {
                label: '校园安全',
                value: 6
              }]
            },
            {
              addDisplay: false,
              editDisplay: false,
              viewDisplay: false,
              label: '审核状态',
              prop: 'status',
              type: 'radio',
              slot: true,
              dicData: [{
                label: '待审核',
                value: 1
              }, {
                label: '已审核',
                value: 2
              }, {
                label: '未通过',
                value: 3
              }]
            }, {
              label: "创建时间",
              prop: "createTime",
              searchSpan: 4,
            }, {
              label: "所属街道",
              // hide: true,
              // search: true,
              parent: false,
              searchSpan: 4,
              prop: "streetCode",
              type: "tree",
              dicUrl: "/api/blade-system/region/getTownTree",
              props: {
                label: "name",
                value: "id"
              },
              rules: [{
                required: true,
                message: "请选择所属街道",
                trigger: "blur",
              }, ],
            }, {
              // hide: true,
              // search: true,
              parent: false,
              searchSpan: 4,
              label: "所属社区",
              prop: "neiCode",
              // search: false,
              type: "tree",
              dicUrl: "/api/blade-system/region/tree",
              props: {
                label: "name",
                value: "id",
              },
              rules: [{
                required: true,
                message: "请选择所属社区",
                trigger: "blur",
              }, ],
            }, {
              // hide: true,
              // search: true,
              parent: false,
              searchSpan: 4,
              label: "小区",
              prop: "aoiCode",
              // search: false,
              type: "tree",
              dicUrl: "/api/blade-district/district/getDistrictTree",
              props: {
                label: "name",
                value: "aoiCode"
              },
              rules: [{
                required: true,
                message: "请选择小区",
                trigger: "blur",
              }, ],
            }, {
              span: 12,
              label: "地址",
              prop: "addressName",
              label: "重点对象",
              prop: "number4",
              align: 'center',
              searchSpan: 4,
              // search: true,
              rules: [{
                required: true,
                message: "请输入场所名称",
                trigger: "blur",
              }, ],
            },
            {
              span: 12,
              label: "取保候审",
              prop: "number5",
              align: 'center',
              searchSpan: 4,
            },
          ],
        },
@@ -251,9 +135,9 @@
    },
    components: {
      campusReporting,
      hotelReporting,
      labelReporting,
      communityKeyNotePersonnel,
      // hotelReporting,
      // labelReporting,
    },
    watch: {},
@@ -284,28 +168,15 @@
        this.onLoad(this.page)
      },
      lookDetail(row, applyType) {
      lookDetail(row) {
        this.auditBasePopup = true
        var that = this
        if (row.reportType == 6) {
          this.taskType = 6
          this.$nextTick(() => {
            that.$refs.campusReporting.init(row, applyType)
          that.$refs.communityKeyNotePersonnel.init(row)
          })
        }
        if (row.reportType == 2) {
          this.taskType = 2
          this.$nextTick(() => {
            that.$refs.hotelReporting.init(row, applyType)
          })
        }
        if (row.reportType == 3 || row.reportType == 4 || row.reportType == 5) {
          this.taskType = 3
          this.$nextTick(() => {
            that.$refs.labelReporting.init(row, applyType)
          })
        }
      },
      auditCur(row) {
        this.curAuditRow = row
        this.auditBasePopup = true
src/views/publicSecurity/keynotePlaceManage.vue
@@ -1,10 +1,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-scope="{row, size}" slot="menu">
                <el-button type="text" :size="size" icon="el-icon-view" plain @click="lookDetail(row, 0)">查 看
@@ -133,12 +132,10 @@
                    prop: "phone",
                    searchSpan: 4,
                    search: true,
                    rules: [
                        {
              rules: [{
                            validator: validatorPhone,
                            trigger: 'blur'
                        }
                    ],
              }],
                }, {
                    overHidee: true,
                    span: 12,
src/views/wel/index.vue
@@ -55,7 +55,7 @@
            this.$router.push({ path: "/cGovernance/gridWorkLog" })
        },
        down6 () {
            window.open('http://srgdjczzxtpt.com:2181/databoard?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJmdHlzIiwiYXVkIjoiYWxsIiwibmJmIjoxNzAzMDQyNjAzLCJpc0ZyZWUiOnRydWUsImV4dHJhIjpudWxsLCJpc3MiOiJzZm1hcC51bmlmb3JtLmF1dGgiLCJleHAiOjE3MDMwNTM0MDMsImlhdCI6MTcwMzA0MjYwMywianRpIjoiNmVjZmRiNjdkZTllNDJhNjhiM2FmODhhODRhNWE3NjEifQ.OwN6zzceyBE_dwCx6yTAuth1pguBKkvlcls6M8_iHkY')
            window.open('http://srgdjczzxtpt.com:2181/databoard-server/uniformLogin?passwordlessToken=bmtMNkFYcjh1dk50UVlUYXpLV2xHUDZpdGU0d1ZqMStYV01aVzlVMGsyVT0=')
        },
    },
    mouted () { },
src/views/work/process/maintenanceFundApply/edit.vue
@@ -3,8 +3,6 @@
    <el-form ref="form" :model="form" :rules="rules" label-width="80px">
      <el-row type="flex" class="row-bg" justify="end">
        <el-form-item>
          <el-button type="primary" @click="handleAgree">重新提交</el-button>
          <el-button type="danger" @click="handleDisagree">关闭申请</el-button>
          <!-- <el-button @click="handleCancel">关闭</el-button> -->
        </el-form-item>
      </el-row>
@@ -52,6 +50,16 @@
        </el-row>
      </el-card>
    </el-form>
    <div style="text-align: center;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 10px;">
      <el-button type="primary" @click="handleAgree">重新提交</el-button>
      <el-button type="danger" @click="handleDisagree">关闭申请</el-button>
    </div>
  </basic-container>
</template>