mo 4 år sedan
förälder
incheckning
cd14210aff

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/index.html


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 3 - 0
dist/static/css/chunk-0257a33c.d9f212cb.css


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 5 - 0
dist/static/js/app.afdda786.js


+ 1 - 0
src/layout/components/Navbar.vue

@@ -238,6 +238,7 @@
 <script>
 import qs from "qs";
 import Logo from "./Sidebar/Logo";
+import axios from "axios";
 import { mapGetters } from "vuex";
 // import Breadcrumb from '@/components/Breadcrumb'
 // import Hamburger from '@/components/Hamburger'

+ 1 - 1
src/views/attendanceManager/attendanceList/index.vue

@@ -226,7 +226,7 @@ export default {
       // date.page = this.rules.page;
       // date.rows = this.rules.limit;
 
-            let { courseTimer, ...rest } = this.searchForm;
+      let { courseTimer, ...rest } = this.searchForm;
       let params = {
         ...rest,
         page: this.rules.page,

+ 1 - 1
src/views/businessManager/orderManager/financeManager-taoqi.vue

@@ -1075,7 +1075,7 @@ export default {
             number: null,
           }
         ]
-        goodsQuery({ rows: 99999, organId: val }).then((res) => {
+        goodsQuery({ rows: 99999 }).then((res) => {
           if (res.code === 200) {
             this.shopList = res.data.rows;
           }

+ 1 - 1
src/views/businessManager/orderManager/financeManager.vue

@@ -1084,7 +1084,7 @@ export default {
             number: null,
           }
         ]
-        goodsQuery({ rows: 99999, organId: val }).then((res) => {
+        goodsQuery({ rows: 99999 }).then((res) => {
           if (res.code === 200) {
             this.shopList = res.data.rows;
           }

+ 429 - 99
src/views/businessManager/shopManager/shopList.vue

@@ -69,7 +69,7 @@
             placeholder="商品编号/货号/商品名称"
           ></el-input>
         </el-form-item>
-        <el-form-item prop="organId">
+        <!-- <el-form-item prop="organId">
           <el-select
             v-model.trim="searchForm.organId"
             clearable
@@ -82,6 +82,76 @@
               :value="item.id.toString()"
             ></el-option>
           </el-select>
+        </el-form-item> -->
+        <el-form-item prop="studentShowOrganId">
+          <el-select
+            v-model.trim="searchForm.studentShowOrganId"
+            clearable
+            placeholder="学生端可见分部"
+          >
+            <el-option
+              v-for="item in selects.branchs"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id.toString()"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="educationShowOrganId">
+          <el-select
+            v-model.trim="searchForm.educationShowOrganId"
+            clearable
+            placeholder="管理端可见分部"
+          >
+            <el-option
+              v-for="item in selects.branchs"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id.toString()"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="courseFeeShowOrganId">
+          <el-select
+            v-model.trim="searchForm.courseFeeShowOrganId"
+            clearable
+            placeholder="课程收费团可见分部"
+          >
+            <el-option
+              v-for="item in selects.branchs"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id.toString()"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="memberFeeShowOrganId">
+          <el-select
+            v-model.trim="searchForm.memberFeeShowOrganId"
+            clearable
+            placeholder="会员收费团可见分部"
+          >
+            <el-option
+              v-for="item in selects.branchs"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id.toString()"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="replacementShowOrganId">
+          <el-select
+            v-model.trim="searchForm.replacementShowOrganId"
+            clearable
+            placeholder="乐器置换可见分部"
+          >
+            <el-option
+              v-for="item in selects.branchs"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id.toString()"
+            ></el-option>
+          </el-select>
         </el-form-item>
         <el-form-item prop="type">
           <el-select
@@ -131,7 +201,7 @@
             <el-option label="否" value="0"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item prop="clientShow">
+        <!-- <el-form-item prop="clientShow">
           <el-select
             v-model.trim="searchForm.clientShow"
             clearable
@@ -140,8 +210,8 @@
             <el-option label="是" value="1"></el-option>
             <el-option label="否" value="0"></el-option>
           </el-select>
-        </el-form-item>
-        <el-form-item prop="educationalShow">
+        </el-form-item> -->
+        <!-- <el-form-item prop="educationalShow">
           <el-select
             v-model.trim="searchForm.educationalShow"
             clearable
@@ -150,8 +220,8 @@
             <el-option label="是" value="1"></el-option>
             <el-option label="否" value="0"></el-option>
           </el-select>
-        </el-form-item>
-        <el-form-item prop="musicGroupShow">
+        </el-form-item> -->
+        <!-- <el-form-item prop="musicGroupShow">
           <el-select
             v-model.trim="searchForm.musicGroupShow"
             clearable
@@ -160,8 +230,8 @@
             <el-option label="是" value="1"></el-option>
             <el-option label="否" value="0"></el-option>
           </el-select>
-        </el-form-item>
-        <el-form-item prop="courseViewType">
+        </el-form-item> -->
+        <!-- <el-form-item prop="courseViewType">
           <el-select
             v-model.trim="searchForm.courseViewType"
             placeholder="乐团收费模式"
@@ -171,8 +241,8 @@
             <el-option label="系统收费" value="1"></el-option>
             <el-option label="云教练收费" value="2"></el-option>
           </el-select>
-        </el-form-item>
-        <el-form-item prop="replacementShow">
+        </el-form-item> -->
+        <!-- <el-form-item prop="replacementShow">
           <el-select
             v-model.trim="searchForm.replacementShow"
             clearable
@@ -181,7 +251,7 @@
             <el-option label="是" value="1"></el-option>
             <el-option label="否" value="0"></el-option>
           </el-select>
-        </el-form-item>
+        </el-form-item> -->
         <!-- <el-form-item>
           <el-date-picker v-model.trim="orderDate" style="width:410px;" type="daterange" value-format="yyyy-MM-dd"
             @change="searchOrderDate" range-separator="至" :picker-options="{ firstDayOfWeek: 1 }" start-placeholder="开始日期"
@@ -204,7 +274,12 @@
           </el-table-column>
           <el-table-column align="center" prop="brand" label="品牌">
           </el-table-column>
-          <el-table-column align="center" prop="name" label="商品名称" width="150px">
+          <el-table-column
+            align="center"
+            prop="name"
+            label="商品名称"
+            width="150px"
+          >
             <template slot-scope="scope">
               <overflow-text :text="scope.row.name" width="100%" />
             </template>
@@ -214,26 +289,28 @@
               {{ scope.row.complementGoodsIdList ? "是" : "否" }}
             </template>
           </el-table-column>
-          <el-table-column align="center" label="学员是否展示">
+          <!-- <el-table-column align="center" label="学员是否展示">
             <template slot-scope="scope">
               {{ scope.row.clientShow ? "是" : "否" }}
             </template>
-          </el-table-column>
-          <el-table-column align="center" label="教务端是否展示">
+          </el-table-column> -->
+          <!-- <el-table-column align="center" label="教务端是否展示">
             <template slot-scope="scope">
               {{ scope.row.educationalShow ? "是" : "否" }}
             </template>
-          </el-table-column>
-          <el-table-column align="center" label="乐团是否展示">
+          </el-table-column> -->
+          <!-- <el-table-column align="center" label="乐团是否展示">
             <template slot-scope="scope">
               {{ scope.row.musicGroupShow ? "是" : "否" }}
             </template>
-          </el-table-column>
-          <el-table-column align="center" label="乐团收费模式">
+          </el-table-column> -->
+          <!-- <el-table-column align="center" label="乐团收费模式">
             <template slot-scope="scope">
-              <Tooltip :content="scope.row.courseViewType | courseViewTypeFormat" />
+              <Tooltip
+                :content="scope.row.courseViewType | courseViewTypeFormat"
+              />
             </template>
-          </el-table-column>
+          </el-table-column> -->
           <el-table-column align="center" label="是否库存预警">
             <template slot-scope="scope">
               <span v-if="!scope.row.complementGoodsIdList">
@@ -241,13 +318,13 @@
               </span>
             </template>
           </el-table-column>
-          <el-table-column align="center" label="是否参与置换">
+          <!-- <el-table-column align="center" label="是否参与置换">
             <template slot-scope="scope">
               <span>
                 {{ scope.row.replacementShow ? "是" : "否" }}
               </span>
             </template>
-          </el-table-column>
+          </el-table-column> -->
           <el-table-column align="center" label="商品类型">
             <template slot-scope="scope">
               {{ scope.row.type | shopType }}
@@ -317,11 +394,14 @@
               <img class="shopImage" :src="scope.row.image" alt="" srcset="" />
             </template>
           </el-table-column>
-          <el-table-column align="center" label="所属分部">
+          <!-- <el-table-column align="center" label="所属分部">
             <template slot-scope="scope">
-              <Tooltip :content="scope.row.organName" />
+              <div>
+                 <Tooltip :content="scope.row.organName" />
+              </div>
+
             </template>
-          </el-table-column>
+          </el-table-column> -->
           <el-table-column align="center" label="商品描述">
             <template slot-scope="scope">
               <Tooltip :content="scope.row.brief" />
@@ -359,28 +439,37 @@
               >
               <el-button
                 v-if="
-                  scope.row.status == 1 && permission('goods/updateGoodsStatus/downGoods')
+                  scope.row.status == 1 &&
+                  permission('goods/updateGoodsStatus/downGoods')
                 "
                 @click="onUpdate(scope.row, 1)"
                 type="text"
                 >下架</el-button
               >
               <el-button
-                v-if="scope.row.status == 0 && permission('/shopOperation/updateShop')"
+                v-if="
+                  scope.row.status == 0 &&
+                  permission('/shopOperation/updateShop')
+                "
                 @click="onShopOperation('update', scope.row)"
                 type="text"
                 >修改</el-button
               >
               <el-button
                 v-if="
-                  scope.row.status == 1 &&
-                  permission('/shopOperation/shopLook')
+                  scope.row.status == 1 && permission('/shopOperation/shopLook')
                 "
                 @click="onShopOperation('look', scope.row)"
                 type="text"
-                >查看</el-button>
+                >查看</el-button
+              >
 
-              <el-button v-if="permission('/shopOperation/copyShop')" @click="onShopOperation('copy', scope.row)" type="text" >复制</el-button>
+              <el-button
+                v-if="permission('/shopOperation/copyShop')"
+                @click="onShopOperation('copy', scope.row)"
+                type="text"
+                >复制</el-button
+              >
               <!-- <el-button v-if="scope.row.status == 0"
                          v-permission="'goods/del'"
                          @click="onDelete(scope.row)"
@@ -404,15 +493,22 @@
       destroy-on-close
       :visible.sync="routeShopStatus"
       @close="onFormClose('ruleForm')"
-      width="600px"
+      width="1000px"
     >
-      <el-form :model="form" :rules="rules" ref="ruleForm">
+      <el-form :model="form" :rules="rules" ref="ruleForm" :inline="true">
+        <el-alert
+          title="基础信息"
+          :closable="false"
+          class="alert"
+          type="info"
+        />
         <el-form-item
           label="商品名称"
           prop="name"
           :label-width="formLabelWidth"
         >
           <el-input
+            style="width: 220px !important"
             placeholder="请输入商品名称"
             type="text"
             :disabled="addDisabled"
@@ -421,6 +517,7 @@
         </el-form-item>
         <el-form-item label="货号" prop="sn" :label-width="formLabelWidth">
           <el-input
+            style="width: 220px !important"
             placeholder="请输入货号"
             type="text"
             :disabled="addDisabled"
@@ -429,12 +526,13 @@
         </el-form-item>
         <el-form-item label="品牌" prop="brand" :label-width="formLabelWidth">
           <el-input
+            style="width: 220px !important"
             v-model.trim="form.brand"
             :disabled="addDisabled"
             placeholder="请输入品牌"
           ></el-input>
         </el-form-item>
-        <el-form-item label="所属分部" :label-width="formLabelWidth" prop="organIdList">
+        <!-- <el-form-item label="所属分部" :label-width="formLabelWidth" prop="organIdList">
           <select-all v-model.trim="form.organIdList"
                      filterable
                      placeholder="请选择所属分部"
@@ -448,7 +546,7 @@
               :label="item.name"
               :value="item.id.toString()"></el-option>
           </select-all>
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item
           label="商品类型"
           prop="type"
@@ -457,7 +555,7 @@
           <el-select
             v-model.trim="form.type"
             :disabled="addDisabled"
-            style="width: 100% !important"
+            style="width: 220px !important"
             placeholder="请选择商品类型"
           >
             <el-option
@@ -475,7 +573,7 @@
         >
           <el-select
             v-model.trim="form.goodsCategoryId"
-            style="width: 100% !important"
+            style="width: 220px !important"
             placeholder="请选择商品分类"
             :disabled="addDisabled"
             filterable
@@ -497,6 +595,7 @@
           <el-input
             v-model.trim="form.specification"
             :disabled="addDisabled"
+            style="width: 220px !important"
             placeholder="请输入商品型号"
           ></el-input>
         </el-form-item>
@@ -505,7 +604,7 @@
           <el-form-item
             :label="'商品' + (index + 1)"
             :label-width="formLabelWidth"
-            style="display: inline-block;  width: 80% !important"
+            style="display: inline-block; width: 80% !important"
             :prop="'goodsList.' + index + '.id'"
             :rules="[
               { required: true, message: '请选择商品', trigger: 'change' },
@@ -515,8 +614,8 @@
               v-model.trim="goodsList.id"
               @change="onGoodsChange"
               filterable
-              style=" width: 100% !important"
-              :disabled="addDisabled || form.organIdList.length <= 0"
+              style="width: 220px !important"
+              :disabled="addDisabled"
               placeholder="请选择商品"
             >
               <el-option
@@ -528,7 +627,10 @@
               ></el-option>
             </el-select>
           </el-form-item>
-          <div v-if="!addDisabled && form.organIdList.length > 0" style="display: inline-block">
+          <div
+            v-if="!addDisabled"
+            style="display: inline-block"
+          >
             <el-button
               icon="el-icon-minus"
               v-if="form.goodsList.length > 1"
@@ -543,7 +645,12 @@
             ></el-button>
           </div>
         </div>
-
+        <el-alert
+          title="价格信息"
+          :closable="false"
+          class="alert"
+          type="info"
+        />
         <el-form-item
           label="市场价"
           prop="marketPrice"
@@ -555,6 +662,7 @@
             :disabled="addDisabled"
             @mousewheel.native.prevent
             v-model.trim="form.marketPrice"
+            style="width: 220px !important"
           ></el-input>
         </el-form-item>
         <el-form-item
@@ -568,6 +676,7 @@
             :disabled="addDisabled"
             @mousewheel.native.prevent
             v-model.trim="form.discountPrice"
+            style="width: 220px !important"
           ></el-input>
         </el-form-item>
         <el-form-item
@@ -581,14 +690,20 @@
             :disabled="addDisabled"
             @mousewheel.native.prevent
             v-model.trim="form.groupPurchasePrice"
+            style="width: 220px !important"
           ></el-input>
         </el-form-item>
-        <el-form-item
+        <!-- <el-form-item
           label="学员是否展示"
           prop="clientShow"
           :label-width="formLabelWidth"
         >
-          <el-select v-model="form.clientShow" style="width: 100% !important" :disabled="addDisabled" placeholder="请选择学员是否展示">
+          <el-select
+            v-model="form.clientShow"
+            style="width: 100% !important"
+            :disabled="addDisabled"
+            placeholder="请选择学员是否展示"
+          >
             <el-option label="是" :value="1"></el-option>
             <el-option label="否" :value="0"></el-option>
           </el-select>
@@ -623,18 +738,27 @@
             <el-option label="否" :value="0"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="乐团收费模式" :label-width="formLabelWidth" prop="courseViewType">
-          <select-all v-model.trim="form.courseViewType"
-                     filterable
-                     placeholder="请选择乐团收费模式"
-                     multiple
-                     :disabled="addDisabled || (form.musicGroupShow != 0 && form.musicGroupShow != 1)"
-                     clearable>
+        <el-form-item
+          label="乐团收费模式"
+          :label-width="formLabelWidth"
+          prop="courseViewType"
+        >
+          <select-all
+            v-model.trim="form.courseViewType"
+            filterable
+            placeholder="请选择乐团收费模式"
+            multiple
+            :disabled="
+              addDisabled ||
+              (form.musicGroupShow != 0 && form.musicGroupShow != 1)
+            "
+            clearable
+          >
             <el-option label="课程收费" value="0"></el-option>
             <el-option label="系统收费" value="1"></el-option>
             <el-option label="云教练收费" value="2"></el-option>
-          </select-all>
-          <!-- <el-select
+          </select-all> -->
+        <!-- <el-select
             v-model="form.courseViewType"
             multiple
             placeholder="请选择乐团收费模式"
@@ -644,17 +768,144 @@
             <el-option label="系统收费" :value="1"></el-option>
             <el-option label="云教练收费" :value="2"></el-option>
           </el-select> -->
-        </el-form-item>
-        <el-form-item
+        <!-- </el-form-item> -->
+        <!-- <el-form-item
           label="是否参与置换"
           prop="replacementShow"
           :label-width="formLabelWidth"
         >
-          <el-select v-model="form.replacementShow" style="width: 100% !important" :disabled="addDisabled" placeholder="是否参与置换">
+          <el-select
+            v-model="form.replacementShow"
+            style="width: 100% !important"
+            :disabled="addDisabled"
+            placeholder="是否参与置换"
+          >
             <el-option label="是" :value="1"></el-option>
             <el-option label="否" :value="0"></el-option>
           </el-select>
+        </el-form-item> -->
+        <el-alert
+          title="销售渠道"
+          :closable="false"
+          class="alert"
+          type="info"
+        />
+        <!--      :disabled="pageDisabled || pageType == 'update'" -->
+        <el-form-item
+          label="学员可见分部"
+          prop="studentShowOrganId"
+          :label-width="formLabelWidth"
+        >
+          <select-all
+            v-model.trim="form.studentShowOrganId"
+            filterable
+            placeholder="请选择学员可见分部"
+            style="width: 400px !important"
+            multiple
+            clearable
+          >
+            <el-option
+              v-for="item in selects.branchs"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id.toString()"
+            ></el-option>
+          </select-all>
+        </el-form-item>
+        <!--   :disabled="pageDisabled || pageType == 'update'" -->
+        <el-form-item
+          label="管理端可见分部"
+          prop="educationShowOrganId"
+          :label-width="formLabelWidth"
+        >
+          <select-all
+            v-model.trim="form.educationShowOrganId"
+            filterable
+            placeholder="请选择管理端可见分部"
+            style="width: 400px !important"
+            multiple
+            clearable
+          >
+            <el-option
+              v-for="item in selects.branchs"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id.toString()"
+            ></el-option>
+          </select-all>
+        </el-form-item>
+        <!--   :disabled="pageDisabled || pageType == 'update'" -->
+        <el-form-item
+          label="课程收费团可见分部"
+          prop="courseFeeShowOrganId"
+          :label-width="formLabelWidth"
+        >
+          <select-all
+            v-model.trim="form.courseFeeShowOrganId"
+            filterable
+            placeholder="请选择课程收费团可见分部"
+            style="width: 400px !important"
+            multiple
+            clearable
+          >
+            <el-option
+              v-for="item in selects.branchs"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id.toString()"
+            ></el-option>
+          </select-all>
+        </el-form-item>
+        <!--  :disabled="pageDisabled || pageType == 'update'" -->
+        <el-form-item
+          label="会员收费团可见分部"
+          prop="memberFeeShowOrganId"
+          :label-width="formLabelWidth"
+        >
+          <select-all
+            v-model.trim="form.memberFeeShowOrganId"
+            filterable
+            placeholder="请选择会员收费团可见分部"
+            style="width: 400px !important"
+            multiple
+            clearable
+          >
+            <el-option
+              v-for="item in selects.branchs"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id.toString()"
+            ></el-option>
+          </select-all>
+        </el-form-item>
+        <!--  :disabled="pageDisabled || pageType == 'update'"  -->
+        <el-form-item
+          label="参与置换可见分部"
+          prop="replacementShowOrganId"
+          :label-width="formLabelWidth"
+        >
+          <select-all
+            v-model.trim="form.replacementShowOrganId"
+            filterable
+            placeholder="请选择参与置换可见分部"
+            style="width: 400px !important"
+            multiple
+            clearable
+          >
+            <el-option
+              v-for="item in selects.branchs"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id.toString()"
+            ></el-option>
+          </select-all>
         </el-form-item>
+        <el-alert
+          title="商品信息"
+          :closable="false"
+          class="alert"
+          type="info"
+        />
         <el-form-item
           label="商品图片"
           prop="image"
@@ -667,7 +918,7 @@
             :imageHeightM="400"
           ></upload>
         </el-form-item>
-
+        <br />
         <el-form-item
           label="商品描述"
           prop="brief"
@@ -677,6 +928,7 @@
             type="textarea"
             :disabled="addDisabled"
             v-model.trim="form.brief"
+            style="width: 400px"
           ></el-input>
         </el-form-item>
         <el-form-item
@@ -688,6 +940,7 @@
             type="textarea"
             :disabled="addDisabled"
             v-model.trim="form.desc"
+            style="width: 400px"
           ></el-input>
         </el-form-item>
       </el-form>
@@ -783,14 +1036,14 @@ export default {
         total: 0, // 总条数
         page_size: [10, 20, 40, 50], // 选择限制显示条数
       },
-      formLabelWidth: "120px",
+      formLabelWidth: "160px",
       routeShopStatus: false,
       addType: "create",
       addString: {
         create: "添加",
         update: "修改",
         look: "查看",
-        copy: "复制"
+        copy: "复制",
       },
       addDisabled: false,
       form: {
@@ -820,6 +1073,11 @@ export default {
         brief: null,
         desc: null,
         replacementShow: null,
+        studentShowOrganId: null,
+        educationShowOrganId: null,
+        courseFeeShowOrganId: null,
+        memberFeeShowOrganId: null,
+        replacementShowOrganId: null,
       },
       goodsTree: [], // 选择商品列表
       rules: {
@@ -877,6 +1135,41 @@ export default {
             trigger: "change",
           },
         ],
+        studentShowOrganId: [
+          {
+            required: true,
+            message: "请选择学生端可见分部",
+            trigger: "change",
+          },
+        ],
+        educationShowOrganId: [
+          {
+            required: true,
+            message: "请选择管理端可见分部",
+            trigger: "change",
+          },
+        ],
+        courseFeeShowOrganId: [
+          {
+            required: true,
+            message: "请选择课程收费团可见分部",
+            trigger: "change",
+          },
+        ],
+        memberFeeShowOrganId: [
+          {
+            required: true,
+            message: "请选择会员收费团可见分部",
+            trigger: "change",
+          },
+        ],
+        replacementShowOrganId: [
+          {
+            required: true,
+            message: "请选择乐器置换展示可见分部",
+            trigger: "change",
+          },
+        ],
         goodsCategoryId: [
           {
             required: true,
@@ -940,7 +1233,7 @@ export default {
           },
         ],
         courseViewType: [
-          { required: true, message: "请选乐团收费模式", trigger: 'change' },
+          { required: true, message: "请选乐团收费模式", trigger: "change" },
         ],
         replacementShow: [
           {
@@ -1138,18 +1431,24 @@ export default {
       this.routeShopStatus = true;
       this.addType = "create";
       this.addDisabled = false;
-      if (this.$refs["ruleForm"]) {
-        this.$refs["ruleForm"].resetFields();
-      }
+
+      this.$nextTick((res) => {
+        console.log(this.$refs["ruleForm"]);
+        if (this.$refs["ruleForm"]) {
+          this.$refs["ruleForm"].resetFields();
+        }
+      });
     },
     onOrganChange(val) {
-      if(val && val.length > 0) {
+      if (val && val.length > 0) {
         // 获取所有商品
-        this.getAllGoodsList(val.join(','));
+        this.getAllGoodsList(val.join(","));
       }
     },
-    onValidGoodsStatus() {
+   async onValidGoodsStatus() {
       // 更新商品选择状态
+     await this.getAllGoodsList();
+     console.log(this.form.goodsList)
       let goodsList = this.form.goodsList;
       let tempIds = [];
       goodsList.forEach((item) => {
@@ -1174,7 +1473,10 @@ export default {
       this.addType = type;
       this.addDisabled = type == "look" ? true : false;
       // 判断是否是修改组合商品
-      if ((type == "update" || type == "look" || type == 'copy') && row.complementGoodsIdList) {
+      if (
+        (type == "update" || type == "look" || type == "copy") &&
+        row.complementGoodsIdList
+      ) {
         this.routeShopStatus = true;
 
         let form = this.form;
@@ -1191,14 +1493,15 @@ export default {
         form.goodsList = goodsList;
         form.id = row.id;
 
-        if(row.courseViewType) {
-          form.courseViewType = row.courseViewType.split(',')
+        if (row.courseViewType) {
+          form.courseViewType = row.courseViewType.split(",");
         }
 
-        if(row.organIdList) {
-          form.organIdList = row.organIdList.split(',')
-          this.getAllGoodsList(row.organIdList);
-        }
+        // if (row.organIdList) {
+        //   form.organIdList = row.organIdList.split(",");
+
+        // }
+        this.getAllGoodsList();
 
         this.onValidGoodsStatus();
       } else {
@@ -1207,8 +1510,8 @@ export default {
           pageTitle = "修改";
         } else if (type == "look") {
           pageTitle = "查看";
-        } else if(type == 'copy') {
-          pageTitle = '复制'
+        } else if (type == "copy") {
+          pageTitle = "复制";
         }
         this.$router.push(
           {
@@ -1256,16 +1559,20 @@ export default {
         params: {
           templateType: "GOODS",
         },
-        fileName: '商品导入模板.xls'
-      })
+        fileName: "商品导入模板.xls",
+      });
     },
-    exportShopList(){
-      Export(this, {
-        url: "/api-web/export/goods",
-        params: qs.stringify(cleanDeep(this.searchForm)),
-        fileName: '商品导出.xls',
-        method:'post'
-      }, '确定导出商品')
+    exportShopList() {
+      Export(
+        this,
+        {
+          url: "/api-web/export/goods",
+          params: qs.stringify(cleanDeep(this.searchForm)),
+          fileName: "商品导出.xls",
+          method: "post",
+        },
+        "确定导出商品"
+      );
     },
     onFormClose(formName) {
       // 关闭弹窗重置验证
@@ -1322,8 +1629,28 @@ export default {
             }
           });
           form.complementGoodsIdList = tempIds.join(",");
-          form.courseViewType = form.courseViewType.join(',')
-          form.organIdList = form.courseViewType.join(',')
+          // form.courseViewType = form.courseViewType.join(",");
+          // form.organIdList = form.courseViewType.join(",");
+           if (form.studentShowOrganId) {
+            form.studentShowOrganId = form.studentShowOrganId.join(",");
+          }
+          if (form.educationShowOrganId) {
+            form.educationShowOrganId =
+              form.educationShowOrganId.join(",");
+          }
+
+          if (form.courseFeeShowOrganId) {
+            form.courseFeeShowOrganId =
+              form.courseFeeShowOrganId.join(",");
+          }
+          if (form.memberFeeShowOrganId) {
+            form.memberFeeShowOrganId =
+              form.memberFeeShowOrganId.join(",");
+          }
+          if (form.replacementShowOrganId) {
+            form.replacementShowOrganId =
+              form.replacementShowOrganId.join(",");
+          }
           form.goodsList = null;
           if (this.addType == "create" || this.addType == "copy") {
             if (this.form.id) {
@@ -1388,21 +1715,24 @@ export default {
   },
   filters: {
     courseViewTypeFormat(value) {
-      let template = ['课程收费', '系统收费', '云教练收费']
-      if(!value) {
-        return ''
+      let template = ["课程收费", "系统收费", "云教练收费"];
+      if (!value) {
+        return "";
       }
-      let ids = value.split(',')
-      let str = []
-      ids.forEach(item => {
-        str.push(template[item])
-      })
-      return str.join(',')
-    }
-  }
+      let ids = value.split(",");
+      let str = [];
+      ids.forEach((item) => {
+        str.push(template[item]);
+      });
+      return str.join(",");
+    },
+  },
 };
 </script>
-<style lang="scss">
+<style lang="scss" scoped>
+.alert {
+  margin-bottom: 22px;
+}
 .shopImage {
   width: 60px;
   height: 60px;

+ 311 - 88
src/views/businessManager/shopManager/shopOperation.vue

@@ -8,13 +8,25 @@
     </h2>
 
     <div class="m-core">
-      <el-form :model="form" :rules="rules" ref="form" label-width="120px">
+      <el-form
+        :model="form"
+        :rules="rules"
+        ref="form"
+        label-width="160px"
+        :inline="true"
+      >
+        <el-alert
+          title="基础信息"
+          :closable="false"
+          class="alert"
+          type="info"
+        />
         <el-form-item label="货号" prop="sn">
           <el-input
             v-model.trim="form.sn"
             :disabled="pageDisabled"
             placeholder="请输入货号"
-            style="width: 400px"
+            style="width: 220px !important"
           ></el-input>
         </el-form-item>
         <el-form-item label="品牌" prop="brand">
@@ -22,7 +34,7 @@
             v-model.trim="form.brand"
             :disabled="pageDisabled"
             placeholder="请输入品牌"
-            style="width: 400px"
+            style="width: 220px !important"
           ></el-input>
         </el-form-item>
         <!-- <el-form-item label="备查货号" prop="supplyChannel" v-if="pageType == 'create'">
@@ -33,7 +45,7 @@
             v-model.trim="form.name"
             placeholder="请输入商品名称"
             :disabled="pageDisabled"
-            style="width: 400px"
+            style="width: 220px !important"
           ></el-input>
         </el-form-item>
         <el-form-item label="商品类型" prop="type">
@@ -41,7 +53,7 @@
             v-model.trim="form.type"
             placeholder="请选择商品类型"
             :disabled="pageDisabled"
-            style="width: 400px !important"
+            style="width: 220px !important"
           >
             <el-option
               v-for="(item, index) in goodsType"
@@ -56,7 +68,7 @@
             v-model.trim="form.goodsCategoryId"
             placeholder="请选择商品分类"
             :disabled="pageDisabled"
-            style="width: 400px !important"
+            style="width: 220px !important"
             filterable
           >
             <el-option
@@ -68,40 +80,38 @@
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="所属分部" prop="organIdList">
-          <select-all v-model.trim="form.organIdList"
-                     filterable
-                     placeholder="请选择所属分部"
-                     style="width: 400px !important"
-                     multiple
-                     :disabled="pageDisabled || pageType == 'update'"
-                     clearable>
-            <el-option v-for="item in selects.branchs"
+        <!-- <el-form-item label="所属分部" prop="organIdList">
+          <select-all
+            v-model.trim="form.organIdList"
+            filterable
+            placeholder="请选择所属分部"
+            style="width: 400px !important"
+            multiple
+            :disabled="pageDisabled || pageType == 'update'"
+            clearable
+          >
+            <el-option
+              v-for="item in selects.branchs"
               :key="item.id"
               :label="item.name"
-              :value="item.id.toString()"></el-option>
+              :value="item.id.toString()"
+            ></el-option>
           </select-all>
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item label="商品型号" prop="specification">
           <el-input
             v-model.trim="form.specification"
             placeholder="请输入商品型号"
             :disabled="pageDisabled"
-            style="width: 400px"
+            style="width: 220px"
           ></el-input>
         </el-form-item>
-        <!-- <el-form-item label="内部库存" prop="stockCount">
-          <el-input type="number" :disabled="pageType != 'create'" v-model.trim="form.stockCount" placeholder="请输入内部库存" style="width: 400px"></el-input>
-        </el-form-item>
-        <el-form-item label="税务库存" prop="taxStockCount">
-          <el-input type="number" :disabled="pageType != 'create'" v-model.trim="form.taxStockCount" placeholder="请输入税务库存" style="width: 400px"></el-input>
-        </el-form-item> -->
         <el-form-item label="库存类型" prop="stockType">
           <el-select
             v-model="form.stockType"
             placeholder="请选择库存类型"
             :disabled="pageDisabled"
-            style="width: 400px !important"
+            style="width: 220px !important"
           >
             <el-option
               v-for="(item, index) in stockType"
@@ -111,6 +121,23 @@
             ></el-option>
           </el-select>
         </el-form-item>
+        <el-form-item label="是否库存预警" prop="stockWarning">
+          <el-select
+            v-model="form.stockWarning"
+            placeholder="请选择库存预警"
+            :disabled="pageDisabled"
+            style="width: 220px !important"
+          >
+            <el-option label="是" :value="1"></el-option>
+            <el-option label="否" :value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-alert
+          title="价格信息"
+          :closable="false"
+          class="alert"
+          type="info"
+        />
         <el-form-item label="市场价" prop="marketPrice">
           <el-input
             type="number"
@@ -118,7 +145,7 @@
             :disabled="pageDisabled"
             @mousewheel.native.prevent
             v-model.trim="form.marketPrice"
-            style="width: 400px"
+            style="width: 220px"
           ></el-input>
         </el-form-item>
         <el-form-item label="零售价" prop="discountPrice">
@@ -128,7 +155,7 @@
             @mousewheel.native.prevent
             :disabled="pageDisabled"
             v-model.trim="form.discountPrice"
-            style="width: 400px"
+            style="width: 220px"
           ></el-input>
         </el-form-item>
         <el-form-item label="商品团购价" prop="groupPurchasePrice">
@@ -138,76 +165,174 @@
             @mousewheel.native.prevent
             :disabled="pageDisabled"
             v-model.trim="form.groupPurchasePrice"
-            style="width: 400px"
+            style="width: 220px"
           ></el-input>
         </el-form-item>
-        <el-form-item label="学员是否展示" prop="clientShow">
+        <el-alert
+          title="销售渠道"
+          :closable="false"
+          class="alert"
+          type="info"
+        />
+        <el-form-item label="学员可见分部" prop="studentShowOrganId">
+          <select-all
+            v-model.trim="form.studentShowOrganId"
+            filterable
+            placeholder="请选择所属分部"
+            style="width: 400px !important"
+            multiple
+            :disabled="pageDisabled || pageType == 'update'"
+            clearable
+          >
+            <el-option
+              v-for="item in selects.branchs"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id.toString()"
+            ></el-option>
+          </select-all>
+        </el-form-item>
+        <el-form-item label="管理端可见分部" prop="educationShowOrganId">
+          <select-all
+            v-model.trim="form.educationShowOrganId"
+            filterable
+            placeholder="请选择所属分部"
+            style="width: 400px !important"
+            multiple
+            :disabled="pageDisabled || pageType == 'update'"
+            clearable
+          >
+            <el-option
+              v-for="item in selects.branchs"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id.toString()"
+            ></el-option>
+          </select-all>
+        </el-form-item>
+        <el-form-item label="课程收费团可见分部" prop="courseFeeShowOrganId">
+          <select-all
+            v-model.trim="form.courseFeeShowOrganId"
+            filterable
+            placeholder="请选择所属分部"
+            style="width: 400px !important"
+            multiple
+            :disabled="pageDisabled || pageType == 'update'"
+            clearable
+          >
+            <el-option
+              v-for="item in selects.branchs"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id.toString()"
+            ></el-option>
+          </select-all>
+        </el-form-item>
+        <el-form-item label="会员收费团可见分部" prop="memberFeeShowOrganId">
+          <select-all
+            v-model.trim="form.memberFeeShowOrganId"
+            filterable
+            placeholder="请选择所属分部"
+            style="width: 400px !important"
+            multiple
+            :disabled="pageDisabled || pageType == 'update'"
+            clearable
+          >
+            <el-option
+              v-for="item in selects.branchs"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id.toString()"
+            ></el-option>
+          </select-all>
+        </el-form-item>
+        <el-form-item label="参与置换可见分部" prop="replacementShowOrganId">
+          <select-all
+            v-model.trim="form.replacementShowOrganId"
+            filterable
+            placeholder="请选择所属分部"
+            style="width: 400px !important"
+            multiple
+            :disabled="pageDisabled || pageType == 'update'"
+            clearable
+          >
+            <el-option
+              v-for="item in selects.branchs"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id.toString()"
+            ></el-option>
+          </select-all>
+        </el-form-item>
+        <!-- <el-form-item label="学员是否展示" prop="clientShow">
           <el-select
             v-model="form.clientShow"
             :disabled="pageDisabled"
             placeholder="请选择学员是否展示"
-            style="width: 400px !important"
+            style="width: 220px !important"
           >
             <el-option label="是" :value="1"></el-option>
             <el-option label="否" :value="0"></el-option>
           </el-select>
-        </el-form-item>
-        <el-form-item label="管理端是否展示" prop="educationalShow">
+        </el-form-item> -->
+        <!-- <el-form-item label="管理端是否展示" prop="educationalShow">
           <el-select
             v-model="form.educationalShow"
             placeholder="请选择教务端是否展示"
             :disabled="pageDisabled"
-            style="width: 400px !important"
+            style="width: 220px !important"
           >
             <el-option label="是" :value="1"></el-option>
             <el-option label="否" :value="0"></el-option>
           </el-select>
-        </el-form-item>
-        <el-form-item label="乐团是否展示" prop="musicGroupShow">
+        </el-form-item> -->
+        <!-- <el-form-item label="乐团是否展示" prop="musicGroupShow">
           <el-select
             v-model="form.musicGroupShow"
             :disabled="pageDisabled"
             placeholder="请选择乐团是否展示"
-            style="width: 400px !important"
+            style="width: 220px !important"
           >
             <el-option label="是" :value="1"></el-option>
             <el-option label="否" :value="0"></el-option>
           </el-select>
-        </el-form-item>
-        <el-form-item label="乐团收费模式" prop="courseViewType">
-          <select-all v-model.trim="form.courseViewType"
-                     filterable
-                     placeholder="请选择乐团收费模式"
-                     style="width: 400px !important"
-                     multiple
-                     :disabled="pageDisabled || (form.musicGroupShow != 0 && form.musicGroupShow != 1)"
-                     clearable>
-          <el-option label="课程收费" value="0"></el-option>
-            <el-option label="会员收费" value="1"></el-option>
-          </select-all>
-        </el-form-item>
-        <el-form-item label="是否库存预警" prop="stockWarning">
-          <el-select
-            v-model="form.stockWarning"
-            placeholder="请选择库存预警"
-            :disabled="pageDisabled"
-            style="width: 400px !important"
+        </el-form-item> -->
+        <!-- <el-form-item label="乐团收费模式" prop="courseViewType">
+          <select-all
+            v-model.trim="form.courseViewType"
+            filterable
+            placeholder="请选择乐团收费模式"
+            style="width: 220px !important"
+            multiple
+            :disabled="
+              pageDisabled ||
+              (form.musicGroupShow != 0 && form.musicGroupShow != 1)
+            "
+            clearable
           >
-            <el-option label="是" :value="1"></el-option>
-            <el-option label="否" :value="0"></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="是否参与置换" prop="replacementShow">
+            <el-option label="课程收费" value="0"></el-option>
+            <el-option label="系统收费" value="1"></el-option>
+            <el-option label="云教练收费" value="2"></el-option>
+          </select-all>
+        </el-form-item> -->
+
+        <!-- <el-form-item label="是否参与置换" prop="replacementShow">
           <el-select
             v-model="form.replacementShow"
             placeholder="请选择库存预警"
             :disabled="pageDisabled"
-            style="width: 400px !important"
+            style="width: 220px !important"
           >
             <el-option label="是" :value="1"></el-option>
             <el-option label="否" :value="0"></el-option>
           </el-select>
-        </el-form-item>
+        </el-form-item> -->
+        <el-alert
+          title="商品信息"
+          :closable="false"
+          class="alert"
+          type="info"
+        />
         <el-form-item label="商品图片" prop="image">
           <el-upload
             class="avatar-uploader"
@@ -223,6 +348,7 @@
             <i v-else class="el-icon-plus avatar-uploader-icon"></i>
           </el-upload>
         </el-form-item>
+        <br />
         <el-form-item label="商品描述" prop="brief">
           <el-input
             type="textarea"
@@ -231,6 +357,7 @@
             style="width: 400px"
           ></el-input>
         </el-form-item>
+        <br />
         <el-form-item label="商品详情" prop="desc">
           <el-input
             type="textarea"
@@ -239,10 +366,9 @@
             style="width: 400px"
           ></el-input>
         </el-form-item>
+        <br />
         <el-form-item v-if="!pageDisabled">
-          <el-button @click="onSubmit('form')" type="primary"
-            >保存</el-button
-          >
+          <el-button @click="onSubmit('form')" type="primary">保存</el-button>
           <el-button @click="onReSet('form')">重置</el-button>
         </el-form-item>
       </el-form>
@@ -290,7 +416,7 @@ export default {
         create: "添加",
         update: "修改",
         look: "查看",
-        copy: "复制"
+        copy: "复制",
       },
       pageDisabled: false,
       headers: {
@@ -303,7 +429,7 @@ export default {
         name: null,
         type: null,
         goodsCategoryId: null,
-        organIdList: [],
+        // organIdList: [],
         specification: null,
         stockCount: null,
         taxStockCount: null,
@@ -319,8 +445,12 @@ export default {
         image: null,
         brief: null,
         desc: null,
-        replacementShow:null
-
+        replacementShow: null,
+        studentShowOrganId: null,
+        educationShowOrganId: null,
+        courseFeeShowOrganId: null,
+        memberFeeShowOrganId: null,
+        replacementShowOrganId: null,
       },
       rules: {
         sn: [{ required: true, message: "请输入商品货号", trigger: "blur" }],
@@ -370,9 +500,44 @@ export default {
         organIdList: [
           {
             required: true,
-            message: '请选择所属分部',
-            trigger: "change"
-          }
+            message: "请选择所属分部",
+            trigger: "change",
+          },
+        ],
+        studentShowOrganId: [
+          {
+            required: true,
+            message: "请选择学生端可见分部",
+            trigger: "change",
+          },
+        ],
+        educationShowOrganId: [
+          {
+            required: true,
+            message: "请选择管理端可见分部",
+            trigger: "change",
+          },
+        ],
+        courseFeeShowOrganId: [
+          {
+            required: true,
+            message: "请选择课程收费团可见分部",
+            trigger: "change",
+          },
+        ],
+        memberFeeShowOrganId: [
+          {
+            required: true,
+            message: "请选择会员收费团可见分部",
+            trigger: "change",
+          },
+        ],
+        replacementShowOrganId: [
+          {
+            required: true,
+            message: "请选择乐器置换展示可见分部",
+            trigger: "change",
+          },
         ],
         specification: [
           {
@@ -420,7 +585,7 @@ export default {
         clientShow: [
           { required: true, message: "请选择学员是否展示", trigger: "change" },
         ],
-        replacementShow:[
+        replacementShow: [
           { required: true, message: "是否参与乐器置换", trigger: "change" },
         ],
         educationalShow: [
@@ -434,7 +599,7 @@ export default {
           { required: true, message: "请选择乐团是否展示", trigger: "change" },
         ],
         courseViewType: [
-          { required: true, message: "请选乐团收费模式", trigger: 'change' },
+          { required: true, message: "请选乐团收费模式", trigger: "change" },
         ],
         stockWarning: [
           { required: true, message: "请选择是否库存预警", trigger: "change" },
@@ -487,14 +652,39 @@ export default {
     onSubmit(formName) {
       this.$refs[formName].validate((valid) => {
         if (valid) {
-          let tempForm = JSON.parse(JSON.stringify(this.form))
-          if(tempForm.courseViewType) {
-            tempForm.courseViewType = tempForm.courseViewType.join(',')
+          let tempForm = JSON.parse(JSON.stringify(this.form));
+          if (tempForm.courseViewType) {
+            tempForm.courseViewType = tempForm.courseViewType.join(",");
           }
-          if(tempForm.organIdList) {
-            tempForm.organIdList = tempForm.organIdList.join(',')
+          // if (tempForm.organIdList) {
+          //   tempForm.organIdList = tempForm.organIdList.join(",");
+          // }
+          if (tempForm.studentShowOrganId) {
+            tempForm.studentShowOrganId = tempForm.studentShowOrganId.join(",");
           }
-          if (this.pageType == "create" || this.pageType == 'copy') {
+          if (tempForm.educationShowOrganId) {
+            tempForm.educationShowOrganId =
+              tempForm.educationShowOrganId.join(",");
+          }
+
+          if (tempForm.courseFeeShowOrganId) {
+            tempForm.courseFeeShowOrganId =
+              tempForm.courseFeeShowOrganId.join(",");
+          }
+          if (tempForm.memberFeeShowOrganId) {
+            tempForm.memberFeeShowOrganId =
+              tempForm.memberFeeShowOrganId.join(",");
+          }
+          if (tempForm.replacementShowOrganId) {
+            tempForm.replacementShowOrganId =
+              tempForm.replacementShowOrganId.join(",");
+          }
+          //      studentShowOrganId: null,
+          // educationShowOrganId: null,
+          // courseFeeShowOrganId: null,
+          // memberFeeShowOrganId: null,
+          // replacementShowOrganId: null,
+          if (this.pageType == "create" || this.pageType == "copy") {
             if (tempForm.id) {
               // 判断有没有Id,如果有则删除
               delete tempForm.id;
@@ -577,14 +767,39 @@ export default {
         goodsSingleQuery(this.id).then((res) => {
           if (res.code == 200) {
             let result = res.data;
-            let courseViewType = null
-            if(result.courseViewType) {
-              courseViewType = result.courseViewType.split(',')
+            let courseViewType = null;
+            if (result.courseViewType) {
+              courseViewType = result.courseViewType.split(",");
+            }
+            // let organIdList = [];
+            // if (result.organIdList) {
+            //   organIdList = result.organIdList.split(",");
+            // }
+                let studentShowOrganId = [];
+            if (result.studentShowOrganId) {
+              studentShowOrganId = result.studentShowOrganId.split(",");
             }
-            let organIdList = []
-            if(result.organIdList) {
-              organIdList = result.organIdList.split(',')
+                let educationShowOrganId = [];
+            if (result.educationShowOrganId) {
+              educationShowOrganId = result.educationShowOrganId.split(",");
             }
+                let courseFeeShowOrganId = [];
+            if (result.courseFeeShowOrganId) {
+              courseFeeShowOrganId = result.courseFeeShowOrganId.split(",");
+            }
+                let memberFeeShowOrganId = [];
+            if (result.memberFeeShowOrganId) {
+              memberFeeShowOrganId = result.memberFeeShowOrganId.split(",");
+            }
+                let replacementShowOrganId = [];
+            if (result.replacementShowOrganId) {
+              replacementShowOrganId = result.replacementShowOrganId.split(",");
+            }
+            /**studentShowOrganId: 1,2
+educationShowOrganId: 2,3
+courseFeeShowOrganId: 3,4
+memberFeeShowOrganId: 4,5
+replacementShowOrganId: 6,7 */
             this.form = {
               id: result.id,
               sn: result.sn,
@@ -593,7 +808,12 @@ export default {
               name: result.name,
               type: result.type,
               goodsCategoryId: result.goodsCategoryId,
-              organIdList: organIdList,
+              // organIdList: organIdList,
+              studentShowOrganId,
+              educationShowOrganId,
+              courseFeeShowOrganId,
+              memberFeeShowOrganId,
+              replacementShowOrganId,
               specification: result.specification,
               stockCount: result.stockCount,
               taxStockCount: result.taxStockCount,
@@ -609,7 +829,7 @@ export default {
               image: result.image,
               brief: result.brief,
               desc: result.desc,
-              replacementShow:result.replacementShow
+              replacementShow: result.replacementShow,
             };
           }
         });
@@ -688,6 +908,9 @@ export default {
 };
 </script>
 <style lang="scss" scoped>
+.alert {
+  margin-bottom: 22px;
+}
 .el-button--primary {
   background: #14928a;
   border-color: #14928a;

+ 3 - 1
src/views/resetTeaming/components/resetPayListSchool.vue

@@ -174,7 +174,8 @@
               </auth>
               <el-button
                 type="text"
-                v-if="teamStatus && scope.row.auditStatus === 'REJECT'"
+                v-if="teamStatus && (scope.row.auditStatus === 'REJECT' ||
+                      scope.row.auditStatus === 'DRAFT')"
                 v-permission="'musicGroupPaymentCalender/update/3883'"
                 @click="resetPay(scope.row)"
                 >修改</el-button
@@ -470,6 +471,7 @@ import {
   getMusicGroupStu,
   musicGroupPaymentCalenderDetailBatchAdd,
   musicGroupPaymentCalenderDelByBatchNo,
+  revokeMusicGroupPaymentCalender
 } from "../api";
 import setStudentFee from "./studentPayBase";
 import userPayForm from "../modals/user-pay-form";

+ 7 - 1
src/views/resetTeaming/modals/user-pay-form.vue

@@ -305,6 +305,7 @@ export default {
         paymentDate: [],
       },
       money: "",
+      isSetCourseSettingsId:false
     };
   },
   computed: {
@@ -406,7 +407,8 @@ export default {
     },
     async "form.musicGroupOrganizationCourseSettingId"(val) {
       // && !this.rowDetail
-      if (val) {
+
+      if (val&&!this.isSetCourseSettingsId) {
         try {
           const res = await queryByMusicGroupOrganizationCourseSettingsId({
             id: val,
@@ -418,6 +420,7 @@ export default {
           this.syncAllMoney();
         } catch (error) {}
       }
+      this.isSetCourseSettingsId = false
     },
     "payment.paymentPattern"() {
       this.syncAllMoney();
@@ -554,6 +557,9 @@ export default {
             this.$set(this.cycle, "paymentValid", arr);
           }
           this.studentIds = firstPayment.studentIds;
+          if(res.data.auditDto?.musicGroupOrganizationCourseSettingsId){
+            this.isSetCourseSettingsId = true
+          }
           this.$set(
             this.form,
             "musicGroupOrganizationCourseSettingId",

+ 4 - 2
src/views/returnVisitManager/returnVisitList.vue

@@ -13,7 +13,7 @@
       >
         <el-form-item>
           <el-input
-            placeholder="请输入老师姓名"
+            placeholder="老师、学生姓名、编号"
             v-model.trim="searchForm.search"
           ></el-input>
         </el-form-item>
@@ -222,6 +222,9 @@ export default {
       this.searchForm.search = this.$route.query.search;
       this.searchForm.timer = this.$route.query.timer;
     }
+    if(this.$route.query.typeList&&this.$route.query.typeList.length>0){
+       this.searchForm.typeList = this.$route.query.typeList
+    }
     this.getList();
   },
   activated() {
@@ -255,7 +258,6 @@ export default {
     getList() {
       // cleanDeep
       let { timer, typeList, ...rest } = this.searchForm;
-      console.log(typeList);
       let type,
         purpose = null;
       if (typeList.length > 0) {

+ 79 - 17
src/views/studentManager/memberList.vue

@@ -55,6 +55,20 @@
             <el-option label="即将过期" value="1"></el-option>
           </el-select>
         </el-form-item>
+        <el-form-item>
+          <el-date-picker
+            v-model.trim="searchForm.visitTime"
+            style="width: 410px"
+            type="daterange"
+            value-format="yyyy-MM-dd"
+            :picker-options="{
+              firstDayOfWeek: 1,
+            }"
+            range-separator="至"
+            start-placeholder="回访开始日期"
+            end-placeholder="回访结束日期"
+          ></el-date-picker>
+        </el-form-item>
         <!-- <el-form-item prop="isActive">
           <el-select
             class="multiple"
@@ -89,6 +103,11 @@
           ></el-table-column>
           <el-table-column
             align="center"
+            prop="phone"
+            label="手机号"
+          ></el-table-column>
+          <el-table-column
+            align="center"
             prop="organName"
             label="所属分部"
           ></el-table-column>
@@ -96,7 +115,16 @@
             align="center"
             prop="musicGroupName"
             label="所属乐团"
-          ></el-table-column>
+          >
+            <template slot-scope="scope">
+              <el-button
+                type="text"
+                @click="gotoMusic(scope.row.musicGroupName)"
+              >
+                {{ scope.row.musicGroupName }}
+              </el-button>
+            </template>
+          </el-table-column>
           <el-table-column align="center" prop="studentId" label="会员是否过期">
             <template slot-scope="scope">
               <div>
@@ -108,7 +136,20 @@
             align="center"
             prop="memberDay"
             label="会员有效期剩余天数"
-          ></el-table-column>
+          >
+            <template slot-scope="scope">
+              <div>
+                {{ scope.row.memberDay >= 0 ? scope.row.memberDay : 0 }}
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="memberDay" label="回访日期">
+            <template slot-scope="scope">
+              <div>
+                {{ scope.row.visitTime | dayjsFormat }}
+              </div>
+            </template>
+          </el-table-column>
           <el-table-column align="center" prop="studentId" label="操作">
             <template slot-scope="scope">
               <div>
@@ -118,6 +159,12 @@
                     >新增回访</el-button
                   >
                 </auth>
+                <auth :auths="'visit/queryPage'" v-if="scope.row.visitTime">
+                  <el-button type="text" @click="lookVisit(scope.row)"
+                    >查看回访</el-button
+                  >
+                </auth>
+
                 <auth :auths="'musicGroupQuit/directQuitMusicGroup4463'">
                   <el-button type="text" @click="quitTeam(scope.row)"
                     >退团退费</el-button
@@ -199,12 +246,16 @@ import { StudentQuit } from "@/api/buildTeam";
 import load from "@/utils/loading";
 import { getMusicMemberList } from "./api";
 import visit from "@/views/withdrawal-application/modals/visit";
+import { getTimes } from "@/utils";
 export default {
-  components: { pagination, quiteTeam,visit },
+  components: { pagination, quiteTeam, visit },
   data() {
     return {
       searchForm: {
         search: null,
+        organId: null,
+        hasMember: null,
+        visitTime: [],
       },
 
       tableList: [{}],
@@ -224,13 +275,13 @@ export default {
         isMaintenanceFee: null,
         cloudTeacherAmount: null,
         isCloudTeacherAmount: null,
-        isRefundMemberFee:null,
+        isRefundMemberFee: null,
         maintenanceFee: 0,
         reason: "",
       },
       quitVisible: false,
       activeRow: null,
-      visitVisible:false
+      visitVisible: false,
     };
   },
   //生命周期 - 创建完成(可以访问当前this实例)
@@ -243,15 +294,18 @@ export default {
   },
   methods: {
     init() {
-      if(this.$route.query.hasMember){
-        this.$set(this.searchForm,'hasMember',this.$route.query.hasMember)
+      if (this.$route.query.hasMember) {
+        this.$set(this.searchForm, "hasMember", this.$route.query.hasMember);
       }
       this.getList();
     },
     async getList() {
+      // 设置时间
+      let { visitTime, ...rest } = this.searchForm;
       try {
         const res = await getMusicMemberList({
-          ...this.searchForm,
+          ...rest,
+          ...getTimes(visitTime, ["visitStartTime", "visitEndTime"]),
           page: this.rules.page,
           rows: this.rules.limit,
         });
@@ -288,7 +342,7 @@ export default {
             isRefundCourseFee: false,
             isRefundInstrumentFee: false,
             isRefundTeachingAssistantsFee: false,
-            isRefundMemberFee:false
+            isRefundMemberFee: false,
           }).then((res) => {
             this.quitForm = {
               // 退团信息确认
@@ -298,7 +352,7 @@ export default {
               isMaintenanceFee: null,
               cloudTeacherAmount: null,
               isCloudTeacherAmount: null,
-              isRefundMemberFee:null,
+              isRefundMemberFee: null,
               maintenanceFee: 0,
               reason: "",
             };
@@ -330,7 +384,7 @@ export default {
                 isRefundTeachingAssistantsFee:
                   this.quitForm.isRefundTeachingAssistantsFee,
                 maintenanceFee: this.quitForm.maintenanceFee,
-                isRefundMemberFee:this.quitForm.isRefundMemberFee
+                isRefundMemberFee: this.quitForm.isRefundMemberFee,
               };
               // 退还乐器练习云教练费用
               if (this.quitForm.isRefundMemberFee) {
@@ -348,7 +402,7 @@ export default {
                   isMaintenanceFee: null,
                   cloudTeacherAmount: null,
                   isCloudTeacherAmount: null,
-                  isRefundMemberFee:null,
+                  isRefundMemberFee: null,
                   maintenanceFee: 0,
                   reason: "",
                 };
@@ -370,9 +424,18 @@ export default {
       this.visitVisible = true;
       this.activeRow = row;
     },
+    gotoMusic(str) {
+      this.$router.push({ path: "/teamList", query: { search: str } });
+    },
+    lookVisit(row) {
+      this.$router.push({
+        path: "/studentManager/returnVisitList",
+        query: { search: row.userId,typeList:['其它', '会员续费'] },
+      });
+    },
   },
-  watch:{
-        quitVisible(val) {
+  watch: {
+    quitVisible(val) {
       if (!val) {
         this.quitForm = {
           // 退团信息确认
@@ -384,12 +447,11 @@ export default {
           isCloudTeacherAmount: null,
           maintenanceFee: 0,
           reason: "",
-
-        }
+        };
         this.$refs["quitForm"].$refs["quitForm"].resetFields();
       }
     },
-  }
+  },
 };
 </script>
 <style lang='scss' scoped>

+ 92 - 59
src/views/studentManager/studentList.vue

@@ -151,53 +151,59 @@
           :data="tableList"
           :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
         >
-          <el-table-column align="center" prop="userId" label="学员编号">
+          <el-table-column align="center" prop="organName" label="所属分部">
             <template slot-scope="scope">
-              <copy-text>{{ scope.row.userId }}</copy-text>
+              <copy-text>{{ scope.row.organName }}</copy-text>
             </template>
           </el-table-column>
-          <el-table-column align="center" prop="username" label="学员姓名">
+          <el-table-column
+            align="center"
+            prop="userId"
+            label="学员信息"
+            width="140px"
+          >
             <template slot-scope="scope">
-              <copy-text>{{ scope.row.username }}</copy-text>
+              {{ scope.row.username }}
+              ({{ scope.row.gender ? "男" : "女" }})<br />
+              <copy-text>{{ scope.row.userId }}</copy-text>
             </template>
           </el-table-column>
-          <el-table-column align="center" prop="organName" label="所属分部">
+          <!-- <el-table-column align="center" prop="username" label="学员姓名">
+            <template slot-scope="scope"> </template>
+          </el-table-column> -->
+          <el-table-column
+            align="center"
+            prop="realName"
+            label="家长信息"
+            width="140px"
+          >
             <template slot-scope="scope">
-              <copy-text>{{ scope.row.organName }}</copy-text>
+              {{ scope.row.realName }}
+              <br />
+              <copy-text>{{ scope.row.parentsPhone }}</copy-text>
             </template>
           </el-table-column>
           <el-table-column
             align="center"
-            prop="cooperationOrganName"
-            label="所属学校"
+            prop="subjectName"
+            label="声部"
           ></el-table-column>
           <el-table-column
             align="center"
-            prop="subjectName"
-            label="声部"
+            prop="cooperationOrganName"
+            label="所属学校"
           ></el-table-column>
+
           <el-table-column align="center" prop="teacherName" label="指导老师">
             <template slot-scope="scope">
               <copy-text>{{ scope.row.teacherName }}</copy-text>
             </template>
           </el-table-column>
-          <el-table-column align="center" label="性别">
-            <template slot-scope="scope">{{
-              scope.row.gender ? "男" : "女"
-            }}</template>
-          </el-table-column>
-          <el-table-column
-            align="center"
-            prop="realName"
-            label="家长姓名"
-          ></el-table-column>
-          <el-table-column
-            align="center"
-            width="120px"
-            prop="parentsPhone"
-            label="家长联系电话"
-          ></el-table-column>
-              <!-- <el-table-column
+          <!-- <el-table-column align="center" label="性别">
+            <template slot-scope="scope"></template>
+          </el-table-column> -->
+
+          <!-- <el-table-column
             align="center"
             prop="leaveNum"
             label="本月请假次数"
@@ -232,7 +238,7 @@
               scope.row.noStartPracticeCourseNum
             }}</template>
           </el-table-column>
-               <el-table-column align="center" label="vip课剩余课时">
+          <el-table-column align="center" label="vip课剩余课时">
             <template slot-scope="scope">{{
               scope.row.noStartVipCourseNum
             }}</template>
@@ -247,6 +253,21 @@
               scope.row.serviceTag ? "是" : "否"
             }}</template>
           </el-table-column>
+                   <el-table-column
+            align="center"
+            width="120px"
+            prop="parentsPhone"
+            label="会员截止日期"
+          >
+          <template slot-scope="scope">
+            <div v-if="scope.row.membershipEndTime" :class="checkDate(scope.row.membershipEndTime)?'':'red'">
+              {{scope.row.membershipEndTime|dayjsFormat}}
+            </div>
+            <div v-else class="red">
+               未购买会员
+            </div>
+          </template>
+          </el-table-column>
           <el-table-column align="center" label="是否是新用户">
             <template slot="header">
               <p style="position: relative">
@@ -277,23 +298,17 @@
               </div>
             </template>
           </el-table-column>
-                 <el-table-column
-            align="center"
-            prop="balance"
-            label="账户余额(元)"
-          >
+          <el-table-column align="center" prop="balance" label="账户余额(元)">
             <template slot-scope="scope">
               <div>
                 {{ scope.row.balance | moneyFormat }}
               </div>
             </template>
           </el-table-column>
-          <el-table-column
-            align="center"
-            prop="carePackage"
-            label="关心包"
-          >
-            <template slot-scope="scope">{{ scope.row.carePackage | studentPackage }}</template>
+          <el-table-column align="center" prop="carePackage" label="关心包">
+            <template slot-scope="scope">{{
+              scope.row.carePackage | studentPackage
+            }}</template>
           </el-table-column>
           <el-table-column align="center" prop="comeOnPackage" label="加油包">
             <template slot-scope="scope">{{
@@ -422,7 +437,10 @@
           </el-select>
         </el-form-item>
         <el-form-item label="家长姓名" prop="parseName">
-          <el-input v-model.trim="studentForm.parseName" :disabled="!isNew"></el-input>
+          <el-input
+            v-model.trim="studentForm.parseName"
+            :disabled="!isNew"
+          ></el-input>
         </el-form-item>
         <el-form-item
           label="联系电话"
@@ -447,7 +465,6 @@
             clearable
             placeholder="请选择分部"
             @change="changeStudentOrgan"
-
           >
             <el-option
               v-for="(item, index) in selects.branchs"
@@ -458,7 +475,13 @@
           </el-select>
         </el-form-item>
         <el-form-item prop="school" label="所属学校">
-          <el-select v-model.trim="studentForm.school" filterable clearable  :disabled='!studentForm.organId'   class="multiple">
+          <el-select
+            v-model.trim="studentForm.school"
+            filterable
+            clearable
+            :disabled="!studentForm.organId"
+            class="multiple"
+          >
             <el-option
               v-for="(item, index) in cooperationList"
               :key="index"
@@ -650,7 +673,9 @@
           <el-table-column align="center" prop="studentId" label="协议名称">
             <template slot-scope="scope">
               <!-- {{ formatProtocol(scope.row.version) }} -->
-              <span v-html="`产品与服务协议${formatProtocol(scope.row.version)}`"></span>
+              <span
+                v-html="`产品与服务协议${formatProtocol(scope.row.version)}`"
+              ></span>
             </template>
           </el-table-column>
           <el-table-column align="center" label="签署时间" prop="createTime">
@@ -742,7 +767,7 @@ export default {
         isNewUser: 1,
         carePackage: 0,
         comeOnPackage: 0,
-        school:null
+        school: null,
       },
       studentUpdatePackage: {
         carePackage: 0,
@@ -778,8 +803,8 @@ export default {
     };
   },
   mounted() {
-    if(this.$route.params.search){
-      this.searchForm.search = this.$route.params.search
+    if (this.$route.params.search) {
+      this.searchForm.search = this.$route.params.search;
     }
     this.$store.dispatch("setBranchs");
     this.$store.dispatch("setTeachers");
@@ -796,15 +821,15 @@ export default {
       this.qrcodeUrl = vaildStudentUrl() + `/#/queryStudentPer`;
     },
     formatProtocol(version) {
-        let str = '(含课程)'
-        if(version == 3) {
-            str = '(含系统)'
-        } else if(version == 4) {
-            str = '(含云教练)'
-        } else if(version == 5) {
-            str = '(含云教练<sup>+</sup>)'
-        }
-        return str
+      let str = "(含课程)";
+      if (version == 3) {
+        str = "(含系统)";
+      } else if (version == 4) {
+        str = "(含云教练)";
+      } else if (version == 5) {
+        str = "(含云教练<sup>+</sup>)";
+      }
+      return str;
     },
     getList() {
       let params = this.searchForm;
@@ -945,7 +970,7 @@ export default {
             subjectIdList: studentForm.subjectIdList,
             carePackage: studentForm.carePackage,
             comeOnPackage: studentForm.comeOnPackage,
-            cooperationOrganId:studentForm.school
+            cooperationOrganId: studentForm.school,
           };
           registerStudent(obj).then((res) => {
             if (res.code == 200) {
@@ -977,7 +1002,7 @@ export default {
             subjectIdList: studentForm.subjectIdList,
             carePackage: studentForm.carePackage,
             comeOnPackage: studentForm.comeOnPackage,
-              cooperationOrganId:studentForm.school
+            cooperationOrganId: studentForm.school,
           };
           updateStudent(obj).then((res) => {
             if (res.code == 200) {
@@ -1045,7 +1070,7 @@ export default {
           subjectIdList: Number(row.subjectIdList) || null,
           carePackage: row.carePackage,
           comeOnPackage: row.comeOnPackage,
-          school:row.cooperationOrganId
+          school: row.cooperationOrganId,
         };
         this.studentUpdatePackage = {
           carePackage: row.carePackage,
@@ -1095,7 +1120,7 @@ export default {
     },
     async changeStudentOrgan(val) {
       this.studentForm.teacherId = null;
-      this.studentForm.school=null;
+      this.studentForm.school = null;
       if (val) {
         await getTeacher({ organId: val }).then((res) => {
           if (res.code == 200) {
@@ -1124,6 +1149,11 @@ export default {
     onDownloadProtocol(item) {
       window.location.href = item.url;
     },
+    checkDate(dateStr){
+      let dayjs = this.$helpers.dayjs;
+      let nowDate = new Date().getTime()
+      return nowDate -  dayjs(dateStr).valueOf() <0
+    }
   },
 };
 </script>
@@ -1146,4 +1176,7 @@ export default {
     width: 185px !important;
   }
 }
+.red {
+  color: red;
+}
 </style>

+ 2 - 1
src/views/teamBuild/components/soundSetComponents/soundSetCore.vue

@@ -379,7 +379,8 @@ export default {
       getSubjectGoods({
         subjectIds: val,
         chargeTypeId: this.topfor.type,
-        musicGroupId: this.teamid
+        musicGroupId: this.teamid,
+         courseViewType:this.topfor.courseViewType
       }).then((res) => {
         if (res.code == 200) {
           if (res.data) {

+ 2 - 0
src/views/teamDetail/components/modals/create-user-pay.vue

@@ -110,6 +110,7 @@
       :form="memberForm"
       :isUserType="isUserType"
       :organId="baseInfo.organId"
+      ref="memberForm"
     />
     <el-alert title="缴费设置" :closable="false" class="alert" type="info">
     </el-alert>
@@ -422,6 +423,7 @@ export default {
         refs.cycle,
         refs.payment,
         refs.other,
+        refs.memberForm,
         ...(refs.cycles || []),
       ]
         .filter((item) => !!item)

+ 3 - 1
src/views/teamDetail/components/studentList.vue

@@ -445,7 +445,7 @@
           ></el-input>
         </el-form-item>
         <el-form-item label="学员性别" prop="sex">
-          <el-select v-model.trim="maskForm.sex" clearable>
+          <el-select v-model.trim="maskForm.sex" clearable style="width:185px!important">
             <el-option label="男" :value="1"></el-option>
             <el-option label="女" :value="0"></el-option>
           </el-select>
@@ -463,6 +463,7 @@
             filterable
             clearable
             v-model.trim="maskForm.currentGradeNum"
+            style="width:185px!important"
           >
             <el-option
               v-for="item in gradeList"
@@ -496,6 +497,7 @@
             clearable
             filterable
             @change="onSoundChange"
+            style="width:185px!important"
           >
             <el-option
               v-for="(item, index) in soundList"

Vissa filer visades inte eftersom för många filer har ändrats