Browse Source

抄表算费

shudong 1 year ago
parent
commit
2323ae8c5e

+ 31 - 3
src/views/mis/common/api/meterReadingApi.js

@@ -10,7 +10,7 @@ const MeterReading = {
      */
     queryList(requestParams) {
         return request({
-            url: '/fees/api/bwmeterreadplan/page',
+            url: '/fees/api/bwMeterReadPlan/page',
             method: 'post',
             params: requestParams
         });
@@ -22,15 +22,43 @@ const MeterReading = {
      */
     saveInfo(requestParams) {
         return request({
-            url: '/fees/api/bwmeterreadplan/save',
+            url: '/fees/api/bwMeterReadPlan/save',
             method: 'post',
             data: requestParams
         });
     }
 }
 
+/******************************************* 抄表算费 *******************************************/
+const MeterCalcFee = {
+    /**
+     * 查询抄表册列表数据
+     * @param {object} requestParams 请求参数集
+     * @returns 
+     */
+    getMrBookList(requestParams) {
+        return request({
+            url: '/fees/api/bwMeterReadPlan/getMrBookList',
+            method: 'post',
+            params: requestParams
+        });
+    },
+    /**
+     * 获取可算费的用户明细数据
+     * @param {object} requestParams 请求参数集
+     * @returns 
+     */
+    getUserList(requestParams) {
+        return request({
+            url: '/fees/api/bwMeterReadPlan/getUserList',
+            method: 'post',
+            params: requestParams
+        });
+    }
+}
+
 //输出对象
-export { MeterReading };
+export { MeterReading,MeterCalcFee };
 
 /***************************************************************************************************/
 

+ 3 - 3
src/views/mis/meterManage/meterInfo/meter-index.vue

@@ -83,7 +83,7 @@ export default {
       column_customer: [
         {
           label: '所属片区',
-          prop: 'mrArea',
+          prop: 'mrAreaName',
           align: 'left',
           width: 120,
           sortable: true,
@@ -91,7 +91,7 @@ export default {
         },
         {
           label: '所属抄表册',
-          prop: 'mrBook',
+          prop: 'mrBookName',
           align: 'left',
           width: 125,
           sortable: true,
@@ -421,7 +421,7 @@ export default {
       this.meterFormData.meterCardNo = cardNo;
       this.meterFormData.meterCardId = userRow.customerNo.toString() + cardNo.toString();
       this.meterFormData.operatorName = this.$store.state.user.realName;
-      this.meterFormData.operatorDatetime = DateHelper.getNowFormatDate(true);
+      this.meterFormData.operatorDatetime = DateHelper.getNowFormatDate(false);
       this.meterFormData.meterState = "1";
 
       this.dialogVisible = true; //显示弹窗

+ 157 - 271
src/views/mis/meterReadingManagement/bwMeterReadCalcFee-index.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="mis-layout">
-        <div style="height:90px;">
+        <div style="height:80px;">
             <div class="mis-layout-header">
                 <div class="pannel-header">
                     <div class="pannel-title">
@@ -19,9 +19,9 @@
                     </cpsSelect>
                     <span>财务日期:</span>
                     <cpsSelect skey="cwrq" :params="{ gd_flag: '0' }" isDisabled="all" orderWay="desc" size="small"
-                        :clearable="false" :isSelectedFirstOption="true" style="width:200px">
+                        :clearable="false" :isSelectedFirstOption="true" style="width:100px">
                     </cpsSelect>
-                    <el-button type="primary" icon="el-icon-refresh" @click="onSearch()" size="small">刷新</el-button>
+                    <el-button type="primary" icon="el-icon-refresh" @click="onRefresh()" size="small">刷新</el-button>
                 </div>
             </div>
         </div>
@@ -36,42 +36,43 @@
             </div>
             <div class="mis-layout-main" style="height: calc(100% - 36px);">
                 <TableItem :table-data="listData" :column="columnData" :for-id="false" :pagination="true"
-                    :pagesize="pageInfo.size" :currentpage="pageInfo.current" :border="true" :multiple="false"
+                    :pagesize="pageInfo.size" :currentpage="pageInfo.current" :border="true" :multiple="true"
                     :total="pageInfo.total" :isdelete="false" :is-select="false" :stripe="false"
-                    @handleCurrentChange="onHandleCurrentChange" @rowClick="onRowClick"
+                    @handleCurrentChange="onHandleCurrentChange" @handleSelectionChange="onHandleSelectionChange"
                     @handleSizeChange="onHandleSizeChange" @sortChange="onSortChange" />
             </div>
         </div>
         <div class="mis-layout-right">
-            <div class="mis-layout-header" style="height:90px;">
+            <div class="mis-layout-header" style="height:36px;">
                 <div class="pannel-header" style="border-left:1px;">
-                    <div class="pannel-title">
+                    <div class="pannel-title" style="display:inline-block">
                         <div class="pannel-split">
                         </div>可算费用户明细列表
                     </div>
-                </div>
-                <div class="filter-option">
-                    <el-input v-model="queryParams.searchText" size="small" style="width:220px;" placeholder="用户编号、姓名、地址"
-                        clearable @change="clickQuery()" />
-                    <el-button type="primary" icon="el-icon-search" @click="onSearch()" size="small">查询</el-button>
-                    <el-button type="primary" icon="el-icon-s-custom" @click="onSearch()" size="small">算费(按选中用户)</el-button>
-                    <el-button type="primary" icon="el-icon-notebook-1" @click="onSearch()"
-                        size="small">算费(按选中抄表册)</el-button>
+                    <div style="float: right;position: absolute;top: 136px;right: 15px;">
+                        <el-input v-model="queryParams.searchText" size="mini" style="width:180px;" placeholder="用户编号、姓名、地址"
+                            clearable @change="onSearch()" />
+                        <el-button type="primary" icon="el-icon-search" @click="onSearch()" size="mini">查询</el-button>
+                        <el-button type="primary" icon="el-icon-s-custom" @click="onSearch()"
+                            size="mini">算费(按选中用户)</el-button>
+                        <el-button type="primary" icon="el-icon-notebook-1" @click="onSearch()"
+                            size="mini">算费(按选中抄表册)</el-button>
+                    </div>
                 </div>
             </div>
-            <div class="mis-layout-main" style="height: calc(100% - 90px);">
-                <TableItem :table-data="listData" :column="columnData" :for-id="false" :pagination="true"
-                    :pagesize="pageInfo.size" :currentpage="pageInfo.current" :border="true" :multiple="false"
-                    :total="pageInfo.total" :isdelete="false" :is-select="false" :stripe="false"
-                    @handleCurrentChange="onHandleCurrentChange" @rowClick="onRowClick"
-                    @handleSizeChange="onHandleSizeChange" @sortChange="onSortChange" />
+            <div class="mis-layout-main" style="height: calc(100% - 36px);">
+                <TableItem :table-data="listDataUser" :column="columnDataUser" :for-id="false" :pagination="true"
+                    :pagesize="pageInfoUser.size" :currentpage="pageInfoUser.current" :border="true" :multiple="true"
+                    :total="pageInfoUser.total" :isdelete="false" :is-select="false" :stripe="false"
+                    @handleCurrentChange="onHandleCurrentChangeUser" @handleSizeChange="onHandleSizeChangeUser"
+                    @sortChange="onSortChangeUser" />
             </div>
         </div>
     </div>
 </template> 
 <script>
 import '@/views/mis/common/assets/styles/misStyle.scss';
-import { MeterReading } from '@/views/mis/common/api/meterReadingApi.js';
+import { MeterCalcFee } from '@/views/mis/common/api/meterReadingApi.js';
 import TableItem from '@/components/TableAuto/index.vue';
 import cpsSelect from '@/views/mis/common/components/cps-select.vue';
 import cpsCompany from '@/views/mis/common/components/cps-company.vue';
@@ -83,86 +84,74 @@ export default {
             queryParams: {
                 companyBranch: "",
                 mrArea: "",
-                mrBook: "",
-                searchText: "",
-                mrOCode: "",
-                mrMode: "",
-                mrFlag: ""
+                searchText: ""
             },//搜索条件表单对象   
-            listInfoSelection: [], // 用户档案表格选中数据 
             pageInfo: {
                 current: 1,
                 size: 20,
                 total: 1,
-                sortOrder: 'asc',
-                sortProperty: 'mrOrderNo'
-            }, //用户档案分页数据 
-            columnData: [
-                {
-                    label: '用户编号',
-                    prop: 'customerNo',
-                    align: 'center',
-                    sortable: true,
-                    //fixed: true,
-                    //width: 120
-                },
-                {
-                    label: '抄表卡ID',
-                    prop: 'meterCardId',
-                    align: 'center',
-                    sortable: true,
-                    //fixed: true,
-                    //width: 120
-                },
-                {
-                    label: '用户姓名',
-                    prop: 'customerName',
-                    align: 'center',
-                    sortable: true,
-                    //fixed: true,
-                    //width: 130
-                }
-            ],
-            listData: [], // table表格数据  
-            detailForm: {
-                customerAddress: undefined,
-                thisReading: undefined,
-                quantity: undefined,
-                mrMode: undefined,
-                lastReading: undefined,
-                yearMonth: undefined,
-                meterRange: undefined,
-                remark: undefined,
-                mrTypeName: undefined,
-                jjl: undefined,
-                newMeterBreading: undefined,
-                customerName: undefined,
-                meterCardId: undefined,
-                rowId: undefined,
-                mrType: undefined,
-                oldMeterEreading: undefined,
-                mrModeName: undefined,
-                meterNo: undefined,
-                calFlag: undefined,
-                mrFlag: undefined,
-                customerMobile: undefined,
-                customerNo: undefined
+                'orders[0].asc': 'true',
+                'orders[0].column': 'cbbbm'
             },
-            labelData: {
-                scds: "上次读数",
-                bcds: "本次读数",
-                isXhb: false,           //是否为洗换表
-                isModifyScds: false,    //修改上次读数
-                isDisabledSaveBtn: true //是否禁用保存按钮
+            pageInfoUser: {
+                current: 1,
+                size: 20,
+                total: 1,
+                'orders[0].asc': 'true',
+                'orders[0].column': 'customerNo'
+            },
+            columnData: [{
+                label: '抄表本编码',
+                prop: 'cbbbm',
+                align: 'center',
+                sortable: true
+            },
+            {
+                label: '抄表本名称',
+                prop: 'cbbmc',
+                align: 'center',
+                sortable: true
+            },
+            {
+                label: '用户数量',
+                prop: 'yhsl',
+                align: 'center',
+                sortable: true
+            }],
+            columnDataUser: [{
+                label: '用户编号',
+                prop: 'customerNo',
+                align: 'center',
+                sortable: true
+            },
+            {
+                label: '抄表卡ID',
+                prop: 'meterCardId',
+                align: 'center',
+                sortable: true
             },
-            rules: {
-                lastReading: [{ required: true, message: '请输入读数', trigger: 'blur' }],
-                oldMeterEreading: [{ required: true, message: '请输入旧表止数', trigger: 'blur' }],
-                newMeterBreading: [{ required: true, message: '请输入新表起数', trigger: 'blur' }],
-                thisReading: [{ required: true, message: '请输入读数', trigger: 'blur' }],
-                jjl: [{ required: true, message: '请输入加减量', trigger: 'blur' }]
+            {
+                label: '用户姓名',
+                prop: 'customerName',
+                align: 'center',
+                sortable: true
             },
-            cbpqRefresh: false
+            {
+                label: '用户地址',
+                prop: 'customerAddress',
+                align: 'center',
+                sortable: true
+            },
+            {
+                label: '实际水量(吨)',
+                prop: 'quantity',
+                align: 'center',
+                sortable: true
+            }],
+            listData: [],
+            listDataUser: [],
+            cbpqRefresh: false,
+            selectedCbbbms: ""//选中的抄表本编码
         }
     },
     watch: {
@@ -170,32 +159,38 @@ export default {
     created() {
     },
     mounted() {
-        // this.queryParams.mrFlag="0";//默认加载未抄表的数据
-        // this.getData();
+        this.getData();
     },
     destroyed() {
     },
     methods: {
-        /***********************************事件方法***********************************/
+        /***********************************公共事件方法***********************************/
         /**
-         * 查询按钮事件
+         * 公司下拉事件
+         * @param {公司编码值} value 
          */
-        onSearch() {
-            this.clearPageInfo();
-            this.listInfoSelection = [];
-            this.labelData.isDisabledSaveBtn = true;
+        onCompanyChange(value) {
+            this.queryParams.mrArea = "";
+            this.queryParams.companyBranch = value;
+            this.cbpqRefresh = !this.cbpqRefresh;
+        },
+        /**
+         * 刷新按钮事件
+         */
+        onRefresh() {
             this.getData();
         },
+        /***********************************抄表本列表事件方法***********************************/
         /**
-         * 查询用户档案数据
+         * 查询抄表本列表数据
          */
         getData() {
             //追加分页参数 
             let params = Object.assign({}, this.pageInfo, this.queryParams);
             this.listData = [];
-            MeterReading.queryList(params).then((res) => {
+            MeterCalcFee.getMrBookList(params).then((res) => {
                 if (res.code !== 1) {
-                    this.$message.error('抄表计划信息获取出错!');
+                    this.$message.error('抄表信息获取出错!');
                     return;
                 }
                 //数据总数
@@ -220,165 +215,81 @@ export default {
             this.getData();
         },
         /**
-         * 单击行内容事件
-         * @param {object} row 当前行row对象数据
+         * 当选择项发生变化时会触发该事件
          */
-        onRowClick(row) {
-            this.clearPageInfo();
-            let rowData = Object.assign({}, row);
-            this.listInfoSelection = Object.assign({}, rowData, { rowIndex: row.rowIndex });
-            this.detailForm = rowData;
-            this.detailForm.mrType = this.detailForm.mrType.toString();
-            this.onMrTypeChange(this.detailForm.mrType, null);
-
-            this.setFormInfo(row);
-
-            this.$nextTick(() => {
-                this.$refs["detailForm"].validate();
-            });
-
-            this.labelData.isDisabledSaveBtn = false;
+        onHandleSelectionChange(row) {
+            if (row.length > 0) {
+                let cbbbms = [];
+                row.forEach(item => {
+                    cbbbms.push(item.cbbbm);
+                });
+                cbbbms = cbbbms.join(",");
+                this.selectedCbbbms = cbbbms;
+                this.getUserData();
+            } else {
+                this.selectedCbbbms = "";
+                this.listDataUser = [];
+            }
         },
         /**
          * 排序事件
          * @param {array} arrOrder 排序数组
          */
         onSortChange(arrOrder) {
-            this.pageInfo['sortOrder'] = (arrOrder[0] == "true" ? "asc" : (arrOrder[0] == "false" ? "desc" : ""));
-            this.pageInfo['sortProperty'] = arrOrder[1];
+            this.pageInfo['orders[0].asc'] = (arrOrder[0] == "true" ? "asc" : (arrOrder[0] == "false" ? "desc" : ""));
+            this.pageInfo['orders[0].column'] = arrOrder[1];
             this.getData();
         },
+        /***********************************用户算费列表***********************************/
         /**
-         * 换表保存处理按钮 
+         * 查询用户列表按钮事件
          */
-        submitForm() {
-            this.$refs["detailForm"].validate((valid) => {
-                if (valid) {
-                    this.saveInfo();
-                } else {
-                    this.$message.error("请将必填项填写完整后再保存!");
-                }
-            });
-        },
-        /**
-         * 清除页面相关数据
-         */
-        clearPageInfo() {
-            // 表单数据
-            for (var key in this.detailForm) {
-                let tempValue = "";
-                if (typeof key === "number" || typeof key === "bigint") tempValue = 0;
-                this.detailForm[key] = tempValue;
-            }
-            this.$refs["detailForm"].resetFields();
-        },
-        /**
-         * 计算实际水量
-         */
-        calcHjsl(isReturn) {
-            this.$refs.btnSave.$el.focus();//设置保存按钮获取焦点
-            var sjsl = 0;
-            var v_cblx = this.detailForm.mrType;
-            var scds = this.detailForm.lastReading;
-            var jbzd = this.detailForm.oldMeterEreading;
-            var xbqd = this.detailForm.newMeterBreading;
-            var bcds = this.detailForm.thisReading;
-            var jjl = this.detailForm.jjl;
-            if (v_cblx == "0") {//正常                
-                sjsl = bcds - scds + jjl;
-            } else if (v_cblx == "-1") { //表倒走               
-                sjsl = Math.abs(bcds - scds) + jjl;
-            }
-            else if (v_cblx == "-2") { //表满度               
-                var v_sblc = this.detailForm.meterRange;
-                var sbmdValue = Math.pow(10, v_sblc) - 1;
-                sjsl = Math.abs(sbmdValue - scds + bcds) + jjl;
-            }
-            else if (v_cblx == "-3") { //洗换表               
-                sjsl = (jbzd - scds) + (bcds - xbqd);
-            }
-            this.detailForm.quantity = sjsl;
-
-            if (isReturn) {
-                var data = {};
-                data.sjsl = sjsl;
-                data.cblx = v_cblx;
-                data.scds = scds;
-                data.jbzd = jbzd;
-                data.xbqd = xbqd;
-                data.bcds = bcds;
-                data.jjl = jjl;
-                return data;
-            }
+        onSearch() {
+            this.getUserData();
         },
         /**
-         * 抄表类型下拉事件
+         * 查询可算费的用户列表数据
          */
-        onMrTypeChange(value, selText) {
-            if (selText) this.detailForm.remark = "#" + selText + "#";
-            if (value == "-3") {//洗换表  
-                this.labelData.isXhb = true;
-                this.labelData.scds = "旧表起数";
-                this.labelData.bcds = "新表止数";
-            } else {
-                this.labelData.isXhb = false;
-                this.labelData.scds = "上次读数";
-                this.labelData.bcds = "本次读数";
-            }
-            this.detailForm.oldMeterEreading = this.detailForm.newMeterBreading
-                = this.detailForm.thisReading = this.detailForm.jjl = this.detailForm.quantity = 0;
-            this.$nextTick(() => {
-                this.$refs.bcds.select();
+        getUserData() {
+            //追加分页参数 
+            let params = Object.assign({}, this.pageInfoUser, this.queryParams);
+            params.mrBooks = this.selectedCbbbms;
+            this.listDataUser = [];
+            MeterCalcFee.getUserList(params).then((res) => {
+                if (res.code !== 1) {
+                    this.$message.error('用户信息获取出错!');
+                    return;
+                }
+                //数据总数
+                this.pageInfoUser.total = res.result.total;
+                this.listDataUser = res.result.records;
             });
         },
         /**
-         * 设置表单信息
-         * @param {object} row 行对象
-         */
-        setFormInfo(row) {
-            var isChk = this.labelData.isModifyScds;
-            if (isChk) {
-                this.modifyReadNum(false);
-            }
-            //设置表单信息
-            if (row) {
-                if (row.mrFlag == "0") {
-                    //未抄表的情况下,对抄表方式和抄表类型进行默认赋值处理
-                    if (this.detailForm.mrMode == "") this.detailForm.mrMode = "01";
-                    if (this.detailForm.mrType == "") this.detailForm.mrType = "0";
-                }
-                if (row.calFlag == "1") {
-                    //已算费的情况下进行提示
-                    this.$message.error("当前抄表记录已算费!");
-                    this.listInfoSelection = [];
-                }
-            }
+        * 分页每页条数事件
+        * @param {int} pageSize 页码大小
+        */
+        onHandleSizeChangeUser(pageSize) {
+            this.pageInfoUser.size = pageSize;
+            this.getData();
         },
         /**
-         * 修改底数
-         * @param {boolean} isChk 是否选中
+         * 改变当前页事件
+         * @param {int} currentPage 当前页码
          */
-        modifyReadNum(isChk) {
-            this.labelData.isModifyScds = isChk;
-            if (!isChk) {
-                let selRow = this.listInfoSelection;
-                let v_scds = selRow ? selRow.lastReading : 0;
-                this.detailForm.lastReading = v_scds;
-            }
-            this.$nextTick(() => {
-                this.$refs.scds.select();
-            });
+        onHandleCurrentChangeUser(currentPage) {
+            this.pageInfoUser.current = currentPage;
+            this.getData();
         },
         /**
-       * 公司下拉事件
-       * @param {公司编码值} value 
-       */
-        onCompanyChange(value) {
-            this.queryParams.mrArea = "";
-            this.queryParams.companyBranch = value;
-            this.cbpqRefresh = !this.cbpqRefresh;
+         * 排序事件
+         * @param {array} arrOrder 排序数组
+         */
+        onSortChangeUser(arrOrder) {
+            this.pageInfoUser['orders[0].asc'] = (arrOrder[0] == "true" ? "asc" : (arrOrder[0] == "false" ? "desc" : ""));
+            this.pageInfoUser['orders[0].column'] = arrOrder[1];
+            this.getData();
         }
-
         /*****************************************************************************/
     }
 }
@@ -393,32 +304,31 @@ export default {
 
     .mis-layout-left {
         width: 35%;
-        height: calc(100% - 90px);
+        height: calc(100% - 80px);
         float: left;
         border-right: 1px solid #ddd;
     }
 
     .mis-layout-right {
         width: 65%;
-        height: calc(100% - 90px);
+        height: calc(100% - 80px);
         float: left;
     }
 
     .mis-layout-header {
         width: 100%;
-        height: 90px;
+        height: 80px;
         overflow: auto;
     }
 
     .mis-layout-main {
         width: 100%;
-        height: calc(100% - 90px);
+        height: calc(100% - 80px);
         padding: 3px;
     }
 
     .pannel-header {
         padding: 5px;
-        padding-bottom: 5px;
         border-bottom: 1px solid #ddd;
     }
 
@@ -442,33 +352,9 @@ export default {
         height: auto;
         font-size: 14px;
         border-bottom: 1px solid #ddd;
-        padding: 10px 5px;
+        padding: 5px;
         float: left;
     }
 }
-
-/* 只读的 input 样式重写 */
-.grayBgColor>:first-child {
-    background-color: #FAFAFA;
-}
-
-.redTextColor>:first-child {
-    color: red;
-    background-color: #FAFAFA;
-}
-
-/*重写input-number的样式*/
-/deep/ .el-input input[role='spinbutton'] {
-    color: #409EFF;
-    font-weight: bold;
-    font-size: 16px;
-    text-align: left;
-}
-
-.buttonStyle {
-    margin-top: 25px;
-    float: left;
-    margin-left: 35%;
-}
 </style>