liushengqiang 2 år sedan
förälder
incheckning
c02e0a757b

+ 16 - 17
src/views/categroyManager/productSystem/memberFeeSet.vue

@@ -83,7 +83,7 @@
                 }}
               </p>
               <div>经营报表</div>
-              <div>确认收入: {{ scope.row.memberFeeSetting.monthRevenue | hasMoneyFormat }}</div>
+              <div>确认收入: {{ scope.row.memberFeeSetting.incomeMonthFee | hasMoneyFormat }}</div>
             </div>
           </template>
         </el-table-column>
@@ -112,7 +112,7 @@
               </p>
 
               <div>经营报表</div>
-              <div>确认收入: {{ scope.row.memberFeeSetting.purchaseRevenue | hasMoneyFormat }}</div>
+              <div>确认收入: {{ scope.row.memberFeeSetting.incomeQuarterlyFee | hasMoneyFormat }}</div>
             </div>
           </template>
         </el-table-column>
@@ -140,7 +140,7 @@
                 }}
               </p>
               <div>经营报表</div>
-              <div>确认收入: {{ scope.row.memberFeeSetting.halfYRevenue | hasMoneyFormat }}</div>
+              <div>确认收入: {{ scope.row.memberFeeSetting.incomeHalfYearFee | hasMoneyFormat }}</div>
             </div>
           </template>
         </el-table-column>
@@ -165,7 +165,7 @@
                 }}
               </p>
               <div>经营报表</div>
-              <div>确认收入: {{ scope.row.memberFeeSetting.yearRevenue | hasMoneyFormat }}</div>
+              <div>确认收入: {{ scope.row.memberFeeSetting.incomeYearFee | hasMoneyFormat }}</div>
             </div>
           </template>
         </el-table-column>
@@ -335,7 +335,7 @@
             </el-input>
           </el-form-item>
           <el-form-item
-            prop="monthRevenue"
+            prop="incomeMonthFee"
             label="经营报表确认收入"
             :rules="[
               { required: true, message: '请输入月度经营报表确认收入' },
@@ -348,7 +348,7 @@
             :label-width="formLabelWidth"
           >
             <el-input
-              v-model="form.monthRevenue"
+              v-model="form.incomeMonthFee"
               :disabled="addDisabled"
               :placeholder="monthRule"
             >
@@ -425,7 +425,7 @@
             </el-input>
           </el-form-item>
           <el-form-item
-            prop="purchaseRevenue"
+            prop="incomeQuarterlyFee"
             label="经营报表确认收入"
             :rules="[
               { required: true, message: '请输入季度经营报表确认收入' },
@@ -438,7 +438,7 @@
             :label-width="formLabelWidth"
           >
             <el-input
-              v-model="form.purchaseRevenue"
+              v-model="form.incomeQuarterlyFee"
               :disabled="addDisabled"
               :placeholder="quarterlyRule"
             >
@@ -514,7 +514,7 @@
             </el-input>
           </el-form-item>
           <el-form-item
-            prop="halfYRevenue"
+            prop="incomeHalfYearFee"
             label="经营报表确认收入"
             :rules="[
               { required: true, message: '请输入半年经营报表确认收入' },
@@ -527,7 +527,7 @@
             :label-width="formLabelWidth"
           >
             <el-input
-              v-model="form.halfYRevenue"
+              v-model="form.incomeHalfYearFee"
               :disabled="addDisabled"
               :placeholder="halfYearRule"
             >
@@ -603,7 +603,7 @@
             </el-input>
           </el-form-item>
           <el-form-item
-            prop="yearRevenue"
+            prop="incomeYearFee"
             label="经营报表确认收入"
             :rules="[
               { required: true, message: '请输入年度经营报表确认收入' },
@@ -616,7 +616,7 @@
             :label-width="formLabelWidth"
           >
             <el-input
-              v-model="form.yearRevenue"
+              v-model="form.incomeYearFee"
               :disabled="addDisabled"
               :placeholder="yearRule"
             >
@@ -684,10 +684,10 @@ export default {
         groupPurchaseYearFee: "",
         organId: "",
         memberRankSettingId: "",
-        monthRevenue: '', // 月经营报表
-        purchaseRevenue: "", // 季度经营报表
-        halfYRevenue: "", // 半年经营报表
-        yearRevenue: "", // 年经营报表
+        incomeMonthFee: '', // 月经营报表
+        incomeQuarterlyFee: "", // 季度经营报表
+        incomeHalfYearFee: "", // 半年经营报表
+        incomeYearFee: "", // 年经营报表
       },
       branchStatus: false,
       remberList: [],
@@ -965,7 +965,6 @@ export default {
     }
     .el-input-group__append{
       padding: 0 10px;
-      font-size: 14px;
     }
   }
 }

+ 80 - 17
src/views/categroyManager/specialSetup/discountManage.vue

@@ -68,6 +68,10 @@
                            label="折扣(%)">
           </el-table-column>
           <el-table-column align='center'
+                           prop="fee"
+                           label="经营报表确认收入(%)">
+          </el-table-column>
+          <el-table-column align='center'
                            label="操作">
             <template slot-scope="scope">
               <el-button @click="openTypes('update', scope.row)"
@@ -94,6 +98,7 @@
                width="500px">
       <el-form :model="form"
                :rules="rules"
+               label-width="220px"
                ref="ruleForm">
         <el-form-item label="收费类型"
                       prop="chargeTypeId"
@@ -130,7 +135,7 @@
             </el-option-group>
           </el-select>
         </el-form-item>
-        <el-form-item label="折扣(%)"
+        <el-form-item label="乐器折扣(%)"
                       prop="goodsDiscountRate"
                       :label-width="formLabelWidth">
           <el-input v-model.trim="form.goodsDiscountRate"
@@ -142,6 +147,18 @@
                     min="0"
                     max="100"></el-input>
         </el-form-item>
+        <el-form-item label="经营报表确认收入(%)"
+                      prop="goodsDiscountRate"
+                      :label-width="formLabelWidth">
+          <el-input v-model.trim="form.fee"
+                    autocomplete="off"
+                    type="number"
+                    placeholder="请输入折扣 0%-100%"
+                    controls-position="right"
+                    class="number-input"
+                    min="0"
+                    max="100"></el-input>
+        </el-form-item>
       </el-form>
       <span slot="footer"
             class="dialog-footer">
@@ -150,8 +167,9 @@
                    @click="onTypesSubmit('ruleForm')">确 定</el-button>
       </span>
     </el-dialog>
-    <el-dialog :visible.sync="createVisible"
+    <el-dialog class="dialog" :visible.sync="createVisible"
                title="添加商品折扣"
+               top="10vh"
                width="500px">
       <createDiscount @close="createVisible = false"
                       @submited="getList"
@@ -182,11 +200,12 @@ export default {
       },
       createVisible: false,
       typeStatus: false, // 添加教学点
-      formLabelWidth: '100px',
+      formLabelWidth: '120px',
       form: {
         name: null, //
         subjectId: null,
         goodsDiscountRate: null,
+        fee: null
       },
       searchForm: {
         subjectId: null,
@@ -278,7 +297,7 @@ export default {
             typesListById[item.id] = item.name
             this.typesList.push({
               label: item.name,
-              value: item.id
+              value: item.id,
             })
           })
           this.typesListById = typesListById
@@ -293,20 +312,7 @@ export default {
       }).then(res => {
         let result = res.data
         this.tableList = result.rows
-        // if (res.code == 200) {
-        //   result.data.rows.forEach(row => {
-        //     let subjectname = [],
-        //       subjectIds = []
-        //     row.subjects.forEach(item => {
-        //       subjectname.push(item.name)
-        //       subjectIds.push(item.id)
-        //     })
-        //     row.subjectName = subjectname
-        //     row.subjectIds = subjectIds
-        //   })
-        //   this.tableList = result.rows
         this.pageInfo.total = result.total
-        // }
       })
     },
     openTypes (type, row) {
@@ -319,6 +325,7 @@ export default {
           chargeTypeId: row.chargeTypeId,
           subjectId: row.subjectId,
           goodsDiscountRate: row.goodsDiscountRate,
+          fee: row.fee
         }
       }
     },
@@ -327,6 +334,7 @@ export default {
         name: null, // 训练模块名称
         subjectId: null,
         goodsDiscountRate: null,
+        fee: null
       }
       this.$refs[formName].resetFields()
     },
@@ -379,4 +387,59 @@ export default {
 
   width: 100%;
 }
+.dialog{
+  ::v-deep {
+    .el-dialog{
+      border-radius: 4px;
+      overflow: hidden;
+    }
+    .el-dialog__header{
+      display: flex;
+      flex-shrink: 0;
+      justify-content: space-between;
+      align-items: center;
+      box-sizing: border-box;
+      width: 100%;
+      height: 48px;
+      padding: 0 20px;
+      .el-dialog__title{
+        font-weight: 500;
+        font-size: 16px;
+      }
+      .el-dialog__headerbtn{
+        position: relative;
+        top: 0;
+        right: 0;
+        &::before{
+          position: absolute;
+          display: block;
+          box-sizing: border-box;
+          background-color: transparent;
+          border-radius: 50%;
+          transition: background-color .1s cubic-bezier(0,0,1,1);
+          content: "";
+          top: 50%;
+          left: 50%;
+          width: 20px;
+          height: 20px;
+          transform: translate(-50%,-50%);
+        }
+      }
+      .el-dialog__headerbtn:hover{
+        &::before{
+          background-color: rgba(0,0,0, .5);
+        }
+      }
+      .el-dialog__close{
+        position: relative;
+      }
+    }
+    .el-dialog__body{
+      padding: 10px 20px;
+    }
+    .el-input-group__append{
+      padding: 0 10px;
+    }
+  }
+  }
 </style>

+ 104 - 13
src/views/categroyManager/specialSetup/modals/create-discount.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <el-form :model="form"
+    <el-form class="elForm"  label-position="top"  :model="form"
              ref="form">
       <el-form-item label="声部选择"
                     prop="subjectId"
@@ -22,7 +22,51 @@
           </el-option-group>
         </el-select>
       </el-form-item>
-      <el-form-item v-for="item in typesList"
+
+      <div v-for="(item, index) in form.types" :key="index">
+        <div class="lineTitle">{{ item.label }} 乐团</div>
+        <div class="wrap">
+          <el-form-item label="乐器折扣"
+                        :prop="`types[${index}].goodsDiscountRate`"
+                        :label-width="formLabelWidth"
+                        :rules="[
+                          { required: true, message: '请输入折扣值', trigger: 'blur' },
+                          { pattern: /^(\d{1,2}(\.[1-9]{1,8})?)$|^100$/, message: '请输入正确的折扣' }
+                          // { pattern: /^\d+(\.\d{1,8})?$|^100$/, message: '请输入正确的折扣' }
+                        ]">
+            <el-input v-model.trim="form.types[index].goodsDiscountRate"
+                      autocomplete="off"
+                      type="number"
+                      placeholder="请输入折扣值"
+                      controls-position="right"
+                      class="number-input"
+                      min="0"
+                      max="100">
+                      <template slot="append">%</template>
+                    </el-input>
+          </el-form-item>
+          <el-form-item label="经营报表确认收入"
+                        :prop="`types[${index}].fee`"
+                        :label-width="formLabelWidth"
+                        :rules="[
+                          { required: true, message: '请输入折扣比例', trigger: 'blur' },
+                          { pattern: /^(\d{1,2}(\.[1-9]{1,8})?)$|^100$/, message: '请输入正确的折扣' }
+                          // { pattern: /^\d+(\.\d{1,8})?$/, message: '请输入正确的折扣' }
+                        ]">
+            <el-input v-model.trim="form.types[index].fee"
+                      autocomplete="off"
+                      type="number"
+                      placeholder="请输入折扣比例"
+                      controls-position="right"
+                      class="number-input"
+                      :min="0"
+                      :max="100">
+                      <template slot="append">%</template>
+                    </el-input>
+          </el-form-item>
+        </div>
+      </div>
+      <!-- <el-form-item v-for="item in typesList"
                     :key="item.value"
                     :label="item.label + '折扣(%)'"
                     :prop="`types.${item.value}`"
@@ -39,7 +83,7 @@
                   class="number-input"
                   min="0"
                   max="100"></el-input>
-      </el-form-item>
+      </el-form-item> -->
     </el-form>
     <span slot="footer"
           class="dialog-footer">
@@ -59,7 +103,7 @@ export default {
       formLabelWidth: '130px',
       form: {
         subjectId: '',
-        types: {},
+        types: [],
       }
     }
   },
@@ -68,26 +112,42 @@ export default {
       this.$refs.form.validate(async valid => {
         if (valid) {
           const data = []
-          for (const key in this.form.types) {
-            if (this.form.types.hasOwnProperty(key)) {
-              const item = this.form.types[key];
-              data.push({
-                chargeTypeId: key,
-                subjectId: this.form.subjectId,
-                goodsDiscountRate: item
-              })
-            }
+          for (const item of this.form.types) {
+            data.push({
+              ...item,
+              subjectId: this.form.subjectId,
+            })
           }
           try {
             await insertChargeTypeSubjectMapper(data)
+            this.handleInit()
             this.$message.success('创建成功')
             this.$listeners.submited()
             this.$listeners.close()
           } catch (error) { }
         }
       })
+    },
+
+    handleInit() {
+      this.form.types = []
+      let list = []
+      for(let i = 0; i < this.typesList.length; i++){
+        list.push({
+          label: this.typesList[i].label,
+          chargeTypeId: this.typesList[i].value,
+          goodsDiscountRate: '',
+          fee: 100
+        })
+      }
+      list = list.sort((a, b) => a.label - b.label)
+      this.form.types = list
+      console.log(list)
     }
   },
+  mounted(){
+    this.handleInit()
+  }
 };
 </script>
 <style lang="less" scoped>
@@ -102,4 +162,35 @@ export default {
 
   width: 100%;
 }
+
+.elForm{
+  ::v-deep {
+    .el-form-item__label{
+      max-width: 100%;
+      color: #4e5969;
+      font-size: 14px;
+      white-space: normal;
+      padding: 0;
+      font-weight: 400;
+      line-height: 32px;
+    }
+  }
+}
+.lineTitle{
+  background-color: rgba(247,247,247,1);
+  padding: 10px;
+  border-radius: 4px;
+  color: #333;
+}
+.wrap{
+  display: flex;
+  align-items: center;
+  ::v-deep .el-form-item:not(:last-child){
+    margin-right: 20px;
+    
+  }
+  .el-form-item{
+      width: 180px;
+    }
+}
 </style>