Browse Source

住户管理

Shannon_mu 3 years ago
parent
commit
ee083be19d

+ 0 - 2
operationSupport/src/assets/common.styl

@@ -163,8 +163,6 @@ input[type="number"]
 	z-index: 1998 !important
 // 搜索栏间隔
 .search
-	font-size: 0
-	padding: 0 vw(15)
 	.search-btn,
 	.search-input
 		margin-right: vw(20)

BIN
operationSupport/src/assets/img/ownerManagement/bg_card@2x.png


BIN
operationSupport/src/assets/img/ownerManagement/btn_add@2x.png


BIN
operationSupport/src/assets/img/ownerManagement/icon_building@2x.png


BIN
operationSupport/src/assets/img/ownerManagement/icon_car@2x.png


+ 10 - 1
operationSupport/src/router/dynamicMuen.js

@@ -21,7 +21,7 @@ const staticMuen = [
     component: () => import(/* webpackChunkName: "404" */ '@views/communityManagement'),
     meta: { title: '社区管理' },
 
-  }, 
+  },
   {
     path: '/communityManagement/pageJump/AddOrEdit',
     meta: { title: '添加社区' },
@@ -67,6 +67,15 @@ const staticMuen = [
     component: () => import(/* webpackChunkName: "404" */ '@views/parkingLotAdministration/pageJump/partitionManagement.vue'),
     meta: { title: '车库分区管理' }
   }
+
+
+  ,
+  {
+    path: '/ownerManagement/add',
+    component: () => import(/* webpackChunkName: "404" */ '@views/ownerManagement/stepPage/add.vue'),
+    meta: { title: '编辑住户' }
+  }
+
 ]
 //路由格式
 // 自定义路由文件

+ 8 - 22
operationSupport/src/views/deviceManagement/index.vue

@@ -2,7 +2,7 @@
     <div class="main">
         <div class="search">
             <el-input placeholder="请输入用户名或手机号" class="search-input" clearable v-model="mixins_query.contion"></el-input>
-            <el-select slot="status" v-model="mixins_query.deviceStatus">
+            <el-select slot="status" v-model="mixins_query.deviceStatus" clearable>
                 <el-option v-for="(item, index) in deviceStatus" :key="index" :label="item.label" :value="item.status">{{
                     item.label
                 }}</el-option>
@@ -41,13 +41,7 @@ export default {
     data() {
         return {
             selectRow: [],
-            // 数据默认字段
-            defaultProps: {
-                // parent: 'parentId', // 父级唯一标识
-                value: 'id', // 唯一标识
-                label: 'orgName', // 标签显示
-                children: 'orgs' // 子级
-            }, // 数据列表
+            // 数据列表
             deviceStatus: [
                 {
                     status: 1,
@@ -70,10 +64,6 @@ export default {
                     label: '报废'
                 }
             ],
-            organListCompany: [],
-            organListdepartment: [],
-            allRoleId: [],
-            allUserType: [],
             cols: [
                 {
                     label: '所属小区',
@@ -81,7 +71,7 @@ export default {
                 },
                 {
                     label: '设备类型',
-                    prop: 'iotDeviceId'
+                    prop: 'deviceTypeName'
                 },
                 {
                     label: '设备编号',
@@ -103,15 +93,15 @@ export default {
                     label: '设备状态',
                     prop: 'deviceStatus',
                     format(val) {
-                        if (val === '1') {
+                        if (val == '1') {
                             return '正常';
-                        } else if (val === '2') {
+                        } else if (val == '2') {
                             return '告警';
-                        } else if (val === '3') {
+                        } else if (val == '3') {
                             return '离线';
-                        } else if (val === '4') {
+                        } else if (val == '4') {
                             return '未启用';
-                        } else if (val === '5') {
+                        } else if (val == '5') {
                             return '报废';
                         }
                     }
@@ -196,10 +186,6 @@ export default {
                         data,
                         todo,
                         productOptions: this.productOptions,
-                        // organListCompany: this.organListCompany,
-                        // organListdepartment: this.organListdepartment,
-                        // allRoleId: this.allRoleId,
-                        // allUserType: this.allUserType,
                         callback: resolve
                     },
                     title: title

+ 38 - 54
operationSupport/src/views/deviceManagement/indexFacilities.vue

@@ -1,12 +1,15 @@
 <template>
     <div class="main">
         <div class="search">
-            <el-input placeholder="请输入用户名或手机号" class="search-input" clearable v-model="mixins_query.contion"></el-input>
-            <el-select slot="status" v-model="mixins_query.deviceStatus">
+            <el-input placeholder="设施名称" class="search-input" clearable v-model="mixins_query.name"></el-input>
+            <el-select v-model="mixins_query.status" clearable>
                 <el-option v-for="(item, index) in deviceStatus" :key="index" :label="item.label" :value="item.status">{{
                     item.label
                 }}</el-option>
             </el-select>
+            <el-select clearable class="servertype-serch" v-model="mixins_query.typeId" placeholder="请选择设施">
+                <el-option v-for="item in TypeOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
+            </el-select>
             <el-button type="primary" class="search-btn" @click="mixins_search" icon="el-icon-search">查询 </el-button>
             <div class="search-icon">
                 <i class="iconfont" @click="deluserbyidsFn" v-txt-tip data-txt="删除">&#xe63b;</i>
@@ -39,60 +42,47 @@ import list from '@utils/list.js';
 export default {
     mixins: [list],
     data() {
+        const _this = this;
         return {
             selectRow: [],
-            // 数据默认字段
-            defaultProps: {
-                // parent: 'parentId', // 父级唯一标识
-                value: 'id', // 唯一标识
-                label: 'orgName', // 标签显示
-                children: 'orgs' // 子级
-            }, // 数据列表
             deviceStatus: [
                 {
                     status: 1,
                     label: '正常'
                 },
                 {
-                    status: 2,
-                    label: '告警'
-                },
-                {
-                    status: 3,
-                    label: '离线'
-                },
-                {
-                    status: 4,
-                    label: '未启用'
-                },
-                {
-                    status: 5,
-                    label: '报废'
+                    status: 0,
+                    label: '删除'
                 }
             ],
-            organListCompany: [],
-            organListdepartment: [],
-            allRoleId: [],
-            allUserType: [],
             cols: [
                 {
                     label: '所属小区',
                     prop: 'communityId'
                 },
                 {
-                    label: '设备类型',
-                    prop: 'iotDeviceId'
+                    label: '设施类型',
+                    prop: 'typeId',
+                    format(val) {
+                        let status = '';
+                        _this.TypeOptions.forEach((item) => {
+                            if (item.id == val) {
+                                return (status = item.name);
+                            }
+                        });
+                        return status;
+                    }
                 },
                 {
-                    label: '设备编号',
-                    prop: 'deviceNo'
+                    label: '设编号',
+                    prop: 'facilityNo'
                 },
                 {
-                    label: '设备名称',
-                    prop: 'deviceName'
+                    label: '设名称',
+                    prop: 'name'
                 },
                 {
-                    label: '设地址',
+                    label: '设地址',
                     prop: 'address'
                 },
                 {
@@ -100,25 +90,19 @@ export default {
                     prop: 'createDate'
                 },
                 {
-                    label: '设状态',
-                    prop: 'deviceStatus',
+                    label: '设状态',
+                    prop: 'facilityStatus',
                     format(val) {
-                        if (val === '1') {
+                        if (val == '1') {
                             return '正常';
-                        } else if (val === '2') {
-                            return '告警';
-                        } else if (val === '3') {
-                            return '离线';
-                        } else if (val === '4') {
-                            return '未启用';
-                        } else if (val === '5') {
+                        } else if (val == '0') {
                             return '报废';
                         }
                     }
                 },
                 {
-                    label: '二维码',
-                    prop: 'deviceQrcode'
+                    label: '设施二维码',
+                    prop: 'facilityQrcode'
                 },
                 {
                     label: '操作',
@@ -127,24 +111,24 @@ export default {
                 }
             ],
             mixins_post: 'post',
-            productOptions: []
+            TypeOptions: []
         };
     },
     created() {
-        this.mixins_dataUrl = '/device/page';
+        this.mixins_dataUrl = '/facility/page';
         this.mixins_query = {};
         this.mixins_search();
     },
     mounted() {
         this.getorgTree();
-        this.getProductOptions();
+        this.getTypeOptions();
     },
     methods: {
         getorgTree() {},
         deluserbyidFn(id) {
             this.$msgBox(`删除`, '删除后将无法恢复,请问是否继续?')
                 .then(() => {
-                    this.$http.get('/device/delete', { id: id }).then(({ status, data, msg }) => {
+                    this.$http.get('/facility/delete', { id: id }).then(({ status, data, msg }) => {
                         if (0 === status) {
                             this.$message({
                                 type: 'success',
@@ -195,7 +179,7 @@ export default {
                     props: {
                         data,
                         todo,
-                        productOptions: this.productOptions,
+                        TypeOptions: this.TypeOptions,
                         callback: resolve
                     },
                     title: title
@@ -207,9 +191,9 @@ export default {
         selectionChange(val) {
             this.selectRow = val;
         },
-        getProductOptions() {
-            this.$http.postForm('/devicetype/selectList', { name: '' }).then((data) => {
-                this.productOptions = data;
+        getTypeOptions() {
+            this.$http.get('/facilityType/selectList').then((data) => {
+                this.TypeOptions = data.data;
             });
         }
     }

+ 11 - 94
operationSupport/src/views/deviceManagement/indexType.vue

@@ -1,12 +1,7 @@
 <template>
     <div class="main">
         <div class="search">
-            <el-input placeholder="请输入用户名或手机号" class="search-input" clearable v-model="mixins_query.contion"></el-input>
-            <el-select slot="status" v-model="mixins_query.deviceStatus">
-                <el-option v-for="(item, index) in deviceStatus" :key="index" :label="item.label" :value="item.status">{{
-                    item.label
-                }}</el-option>
-            </el-select>
+            <el-input placeholder="设施类型" class="search-input" clearable v-model="mixins_query.name"></el-input>
             <el-button type="primary" class="search-btn" @click="mixins_search" icon="el-icon-search">查询 </el-button>
             <div class="search-icon">
                 <i class="iconfont" @click="deluserbyidsFn" v-txt-tip data-txt="删除">&#xe63b;</i>
@@ -42,83 +37,18 @@ export default {
         return {
             selectRow: [],
             // 数据默认字段
-            defaultProps: {
-                // parent: 'parentId', // 父级唯一标识
-                value: 'id', // 唯一标识
-                label: 'orgName', // 标签显示
-                children: 'orgs' // 子级
-            }, // 数据列表
-            deviceStatus: [
-                {
-                    status: 1,
-                    label: '正常'
-                },
-                {
-                    status: 2,
-                    label: '告警'
-                },
-                {
-                    status: 3,
-                    label: '离线'
-                },
-                {
-                    status: 4,
-                    label: '未启用'
-                },
-                {
-                    status: 5,
-                    label: '报废'
-                }
-            ],
-            organListCompany: [],
-            organListdepartment: [],
-            allRoleId: [],
-            allUserType: [],
             cols: [
                 {
-                    label: '所属小区',
-                    prop: 'communityId'
-                },
-                {
-                    label: '设备类型',
-                    prop: 'iotDeviceId'
-                },
-                {
-                    label: '设备编号',
-                    prop: 'deviceNo'
-                },
-                {
-                    label: '设备名称',
-                    prop: 'deviceName'
-                },
-                {
-                    label: '设备地址',
-                    prop: 'address'
+                    label: '类型名称',
+                    prop: 'name'
                 },
                 {
-                    label: '添加日期',
+                    label: '添加时间',
                     prop: 'createDate'
                 },
                 {
-                    label: '设备状态',
-                    prop: 'deviceStatus',
-                    format(val) {
-                        if (val === '1') {
-                            return '正常';
-                        } else if (val === '2') {
-                            return '告警';
-                        } else if (val === '3') {
-                            return '离线';
-                        } else if (val === '4') {
-                            return '未启用';
-                        } else if (val === '5') {
-                            return '报废';
-                        }
-                    }
-                },
-                {
-                    label: '二维码',
-                    prop: 'deviceQrcode'
+                    label: '备注',
+                    prop: 'remark'
                 },
                 {
                     label: '操作',
@@ -126,25 +56,23 @@ export default {
                     slot: 'opt'
                 }
             ],
-            mixins_post: 'post',
-            productOptions: []
+            mixins_post: 'post'
         };
     },
     created() {
-        this.mixins_dataUrl = '/device/page';
+        this.mixins_dataUrl = '/facilityType/page';
         this.mixins_query = {};
         this.mixins_search();
     },
     mounted() {
         this.getorgTree();
-        this.getProductOptions();
     },
     methods: {
         getorgTree() {},
         deluserbyidFn(id) {
             this.$msgBox(`删除`, '删除后将无法恢复,请问是否继续?')
                 .then(() => {
-                    this.$http.get('/device/delete', { id: id }).then(({ status, data, msg }) => {
+                    this.$http.get('/facilityType/delete', { id: id }).then(({ status, data, msg }) => {
                         if (0 === status) {
                             this.$message({
                                 type: 'success',
@@ -182,11 +110,10 @@ export default {
         },
         addOrEdit(todo, data = {}) {
             new Promise((resolve) => {
-                let title = '添加设备管理';
+                let title = '添加设施类型';
                 if (todo == 'add') {
-                    // title = this.mixins_query.alarmCategory == '2' ? '添加离线规则' : '添加告警';
                 } else {
-                    title = '修改设备管理';
+                    title = '修改设施类型';
                 }
                 this.$store.dispatch('addPopup', {
                     url: '/deviceManagement/popups/addType.vue',
@@ -195,11 +122,6 @@ export default {
                     props: {
                         data,
                         todo,
-                        productOptions: this.productOptions,
-                        // organListCompany: this.organListCompany,
-                        // organListdepartment: this.organListdepartment,
-                        // allRoleId: this.allRoleId,
-                        // allUserType: this.allUserType,
                         callback: resolve
                     },
                     title: title
@@ -210,11 +132,6 @@ export default {
         },
         selectionChange(val) {
             this.selectRow = val;
-        },
-        getProductOptions() {
-            this.$http.postForm('/devicetype/selectList', { name: '' }).then((data) => {
-                this.productOptions = data;
-            });
         }
     }
 };

+ 30 - 21
operationSupport/src/views/deviceManagement/popups/addDeviceManagement.vue

@@ -21,7 +21,11 @@ export default {
         return {
             formData: {
                 productId: '',
-                communityId: 20
+                communityId: 19,
+                deviceNo: '',
+                deviceName: '',
+                address: '',
+                // deviceStatus: 1
             },
             formCols: [
                 [
@@ -73,31 +77,36 @@ export default {
     methods: {
         productChange(va) {},
         submit() {
-            let url = '/device/add';
-            if (this.params.todo == 'edit') {
-                url = '/device/update';
-            }
-            let params = JSON.parse(JSON.stringify(this.formData));
-            params.productId = _.last(params.productId);
-            this.$http
-                .post(url, params)
-                .then(({ status, msg }) => {
-                    if (status == 0) {
-                        this.$message.success(msg);
-                        this.params.callback();
-                        this.$emit('close');
-                    }
-                    this.$loading.close();
-                })
-                .catch(() => {
-                    this.$loading.close();
-                });
+            new Promise((resolve) => {
+                this.$refs.form.validate(resolve);
+            }).then(() => {
+                var loading = this.$loading();
+                let url = '/device/add';
+                if (this.params.todo == 'edit') {
+                    url = '/device/update';
+                }
+                let params = JSON.parse(JSON.stringify(this.formData));
+                params.productId = _.last(params.productId);
+                this.$http
+                    .post(url, params)
+                    .then(({ status, msg }) => {
+                        if (status == 0) {
+                            this.$message.success(msg);
+                            this.params.callback();
+                            this.$emit('close');
+                        }
+                        loading.close();
+                    })
+                    .catch(() => {
+                        loading.close();
+                    });
+            });
         }
     },
     created() {
         this.productOptions = this.params.productOptions;
         if (this.params.todo == 'edit') {
-            this.formData = this.params.data;
+            this.formData = JSON.parse(JSON.stringify(this.params.data));
         }
     }
 };

+ 48 - 50
operationSupport/src/views/deviceManagement/popups/addFacilities.vue

@@ -1,15 +1,10 @@
 <template>
     <div class="alert-body__main_content">
         <zz-form :cols="formCols" :data="formData" :rules="formRules" :errors="formErrors" labelWidth="120" ref="form">
-            <template slot="productId">
-                <el-cascader
-                    v-model="formData.productId"
-                    :options="productOptions"
-                    :props="defaultProps"
-                    clearable
-                    placeholder="设备类型"
-                    @change="productChange($event)"
-                ></el-cascader>
+            <template slot="typeId">
+                <el-select clearable class="servertype-serch" v-model="formData.typeId" placeholder="请选择设施">
+                    <el-option v-for="item in TypeOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                </el-select>
             </template>
         </zz-form>
     </div>
@@ -20,8 +15,12 @@ export default {
     data() {
         return {
             formData: {
-                productId: '',
-                communityId: 20
+                typeId: '',
+                facilityNo: '',
+                name: '',
+                address: '',
+                communityId: 19
+                // facilityStatus: 1
             },
             formCols: [
                 [
@@ -31,20 +30,20 @@ export default {
                         slot: 'communityId'
                     },
                     {
-                        label: '设类型',
-                        prop: 'productId',
-                        slot: 'productId'
+                        label: '设类型',
+                        prop: 'typeId',
+                        slot: 'typeId'
                     },
                     {
-                        label: '设编号',
-                        prop: 'deviceNo',
-                        slot: 'deviceNo',
+                        label: '设编号',
+                        prop: 'facilityNo',
+                        slot: 'facilityNo',
                         input: true
                     },
                     {
-                        label: '设名称',
-                        prop: 'deviceName',
-                        slot: 'deviceName',
+                        label: '设名称',
+                        prop: 'name',
+                        slot: 'name',
                         input: true
                     },
                     {
@@ -57,47 +56,46 @@ export default {
             ],
             formRules: {
                 communityId: [this.$valid.selectRequired('选择小区')],
-                productId: [this.$valid.selectRequired('设备类型')],
-                deviceNo: [this.$valid.selectRequired('设备编号')],
-                deviceName: [this.$valid.selectRequired('设备名称')]
+                typeId: [this.$valid.selectRequired('设施类型')],
+                facilityNo: [this.$valid.selectRequired('设施编号')],
+                name: [this.$valid.selectRequired('设施名称')]
             },
             formErrors: {},
-            productOptions: [],
-            defaultProps: {
-                value: 'id', // 唯一标识
-                label: 'label', // 标签显示
-                children: 'children' // 子级
-            }
+            TypeOptions: []
         };
     },
     methods: {
         productChange(va) {},
         submit() {
-            let url = '/device/add';
-            if (this.params.todo == 'edit') {
-                url = '/device/update';
-            }
-            let params = JSON.parse(JSON.stringify(this.formData));
-            params.productId = _.last(params.productId);
-            this.$http
-                .post(url, params)
-                .then(({ status, msg }) => {
-                    if (status == 0) {
-                        this.$message.success(msg);
-                        this.params.callback();
-                        this.$emit('close');
-                    }
-                    this.$loading.close();
-                })
-                .catch(() => {
-                    this.$loading.close();
-                });
+            new Promise((resolve) => {
+                this.$refs.form.validate(resolve);
+            }).then(() => {
+                var loading = this.$loading();
+                let url = '/facility/add';
+                if (this.params.todo == 'edit') {
+                    url = '/facility/update';
+                }
+                let params = JSON.parse(JSON.stringify(this.formData));
+                this.$http
+                    .post(url, params)
+                    .then(({ status, msg }) => {
+                        if (status == 0) {
+                            this.$message.success(msg);
+                            this.params.callback();
+                            this.$emit('close');
+                        }
+                        loading.close();
+                    })
+                    .catch(() => {
+                        loading.close();
+                    });
+            });
         }
     },
     created() {
-        this.productOptions = this.params.productOptions;
+        this.TypeOptions = this.params.TypeOptions;
         if (this.params.todo == 'edit') {
-            this.formData = this.params.data;
+            this.formData = JSON.parse(JSON.stringify(this.params.data));
         }
     }
 };

+ 35 - 61
operationSupport/src/views/deviceManagement/popups/addType.vue

@@ -1,17 +1,6 @@
 <template>
     <div class="alert-body__main_content">
-        <zz-form :cols="formCols" :data="formData" :rules="formRules" :errors="formErrors" labelWidth="120" ref="form">
-            <template slot="productId">
-                <el-cascader
-                    v-model="formData.productId"
-                    :options="productOptions"
-                    :props="defaultProps"
-                    clearable
-                    placeholder="设备类型"
-                    @change="productChange($event)"
-                ></el-cascader>
-            </template>
-        </zz-form>
+        <zz-form :cols="formCols" :data="formData" :rules="formRules" :errors="formErrors" labelWidth="120" ref="form"> </zz-form>
     </div>
 </template>
 <script>
@@ -20,46 +9,27 @@ export default {
     data() {
         return {
             formData: {
-                productId: '',
-                communityId: 20
+                name: '',
+                remark: ''
             },
             formCols: [
                 [
                     {
-                        label: '选择小区',
-                        prop: 'communityId',
-                        slot: 'communityId'
-                    },
-                    {
-                        label: '设备类型',
-                        prop: 'productId',
-                        slot: 'productId'
-                    },
-                    {
-                        label: '设备编号',
-                        prop: 'deviceNo',
-                        slot: 'deviceNo',
-                        input: true
-                    },
-                    {
-                        label: '设备名称',
-                        prop: 'deviceName',
-                        slot: 'deviceName',
+                        label: '类型名称',
+                        prop: 'name',
+                        slot: 'name',
                         input: true
                     },
                     {
-                        label: '地址',
-                        prop: 'address',
-                        slot: 'address',
-                        input: true
+                        label: '备注',
+                        prop: 'remark',
+                        slot: 'remark',
+                        textarea: true
                     }
                 ]
             ],
             formRules: {
-                communityId: [this.$valid.selectRequired('选择小区')],
-                productId: [this.$valid.selectRequired('设备类型')],
-                deviceNo: [this.$valid.selectRequired('设备编号')],
-                deviceName: [this.$valid.selectRequired('设备名称')]
+                name: [this.$valid.selectRequired('类型名称')]
             },
             formErrors: {},
             productOptions: [],
@@ -73,31 +43,35 @@ export default {
     methods: {
         productChange(va) {},
         submit() {
-            let url = '/device/add';
-            if (this.params.todo == 'edit') {
-                url = '/device/update';
-            }
-            let params = JSON.parse(JSON.stringify(this.formData));
-            params.productId = _.last(params.productId);
-            this.$http
-                .post(url, params)
-                .then(({ status, msg }) => {
-                    if (status == 0) {
-                        this.$message.success(msg);
-                        this.params.callback();
-                        this.$emit('close');
-                    }
-                    this.$loading.close();
-                })
-                .catch(() => {
-                    this.$loading.close();
-                });
+            new Promise((resolve) => {
+                this.$refs.form.validate(resolve);
+            }).then(() => {
+                var loading = this.$loading();
+                let url = '/facilityType/add';
+                if (this.params.todo == 'edit') {
+                    url = '/facilityType/update';
+                }
+                let params = JSON.parse(JSON.stringify(this.formData));
+                this.$http
+                    .post(url, params)
+                    .then(({ status, msg }) => {
+                        if (status == 0) {
+                            this.$message.success(msg);
+                            this.params.callback && this.params.callback();
+                            this.$emit('close');
+                        }
+                        loading.close();
+                    })
+                    .catch(() => {
+                        loading.close();
+                    });
+            });
         }
     },
     created() {
         this.productOptions = this.params.productOptions;
         if (this.params.todo == 'edit') {
-            this.formData = this.params.data;
+            this.formData = JSON.parse(JSON.stringify(this.params.data));
         }
     }
 };

+ 201 - 2
operationSupport/src/views/ownerManagement/index.vue

@@ -1,5 +1,204 @@
 <template>
-    <div>业主管理</div>
+    <div class="content main">
+        <organ-tree @organId="currentOrganId"></organ-tree>
+        <div class="content-right">
+            <div class="search">
+                <el-input
+                    clearable
+                    placeholder="输入姓名或身份证号"
+                    class="search-input"
+                    v-trim
+                    v-model.trim="mixins_query.idNumber"
+                ></el-input>
+                <el-select v-model="mixins_query.householdType" clearable placeholder="住户类型">
+                    <el-option v-for="(item, index) in householdType" :key="index" :label="item.label" :value="item.status">{{
+                        item.label
+                    }}</el-option>
+                </el-select>
+                <el-select v-model="mixins_query.residentStatus" clearable placeholder="住户状态">
+                    <el-option v-for="(item, index) in residentStatus" :key="index" :label="item.label" :value="item.status">{{
+                        item.label
+                    }}</el-option>
+                </el-select>
+                <el-button
+                    class="search-btn"
+                    type="primary"
+                    @click="mixins_search()"
+                    :disabled="mixins_onQuery"
+                    :loading="mixins_onQuery"
+                    icon="el-icon-search"
+                    >搜索</el-button
+                >
+                <div class="search-icon">
+                    <i class="iconfont" @click="addOrEdit('add')" v-left-txt-tip data-txt="新增">&#xe641;</i>
+                </div>
+            </div>
+            <zz-table
+                :settings="{ showIndex: true }"
+                :cols="cols"
+                :loading="mixins_onQuery"
+                :data="mixins_list"
+                :pageset="mixins_pageset"
+                @page-change="pageChange"
+                @selection-change="selectionChange"
+            >
+                <template slot-scope="scope" slot="transactionsNumber">
+                    <span v-if="scope.row.transactionsNumber" class="el-link" @click="toTransactionDetails(scope.row)">{{
+                        scope.row.transactionsNumber
+                    }}</span>
+                    <span v-else>{{ scope.row.transactionsNumber }}</span>
+                </template>
+                <template slot-scope="scope" slot="opt">
+                    <div class="opt">
+                        <el-tooltip class="item" effect="light" placement="bottom" content="编辑">
+                            <span class="zoniot_font" @click="addOrEdit('edit', scope.index)">&#xe689;</span>
+                        </el-tooltip>
+                        <el-tooltip class="item" effect="light" placement="bottom" content="删除">
+                            <span class="zoniot_font red" @click="deleteRow(scope.row)">&#xe673;</span>
+                        </el-tooltip>
+                    </div>
+                </template>
+            </zz-table>
+        </div>
+        
+    </div>
 </template>
+
 <script>
-</script>
+import list from '@/js/list.js';
+export default {
+    mixins: [list],
+    data() {
+        return {
+            statusOptions: [],
+            currentId: '',
+            cols: [
+                {
+                    label: '姓名',
+                    prop: 'name'
+                },
+                {
+                    label: '住户类型',
+                    prop: 'householdType'
+                },
+                {
+                    label: '社区名称',
+                    prop: 'communityName'
+                },
+                {
+                    label: '房屋地址',
+                    prop: 'roomNumber'
+                },
+                {
+                    label: '手机号',
+                    prop: 'phone'
+                },
+                {
+                    label: '身份证号',
+                    prop: 'idNumber'
+                },
+                {
+                    label: '状态',
+                    prop: 'residentStatus',
+                    slot: 'residentStatus'
+                },
+                {
+                    label: '入住时间',
+                    prop: 'checkInDate',
+
+                    format(val) {
+                        return $numberFormat(val, 2);
+                    }
+                },
+                {
+                    label: '操作',
+                    slot: 'id'
+                }
+            ],
+            householdType: [
+                {
+                    status: 1,
+                    label: '业主'
+                },
+                {
+                    status: 2,
+                    label: '亲属'
+                },
+                {
+                    status: 3,
+                    label: '租客'
+                }
+            ],
+            residentStatus: [
+                {
+                    status: 0,
+                    label: '已注销'
+                },
+                {
+                    status: 1,
+                    label: '在住'
+                }
+            ]
+        };
+    },
+    methods: {
+        toTransactionDetails(row) {
+            const { id, type } = row;
+            this.$router.push({
+                name: 'main',
+                query: {
+                    url: '/BillingManage/FinancialManage/ReconciliationManage/TransactionDetails',
+                    agentbranchId: id,
+                    payType: type,
+                    prevName: '支付管理'
+                }
+            });
+        },
+        addOrEdit(todo, index) {
+            this.$router.push({
+                path: '/ownerManagement/add'
+            });
+        },
+        deleteRow(row) {
+            const { name } = row;
+            let title = `您确定要删除支付机构“${name}”`;
+            this.$msgBox(title)
+                .then(() => {
+                    this.$http
+                        .putForm('/pay/deletePayPayAgentbranch', { id: row.id })
+                        .then(({ status, msg }) => {
+                            this.$delete(row, 'onDelete');
+                            if (0 === status) {
+                                this.$message.success(msg);
+                                this.mixins_search('del');
+                            } else {
+                                this.$message.error(msg);
+                            }
+                        })
+                        .catch(() => {
+                            this.$delete(row, 'onDelete');
+                        });
+                })
+                .catch(() => {});
+        },
+        currentOrganId(data) {
+            this.currentId = data || '';
+        }
+    },
+    watch: {
+        currentId(newValue, oldValue) {
+            this.mixins_query.companyId = newValue;
+            this.mixins_search();
+        }
+    },
+    created() {
+        this.mix_path = ''; // 权限
+        this.mixins_dataUrl = '/scResident/page'; // 分页查询接口
+        this.mixins_query = {
+            questParams: '',
+            companyId: ''
+        };
+        this.mixins_search('search');
+    }
+};
+</script>

+ 130 - 0
operationSupport/src/views/ownerManagement/ownerReview/index.vue

@@ -0,0 +1,130 @@
+<template>
+    <div class="main">
+        <div class="search">
+            <el-input clearable placeholder="业主姓名" class="search-input" v-trim v-model.trim="mixins_query.name"></el-input>
+            <el-select v-model="mixins_query.auditStatus" clearable placeholder="状态">
+                <el-option v-for="(item, index) in auditStatus" :key="index" :label="item.label" :value="item.status">{{
+                    item.label
+                }}</el-option>
+            </el-select>
+            <el-button
+                class="search-btn"
+                type="primary"
+                @click="mixins_search()"
+                :disabled="mixins_onQuery"
+                :loading="mixins_onQuery"
+                icon="el-icon-search"
+                >搜索</el-button
+            >
+        </div>
+        <zz-table
+            :settings="{ showIndex: true }"
+            :cols="cols"
+            :loading="mixins_onQuery"
+            :data="mixins_list"
+            :pageset="mixins_pageset"
+            @page-change="pageChange"
+        >
+            <template slot-scope="scope" slot="transactionsNumber">
+                <span v-if="scope.row.transactionsNumber" class="el-link" @click="toTransactionDetails(scope.row)">{{
+                    scope.row.transactionsNumber
+                }}</span>
+                <span v-else>{{ scope.row.transactionsNumber }}</span>
+            </template>
+            <template slot-scope="scope" slot="opt">
+                <div class="opt">
+                    <el-tooltip class="item" effect="light" placement="bottom" content="审核">
+                        <span class="zoniot_font" @click="Review(scope.row)">&#xe689;</span>
+                    </el-tooltip>
+                </div>
+            </template>
+        </zz-table>
+    </div>
+</template>
+
+<script>
+import list from '@/js/list.js';
+export default {
+    mixins: [list],
+    data() {
+        return {
+            cols: [
+                {
+                    label: '业主姓名',
+                    prop: 'name'
+                },
+                {
+                    label: '房产名称',
+                    prop: 'defaultHouseId'
+                },
+                {
+                    label: '车位',
+                    prop: 'communityName'
+                },
+                {
+                    label: '手机号',
+                    prop: 'phone'
+                },
+                {
+                    label: '身份证',
+                    prop: 'idNumber'
+                },
+                {
+                    label: '类型',
+                    prop: 'idType'
+                },
+                {
+                    label: '状态',
+                    prop: 'auditStatus',
+                    slot: 'auditStatus'
+                },
+                {
+                    label: '入住时间',
+                    prop: 'createDate'
+                },
+                {
+                    label: '操作',
+                    slot: 'id'
+                }
+            ],
+            auditStatus: [
+                {
+                    status: 0,
+                    label: '未审核'
+                },
+                {
+                    status: 1,
+                    label: '已通过'
+                },
+                {
+                    status: 2,
+                    label: '未通过'
+                }
+            ]
+        };
+    },
+    methods: {
+        toTransactionDetails(row) {
+            const { id, type } = row;
+            this.$router.push({
+                name: 'main',
+                query: {
+                    url: '/BillingManage/FinancialManage/ReconciliationManage/TransactionDetails',
+                    agentbranchId: id,
+                    payType: type,
+                    prevName: '支付管理'
+                }
+            });
+        },
+        Review(row) {}
+    },
+    created() {
+        this.mix_path = ''; // 权限
+        this.mixins_dataUrl = '/scResident/page'; // 分页查询接口
+        this.mixins_query = {
+            questParams: ''
+        };
+        this.mixins_search('search');
+    }
+};
+</script>

+ 450 - 0
operationSupport/src/views/ownerManagement/stepPage/add.vue

@@ -0,0 +1,450 @@
+<template>
+    <div class="main">
+        <div></div>
+        <div class="formContent">
+            <div class="formContent-item">
+                <div class="formContent-item_title">基础信息</div>
+                <div class="formContent-formList">
+                    <zz-form :cols="formCols" :data="formData" :rules="formRules" :errors="formErrors" labelWidth="70" ref="form">
+                        <template slot="sex">
+                            <el-radio v-model="formData.sex" :label="0">未知</el-radio>
+                            <el-radio v-model="formData.sex" :label="1">男</el-radio>
+                            <el-radio v-model="formData.sex" :label="2">女</el-radio>
+                        </template>
+                        <template slot="remarks">
+                            <el-input type="textarea" v-model="formData.remark" maxlength="50" placeholder="请输入备注"> </el-input>
+                        </template>
+                    </zz-form>
+                    <el-upload
+                        :headers="token"
+                        ref="uploaduserlogo"
+                        class="mini-upload"
+                        limit="1"
+                        action="/user-center/user/addUserPhoto"
+                        list-type="picture-card"
+                        :on-success="uploadsuccess"
+                        :auto-upload="true"
+                        name="avatarfile"
+                    >
+                        <i slot="default" class="el-icon-plus"></i>
+                        <div slot="file" slot-scope="{ file }">
+                            <img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
+                            <span class="el-upload-list__item-actions">
+                                <span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file)">
+                                    <i class="el-icon-delete"></i>
+                                </span>
+                            </span>
+                        </div>
+                    </el-upload>
+                </div>
+            </div>
+            <div class="formContent-item">
+                <div class="formContent-item_title">证件信息</div>
+                <zz-form :cols="formCols2" :data="formData" :rules="formRules" :errors="formErrors" labelWidth="70" ref="form">
+                    <template slot="idType">
+                        <el-select v-model="formData.idType" clearable>
+                            <el-option v-for="(item, index) in idTypeArray" :key="index" :label="item.label" :value="item.status">{{
+                                item.label
+                            }}</el-option>
+                        </el-select>
+                    </template>
+                    <template slot="birthDate">
+                        <el-date-picker
+                            v-model="formData.birthDate"
+                            value-format="yyyy-MM-dd"
+                            type="date"
+                            :picker-options="pickerOptions"
+                            placeholder="选择日期"
+                        >
+                        </el-date-picker>
+                    </template>
+                    <template slot="effectiveDate">
+                        <el-date-picker
+                            v-model="effectiveDate"
+                            value-format="yyyyMMdd"
+                            type="daterange"
+                            range-separator="至"
+                            start-placeholder="选择开始日期"
+                            end-placeholder="选择结束日期"
+                            :picker-options="pickerOptions"
+                            @change="effectiveDateToggle"
+                            :editable="false"
+                        ></el-date-picker>
+                    </template>
+                </zz-form>
+            </div>
+            <div class="formContent-item">
+                <div class="formContent-item_title">绑定房产</div>
+                <div class="formContent-formList" v-for="(item, index) in formData.houseList" :key="index">
+                    <div class="block-title">
+                        <div class="floor list-title">{{ item.houseId }}</div>
+                        <span class="remove list-title" @click="removeHouse(index, 'houseList')">移除</span>
+                        <img class="bg-img" src="@/assets/img/ownerManagement/bg_card@2x.png" alt="" />
+                        <img class="bg-imgIoc" src="@/assets/img/ownerManagement/icon_building@2x.png" alt="" />
+                    </div>
+
+                    <zz-form :cols="formCols3" :data="item" :rules="formRules" :errors="formErrors" labelWidth="70" ref="form">
+                        <template slot="householdType">
+                            <el-select v-model="item.householdType" clearable>
+                                <el-option
+                                    v-for="(item, index) in householdTypeArray"
+                                    :key="index"
+                                    :label="item.label"
+                                    :value="item.status"
+                                    >{{ item.label }}</el-option
+                                >
+                            </el-select>
+                        </template>
+                        <template slot="checkInDate">
+                            <el-date-picker
+                                v-model="item.checkInDate"
+                                value-format="yyyy-MM-dd"
+                                type="date"
+                                :picker-options="pickerOptions"
+                                placeholder="选择日期"
+                            >
+                            </el-date-picker>
+                        </template>
+                    </zz-form>
+                </div>
+
+                <div class="addHouse add-block" @click="addHouse(1, 'houseList')">
+                    <img src="@/assets/img/ownerManagement/btn_add@2x.png" />
+                </div>
+                <div class="formContent-item_title">绑定车位</div>
+                <div class="addCat">
+                    <div class="block-title" v-for="(item, index) in formData.parkingList" :key="index">
+                        <div class="floor list-title">{{ item.parkingId }}</div>
+                        <span class="remove list-title" @click="removeHouse(index, 'parkingList')">移除</span>
+                        <img class="bg-img" src="@/assets/img/ownerManagement/bg_card@2x.png" alt="" />
+                        <img class="bg-imgIoc" src="@/assets/img/ownerManagement/icon_car@2x.png" alt="" />
+                    </div>
+                    <div class="addHouse add-block" @click="addHouse(2, 'parkingList')">
+                        <img src="@/assets/img/ownerManagement/btn_add@2x.png" />
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    props: ['params'],
+    data() {
+        return {
+            token: {
+                [localStorage.getItem('SC_token') && 'Authorization']: 'Bearer ' + localStorage.getItem('SC_token')
+            },
+            pickerOptions: {
+                disabledDate(val) {
+                    return +new Date(val) > +new Date();
+                }
+            },
+            effectiveDate: '',
+            formData: {
+                name: '',
+                phone: '',
+                personnelNumber: '',
+                sex: 0,
+                remarks: '',
+                facePictureUrl: '',
+
+                idType: '',
+                idNumber: '',
+                permanentAddress: '',
+                issuingAuthority: '',
+                effectiveDateStart: '',
+                effectiveDateEnd: '',
+                nationality: '',
+                nativePlace: '',
+                nation: '',
+                birthDate: '',
+                houseList: [
+                    {
+                        checkInDate: '',
+                        householdType: '',
+                        houseId: 'sssss'
+                    },
+                    {
+                        checkInDate: '',
+                        householdType: '',
+                        houseId: '9999'
+                    }
+                ],
+                parkingList: [
+                    {
+                        parkingId: 'xxxx'
+                    }
+                ]
+            },
+            formCols: [
+                [
+                    {
+                        label: '姓名',
+                        prop: 'name',
+                        slot: 'name',
+                        input: true
+                    },
+                    {
+                        label: '手机号',
+                        prop: 'phone',
+                        slot: 'phone',
+                        input: true
+                    },
+                    {
+                        label: '人员编号',
+                        prop: 'personnelNumber',
+                        slot: 'personnelNumber',
+                        input: true
+                    },
+                    {
+                        label: '性别',
+                        prop: 'sex',
+                        slot: 'sex'
+                    },
+                    {
+                        label: '备注',
+                        prop: 'remarks',
+                        slot: 'remarks'
+                    }
+                ]
+            ],
+            formCols2: [
+                [
+                    {
+                        label: '证件类型',
+                        prop: 'idType',
+                        slot: 'idType'
+                    },
+                    {
+                        label: '证件号码',
+                        prop: 'idNumber',
+                        slot: 'idNumber',
+                        input: true
+                    },
+                    {
+                        label: '户籍地址',
+                        prop: 'permanentAddress',
+                        slot: 'permanentAddress',
+                        input: true
+                    },
+                    {
+                        label: '签发机关',
+                        prop: 'issuingAuthority',
+                        slot: 'issuingAuthority',
+                        input: true
+                    },
+                    {
+                        label: '有效期',
+                        prop: 'effectiveDate',
+                        slot: 'effectiveDate'
+                    },
+                    {
+                        label: '国籍',
+                        prop: 'nationality',
+                        slot: 'nationality',
+                        input: true
+                    },
+                    {
+                        label: '籍贯',
+                        prop: 'nativePlace',
+                        slot: 'nativePlace',
+                        input: true
+                    },
+                    {
+                        label: '民族',
+                        prop: 'nation',
+                        slot: 'nation',
+                        input: true
+                    },
+                    {
+                        label: '出生日期',
+                        prop: 'birthDate',
+                        slot: 'birthDate'
+                    }
+                ]
+            ],
+            formCols3: [
+                [
+                    {
+                        label: '类型',
+                        prop: 'householdType',
+                        slot: 'householdType'
+                    },
+                    {
+                        label: '入住时间',
+                        prop: 'checkInDate',
+                        slot: 'checkInDate'
+                    }
+                ]
+            ],
+            idTypeArray: [
+                {
+                    status: 1,
+                    label: '居民身份证'
+                },
+                {
+                    status: 2,
+                    label: '居民户口簿'
+                },
+                {
+                    status: 3,
+                    label: '暂住证'
+                },
+                {
+                    status: 4,
+                    label: '其他'
+                }
+            ],
+            householdTypeArray: [
+                {
+                    status: 1,
+                    label: '业主'
+                },
+                {
+                    status: 2,
+                    label: '亲属'
+                },
+                {
+                    status: 3,
+                    label: '租客'
+                }
+            ],
+            formRules: {
+                name: [this.$valid.selectRequired('填写姓名')],
+                phone: [this.$valid.selectRequired('填写手机号')],
+                householdType: [this.$valid.selectRequired('填写类型')]
+            }
+        };
+    },
+    methods: {
+        handleRemove(file) {
+            this.$refs.uploaduserlogo.clearFiles();
+        },
+        uploadsuccess(response, file, fileList) {
+            if (0 === response.status) {
+                this.formData.facePictureUrl = response.data;
+            }
+        },
+        effectiveDateToggle(va) {
+            this.formData.effectiveDateStart = va[0];
+            this.formData.effectiveDateEnd = va[1];
+        },
+        addHouse(num, arr) {
+            let newObj = {};
+            if (num === 1) {
+                newObj = {
+                    checkInDate: '',
+                    householdType: '',
+                    houseId: ''
+                };
+            } else {
+                newObj = {
+                    parkingId: ''
+                };
+            }
+            this.formData[arr].push(newObj);
+        },
+        removeHouse(index, arr) {
+            this.formData[arr].splice(index, 1);
+        }
+    }
+};
+</script>
+<style lang='scss' scoped >
+@import '@assets/css/public-style.scss';
+.formContent {
+    display: flex;
+    justify-content: space-between;
+    padding: 20px;
+    background: white;
+    .formContent-item {
+        width: calc((100% / 3) - 80px);
+        .formContent-item_title {
+            font-size: 14px;
+            position: relative;
+            margin-left: 14px;
+            margin-bottom: 20px;
+            &::before {
+                position: absolute;
+                left: -14px;
+                top: 4px;
+                width: 4px;
+                height: 12px;
+                border-radius: 2px;
+                display: block;
+                background: $mainBgColor;
+                content: ' ';
+            }
+        }
+        .formContent-formList {
+            display: flex;
+            justify-content: space-between;
+        }
+        .block-title {
+            width: 200px;
+            height: 80px;
+            background: #ffffff;
+            border-radius: 2px;
+            border: 1px solid #e0e1e3;
+            position: relative;
+            .floor {
+                margin: 16px 0 9px 0;
+                font-weight: 600;
+                font-size: 16px;
+            }
+            .remove {
+                color: $mainBgColor;
+                font-size: 12px;
+                cursor: pointer;
+            }
+            .list-title {
+                margin-left: 20px;
+                position: relative;
+                z-index: 2;
+            }
+            img {
+                &.bg-img {
+                    position: absolute;
+                    right: 0;
+                    top: 0;
+                    width: 100px;
+                }
+                &.bg-imgIoc {
+                    position: absolute;
+                    right: 20px;
+                    top: 28px;
+                    width: 24px;
+                }
+            }
+        }
+        .addHouse {
+            margin-bottom: 25px;
+        }
+        .add-block {
+            width: 80px;
+            height: 80px;
+            background: #ffffff;
+            border-radius: 2px;
+            border: 1px solid #e0e1e3;
+            position: relative;
+            cursor: pointer;
+            & > img {
+                width: 16px;
+                height: 16px;
+                position: absolute;
+                top: 50%;
+                left: 50%;
+                transform: translate(-50%, -50%);
+            }
+        }
+        .addCat {
+            & > div {
+                float: left;
+                margin-right: 20px;
+                margin-bottom: 20px;
+            }
+        }
+    }
+}
+</style>

+ 1 - 1
operationSupport/src/views/system/users/popups/edituser.vue

@@ -99,7 +99,7 @@ export default {
     data() {
         return {
             token: {
-                [localStorage.getItem('UMIS_token') && 'Authorization']: 'Bearer ' + localStorage.getItem('UMIS_token')
+                [localStorage.getItem('SC_token') && 'Authorization']: 'Bearer ' + localStorage.getItem('SC_token')
             },
             envConfig: envConfig,
             organList: [