Bladeren bron

租户管理增加关联单位、联系人、物业,以及关联收费项目类型的单价(如月租、卫生费、物业管理费、水费)。

jz.kai 5 jaren geleden
bovenliggende
commit
b237fcc3c8

+ 16 - 1
src/api/base/payService.js

@@ -38,7 +38,22 @@ function remove(id){
   return request.post(constant.serverUrl + "/base/goodsInfo/delete/" + id);
 }
 
+function payServiceList(formData) {
+  return request.post(constant.serverUrl + "/base/goodsInfo/payServiceList", formData, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function addList(formData) {
+  return request.post(constant.serverUrl + "/base/goodsInfo/addList", formData, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
 
 export default {
-    payServicePageList,goodsTypeList,addPayService,update,editPayService,create,remove
+    payServicePageList,goodsTypeList,addPayService,update,editPayService,create,remove,payServiceList,addList
   }

+ 1 - 1
src/routers/modules/base.js

@@ -568,7 +568,7 @@ var routers = [
                         roles: ["admin"],
                         title: '物业公司收款账户管理'
                 }
-        }
+        }, 
 ]
 
 export default routers;

+ 71 - 17
src/views/base/checkinInfo-detail.vue

@@ -37,27 +37,43 @@
             style="width: 300px"
           ></el-input>
         </el-form-item>
-        <el-form-item label="企业名称" prop="name">
+        <!-- <el-form-item label="企业名称" prop="name">
           <el-input
             v-model="formModel.name"
             placeholder="请输入企业名称"
             style="width: 300px"
           ></el-input>
+        </el-form-item> -->
+        <el-form-item label="企业名称" prop="companyId">
+          <el-select-tree
+            :props="companyProps"
+            :options="companyResult"
+            v-model="formModel.companyId"
+            style="width: 300px"
+          ></el-select-tree>
         </el-form-item>
-        <el-form-item label="法人" prop="artificialPerson">
+        <!-- <el-form-item label="联系人" prop="artificialPerson">
           <el-input
             v-model="formModel.artificialPerson"
-            placeholder="请输入法人"
+            placeholder="请输入联系人"
             style="width: 300px"
           ></el-input>
+        </el-form-item> -->
+        <el-form-item label="联系人" prop="artificialPerson">
+          <el-select-tree
+            :props="personProps"
+            :options="personResult"
+            v-model="formModel.artificialPerson"
+            style="width: 300px"
+          ></el-select-tree>
         </el-form-item>
-        <el-form-item label="联系电话" prop="artificialPersonPhone">
+        <!-- <el-form-item label="联系电话" prop="artificialPersonPhone">
           <el-input
             v-model="formModel.artificialPersonPhone"
             placeholder="请输入联系电话"
             style="width: 300px"
           ></el-input>
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item label="面积" prop="area">
           <el-input
             v-model="formModel.area"
@@ -81,19 +97,19 @@
             style="width: 300px"
           ></el-input>
       </el-form-item>
-        <el-form-item label="租金" prop="rent">
+        <!-- <el-form-item label="租金" prop="rent">
           <el-input
             v-model="formModel.rent"
             placeholder="请输入租金"
             style="width: 300px"
           ></el-input>
-        </el-form-item>
-        <el-form-item label="缴纳方式" prop="paymentMethod">
+        </el-form-item> -->
+        <!-- <el-form-item label="缴纳方式" prop="paymentMethod">
           <el-select v-model="formModel.paymentMethod" style="width:300px;" clearable>
           <el-option v-for="(item,index) in paymentMethodList" 
           :label="item.name" :value="item.value" :key="index"></el-option>
         </el-select>
-        </el-form-item>
+        </el-form-item> -->
       </el-form>
     </div>
     <span slot="footer" class="dialog-footer">
@@ -108,13 +124,14 @@
 import Constant from "@/constant";
 import checkinInfoApi from "@/api/base/checkinInfo";
 import dataDictionaryApi from "@/api/sys/dataDictionary";
+import companyInfoApi from "@/api/base/companyInfo";
+import personInfoApi from "@/api/base/personInfo";
 import SelectTree from "@/components/SelectTree";
 
 export default {
   props: ["businessKey", "title"],
   data() {
     return {
-      paymentMethodList: [],
       formModel: {},
       ruleValidate: {
         id: [{ required: true, message: "编号不能为空", trigger: "blur" }],
@@ -122,11 +139,11 @@ export default {
           { required: true, message: "楼栋不能为空", trigger: "blur" },
         ],
         room: [{ required: true, message: "房号不能为空", trigger: "blur" }],
-        name: [
-          { required: true, message: "企业名称不能为空", trigger: "blur" },
+        companyId: [
+          { required: true, message: "企业不能为空", trigger: "blur" },
         ],
-        artificialPersonPhone: [
-          { required: true, message: "联系电话不能为空", trigger: "blur" },
+        artificialPerson: [
+          { required: true, message: "联系不能为空", trigger: "blur" },
         ],
         feeExpirationTime: [
           { required: true, message: "费用到期时间不能为空", trigger: "blur" },
@@ -138,15 +155,52 @@ export default {
       showDialog: true,
       loading: false,
       submitting: false,
+      paymentMethodList: [],
+      companyResult: [],
+      companyProps: {
+        value: "id",
+        label: "name",
+        children: "children"
+      },
+      personResult: [],
+      personProps: {
+        value: "id",
+        label: "name",
+        children: "children"
+      },
     };
   },
   created() {
+    var self = this;
+
     dataDictionaryApi.findByCatalogName({
       "catalogName" : "缴纳方式"
     }).then(response => {
       var jsonData = response.data;
       this.paymentMethodList = jsonData.data;
     });
+
+    companyInfoApi.list().then(function(response) {
+      var jsonData = response.data;
+      if (jsonData.result) {
+        self.companyResult = jsonData.data;
+      }
+    });
+  },
+  watch:{
+    "formModel.companyId": function (val, oldval) {
+      if (val != null && val != "") {
+        var self = this;
+        var formData = new FormData();
+        formData.append("companyId", val);
+        personInfoApi.findByCompanyId(formData).then(function(response) {
+          var jsonData = response.data;
+          if (jsonData.result) {
+            self.personResult = jsonData.data;
+          }
+        });
+      }
+    },
   },
   methods: {
     closeDialog() {
@@ -212,8 +266,8 @@ export default {
         self.$message.error(error + "");
       });
   },
-  // components: {
-  //   "el-select-tree": SelectTree
-  // },
+  components: {
+    "el-select-tree": SelectTree
+  },
 };
 </script>

+ 26 - 8
src/views/base/checkinInfo-list.vue

@@ -26,9 +26,9 @@
           v-model="queryModel.biulding"
         ></el-input>
       </el-form-item>
-      <el-form-item label="企业名称" prop="name">
+      <!-- <el-form-item label="企业名称" prop="name">
         <el-input type="text" size="mini" v-model="queryModel.name"></el-input>
-      </el-form-item>
+      </el-form-item> -->
       <el-form-item label="费用到期" prop="feeExpirationTime">
         <el-date-picker v-model="queryModel.feeExpirationTime" value-format="yyyy-MM-dd" type="date" size="mini" placeholder="选择日期"></el-date-picker>
       </el-form-item>
@@ -89,13 +89,13 @@
       ></el-table-column>
       <el-table-column prop="room" label="房号" width="180"></el-table-column>
       <el-table-column
-        prop="name"
+        prop="companyName"
         label="企业名称"
         width="180"
       ></el-table-column>
       <el-table-column
-        prop="artificialPerson"
-        label="人"
+        prop="artificialPersonN"
+        label="联系人"
         width="180"
       ></el-table-column>
       <el-table-column
@@ -124,14 +124,17 @@
         label="租赁期限"
         width="180"
       ></el-table-column>
-      <el-table-column prop="rent" label="租金" width="180"></el-table-column>
+      <!-- <el-table-column prop="rent" label="租金" width="180"></el-table-column>
       <el-table-column
         prop="paymentMethod"
         label="缴纳方式"
         width="180"
-      ></el-table-column>
-      <el-table-column label="操作" fixed="right" width="200">
+      ></el-table-column> -->
+      <el-table-column label="操作" fixed="right" width="220">
         <template slot-scope="{ row }">
+          <el-button size="mini" type="primary" @click="handlePayment(row)"
+            >收费项</el-button
+          >
           <el-button size="mini" type="warning" @click="handleEdit(row)"
             >编辑</el-button
           >
@@ -155,11 +158,18 @@
       :title="modalTitle"
       @close="onDetailModalClose"
     ></checkinInfo-detail>
+    <checkinInfo-payment
+      v-if="showModal1"
+      :businessKey="businessKey"
+      :title="modalTitle"
+      @close="onDetailModalClose"
+    ></checkinInfo-payment>
   </div>
 </template>
 <script>
 import Constant from "@/constant";
 import CheckinInfoDetail from "./checkinInfo-detail";
+import CheckinInfoPayment from "./checkinInfo-payment";
 import checkinInfoApi from "@/api/base/checkinInfo";
 import NProgress from "nprogress"; // progress bar
 import "nprogress/nprogress.css"; // progress bar style
@@ -187,6 +197,7 @@ export default {
       pageSizeList: [10, 20, 30],
       multipleSelection: [],
       showModal: false,
+      showModal1: false,
       modalTitle: "",
       businessKey: "",
     };
@@ -262,6 +273,11 @@ export default {
       this.businessKey = record.id;
       this.showModal = true;
     },
+    handlePayment(record) {
+      this.modalTitle = "收费项";
+      this.businessKey = record.id;
+      this.showModal1 = true;
+    },
     handleDelete(record) {
       var self = this;
 
@@ -317,6 +333,7 @@ export default {
     onDetailModalClose(refreshed) {
       //保存成功后回调
       this.showModal = false;
+      this.showModal1 = false;
 
       if (refreshed) {
         this.changePage(this.pageIndex);
@@ -328,6 +345,7 @@ export default {
   },
   components: {
     "checkinInfo-detail": CheckinInfoDetail,
+    "checkinInfo-payment": CheckinInfoPayment,
   },
 };
 </script>

+ 122 - 0
src/views/base/checkinInfo-payment.vue

@@ -0,0 +1,122 @@
+<style scoped>
+.user-panel {
+  margin: 10px auto;
+}
+</style>
+<template>
+  <el-dialog
+    :visible.sync="showDialog"
+    :title="title"
+    :modal-append-to-body="true"
+    append-to-body
+    :close-on-click-modal="false"
+    style="text-align: left"
+    width="80%"
+    @close="closeDialog"
+  >
+    <div class="user-panel" v-loading="loading">
+      <el-form ref="form" :model="fromModel">
+        <el-table
+              ref="formTable"
+              :data="tableData"
+              v-loading="loading"
+              element-loading-text="拼命加载中"
+              stripe
+          >
+              <el-table-column prop="name" label="收费项目" ></el-table-column>
+              <el-table-column prop="desc" label="收费项目说明" ></el-table-column>
+              <el-table-column label="单价">
+                <template slot-scope="scope">
+                  <el-input v-model="scope.row.unitPrice" oninput ="value=value.replace(/[^0-9.]/g,'')" />
+                </template>
+              </el-table-column>
+              <el-table-column prop="unit" label="单位" ></el-table-column>
+          </el-table>
+      </el-form>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="closeDialog">取 消</el-button>
+      <el-button type="primary" @click="handleSubmit" :loading="submitting"
+        >确 定</el-button
+      >
+    </span>
+  </el-dialog>
+</template>
+<script>
+import Constant from "@/constant";
+import checkinInfoApi from "@/api/base/checkinInfo";
+import payServiceApi from "@/api/base/payService";
+import SelectTree from "@/components/SelectTree";
+
+export default {
+  props: ["businessKey", "title"],
+  data() {
+    return {
+      fromModel:{},
+      tableData: [],
+      showDialog: true,
+      loading: false,
+      submitting: false,
+    };
+  },
+  created() {
+    var self = this;
+  },
+  methods: {
+    closeDialog() {
+      this.$emit("close", false);
+    },
+    changePage(pageIndex) {
+      var self = this;
+        this.loading = true;
+        var formData = new FormData();
+        formData.append("businessKey", self.businessKey);
+
+        payServiceApi.payServiceList(formData).then(response => {
+            this.loading = false;
+            var jsonData = response.data;
+
+            console.log(jsonData);
+
+            this.tableData = jsonData.data.data;
+            this.totalElements = jsonData.data.recordsTotal;
+        });
+    },
+    handleSubmit() {
+      var self = this;
+      
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          (function () {
+            return payServiceApi.addList(self.tableData);
+          })().then(function (response) {
+            var jsonData = response.data;
+
+            if (jsonData.result) {
+              self.$message({
+                message: "保存成功!",
+                type: "success",
+              });
+
+              self.$emit("close", true);
+            } else {
+              self.$message({
+                message: jsonData.message + "",
+                type: "warning",
+              });
+
+              self.$emit("close", false);
+            }
+          });
+        }
+      });
+    },
+  },
+  mounted: function () {
+    this.changePage(1);
+  },
+  components: {
+    // "el-select-tree": SelectTree
+  },
+};
+</script>