Explorar o código

收款账号 bug修改

Shannon_mu %!s(int64=3) %!d(string=hai) anos
pai
achega
e4f4648fd5
Modificáronse 21 ficheiros con 1000 adicións e 89 borrados
  1. 48 34
      operationSupport/src/components/common/buildingTree.vue
  2. 13 1
      operationSupport/src/components/common/organTree.vue
  3. 0 1
      operationSupport/src/components/mapPopup/index.vue
  4. 5 0
      operationSupport/src/router/index.js
  5. 0 1
      operationSupport/src/views/alarmManagement/details.vue
  6. 0 1
      operationSupport/src/views/alarmManagement/popups/util.js
  7. 1 1
      operationSupport/src/views/assetManagement/housingManagement/index.vue
  8. 1 1
      operationSupport/src/views/assetManagement/shopManagement/index.vue
  9. 2 2
      operationSupport/src/views/buildingManagement/pageJump/addoredit.vue
  10. 1 2
      operationSupport/src/views/buildingManagement/pageJump/basedata.js
  11. 0 1
      operationSupport/src/views/communityManagement/pageJump/AddOrEdit.vue
  12. 2 2
      operationSupport/src/views/ownerManagement/index.vue
  13. 1 2
      operationSupport/src/views/payService/chargeSetting/index.vue
  14. 138 16
      operationSupport/src/views/payService/expenseReport/Electricity.vue
  15. 104 22
      operationSupport/src/views/payService/expenseReport/Water.vue
  16. 13 2
      operationSupport/src/views/payService/expenseReport/index.vue
  17. 71 0
      operationSupport/src/views/payService/systemSetup/index.vue
  18. 196 0
      operationSupport/src/views/payService/systemSetup/stepPage/bulk.vue
  19. 124 0
      operationSupport/src/views/payService/systemSetup/stepPage/details.vue
  20. 181 0
      operationSupport/src/views/payService/systemSetup/stepPage/single.vue
  21. 99 0
      operationSupport/src/views/payService/systemSetup/stepPage/temporary.vue

+ 48 - 34
operationSupport/src/components/common/buildingTree.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="organ-tree">
-        <el-input v-model="filterText" placeholder="请输入关键字"  suffix-icon='el-icon-search'></el-input>
+        <el-input v-model="filterText" placeholder="请输入关键字" suffix-icon="el-icon-search"></el-input>
         <div class="tree-style-box no-scrollbar">
             <el-tree
                 class="tree-style"
@@ -22,7 +22,7 @@
 <script>
 export default {
     name: 'buildingTree',
-    props:['buildingType'],
+    props: ['buildingType'],
     data() {
         return {
             filterText: '',
@@ -39,20 +39,34 @@ export default {
         }
     },
     methods: {
-        getOrgTreeList() {
-            this.$http.get('/sc-community/assets/tree/community/find',{buildingType:this.buildingType}).then(({ status, data, msg }) => {
-                if (status === 0 && data) {
-                    this.organList = data;
-                    this.$nextTick().then(() => {
-                        const firstNode = document.querySelector('.el-tree-node');
-                        firstNode.click();
-                    });
+        dimension(arr) {
+            arr.map((item, index) => {
+                if (!!item.children & (item.type !== 'unit')) {
+                    this.dimension(item.children);
+                } else {
+                    if (item.name.indexOf('单元') === -1) {
+                        item.name = item.name + '单元';
+                    }
                 }
             });
         },
+        getOrgTreeList() {
+            this.$http
+                .get('/sc-community/assets/tree/community/find', { buildingType: this.buildingType })
+                .then(({ status, data, msg }) => {
+                    if (status === 0 && data) {
+                        this.dimension(data);
+                        this.organList = data;
+                        this.$nextTick().then(() => {
+                            const firstNode = document.querySelector('.el-tree-node');
+                            firstNode.click();
+                        });
+                    }
+                });
+        },
         filterNode(value, data) {
             if (!value) return true;
-            return data.orgName.indexOf(value) !== -1;
+            return data.name.indexOf(value) !== -1;
         },
         treeClick(e) {
             if (e.value == 0) return;
@@ -63,36 +77,36 @@ export default {
             let unitPa = {};
             if (e.value == 0) return;
 
-            let onData='';
-            if(e.type == "building"){
-                onData={
-                    communityId:this.$refs.tree.getNode(e).parent.data.value,
-                    buildingId:e.value,
-                    unitId:'',
-                    roomId:'',
-                }
+            let onData = '';
+            if (e.type == 'building') {
+                onData = {
+                    communityId: this.$refs.tree.getNode(e).parent.data.value,
+                    buildingId: e.value,
+                    unitId: '',
+                    roomId: ''
+                };
                 this.$emit('buildingInformation', onData);
-            }else if (e.type == 'unit') {
-                onData={
-                    communityId:this.$refs.tree.getNode(e).parent.parent.data.value,
-                    buildingId:this.$refs.tree.getNode(e).parent.data.value,
-                    unitId:e.value,
-                    roomId:'',
-                }
+            } else if (e.type == 'unit') {
+                onData = {
+                    communityId: this.$refs.tree.getNode(e).parent.parent.data.value,
+                    buildingId: this.$refs.tree.getNode(e).parent.data.value,
+                    unitId: e.value,
+                    roomId: ''
+                };
                 this.$emit('buildingInformation', onData);
                 // this.$emit('organId', unitPa);
-            }else if (e.type == "room") {
-                onData={
-                    communityId:this.$refs.tree.getNode(e).parent.parent.parent.data.value,
-                    buildingId:this.$refs.tree.getNode(e).parent.parent.data.value,
-                    unitId:this.$refs.tree.getNode(e).parent.data.value,
-                    roomId:e.value,
-                }
+            } else if (e.type == 'room') {
+                onData = {
+                    communityId: this.$refs.tree.getNode(e).parent.parent.parent.data.value,
+                    buildingId: this.$refs.tree.getNode(e).parent.parent.data.value,
+                    unitId: this.$refs.tree.getNode(e).parent.data.value,
+                    roomId: e.value
+                };
                 this.$emit('buildingInformation', onData);
             } else {
                 this.$emit('buildingInformation', e);
             }
-        },
+        }
     },
     created() {
         this.getOrgTreeList();

+ 13 - 1
operationSupport/src/components/common/organTree.vue

@@ -41,6 +41,7 @@ export default {
         getOrgTreeList() {
             this.$http.get('/sc-community/assets/tree/community/find').then(({ status, data, msg }) => {
                 if (status === 0 && data) {
+                    this.dimension(data);
                     this.organList = data;
                     this.$nextTick().then(() => {
                         const firstNode = document.querySelector('.el-tree-node');
@@ -49,9 +50,20 @@ export default {
                 }
             });
         },
+        dimension(arr) {
+            arr.map((item, index) => {
+                if (!!item.children & (item.type !== 'unit')) {
+                    this.dimension(item.children);
+                } else {
+                    if (item.name.indexOf('单元') === -1) {
+                        item.name = item.name + '单元';
+                    }
+                }
+            });
+        },
         filterNode(value, data) {
             if (!value) return true;
-            return data.children.indexOf(value) !== -1;
+            return data.name.indexOf(value) !== -1;
         },
         treeClick(e) {
             // let unitPa = {};

+ 0 - 1
operationSupport/src/components/mapPopup/index.vue

@@ -49,7 +49,6 @@ export default {
             });
         },
         mapClick(e) {
-            debugger;
             if (this.marker !== '') {
                 this.map.remove(this.marker);
             }

+ 5 - 0
operationSupport/src/router/index.js

@@ -130,6 +130,11 @@ const zRoute = [
         component: () => import(/* webpackChunkName: "404" */ '@views/payService/propertyFee/index.vue'),
         meta: { title: '物业费账单' }
     },
+    {
+        path: '/systemSetup/index',
+        component: () => import(/* webpackChunkName: "404" */ '@views/payService/systemSetup/index.vue'),
+        meta: { title: '系统设置' }
+    },
 
 ]
 

+ 0 - 1
operationSupport/src/views/alarmManagement/details.vue

@@ -17,7 +17,6 @@
                 start-placeholder="开始日期"
                 end-placeholder="结束日期"
                 :picker-options="pickerOptions"
-                class="servertype-serch"
                 :editable="false"
             ></el-date-picker>
             <el-button class="servertype-serch-btn search-btn" icon="el-icon-search" type="primary" @click="getPage">查询</el-button>

+ 0 - 1
operationSupport/src/views/alarmManagement/popups/util.js

@@ -86,7 +86,6 @@ export const cols = [{
   label: '状态',
   prop: 'enabled',
   format(val) {
-    debugger
     if (val) {
       return '启用';
     }

+ 1 - 1
operationSupport/src/views/assetManagement/housingManagement/index.vue

@@ -10,7 +10,7 @@
                 <el-button
                     class="search-btn"
                     type="primary"
-                    @click="query_search()"
+                    @click="mixins_search"
                     :disabled="mixins_onQuery"
                     :loading="mixins_onQuery"
                     icon="el-icon-search"

+ 1 - 1
operationSupport/src/views/assetManagement/shopManagement/index.vue

@@ -10,7 +10,7 @@
                 <el-button
                     class="search-btn"
                     type="primary"
-                    @click="query_search()"
+                    @click="mixins_search"
                     :disabled="mixins_onQuery"
                     :loading="mixins_onQuery"
                     icon="el-icon-search"

+ 2 - 2
operationSupport/src/views/buildingManagement/pageJump/addoredit.vue

@@ -362,7 +362,7 @@
                             <div class="btns footer_btn">
                                 <el-button @click="resetForm">重置</el-button>
                                 <el-button @click="close">取消</el-button>
-                                <el-button type="primary" @click="submit">确认</el-button>
+                                <el-button type="primary" @click="submit">保存</el-button>
                             </div>
                         </div>
                     </div>
@@ -379,7 +379,7 @@ const createContinueData = (type, num) => {
     //type--类型,num生成的个数
     let objArr = [];
     if (type == 'Number') {
-        [...new Array(num).keys()].map((idx) => {
+        [...new Array(Number(num)).keys()].map((idx) => {
             let obj = { label: Number(idx) + 1, value: Number(idx) + 1 };
             objArr.push(obj);
         });

+ 1 - 2
operationSupport/src/views/buildingManagement/pageJump/basedata.js

@@ -3,7 +3,6 @@ export const initDoor = (data, initialUnitList) => {
 	const { buildingNumber, unitNumber, floorsNumber, householdsPerFloor } = data;
 	const letter = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
 	const getDoor = (k) => {
-		debugger;
 		const arr = [];
 		for (let l = 0; l < householdsPerFloor; l++) {
 			const roomNumber = (l + 1) >= 10 ? `${k}${l + 1}` : `${k}0${l + 1}`
@@ -31,7 +30,7 @@ export const initDoor = (data, initialUnitList) => {
 		const arr = [];
 		for (let j = 0; j < unitNumber; j++) {
 			arr.push({
-				unitName: unit.type == 'Number' ? j + (Number(start) || 1) : letter[start && letter.indexOf(start) + j || j] || `未命名${j + 1}`,
+				unitName: (unit.type == 'Number' ? j + (Number(start) || 1) : letter[start && letter.indexOf(start) + j || j] || `未命名${j + 1}`) +'单元',
 				unitFloorList: getFoolr()
 			})
 		}

+ 0 - 1
operationSupport/src/views/communityManagement/pageJump/AddOrEdit.vue

@@ -236,7 +236,6 @@ export default {
         },
 
         uploadsuccess(response, file, fileList) {
-            debugger;
             this.$refs.uploaduserlogo.clearFiles();
             if (0 === response.status) {
                 this.ruleForm.pictureUrl = response.data;

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

@@ -270,8 +270,8 @@ export default {
             if (row.residentStatus === 0) {
                 status = 1;
             }
-            let title = `您确定要修改状态户“${buildingName}${unitName}${roomNumber}”`;
-            this.$msgBox('确认提示', title)
+            let title = `您确定要修改状态户“${buildingName}${unitName}${roomNumber}”`;
+            this.$msgBox('是否修改住户状态', title)
                 .then(() => {
                     this.$http
                         .postForm('/sc-community/scResident/operationResident', { type: status, id: row.id })

+ 1 - 2
operationSupport/src/views/payService/chargeSetting/index.vue

@@ -40,7 +40,7 @@
                     <span v-if="scope.row.chargeMode === 3">阶梯计费 </span>
                 </template>
                 <template slot-scope="scope" slot="chargePrice">
-                    <template v-if="scope.row.chargePriceLadder !== 'null'">
+                    <template v-if="scope.row.chargePriceLadder !== 'null' || scope.row.chargePriceLadder !== null">
                         <div v-for="(item, index) in JSON.parse(scope.row.chargePriceLadder)" :key="index">
                             <div>
                                 <span v-if="item.ladder === 1">一 阶价格:{{ item.price }}</span>
@@ -183,7 +183,6 @@ export default {
             this.mixins_query.houseId = '';
 
             if (newValue.type) {
-                debugger;
                 if (newValue.type === 'community') {
                     this.mixins_query.communityId = newValue.value;
                     this.chiData.type = 1;

+ 138 - 16
operationSupport/src/views/payService/expenseReport/Electricity.vue

@@ -1,7 +1,18 @@
 <template>
     <div class="main">
+        <div class="search_bottom_tab">
+            <div
+                class="tab_list"
+                v-for="(item, index) in tabs"
+                @click="toggle(index + 1)"
+                :class="activeIndex == index + 1 ? 'active' : ''"
+                :key="index"
+            >
+                {{ item.label }}{{ item.value }}元
+            </div>
+        </div>
         <zz-table
-            :cols="cols"
+            :cols="activeIndex == 1 ? cols : statusCols"
             :settings="{ showIndex: true, stripe: true }"
             :loading="mixins_onQuery"
             :data="mixins_list"
@@ -21,47 +32,158 @@ export default {
             cols: [
                 {
                     label: '社区名称',
-                    prop: 'communityName'
+                    prop: 'communityId'
                 },
                 {
                     label: '房间',
-                    prop: 'assets'
+                    prop: 'houseId'
                 },
                 {
-                    label: '业主',
-                    prop: 'residentName'
+                    label: '充值时间',
+                    prop: 'createDate'
                 },
                 {
-                    label: '业主手机号',
-                    prop: 'residentPhone'
+                    label: '充值方式',
+                    prop: 'paymentMethod',
+                    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: 'balance'
+                    label: '充值人姓名',
+                    prop: 'userName'
                 },
                 {
-                    label: '最后扣费时间',
-                    prop: 'lastPayTime'
+                    label: '手机号',
+                    prop: 'phone'
+                },
+                {
+                    label: '充值金额(元)',
+                    prop: 'amount'
+                },
+                {
+                    label: '备注',
+                    prop: 'remark'
                 }
             ],
+            statusCols: [
+                {
+                    label: '社区名称',
+                    prop: 'communityId'
+                },
+                {
+                    label: '房间',
+                    prop: 'houseId'
+                },
+                {
+                    label: '扣费时间',
+                    prop: 'createDate'
+                },
+                {
+                    label: '上期读数',
+                    prop: 'previousReading'
+                },
+                {
+                    label: '本期读数',
+                    prop: 'currentReading'
+                },
+                {
+                    label: '用电量(度)',
+                    prop: 'volume'
+                },
+                {
+                    label: '扣费金额(元)',
+                    prop: 'amount'
+                }
+            ],
+            tabs: [
+                {
+                    label: '充值金额:',
+                    value: '0'
+                },
+                {
+                    label: '扣费金额:',
+                    value: '0'
+                }
+            ],
+            activeIndex: 1,
             mixins_post: 'post'
         };
     },
     created() {
-        this.mixins_dataUrl = '/sc-charge/house/account/page';
-        this.mixins_query = {
-            accountType: 3
-        };
-        // this.mixins_search();
+        this.mixins_dataUrl = '/sc-charge/payment/record/page';
+        this.mixins_query.accountType = 3;
+        this.mixins_query.paymentType = 1;
+        Object.assign(this.mixins_query, this.$parent.mixins_query);
+        this.getSun(1);
+        this.getSun(2);
+        this.mixins_search();
     },
     mounted() {},
     methods: {
+        toggle(index) {
+            this.activeIndex = index;
+            this.mixins_query.paymentType = index;
+            this.mixins_search();
+        },
+        getSun(type) {
+            this.$http
+                .post('/sc-charge/payment/record/sum/amount', { accountType: 3, paymentType: type })
+                .then(({ data, status, msg }) => {
+                    if (status == 0) {
+                        if (type == 1) {
+                            this.tabs[0].value = data;
+                        } else if (type == 2) {
+                            this.tabs[1].value = data;
+                        }
+                    } else {
+                        this.$message.error(msg);
+                    }
+                })
+                .catch(() => {});
+        },
         getParent(query) {
             Object.assign(this.mixins_query, query);
             this.mixins_search();
+        },
+        exportExcel() {
+            this.__exportExcel('/sc-charge/payment/record/export/excel', this.mixins_query);
         }
     }
 };
 </script>
 <style scoped lang='scss'>
+@import '@assets/css/public-style.scss';
+.search_bottom_tab {
+    height: 60px;
+    line-height: 60px;
+    background: #ffffff;
+    border-radius: 4px;
+    margin-bottom: 20px;
+    padding: 0 20px;
+    box-sizing: border-box;
+    .tab_list {
+        display: inline-block;
+        border-bottom: 1px solid transparent;
+        cursor: pointer;
+        color: #424656;
+        &:not(:last-child) {
+            margin-right: 40px;
+        }
+        &.active {
+            color: $mainTextColor;
+            border-color: $mainTextColor;
+        }
+    }
+}
 </style>

+ 104 - 22
operationSupport/src/views/payService/expenseReport/Water.vue

@@ -1,14 +1,18 @@
 <template>
     <div class="main">
         <div class="search_bottom_tab">
-            <div class="tab_list" v-for="(item, index) in tabs" :class="activeIndex == index ? 'active' : ''" :key="index">
-                充值金额:50000元
-                {{ item.label }}{{ item.value }}
+            <div
+                class="tab_list"
+                v-for="(item, index) in tabs"
+                @click="toggle(index + 1)"
+                :class="activeIndex == index + 1 ? 'active' : ''"
+                :key="index"
+            >
+                {{ item.label }}{{ item.value }}元
             </div>
-            <!-- <div class="tab_list">充值金额:50000元</div> -->
         </div>
         <zz-table
-            :cols="cols"
+            :cols="activeIndex == 1 ? cols : statusCols"
             :settings="{ showIndex: true, stripe: true }"
             :loading="mixins_onQuery"
             :data="mixins_list"
@@ -28,36 +32,87 @@ export default {
             cols: [
                 {
                     label: '社区名称',
-                    prop: 'communityName'
+                    prop: 'communityId'
                 },
                 {
                     label: '房间',
-                    prop: 'assets'
+                    prop: 'houseId'
                 },
                 {
-                    label: '业主',
-                    prop: 'residentName'
+                    label: '充值时间',
+                    prop: 'createDate'
                 },
                 {
-                    label: '业主手机号',
-                    prop: 'residentPhone'
+                    label: '充值方式',
+                    prop: 'paymentMethod',
+                    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: 'balance'
+                    label: '充值人姓名',
+                    prop: 'userName'
                 },
                 {
-                    label: '最后扣费时间',
-                    prop: 'lastPayTime'
+                    label: '手机号',
+                    prop: 'phone'
+                },
+                {
+                    label: '充值金额(元)',
+                    prop: 'amount'
+                },
+                {
+                    label: '备注',
+                    prop: 'remark'
+                }
+            ],
+            statusCols: [
+                {
+                    label: '社区名称',
+                    prop: 'communityId'
+                },
+                {
+                    label: '房间',
+                    prop: 'houseId'
+                },
+                {
+                    label: '扣费时间',
+                    prop: 'createDate'
+                },
+                {
+                    label: '上期读数',
+                    prop: 'previousReading'
+                },
+                {
+                    label: '本期读数',
+                    prop: 'currentReading'
+                },
+                {
+                    label: '用水量(吨)',
+                    prop: 'volume'
+                },
+                {
+                    label: '扣费金额(元)',
+                    prop: 'amount'
                 }
             ],
             tabs: [
                 {
-                    label: '充值金额',
+                    label: '充值金额',
                     value: '0'
                 },
                 {
-                    label: '扣费金额',
+                    label: '扣费金额',
                     value: '0'
                 }
             ],
@@ -66,17 +121,43 @@ export default {
         };
     },
     created() {
-        this.mixins_dataUrl = '/sc-charge/house/account/page';
-        this.mixins_query = {
-            accountType: 2
-        };
-        // this.mixins_search();
+        this.mixins_dataUrl = '/sc-charge/payment/record/page';
+        this.mixins_query.accountType = 2;
+        this.mixins_query.paymentType = 1;
+        Object.assign(this.mixins_query, this.$parent.mixins_query);
+        this.getSun(1);
+        this.getSun(2);
+        this.mixins_search();
     },
     mounted() {},
     methods: {
+        toggle(index) {
+            this.activeIndex = index;
+            this.mixins_query.paymentType = index;
+            this.mixins_search();
+        },
+        getSun(type) {
+            this.$http
+                .post('/sc-charge/payment/record/sum/amount', { accountType: 2, paymentType: type })
+                .then(({ data, status, msg }) => {
+                    if (status == 0) {
+                        if (type == 1) {
+                            this.tabs[0].value = data;
+                        } else if (type == 2) {
+                            this.tabs[1].value = data;
+                        }
+                    } else {
+                        this.$message.error(msg);
+                    }
+                })
+                .catch(() => {});
+        },
         getParent(query) {
             Object.assign(this.mixins_query, query);
             this.mixins_search();
+        },
+        exportExcel() {
+            this.__exportExcel('/sc-charge/payment/record/export/excel', this.mixins_query);
         }
     }
 };
@@ -95,6 +176,7 @@ export default {
         display: inline-block;
         border-bottom: 1px solid transparent;
         cursor: pointer;
+        color: #424656;
         &:not(:last-child) {
             margin-right: 40px;
         }

+ 13 - 2
operationSupport/src/views/payService/expenseReport/index.vue

@@ -19,7 +19,7 @@
                     end-placeholder="选择结束日期"
                     @change="effectiveDateToggle"
                 ></el-date-picker>
-                <el-button type="primary" class="search-btn" @click="changeRadio" icon="el-icon-search">查询 </el-button>
+                <el-button type="primary" class="search-btn" @click="changeMixins" icon="el-icon-search">查询 </el-button>
                 <div class="search-icon">
                     <el-tooltip class="item" effect="light" placement="bottom" content="导出">
                         <i class="zoniot_font zoniot-icon-daochu2" @click="exportExcel"></i>
@@ -115,6 +115,11 @@ export default {
     mounted() {},
     methods: {
         changeRadio() {
+            if (this.accountType == 1) {
+                this.mixins_search();
+            }
+        },
+        changeMixins() {
             if (this.accountType == 1) {
                 this.mixins_search();
             } else if (this.accountType == 2) {
@@ -139,7 +144,13 @@ export default {
                 .catch(function () {});
         },
         exportExcel() {
-            this.__exportExcel('/sc-charge/charge/report/export/excel', this.mixins_query);
+            if (this.accountType == 1) {
+                this.__exportExcel('/sc-charge/charge/report/export/excel', this.mixins_query);
+            } else if (this.accountType == 2) {
+                this.$refs.water.exportExcel(this.mixins_query);
+            } else if (this.accountType == 3) {
+                this.$refs.electricity.exportExcel(this.mixins_query);
+            }
         },
         lookPage(row) {
             this.thisItem = row;

+ 71 - 0
operationSupport/src/views/payService/systemSetup/index.vue

@@ -0,0 +1,71 @@
+<template>
+    <div class="content main">
+        <div class="search_bottom_tab">
+            <div
+                class="tab_list"
+                v-for="(item, index) in tabs"
+                @click="toggle(index + 1)"
+                :class="activeIndex == index + 1 ? 'active' : ''"
+                :key="index"
+            >
+                {{ item.label }}
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import list from '@/utils/list.js';
+
+export default {
+    mixins: [list],
+    data() {
+        return {
+            tabs: [
+                {
+                    label: '缴费设置'
+                },
+                {
+                    label: '阀控设置'
+                },
+                {
+                    label: '闸控设置'
+                }
+            ],
+            activeIndex: 1
+        };
+    },
+    methods: {
+        toggle(index) {
+            this.activeIndex = index;
+        }
+    },
+
+    created() {}
+};
+</script>
+<style lang='scss' scoped >
+@import '@assets/css/public-style.scss';
+.search_bottom_tab {
+    height: 60px;
+    line-height: 60px;
+    background: #ffffff;
+    border-radius: 4px;
+    margin-bottom: 20px;
+    padding: 0 20px;
+    box-sizing: border-box;
+    .tab_list {
+        display: inline-block;
+        border-bottom: 2px solid transparent;
+        cursor: pointer;
+        color: #424656;
+        &:not(:last-child) {
+            margin-right: 40px;
+        }
+        &.active {
+            color: $mainTextColor;
+            border-color: $mainTextColor;
+        }
+    }
+}
+</style>

+ 196 - 0
operationSupport/src/views/payService/systemSetup/stepPage/bulk.vue

@@ -0,0 +1,196 @@
+<template>
+    <div>
+        <div class="formContent-item_title marginNone">{{ chiData.address }}</div>
+        <div class="formContent-item_title noneBef">{{ assets }}</div>
+        <zz-table :settings="{ showIndex: true, stripe: true, hidePagination: true }" :cols="cols" :data="tabList">
+            <template slot-scope="scope" slot="sumTotle">
+                <div class="opt">
+                    <el-input v-model="scope.row.sumTotle" oninput="value=value.replace(/[^0-9.]/g,'')"></el-input>
+                </div>
+            </template>
+        </zz-table>
+        <el-form ref="form" :model="formData" :rules="formRules" label-width="110px">
+            <div class="inline">
+                <el-form-item label="支付方式:" prop="payType">
+                    <el-select placeholder="选择支付方式" v-model="formData.payType">
+                        <el-option label="微信" :value="1"></el-option>
+                        <el-option label="支付宝" :value="2"></el-option>
+                        <el-option label="现金" :value="3"></el-option>
+                        <el-option label="其他" :value="5"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="应收金额(元):"> {{ fiterSum(tabList, 'receivableAmount') }}</el-form-item>
+                <el-form-item label="实收金额(元):" required="true"> {{ fiterSum(tabList, 'sumTotle') }} </el-form-item>
+            </div>
+            <el-form-item label="备注信息:" placeholder="请输入备注信息">
+                <el-input type="textarea" maxlength="100" show-word-limit resize="none" rows="3" v-model="formData.remark"></el-input>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script >
+export default {
+    props: ['params'],
+    data() {
+        return {
+            cols: [
+                {
+                    label: '订单号',
+                    prop: 'billNumber'
+                },
+                {
+                    label: '费用名称',
+                    prop: 'chargeType',
+                    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: 'paymentDays'
+                },
+                {
+                    label: '费用金额(元)',
+                    prop: 'amount'
+                },
+                {
+                    label: '滞纳金(元)',
+                    prop: 'lateFee'
+                },
+
+                {
+                    label: '应收金额(元)',
+                    prop: 'receivableAmount'
+                },
+
+                {
+                    label: '实收金额',
+                    prop: 'sumTotle',
+                    slot: 'sumTotle'
+                }
+            ],
+            tabList: [],
+            chiData: {},
+            formData: {
+                payType: '',
+                remark: '',
+                amount: '',
+                billList: [
+                    {
+                        amount: '',
+                        billId: ''
+                    }
+                ]
+            },
+            formRules: {
+                payType: [this.$valid.selectRequired('支付方式')]
+            }
+        };
+    },
+    methods: {
+        fiterSum(arr, val) {
+            let v = null;
+            arr.forEach((item) => {
+                v += Number(item[val]);
+            });
+            return v;
+        },
+        submit() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    let isValid = true;
+                    let billList = this.tabList.map((item, index) => {
+                        if (!!item.sumTotle) {
+                            return {
+                                amount: item.sumTotle,
+                                billId: item.id
+                            };
+                        } else {
+                            isValid = false;
+                        }
+                    });
+                    let installData = {
+                        payType: this.formData.payType,
+                        remark: this.formData.remark,
+                        billList: billList
+                    };
+                    if (!isValid) {
+                        this.$message.error('实收金额必填');
+                        return;
+                    } else {
+                        var loading = this.$loading();
+                        this.$http
+                            .post('/sc-charge/charge/bill/payee', installData)
+                            .then(({ status, msg }) => {
+                                if (status == 0) {
+                                    this.$message.success(msg);
+                                    this.params.callback();
+                                    this.$emit('close');
+                                } else {
+                                    this.$message.error(msg);
+                                }
+                                loading.close();
+                            })
+                            .catch(() => {
+                                loading.close();
+                            });
+                    }
+                }
+            });
+        },
+        getTable(list) {
+            let ids = [];
+            list.map((item) => {
+                ids.push(item.id);
+            });
+            this.$http
+                .post('/sc-charge/charge/bill/findUserBillDetailList', ids)
+                .then((res) => {
+                    res.map((item) => {
+                        item.sumTotle = '';
+                    });
+                    this.tabList = res;
+                    console.log(res);
+                })
+                .catch(() => {
+                    loading.close();
+                });
+        }
+    },
+    created() {
+        if (this.params.selectRow.length) {
+            this.getTable(this.params.selectRow);
+        }
+
+        this.chiData = this.params.chiData;
+    }
+};
+</script>
+<style lang="scss" scoped>
+.marginNone {
+    margin-bottom: 0;
+}
+.zz-table {
+    margin-bottom: 20px;
+}
+.noneBef {
+    margin-top: 5px;
+    &::before {
+        content: none;
+    }
+}
+.inline {
+    display: flex;
+    justify-content: space-between;
+}
+</style>

+ 124 - 0
operationSupport/src/views/payService/systemSetup/stepPage/details.vue

@@ -0,0 +1,124 @@
+<template>
+    <div class="lookDetail">
+        <div class="formContent-item_title">{{ thisItem.billNumber }}-{{ thisItem.assets }}</div>
+        <el-form ref="form" label-width="110px">
+            <template v-for="(item, index) in formLook">
+                <el-col :span="12" :key="index">
+                    <el-form-item :label="item.label">
+                        <template v-if="item.slot">
+                            <template v-if="item.slot === 'chargeStatus'">
+                                <span v-if="thisItem['chargeStatus'] == 1" class="redText">未缴费</span>
+                                <span v-else class="greenText">已缴费</span>
+                            </template>
+                            <template v-if="item.slot === 'payEndTime'">
+                                <div style="white-space: nowrap">{{ thisItem['payBeginTime'] }} - {{ thisItem['payEndTime'] }}</div>
+                            </template>
+                        </template>
+                        <template v-else>
+                            {{ thisItem[item.prop] || '--' }}
+                        </template>
+                    </el-form-item>
+                </el-col>
+            </template>
+        </el-form>
+    </div>
+</template>
+<script >
+export default {
+    props: ['params'],
+    data() {
+        return {
+            formLook: [
+                {
+                    label: '费用名称:',
+                    prop: 'chargeName'
+                },
+                {
+                    label: '计费标准:',
+                    prop: 'chargeModeDict'
+                },
+                {
+                    label: '面积(㎡):',
+                    prop: 'assetsArea'
+                },
+                {
+                    label: '单价(元):',
+                    prop: 'chargePrice'
+                },
+                {
+                    label: '费用金额(元):',
+                    prop: 'amount'
+                },
+                {
+                    label: '账期:',
+                    prop: 'paymentDays'
+                },
+                {
+                    label: '账单收费日期:',
+                    prop: 'payEndTime',
+                    slot: 'payEndTime'
+                },
+                {
+                    label: '滞纳金(元):',
+                    prop: 'lateFee'
+                },
+                {
+                    label: '缴费状态:',
+                    prop: 'chargeStatus',
+                    slot: 'chargeStatus'
+                },
+                {
+                    label: '业主:',
+                    prop: 'residentName'
+                },
+                {
+                    label: '业主手机号:',
+                    prop: 'phone'
+                },
+                {
+                    label: '收款人:',
+                    prop: 'payee'
+                },
+                {
+                    label: '收款时间:',
+                    prop: 'chargeDate'
+                },
+                {
+                    label: '应收金额(元):',
+                    prop: 'receivableAmount'
+                },
+                {
+                    label: '实收金额(元):',
+                    prop: 'receivedAmount'
+                }
+            ],
+            thisItem: {}
+        };
+    },
+
+    methods: {
+        getDatali(id) {
+            this.$http
+                .get('/sc-charge/charge/bill/findUserBillDetail', { id: id })
+                .then(({ data, msg, status }) => {
+                    if (status == 0) {
+                        this.thisItem = data;
+                    }
+                })
+                .catch(() => {});
+        }
+    },
+    created() {
+        this.getDatali(this.params.id);
+    }
+};
+</script>
+<style lang="scss" scoped>
+@import '@assets/css/public-style.scss';
+.lookDetail {
+    /deep/ .el-form-item__label,
+    /deep/.el-form-item__content {
+        font-size: 12px;
+    }
+}
+</style>

+ 181 - 0
operationSupport/src/views/payService/systemSetup/stepPage/single.vue

@@ -0,0 +1,181 @@
+<template>
+    <div class="lookDetail">
+        <div class="formContent-item_title">{{ chiData.assets }}</div>
+        <el-form ref="form" :model="formData" :rules="formRules" label-width="110px">
+            <template v-for="(item, index) in formLook">
+                <el-col :span="12" :key="index">
+                    <el-form-item :label="item.label">
+                        <template v-if="item.slot">
+                            <template v-if="item.slot === 'chargeMode'">
+                                {{ thisItem[item.prop] === 1 ? '固定收费' : '价格*面积收费' }}
+                            </template>
+                            <template v-if="item.slot === 'chargeStatus'">
+                                <span class="redText">未缴费</span>
+                            </template>
+                        </template>
+                        <template v-else>
+                            {{ thisItem[item.prop] || '--' }}
+                        </template>
+                    </el-form-item>
+                </el-col>
+            </template>
+            <div class="inline">
+                <el-form-item label="支付方式" prop="payType">
+                    <el-select v-model="formData.payType">
+                        <el-option label="微信" :value="1"></el-option>
+                        <el-option label="支付宝" :value="2"></el-option>
+                        <el-option label="现金" :value="3"></el-option>
+                        <el-option label="其他" :value="5"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="应收金额(元)"
+                    ><div style="white-space: nowrap">{{ thisItem.receivableAmount }}</div></el-form-item
+                >
+                <el-form-item label="实收金额(元)" prop="amount"
+                    ><el-input oninput="value=value.replace(/[^0-9.]/g,'')" v-model="formData.amount"></el-input
+                ></el-form-item>
+            </div>
+
+            <el-form-item label="备注信息" placeholder="请输入备注信息">
+                <el-input type="textarea" maxlength="100" v-model="formData.remark" show-word-limit resize="none" rows="3"></el-input>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script >
+export default {
+    props: ['params'],
+    data() {
+        return {
+            formLook: [
+                {
+                    label: '费用名称:',
+                    prop: 'chargeName'
+                },
+                {
+                    label: '计费标准:',
+                    prop: 'chargeMode',
+                    slot: 'chargeMode'
+                },
+                {
+                    label: '面积(㎡):',
+                    prop: 'assetsArea'
+                },
+                {
+                    label: '单价(元):',
+                    prop: 'chargePrice'
+                },
+                {
+                    label: '费用金额(元):',
+                    prop: 'amount'
+                },
+                {
+                    label: '账期:',
+                    prop: 'paymentDays'
+                },
+                {
+                    label: '滞纳金(元):',
+                    prop: 'lateFee'
+                },
+                {
+                    label: '缴费状态:',
+                    prop: 'chargeStatus',
+                    slot: 'chargeStatus'
+                },
+                {
+                    label: '业主:',
+                    prop: 'residentName'
+                },
+                {
+                    label: '业主手机号:',
+                    prop: 'phone'
+                },
+                {
+                    label: '账单收费日期:',
+                    prop: 'payEndTime'
+                }
+            ],
+            thisItem: {},
+            chiData: {},
+            formData: {
+                payType: '',
+                remark: '',
+                amount: '',
+                billList: [
+                    {
+                        amount: '',
+                        billId: ''
+                    }
+                ]
+            },
+            formRules: {
+                payType: [this.$valid.selectRequired('支付方式')],
+                amount: [this.$valid.inputRequired('实收金额')]
+            }
+        };
+    },
+
+    methods: {
+        submit() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    var loading = this.$loading();
+                    let installData = {
+                        payType: this.formData.payType,
+                        remark: this.formData.remark,
+                        billList: [
+                            {
+                                amount: this.formData.amount,
+                                billId: this.thisItem.id
+                            }
+                        ]
+                    };
+                    this.$http
+                        .post('/sc-charge/charge/bill/payee', installData)
+                        .then(({ status, msg }) => {
+                            if (status == 0) {
+                                this.$message.success(msg);
+                                this.params.callback();
+                                this.$emit('close');
+                            } else {
+                                this.$message.error(msg);
+                            }
+                            loading.close();
+                        })
+                        .catch(() => {
+                            loading.close();
+                        });
+                }
+            });
+        },
+        getDatali(id) {
+            this.$http
+                .get('/sc-charge/charge/bill/findUserBillDetail', { id: id })
+                .then(({ data, msg, status }) => {
+                    if (status == 0) {
+                        this.thisItem = data;
+                    }
+                })
+                .catch(() => {});
+        }
+    },
+    created() {
+        this.getDatali(this.params.data.id);
+        this.chiData = this.params.data;
+    }
+};
+</script>
+<style lang="scss" scoped>
+
+.lookDetail {
+    /deep/ .el-form-item__label,
+    /deep/.el-form-item__content {
+        font-size: 12px;
+    }
+}
+.inline {
+    clear: left;
+    display: flex;
+    justify-content: space-between;
+}
+</style>

+ 99 - 0
operationSupport/src/views/payService/systemSetup/stepPage/temporary.vue

@@ -0,0 +1,99 @@
+<template>
+    <el-form ref="form" :model="formData" :rules="formRules" label-width="120px">
+        <el-form-item label="选择收费项目" prop="chargeType">
+            <el-select placeholder="选择收费项目" v-model="formData.strategyId" clearable>
+                <el-option label="物业管理费" :value="item.id" v-for="(item, index) in selectData" :key="index">{{
+                    item.chargeName
+                }}</el-option>
+            </el-select>
+        </el-form-item>
+        <el-form-item label="收费时间" prop="chargeStartTime" class="chargeStartTime">
+            <el-date-picker
+                v-model="times"
+                @change="effectiveDateToggle"
+                type="monthrange"
+                range-separator="至"
+                value-format="yyyy-MM"
+                start-placeholder="开始月份"
+                end-placeholder="结束月份"
+            >
+            </el-date-picker>
+        </el-form-item>
+    </el-form>
+</template>
+<script >
+export default {
+    props: ['params'],
+    data() {
+        return {
+            formData: {
+                assetsId: '',
+                strategyId: '',
+                assetsType: 1,
+                chargeType: 1,
+                chargeStartTime: '2021-09',
+                chargeEndTime: '2021-09'
+            },
+            times: [],
+            selectData: [],
+            formRules: {
+                chargeType: [this.$valid.selectRequired('充值方式')],
+                chargeStartTime: [this.$valid.selectRequired('收费时间')]
+            }
+        };
+    },
+
+    methods: {
+        submit() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    var loading = this.$loading();
+                    this.$http
+                        .post('/sc-charge/charge/bill/create', this.formData)
+                        .then(({ status, msg }) => {
+                            if (status == 0) {
+                                this.$message.success(msg);
+                                this.params.callback();
+                                this.$emit('close');
+                            } else {
+                                this.$message.error(msg);
+                            }
+                            loading.close();
+                        })
+                        .catch(() => {
+                            loading.close();
+                        });
+                }
+            });
+        },
+        effectiveDateToggle(va) {
+            let arr = va;
+            if (!arr) {
+                arr = ['', ''];
+            }
+            this.formData.chargeStartTime = arr[0];
+            this.formData.chargeEndTime = arr[1];
+        },
+        getSelect() {
+            this.$http
+                .get('/sc-charge/scChargeStrategy/page?pageNum=1&pageSize=100&chargeType=1')
+                .then(({ data, status, msg }) => {
+                    this.selectData = data.list;
+                })
+                .catch(() => {});
+        }
+    },
+    created() {
+        this.getSelect();
+        // this.selectData = this.params.selectData
+        this.formData.assetsId = this.params.chiData.value;
+    }
+};
+</script>
+<style lang="scss" scoped>
+.chargeStartTime {
+    /deep/ .el-date-editor--monthrange.el-input__inner {
+        width: 100%;
+    }
+}
+</style>