فهرست منبع

修改分润支付

lex-xin 5 سال پیش
والد
کامیت
52c9ae9823
33فایلهای تغییر یافته به همراه411 افزوده شده و 117 حذف شده
  1. 0 0
      dist/index.html
  2. 1 1
      dist/static/css/chunk-2463d69e.6466174d.css
  3. 0 0
      dist/static/css/chunk-9b604690.97eefd9f.css
  4. 1 1
      dist/static/css/chunk-e7504a0c.15704f6a.css
  5. 0 0
      dist/static/js/app.1931e4e9.js
  6. 0 0
      dist/static/js/chunk-01894b84.cdec0551.js
  7. 0 0
      dist/static/js/chunk-22e19336.42488137.js
  8. 0 0
      dist/static/js/chunk-2463d69e.25656185.js
  9. 0 0
      dist/static/js/chunk-40e665d1.cd91b91d.js
  10. 0 0
      dist/static/js/chunk-40e665d1.d3344733.js
  11. 0 0
      dist/static/js/chunk-6181ddae.69a82b0d.js
  12. 0 0
      dist/static/js/chunk-6181ddae.be092d23.js
  13. 0 0
      dist/static/js/chunk-68259a14.9583595d.js
  14. 0 0
      dist/static/js/chunk-68259a14.ee91d92a.js
  15. 0 0
      dist/static/js/chunk-6c42ea8e.63cccd81.js
  16. 0 0
      dist/static/js/chunk-6c42ea8e.850fcad4.js
  17. 0 0
      dist/static/js/chunk-98ae4e4a.1a75c475.js
  18. 0 0
      dist/static/js/chunk-98ae4e4a.77290727.js
  19. 0 0
      dist/static/js/chunk-9b604690.04dce09b.js
  20. 0 0
      dist/static/js/chunk-bb579d98.51f7ac9e.js
  21. 0 0
      dist/static/js/chunk-bb579d98.92430947.js
  22. 0 0
      dist/static/js/chunk-bc672cf4.254827bd.js
  23. 0 0
      dist/static/js/chunk-bc672cf4.639bdb6e.js
  24. 0 0
      dist/static/js/chunk-e7504a0c.4d432e8d.js
  25. 0 0
      dist/static/js/chunk-edcf4054.25f504fc.js
  26. 0 0
      dist/static/js/chunk-edcf4054.ef11323d.js
  27. 1 1
      package.json
  28. 18 0
      src/api/orderManager.js
  29. 159 42
      src/views/businessManager/orderManager/financeManager.vue
  30. 5 4
      src/views/chargeManager/index.vue
  31. 121 52
      src/views/chargeManager/one.vue
  32. 103 14
      src/views/chargeManager/two.vue
  33. 2 2
      vue.config.js

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/index.html


+ 1 - 1
dist/static/css/chunk-01894b84.641b676e.css → dist/static/css/chunk-2463d69e.6466174d.css

@@ -1 +1 @@
-.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}
+.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}.newBand{display:inline-block}/deep/.el-input-number.is-controls-right .el-input__inner{text-align:left}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/css/chunk-9b604690.97eefd9f.css


+ 1 - 1
dist/static/css/chunk-22e19336.0e3b30ef.css → dist/static/css/chunk-e7504a0c.15704f6a.css

@@ -1 +1 @@
-.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}.titlewrap[data-v-56a29c2a]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.titlewrap[data-v-56a29c2a],.wrap[data-v-56a29c2a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.wrap div[data-v-56a29c2a]{margin-right:20px}
+.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}.titlewrap[data-v-164a4cfc]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.titlewrap[data-v-164a4cfc],.wrap[data-v-164a4cfc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.wrap div[data-v-164a4cfc]{margin-right:20px}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/app.1931e4e9.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-01894b84.cdec0551.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-22e19336.42488137.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-2463d69e.25656185.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-40e665d1.cd91b91d.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-40e665d1.d3344733.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-6181ddae.69a82b0d.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-6181ddae.be092d23.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-68259a14.9583595d.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-68259a14.ee91d92a.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-6c42ea8e.63cccd81.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-6c42ea8e.850fcad4.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-98ae4e4a.1a75c475.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-98ae4e4a.77290727.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-9b604690.04dce09b.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-bb579d98.51f7ac9e.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-bb579d98.92430947.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-bc672cf4.254827bd.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-bc672cf4.639bdb6e.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-e7504a0c.4d432e8d.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-edcf4054.25f504fc.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-edcf4054.ef11323d.js


+ 1 - 1
package.json

@@ -74,4 +74,4 @@
     "> 1%",
     "last 2 versions"
   ]
-}
+}

+ 18 - 0
src/api/orderManager.js

@@ -38,6 +38,24 @@ export function orderFinance (data) {
   })
 }
 
+// 财务列表
+export function routeOrderFinance (data) {
+  return request({
+    url: api + '/routeOrder/finance',
+    method: 'get',
+    params: data
+  })
+}
+
+// 添加财务列表
+export function routeOrderAdd (data) {
+  return request({
+    url: api + '/routeOrder/add',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
+
 // 退费管理
 export function studentRefundsQueryPage (data) {
   return request({

+ 159 - 42
src/views/businessManager/orderManager/financeManager.vue

@@ -1,4 +1,3 @@
-@@ -0,0 +1,320 @@
 <template>
   <div class="m-container">
     <h2>
@@ -10,28 +9,17 @@
         @click="onOrderExport"
         v-permission="{child: 'export/orderList', parent: '/financeManager'}"
       >报表导出</div>
+      <div class="newBand" v-permission="{child: 'routeOrder/add', parent: '/financeManager'}" @click="routeOrderStatus = true">添加订单</div>
       <!-- 搜索类型 -->
       <el-form :inline="true" class="searchForm" v-model.trim="searchForm">
         <el-form-item>
-          <el-input
-            placeholder="交易流水号"
-            type="text"
-            v-model.trim="searchForm.transNo"
-          ></el-input>
+          <el-input placeholder="交易流水号" type="text" v-model.trim="searchForm.transNo"></el-input>
         </el-form-item>
         <el-form-item>
-          <el-input
-            placeholder="订单号"
-            type="text"
-            v-model.trim="searchForm.orderNo"
-          ></el-input>
+          <el-input placeholder="订单号" type="text" v-model.trim="searchForm.orderNo"></el-input>
         </el-form-item>
         <el-form-item>
-          <el-input
-            placeholder="收款账户"
-            type="text"
-            v-model.trim="searchForm.merNos"
-          ></el-input>
+          <el-input placeholder="收款账户" type="text" v-model.trim="searchForm.merNos"></el-input>
         </el-form-item>
         <el-form-item>
           <el-input
@@ -117,9 +105,12 @@
       </el-form>
       <!-- 列表 -->
       <div style="font-size: 14px; color: #F85043; padding-bottom: 10px;">
-        营收金额:{{ totalRevenueAmount }}元<i style="width: 10px; display: inline-block"></i>
-        实收金额:{{ totalActualAmount }}元<i style="width: 10px; display: inline-block"></i>
-        预收金额:{{ totalAdvanceAmount }}元<i style="width: 10px; display: inline-block"></i>
+        营收金额:{{ totalRevenueAmount }}元
+        <i style="width: 10px; display: inline-block"></i>
+        实收金额:{{ totalActualAmount }}元
+        <i style="width: 10px; display: inline-block"></i>
+        预收金额:{{ totalAdvanceAmount }}元
+        <i style="width: 10px; display: inline-block"></i>
         预收余额:{{ totalUserBalance }}元
       </div>
       <div class="tableWrap">
@@ -135,10 +126,14 @@
           <el-table-column align="center" prop="expectAmount" label="应付金额"></el-table-column>
           <el-table-column align="center" prop="balancePaymentAmount" label="余额支付"></el-table-column>
           <el-table-column align="center" prop="actualAmount" label="现金支付"></el-table-column>
+          <el-table-column align="center" prop="routeAmount" label="分润金额"></el-table-column>
+          <el-table-column align="center" prop="routeBalanceAmount" label="分润余额"></el-table-column>
           <el-table-column align="center" label="学员姓名">
             <template slot-scope="scope">
               {{ scope.row.user.username }}
-              <span v-if="scope.row.user.username && scope.row.user.phone">/</span>
+              <span
+                v-if="scope.row.user.username && scope.row.user.phone"
+              >/</span>
               {{ scope.row.user.phone }}
             </template>
           </el-table-column>
@@ -163,12 +158,60 @@
           @pagination="getList"
         />
       </div>
+
+      <el-dialog title="添加订单" :visible.sync="routeOrderStatus" @close="onFormClose('ruleForm')" width="500px">
+        <el-form :model="form" :rules="rules" ref="ruleForm">
+          <el-form-item label="所属分部" prop="organId" :label-width="formLabelWidth">
+            <el-select v-model.trim="form.organId" style="width: 100% !important;">
+              <el-option
+                v-for="(item,index) in organList"
+                :key="index"
+                :label="item.name"
+                :value="item.id"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="金额(元)" prop="actualAmount" :label-width="formLabelWidth">
+            <!-- <el-input-number
+              style="width: 100%;"
+              v-model="form.actualAmount"
+              :precision="0"
+              controls-position="right"
+              :min="1"
+              :max="999999999"
+            ></el-input-number> -->
+            <el-input v-model="form.actualAmount" type="number" v-number placeholder="请输入金额"></el-input>
+          </el-form-item>
+          <el-form-item label="交易流水号" prop="transNo" :label-width="formLabelWidth">
+            <el-input placeholder="请输入交易流水号" type="text" v-model.trim="form.transNo"></el-input>
+          </el-form-item>
+          <el-form-item label="收款账户" prop="merNos" :label-width="formLabelWidth">
+            <el-input placeholder="请输入收款账户" type="text" v-model.trim="form.merNos"></el-input>
+          </el-form-item>
+          <el-form-item label="交易日期" prop="payTime" :label-width="formLabelWidth">
+            <el-date-picker style="width: 100%;"
+              v-model="form.payTime"
+              type="datetime"
+              format="yyyy-MM-dd HH:mm:ss"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              placeholder="选择交易日期">
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item label="备注" :label-width="formLabelWidth">
+            <el-input placeholder="请输入备注" v-model.trim="form.memo" type="textarea" :rows="2"></el-input>
+          </el-form-item>
+        </el-form>
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="routeOrderStatus = false">取 消</el-button>
+          <el-button @click="onOrderSubmit('ruleForm')" type="primary">确 定</el-button>
+        </span>
+      </el-dialog>
     </div>
   </div>
 </template>
 <script>
 import pagination from "@/components/Pagination/index";
-import { orderFinance } from "@/api/orderManager";
+import { routeOrderFinance, routeOrderAdd } from "@/api/orderManager";
 import { getEmployeeOrgan } from "@/api/buildTeam";
 // import store from '@/store'
 import { orderStatus, dealStatus } from "@/utils/searchArray";
@@ -209,6 +252,34 @@ export default {
       totalActualAmount: 0,
       totalAdvanceAmount: 0,
       totalRevenueAmount: 0,
+      formLabelWidth: "100px",
+      routeOrderStatus: false,
+      form: {
+        organId: null,
+        transNo: null,
+        type: "OTHER",
+        merNos: null,
+        actualAmount: null,
+        memo: null,
+        payTime: null
+      },
+      rules: {
+        organId: [
+          { required: true, message: "请选择所属分部", trigger: "change" }
+        ],
+        actualAmount: [
+          { required: true, message: "请输入金额", trigger: "blur" }
+        ],
+        transNo: [
+          { required: true, message: "请输入交易流水号", trigger: "blur" }
+        ],
+        merNos: [
+          { required: true, message: "请输入收款账户", trigger: "blur" }
+        ],
+        payTime: [
+          { required: true, message: "选择交易日期", trigger: "change" }
+        ]
+      }
     };
   },
   mounted() {
@@ -243,6 +314,36 @@ export default {
         this.searchForm.routingOrganId = null;
       }
     },
+    onOrderSubmit(formName) { // 添加订单
+      this.$refs[formName].validate(valid => {
+        if (valid) {
+          routeOrderAdd(this.form).then(res => {
+            if (res.code == 200) {
+              this.$message.success("添加成功");
+              this.routeOrderStatus = false;
+              this.getList();
+            } else {
+              this.$message.error(res.msg);
+            }
+          })
+        } else {
+          return;
+        }
+      });
+    },
+    onFormClose(formName) {
+      this.form = {
+        organId: null,
+        transNo: null,
+        type: "OTHER",
+        merNos: null,
+        actualAmount: null,
+        memo: null,
+        payTime: null
+      }
+      // 关闭弹窗重置验证
+      this.$refs[formName].resetFields();
+    },
     onOrderExport() {
       // 报表导出
       let url = "/api-web/export/orderList";
@@ -250,20 +351,20 @@ export default {
         orderType: 3
       };
       let searchForm = this.searchForm;
-      if(searchForm.orderNo) {
-        data.orderNo = searchForm.orderNo
+      if (searchForm.orderNo) {
+        data.orderNo = searchForm.orderNo;
       }
-      if(searchForm.transNo) {
-        data.transNo = searchForm.transNo
+      if (searchForm.transNo) {
+        data.transNo = searchForm.transNo;
       }
-      if(searchForm.merNos) {
-        data.merNos = searchForm.merNos
+      if (searchForm.merNos) {
+        data.merNos = searchForm.merNos;
       }
-      if(searchForm.actualAmount) {
-        data.actualAmount = searchForm.actualAmount
+      if (searchForm.actualAmount) {
+        data.actualAmount = searchForm.actualAmount;
       }
-      if(searchForm.balancePaymentAmount) {
-        data.balancePaymentAmount = searchForm.balancePaymentAmount
+      if (searchForm.balancePaymentAmount) {
+        data.balancePaymentAmount = searchForm.balancePaymentAmount;
       }
       if (searchForm.paymentStatus) {
         data.paymentStatus = searchForm.paymentStatus;
@@ -331,14 +432,16 @@ export default {
       this.getList();
     },
     getList() {
-      let params = JSON.parse(JSON.stringify(this.searchForm))
+      let params = JSON.parse(JSON.stringify(this.searchForm));
       params.rows = this.pageInfo.limit;
       params.page = this.pageInfo.page;
-      params.orderNo = params.orderNo ? params.orderNo : null
-      params.transNo = params.transNo ? params.transNo : null
-      params.merNos = params.merNos ? params.merNos : null
-      params.actualAmount = params.actualAmount ? params.actualAmount : null
-      params.balancePaymentAmount = params.balancePaymentAmount ? params.balancePaymentAmount : null
+      params.orderNo = params.orderNo ? params.orderNo : null;
+      params.transNo = params.transNo ? params.transNo : null;
+      params.merNos = params.merNos ? params.merNos : null;
+      params.actualAmount = params.actualAmount ? params.actualAmount : null;
+      params.balancePaymentAmount = params.balancePaymentAmount
+        ? params.balancePaymentAmount
+        : null;
       if (this.orderDate && this.orderDate.length > 0) {
         params.orderStartDate = this.orderDate[0];
         params.orderEndDate = this.orderDate[1];
@@ -346,15 +449,23 @@ export default {
         params.orderStartDate = null;
         params.orderEndDate = null;
       }
-      orderFinance(params).then(res => {
+      routeOrderFinance(params).then(res => {
         let result = res.data;
         if (res.code == 200) {
           this.tableList = result.rows;
           this.pageInfo.total = result.total;
-          this.totalUserBalance = result.totalUserBalance ? result.totalUserBalance : 0
-          this.totalActualAmount = result.totalActualAmount ? result.totalActualAmount : 0
-          this.totalAdvanceAmount = result.totalAdvanceAmount ? result.totalAdvanceAmount : 0
-          this.totalRevenueAmount = result.totalRevenueAmount ? result.totalRevenueAmount : 0
+          this.totalUserBalance = result.totalUserBalance
+            ? result.totalUserBalance
+            : 0;
+          this.totalActualAmount = result.totalActualAmount
+            ? result.totalActualAmount
+            : 0;
+          this.totalAdvanceAmount = result.totalAdvanceAmount
+            ? result.totalAdvanceAmount
+            : 0;
+          this.totalRevenueAmount = result.totalRevenueAmount
+            ? result.totalRevenueAmount
+            : 0;
         }
       });
     },
@@ -388,4 +499,10 @@ export default {
 };
 </script>
 <style lang="scss">
+.newBand {
+  display: inline-block;
+}
+/deep/.el-input-number.is-controls-right .el-input__inner {
+  text-align: left;
+}
 </style>

+ 5 - 4
src/views/chargeManager/index.vue

@@ -2,14 +2,15 @@
   <div class="m-container">
     <h2>
       <div class="squrt"></div>收费管理
+      <!-- <div @click="chargeOperation('create')" v-permission="'paymentConfig/add'" class="newBand">添加</div> -->
     </h2>
     <div class="m-core">
       <!-- navMenu -->
       <el-tabs v-model.trim="activeIndex" type="card" @tab-click="handleClick">
-        <el-tab-pane label="比例" name="0">
+        <el-tab-pane label="比例" name="0" v-if="permissionList.scalc">
             <one v-if="activeIndex == 0" />
         </el-tab-pane>
-        <el-tab-pane label="金额" name="1">
+        <el-tab-pane label="金额" name="1" v-if="permissionList.money">
             <two v-if="activeIndex == 1" />
         </el-tab-pane>
       </el-tabs>
@@ -30,8 +31,8 @@ export default {
     return {
       activeIndex: '0',
       permissionList: {
-        overallManager: permission('/globalConfig/overallManager'),
-        overallManagerTwo: permission('/globalConfig/overallManagerTwo'),
+        scalc: permission('/chargeManager/scalc'),
+        money: permission('/chargeManager/money'),
       }
     }
   },

+ 121 - 52
src/views/chargeManager/one.vue

@@ -24,11 +24,11 @@
                 v-permission="'paymentConfig/update'"
                 type="text"
               >修改</el-button>
-              <el-button
+              <!-- <el-button
                 @click="chargeDel(scope.row)"
                 v-permission="'paymentConfig/del'"
                 type="text"
-              >删除</el-button>
+              >删除</el-button> -->
             </template>
           </el-table-column>
         </el-table>
@@ -114,12 +114,18 @@
         <div class="moreRule">
           <div class="moreRuleIn" v-for="(domain, index) in result.domains" :key="domain.key">
             <el-form-item class="setWidth" :label="'第' + (index + 1)" :label-width="formLabelWidth">
-              <el-select v-model.trim="domain.organId" placeholder="请选择分部">
+              <el-select
+                v-model.trim="domain.organId"
+                @change="onBranchChange"
+                :disabled="domain.disabled"
+                placeholder="请选择分部"
+              >
                 <el-option
                   v-for="(item, index) in calcBranchList"
                   :key="index"
                   :label="item.label"
                   :value="item.value"
+                  :disabled="item.disabled"
                 ></el-option>
               </el-select>
             </el-form-item>
@@ -142,6 +148,7 @@
                 v-model.trim="domain.feeFlag"
                 placeholder="请选择是否承担手续费"
                 style="width: 150px !important;"
+                :disabled="domain.disabled"
               >
                 <el-option value="Y" label="是"></el-option>
                 <el-option value="N" label="否"></el-option>
@@ -169,7 +176,6 @@
 import pagination from "@/components/Pagination/index";
 import {
   paymentConfigQueryPage,
-  paymentConfigGet,
   paymentConfigAdd,
   paymentConfigUpdate,
   paymentConfigDel
@@ -242,11 +248,22 @@ export default {
     this.getRoleList();
   },
   methods: {
-    onPayTypeChange(val) {
+    async onPayTypeChange(val) {
       if (!val) {
         return;
       }
-      getPaymentConfigs({ payType: val }).then(res => {
+      this.calcBranchList = [];
+      this.result.domains = [
+        {
+          organId: null,
+          scale: null,
+          feeFlag: null,
+          disabled: false,
+          key: Date.now()
+        }
+      ];
+      this.result.errorText = null;
+      await getPaymentConfigs({ payType: val }).then(res => {
         if (res.code == 200 && res.data) {
           res.data.forEach(item => {
             this.calcBranchList.push({
@@ -279,28 +296,40 @@ export default {
     },
     onChargeSubmit(formName) {
       this.$refs[formName].validate(valid => {
-        if (valid) {
-          let params = JSON.parse(JSON.stringify(this.form));
-          params.routeScale = null;
-          if (params.payType === "YQPAY" && !params.yqMerNo) {
-            this.result.yqError = "请输入双乾商户号";
-            return;
-          } else if (params.payType === "ADAPAY" && !params.hfMerNo) {
-            this.result.hfError = "请输入汇付商户号";
-            return;
-          }
-          console.log(params);
+        let params = JSON.parse(JSON.stringify(this.form));
+        let result = this.result;
+        params.routeScale = null;
+        if (params.payType === "YQPAY" && !params.yqMerNo) {
+          result.yqError = "请输入双乾商户号";
+          return;
+        } else if (params.payType === "ADAPAY" && !params.hfMerNo) {
+          result.hfError = "请输入汇付商户号";
           return;
+        }
+        this.addDomain(result, true);
+        if (valid && !result.errorText) {
+          let tempResult = [];
+          result.domains.forEach(item => {
+            if (item.organId) {
+              tempResult.push({
+                organId: item.organId,
+                scale: item.scale,
+                feeFlag: item.feeFlag
+              });
+            }
+          });
+          params.routeScale =
+            tempResult.length > 0 ? JSON.stringify(tempResult) : null;
           if (this.formActionTitle == "create") {
-            if (this.form.id) {
+            if (params.id) {
               // 判断有没有Id,如果有则删除
-              delete this.form.id;
+              delete params.id;
             }
-            paymentConfigAdd(this.form).then(res => {
+            paymentConfigAdd(params).then(res => {
               this.messageTips("添加", res);
             });
           } else if (this.formActionTitle == "update") {
-            paymentConfigUpdate(this.form).then(res => {
+            paymentConfigUpdate(params).then(res => {
               this.messageTips("修改", res);
             });
           }
@@ -318,53 +347,78 @@ export default {
         this.$message.error(res.msg);
       }
     },
+    onBranchChange(val) {
+      this.calcBranchList.forEach(item => {
+        if (val == item.value) {
+          item.disabled = true;
+        } else {
+          item.disabled = false;
+        }
+      });
+    },
     addDomain(form, checked) {
-      // debugger
       let domains = form.domains,
         forms = this.form,
         singleLength = domains.length,
-        lastDate = domains[singleLength - 1] // 获取倒数一个对象
-      let countScale = 0
+        lastDate = domains[singleLength - 1]; // 获取倒数一个对象
+      let countScale = 0;
       domains.forEach(item => {
-        countScale += item.scale
-      })
-      const num = 0
-      if(forms.type === 2) {
-        num = 10
-      } else if(forms.type === 1) {
-        num = 100
+        countScale += Number(item.scale);
+      });
+      let num = 0;
+      if (forms.type === 2) {
+        num = 10;
+      } else if (forms.type === 1) {
+        num = 100;
+      }
+      // 如果三个值都为空,则不用检验
+      if (!lastDate.organId && !lastDate.scale && !lastDate.feeFlag) {
+        return;
       }
+
       if (!lastDate.organId) {
-        form.errorText = '选择分部不能为空'
-        return
+        form.errorText = "选择分部不能为空";
+        return;
       }
 
-      if(!parseInt(lastDate.scale)) {
-        form.errorText = '比例不能为空'
-        return
-      } else if(parseInt(lastDate.scale) > num){
-        form.errorText = "比例总和不能超过" + num
+      if (!parseInt(lastDate.scale)) {
+        form.errorText = "比例不能为空";
+        return;
+      } else if (parseInt(countScale) > num) {
+        form.errorText = "比例不能超过" + num;
+        return;
       }
 
-      if(!lastDate.feeFlag) {
-        form.errorText = "请选择是否承担手续费"
-        return
+      if (!lastDate.feeFlag) {
+        form.errorText = "请选择是否承担手续费";
+        return;
       }
 
-      form.errorText = null
+      form.errorText = null;
       if (!checked) {
-        lastDate.disabled = true
+        lastDate.disabled = true;
         domains.push({
           organId: null,
           scale: null,
           feeFlag: null,
           disabled: false,
           key: Date.now()
-        })
+        });
+      } else {
+        if (parseInt(countScale) != num) {
+          form.errorText = "比例总和应为" + num;
+          return;
+        }
       }
     },
-    removeDomain(result, domain) {
-
+    removeDomain(form, item) {
+      var index = form.domains.indexOf(item);
+      if (index !== -1) {
+        form.domains.splice(index, 1);
+        // 取消最后一个数据的禁用状态
+        form.domains[form.domains.length - 1].disabled = false;
+        form.errorText = null;
+      }
     },
     getList() {
       let params = {};
@@ -399,17 +453,32 @@ export default {
       this.chargeStatus = true;
       // 修改的时候
       if (type == "update") {
+        this.onPayTypeChange(data.payType);
         this.form = {
           id: data.id,
           type: Number(data.type),
-          comScale: data.comScale,
-          perScale: data.perScale,
-          courseFee: data.courseFee,
-          instrumentFee: data.instrumentFee,
-          accessoriesFee: data.accessoriesFee,
-          otherFee: data.otherFee,
+          hfMerNo: data.hfMerNo,
+          yqMerNo: data.yqMerNo,
+          payType: data.payType,
           organId: data.organId
         };
+        if (data.routeScale) {
+          this.result.domains = [];
+          let scaleJson = JSON.parse(data.routeScale);
+          let scaleLength = scaleJson.length;
+          scaleJson.forEach((item, index) => {
+            let temp = {};
+            if (scaleLength == index + 1) {
+              temp.disabled = false;
+            } else {
+              temp.disabled = true;
+            }
+            temp.organId = item.organId;
+            temp.scale = item.scale;
+            temp.feeFlag = item.feeFlag;
+            this.result.domains.push(temp);
+          });
+        }
       }
     },
     chargeDel(row) {

+ 103 - 14
src/views/chargeManager/two.vue

@@ -1,17 +1,18 @@
 <template>
   <div class="m-container">
     <div class="m-core">
-      <div @click="chargeOperation('create')" v-permission="'paymentConfig/add'" class="newBand">添加</div>
+      <div @click="chargeOperation('create')" v-permission="'sysConfig/update'" class="newBand">添加</div>
+      <div @click="sporadicStatus = true" v-permission="'sysConfig/update'" class="newBand">零星收费设置</div>
 
       <!-- 列表 -->
       <div class="tableWrap">
         <el-table :data="tableList" :header-cell-style="{background:'#EDEEF0',color:'#444'}">
           <el-table-column align="center" prop="organName" label="分部"></el-table-column>
-          <el-table-column align="center" prop="money" label="金额"></el-table-column>
+          <el-table-column align="center" prop="money" label="金额(元)"></el-table-column>
           <el-table-column align="center" width="250px" label="操作">
             <template slot-scope="scope">
-              <el-button @click="chargeOperation('update', scope.row)" type="text">修改</el-button>
-              <el-button @click="chargeDel(scope.row)" type="text">删除</el-button>
+              <el-button v-if="permission('sysConfig/update')" @click="chargeOperation('update', scope.row)" type="text">修改</el-button>
+              <el-button v-if="permission('sysConfig/update')" @click="chargeDel(scope.row)" type="text">删除</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -41,7 +42,7 @@
             ></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="金额" prop="money" :label-width="formLabelWidth">
+        <el-form-item label="金额(元)" prop="money" :label-width="formLabelWidth">
           <el-input-number
             style="width: 100%;"
             v-model="form.money"
@@ -57,20 +58,50 @@
         <el-button @click="onChargeSubmit('ruleForm')" type="primary">确 定</el-button>
       </span>
     </el-dialog>
+
+    <el-dialog title="零星收费设置" :visible.sync="sporadicStatus" width="500px">
+      <el-form :model="formSporadic" :rules="rulesSporadic" ref="ruleFormSporadic">
+        <el-form-item label="所属分部" prop="organId" :label-width="formLabelWidth2">
+          <el-select v-model.trim="formSporadic.organId">
+            <el-option
+              v-for="item in branchList2"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value.toString()"
+              :disabled="item.disabled"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="最大收款(元)" prop="maxReceipt" :label-width="formLabelWidth2">
+          <el-input-number
+            style="width: 100%;"
+            v-model="formSporadic.maxReceipt"
+            :precision="0"
+            controls-position="right"
+            :min="1"
+            :max="999999999"
+          ></el-input-number>
+        </el-form-item>
+        <el-form-item label="是否承担手续费" prop="feeFlag" :label-width="formLabelWidth2">
+          <el-select v-model.trim="formSporadic.feeFlag" placeholder="请选择是否承担手续费">
+            <el-option value="Y" label="是"></el-option>
+            <el-option value="N" label="否"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="sporadicStatus = false">取 消</el-button>
+        <el-button @click="onSporadicSubmit('ruleFormSporadic')" type="primary">确 定</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 <script>
 import pagination from "@/components/Pagination/index";
-import {
-  paymentConfigQueryPage,
-  paymentConfigGet,
-  paymentConfigAdd,
-  paymentConfigUpdate,
-  paymentConfigDel
-} from "@/api/systemManage";
 import { branchQueryPage } from "@/api/specialSetting";
 import { sysConfigList, sysConfigUpdate } from "@/api/generalSettings";
 import store from "@/store";
+import { permission } from "@/utils/directivePage";
 export default {
   name: "chargeProfitManager",
   components: { pagination },
@@ -87,6 +118,7 @@ export default {
       chargeStatus: false,
       roleList: [], // 角色列表
       branchList: [], // 分部列表
+      branchList2: [], // 分部列表
       formActionTitle: "create",
       formLabelWidth: "100px",
       formTitle: {
@@ -105,13 +137,53 @@ export default {
         money: [{ required: true, message: "请输入金额", trigger: "blur" }]
       },
       selectId: null, // 编号
-      selectItem: {} // 选中对象
+      selectItem: {}, // 选中对象
+      sporadicStatus: false, // {"organId":"2","maxReceipt":"75000","feeFlag":"Y"}
+      formLabelWidth2: "120px",
+      sporadicId: null, // 零星收费编号
+      formSporadic: {
+        organId: null,
+        maxReceipt: 0,
+        feeFlag: null
+      },
+      rulesSporadic: {
+        organId: [
+          { required: true, message: "请选择所属分部", trigger: "change" }
+        ],
+        maxReceipt: [
+          { required: true, message: "请输入最大收款", trigger: "blur" }
+        ],
+        feeFlag: [
+          { required: true, message: "请选择是否承担手续费", trigger: "change" }
+        ]
+      }
     };
   },
   mounted() {
     this.getList();
   },
   methods: {
+    permission (str) {
+      return permission(str)
+    },
+    onSporadicSubmit(formName) {
+      this.$refs[formName].validate(valid => {
+        if (valid) {
+          let params = {
+            id: this.sporadicId,
+            paranValue: JSON.stringify(this.formSporadic),
+            paramName: "sporadic_channel"
+          };
+          sysConfigUpdate(params).then(res => {
+            if (res.code == 200) {
+              this.messageTips("保存", res);
+            }
+          });
+        } else {
+          return;
+        }
+      });
+    },
     onChargeSubmit(formName) {
       this.$refs[formName].validate(valid => {
         if (valid) {
@@ -165,6 +237,7 @@ export default {
       if (res.code == 200) {
         this.$message.success(title + "成功");
         this.chargeStatus = false;
+        this.sporadicStatus = false;
         this.getList();
       } else {
         this.$message.error(res.msg);
@@ -177,12 +250,17 @@ export default {
         rows: 9999
       }).then(res => {
         this.branchList = [];
+        this.branchList2 = [];
         if (res.code == 200 && res.data && res.data.rows) {
           res.data.rows.forEach(item => {
             this.branchList.push({
               label: item.name,
               value: item.id
             });
+            this.branchList2.push({
+              label: item.name,
+              value: item.id
+            });
           });
         }
       });
@@ -195,6 +273,12 @@ export default {
               paranValue = item.paranValue ? JSON.parse(item.paranValue) : {};
               this.selectId = item.id;
             }
+            if (item.paramName === "sporadic_channel") {
+              this.formSporadic = item.paranValue
+                ? JSON.parse(item.paranValue)
+                : { organId: null, maxReceipt: 0, feeFlag: null };
+              this.sporadicId = item.id;
+            }
           });
           this.branchList.forEach(item => {
             for (let key in paranValue) {
@@ -236,7 +320,6 @@ export default {
     },
     chargeDel(row) {
       // 删除数据
-      // paymentConfigDel
       this.$confirm("你确定删除?", "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
@@ -294,4 +377,10 @@ export default {
 /deep/.el-date-editor.el-input {
   width: 100% !important;
 }
+/deep/.el-input-number.is-controls-right .el-input__inner {
+  text-align: left;
+}
+.newBand {
+  display: inline-block;
+}
 </style>

+ 2 - 2
vue.config.js

@@ -18,10 +18,10 @@ const name = defaultSettings.title || '管乐迷后台管理系统' // page titl
 // //  https://online.dayaedu.com
 // let target = 'https://online.dayaedu.com' //线上
 // let target = 'http://dyme.utools.club' //test环境
-// let target = 'http://192.168.3.139:8000' // 箭河
+let target = 'http://192.168.3.139:8000' // 箭河
 // let target = 'http://192.168.3.28:8000' //邹璇
 // let target = 'http://192.168.3.8:8000' //勇哥
-let target = 'http://dev.dayaedu.com' // 测试服
+// let target = 'http://dev.dayaedu.com' // 测试服
 // let target = 'http://dev.dayaedu.com' // 乔
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است