lex-xin 4 年 前
コミット
abd541e7ab

+ 1 - 0
debug.log

@@ -3,3 +3,4 @@
 [0122/094436.708:ERROR:directory_reader_win.cc(43)] FindFirstFile: 系统找不到指定的路径。 (0x3)
 [0125/095157.852:ERROR:directory_reader_win.cc(43)] FindFirstFile: 系统找不到指定的路径。 (0x3)
 [0126/093517.085:ERROR:directory_reader_win.cc(43)] FindFirstFile: 系统找不到指定的路径。 (0x3)
+[0226/154332.982:ERROR:directory_reader_win.cc(43)] FindFirstFile: 系统找不到指定的路径。 (0x3)

ファイルの差分が大きいため隠しています
+ 0 - 0
dist/index.html


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/static/css/app.df7d896d.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/static/js/app.b0915f53.js


+ 1 - 1
src/App.vue

@@ -71,7 +71,7 @@ body {
 <style lang="scss">
 $--color-primary: teal;
 .el-table {
-  width: 99.9% !important;
+  width: 99% !important;
   border-left: 1px solid #EBEEF5;
   border-right: 1px solid #EBEEF5;
 }

+ 0 - 6
src/views/resetTeaming/components/strudentPayInfo.vue

@@ -609,12 +609,6 @@ export default {
           path: "/business/resetTeaming",
           query: { ...this.$route.query },
         });
-      } else if(query.type == 'look') {
-        this.$store.dispatch("delVisitedViews", this.$route);
-        this.$router.push({
-          path: "/business/teamLookBase",
-          query: { ...this.$route.query },
-        });
       }
       if(query.type == "look"){
          this.$store.dispatch("delVisitedViews", this.$route);

+ 69 - 43
src/views/resetTeaming/modals/subject-preview.vue

@@ -3,18 +3,14 @@
         <div class="noticeInfo">
 			<h2>缴费说明</h2>
             1、您注册时所选择的乐团声部,即为乐团录取最终确认的声部,请您务必仔细填写;<br />
-            2、为避免因部分已注册家长放弃名额导致乐团声部失衡,系统设定各声部限额放大20%比例开放注册,系统自动按照完全完成注册的先后顺序确认录取名单,因此,超员后有可能出现无法注册的情况,请您理解。如果其他声部仍有名额,在您孩子的身体条件适合该乐器的前提下,我们将优先予以调配。
+			2、为避免因部分已注册家长放弃名额导致乐团声部失衡,系统设定各声部限额放大20%比例开放注册,系统自动按照完全完成注册的先后顺序确认录取名单,因此,超员后有可能出现无法注册的情况,请您理解。如果其他声部仍有名额,在您孩子的身体条件适合该乐器的前提下,我们将优先予以调配。
 		</div>
 
 		<div class="section">
-			<h2 class="title">服务</h2>
-            <p style="font-size: 14px; padding: 2px 0; color: #f85043" v-if="serviceValidDate">服务有效期:{{ serviceValidDate }}</p>
-			<!-- <el-row class="title-row">
-				<el-col :span="16">服务项目</el-col>
-				<el-col :span="7" :offset="1" style="text-align: right;">现价</el-col>
-			</el-row> -->
+			<h2 class="title">{{ courseViewType == 1 ? '服务' : '乐团课程' }}</h2>
+            <p style="font-size: 14px; padding: 2px 0; color: #f85043" v-if="serviceValidDate && courseViewType == 1">服务有效期:{{ serviceValidDate }}</p>
 			<!-- 所有不可选的课程合集 -->
-			<template v-if="courseShowStatus">
+			<template v-if="courseShowStatus && courseViewType == 1">
 				<el-row class="option-row"  v-for="(item, index) in courseShowInfo" :class="[!item.isStudentOptional ? 'disabled' : '']" :key="index" @click.native="onCourseChange(item)">
 					<el-col :span="16">
 						<i class="check_default" :class="[item.isStatus ? 'check_active' : '']"></i>
@@ -31,11 +27,17 @@
 					</el-col>
 				</el-row>
 			</template>
+
+            <el-row class="title-row" v-if="courseViewType == 0">
+				<el-col :span="12">课程类型</el-col>
+				<el-col :span="5" :offset="1" style="text-align: right;">原价</el-col>
+				<el-col :span="6" style="text-align: right;">现价</el-col>
+			</el-row>
 			<!-- 可选课程信息集合 -->
-			<!-- <template v-for="(item, index) in courseInfo">
-				<el-row class="option-row" :class="[!item.isStudentOptional ? 'disabled' : '']" :key="index" @click.native="onCourseChange(item)" v-if="item.isStudentOptional">
+			<template v-for="(item, index) in courseInfo">
+				<el-row class="option-row" :key="index" @click.native="onCourseChange(item)" v-if="courseViewType == 0">
 					<el-col :span="12">
-						<i class="check_default" :class="[item.isStatus ? 'check_active' : '']"></i><template v-if="item.courseType == 'PROJECT'">{{ item.name }}</template><template v-else>{{ item.courseType | coursesType }}</template>
+						<i class="check_default" :class="[item.isStatus ? 'check_active' : '', !item.isStudentOptional ? 'disabled' : '']"></i><template v-if="item.courseType == 'PROJECT'">{{ item.name }}</template><template v-else>{{ item.courseType | coursesType }}</template>
 					</el-col>
 					<el-col :span="6">
 						<del style="color: #AAA; font-size: 12px;">¥{{ item.courseOriginalPrice | moneyFormat }}</del>
@@ -44,19 +46,8 @@
 						<span style="color: #1A1A1A">¥{{ item.courseCurrentPrice | moneyFormat }}</span>
 					</el-col>
 				</el-row>
-			</template> -->
+			</template>
 
-			<!-- <el-row class="option-row lines">
-				<el-col :span="12" class="fontBold">
-					仅需支付
-				</el-col>
-				<el-col :span="6">
-					<del style="color: #f85043; font-size: 12px;">¥{{ orderInfo.musicMarketClassFee | moneyFormat }}</del>
-				</el-col>
-				<el-col :span="6">
-					<span class="fontBold" style="color: #f85043;">¥{{ orderInfo.musicClassFee | moneyFormat }}</span>
-				</el-col>
-			</el-row> -->
 		</div>
 
 		<div class="section" v-if="instrumentResult.length > 0">
@@ -230,6 +221,7 @@ export default {
             courseShowStatus: false,
             chargeTypeList: [],
             chargeTypeName: null,
+            courseViewType: 0, // 收费模式,0 课程显示,1 AMR系统
         };
     },
     mounted() {
@@ -254,6 +246,7 @@ export default {
                 let result = res
                 if (result.code == 200) {
                     let tempResult = result.data
+                    this.courseViewType = tempResult.musicGroup.courseViewType || 0
                     this.paymentPattern = 2
                     if(tempResult.musicGroupPaymentCalender) {
                         this.paymentPattern = tempResult.musicGroupPaymentCalender.paymentPattern
@@ -481,32 +474,65 @@ export default {
             let csi = this.courseInfo
             // 加上判断是否有课程信息
             if (mgs) {
+                // let tempCourse = this.courseShowInfo
+                // if(tempCourse.length > 0) {
+                //     let tempPrice = 0
+                //     tempCourse.forEach(item => {
+                //         // tempPrice += parseFloat(item.courseCurrentPrice)
+                //         marketPrice += parseFloat(item.courseOriginalPrice)
+                //         musicMarketClassFee += parseFloat(item.courseOriginalPrice)
+                //     });
+                // }
+                // csi.forEach(item => {
+                //     if (item.isStatus) {
+                //         musicClassFee += parseFloat(item.courseCurrentPrice)
+                //         // musicMarketClassFee += parseFloat(item.courseOriginalPrice)
+                //         // marketPrice += parseFloat(item.courseOriginalPrice)
+                //         if (item.id > 0) {
+                //             courseKeys.push(item.id)
+                //         }
+                //         // 不可选的课程才会减免课程费用
+                //         if(!item.isStudentOptional) {
+                //             tempGroupRemissionCourseFee += parseFloat(item.courseCurrentPrice)
+                //         } else {
+                //             marketPrice += parseFloat(item.courseOriginalPrice)
+                //             musicMarketClassFee += parseFloat(item.courseOriginalPrice)
+                //         }
+                //     }
+                // })
                 let tempCourse = this.courseShowInfo
-                if(tempCourse.length > 0) {
-                    let tempPrice = 0
+                if (tempCourse.length > 0 && this.courseViewType == 1) {
                     tempCourse.forEach(item => {
-                        // tempPrice += parseFloat(item.courseCurrentPrice)
-                        marketPrice += parseFloat(item.courseOriginalPrice)
-                        musicMarketClassFee += parseFloat(item.courseOriginalPrice)
-                    });
-                }
-                csi.forEach(item => {
-                    if (item.isStatus) {
-                        musicClassFee += parseFloat(item.courseCurrentPrice)
-                        // musicMarketClassFee += parseFloat(item.courseOriginalPrice)
-                        // marketPrice += parseFloat(item.courseOriginalPrice)
                         if (item.id > 0) {
                             courseKeys.push(item.id)
                         }
+                        musicClassFee += parseFloat(item.courseCurrentPrice)
+                        marketPrice += parseFloat(item.courseOriginalPrice)
                         // 不可选的课程才会减免课程费用
-                        if(!item.isStudentOptional) {
+                        if (!item.isStudentOptional) {
                             tempGroupRemissionCourseFee += parseFloat(item.courseCurrentPrice)
-                        } else {
+                        }
+                    });
+                    buyList.unshift({
+                        name: this.chargeTypeName,
+                        type: paymentPatternType[this.paymentPattern],
+                        price: Number((musicClassFee).toFixed(2))
+                    })
+                } else {
+                    csi.forEach(item => {
+                        if (item.isStatus) {
+                            musicClassFee += parseFloat(item.courseCurrentPrice)
                             marketPrice += parseFloat(item.courseOriginalPrice)
-                            musicMarketClassFee += parseFloat(item.courseOriginalPrice)
+                            if (item.id > 0) {
+                                courseKeys.push(item.id)
+                            }
+                            // 不可选的课程才会减免课程费用
+                            if (!item.isStudentOptional) {
+                                tempGroupRemissionCourseFee += parseFloat(item.courseCurrentPrice)
+                            }
                         }
-                    }
-                })
+                    })
+                }
             }
 
             // 乐器
@@ -575,13 +601,13 @@ export default {
                 })
             }
             amount += parseFloat(tempCourseFee + musicClassFee)
-            // if (parseFloat(tempCourseFee + musicClassFee) > 0) {
+            if (parseFloat(tempCourseFee + musicClassFee) > 0 && this.courseViewType == 0) {
                 buyList.unshift({
                     name: '乐团课',
                     type: paymentPatternType[this.paymentPattern],
                     price: Number((tempCourseFee + musicClassFee).toFixed(2))
                 })
-            // }
+            }
             // 辅件
             if (this.accessOries.length > 0) {
                 this.accessOries.forEach(item => {
@@ -719,7 +745,7 @@ export default {
 }
 
 .disabled {
-    opacity: 0.7;
+    opacity: 0.5;
     .check_active {
         opacity: .5;
     }

+ 54 - 4
src/views/studentManager/studentList.vue

@@ -597,6 +597,49 @@
         <el-button type="primary" @click="submitResetPassWord">确 定</el-button>
       </span>
     </el-dialog>
+
+    <el-dialog
+      title="协议下载"
+      :visible.sync="protocolVisible"
+      width="600px"
+    >
+      <div v-if="protocolVisible">
+        <!-- <el-alert
+          title="点击下载"
+          :closable="false"
+          type="info">
+        </el-alert>
+        <p style="font-size: 14px; color: #14928A; line-height: 1.5; padding: 8px 16px; cursor: pointer;" v-for="item in protocolVersions" :key="item.id" @click="onDownloadProtocol(item)">
+          产品与服务协议{{ item.version == 2 ? "(含课程)" : "(含系统)" }}
+        </p> -->
+        <el-table
+          style="width: 100%"
+          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+          :data="protocolVersions"
+        >
+          <el-table-column align="center" prop="studentId" label="协议名称">
+            <template slot-scope="scope">
+              产品与服务协议{{ scope.row.version == 2 ? "(含课程)" : "(含系统)" }}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="签署时间" prop="createTime">
+          </el-table-column>
+          <el-table-column align="center"
+                           width="150px"
+                           label="操作">
+            <template slot-scope="scope">
+              <div>
+                <el-button type="text"
+                           @click="onDownloadProtocol(scope.row)">下载</el-button>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="protocolVisible = false">取 消</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -696,6 +739,8 @@ export default {
         password2: "",
       },
       activatedRow: null,
+      protocolVisible: false,
+      protocolVersions: []
     };
   },
   mounted() {
@@ -1004,14 +1049,19 @@ export default {
         }
       });
     },
-    lookContracts(row) {
-      getLatest({ userId: row.userId }).then((res) => {
+    async lookContracts(row) {
+      await getLatest({ userId: row.userId }).then((res) => {
         if (res.code == 200) {
-          window.location.href = res.data.url
-          // window.open(res.data.url);
+          if(res.data) {
+            this.protocolVersions = res.data
+            this.protocolVisible = true
+          }
         }
       });
     },
+    onDownloadProtocol(item) {
+      window.location.href = item.url
+    }
   },
 };
 </script>

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

@@ -534,6 +534,7 @@ export default {
         applyExpireDate: dayjs(this.topfor.time).format("YYYY-MM-DD HH:mm:ss"),
         chargeTypeId: this.topfor.type,
         cooperationOrganId: this.topfor.school,
+        courseViewType: this.topfor.courseViewType,
         teamTeacherId: this.topfor.boss,
         educationalTeacherId: this.topfor.teacher,
         enrollClasses,

+ 20 - 0
src/views/teamBuild/components/teamBaseInfo.vue

@@ -51,6 +51,22 @@
         </el-form-item>
 
         <el-form-item
+          label="收费模式"
+          prop="courseViewType"
+          :rules="[{ required: true, message: '收费模式不能为空' }]"
+        >
+          <el-select
+            v-model.trim="topFrom.courseViewType"
+            filterable
+            :disabled="basdisabled"
+            clearable
+          >
+            <el-option label="课程收费" :value="0"></el-option>
+            <el-option label="系统收费" :value="1"></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item
           label="合作单位"
           prop="school"
           :rules="[{ required: true, message: '合作单位不能为空' }]"
@@ -349,6 +365,7 @@ export default {
       topFrom: {
         type: "", // 收费类型
         section: "", //所属分部
+        courseViewType: "", // 收费模式
         school: "", // 合作单位
         teacher: "", // 乐团主管
         name: "", //乐团名称
@@ -551,6 +568,7 @@ export default {
             this.topFrom.paymentValidEndDate =
               res.data.musicGroup.paymentValidEndDate;
             this.topFrom.section = res.data.musicGroup.organId;
+            this.topFrom.courseViewType = res.data.musicGroup.courseViewType;
             this.topFrom.school = res.data.musicGroup.cooperationOrganId;
             this.topFrom.teacher = res.data.musicGroup.educationalTeacherId;
             this.topFrom.boss = res.data.musicGroup.teamTeacherId;
@@ -613,6 +631,7 @@ export default {
           type: "", // 收费类型
           section: "", //所属分部
           school: "", // 合作单位
+          courseViewType: "",
           teacher: "", // 乐团主管
           name: "", //乐团名称
           boss: "", // 运营主管
@@ -741,6 +760,7 @@ export default {
             ),
             chargeTypeId: this.topFrom.type,
             cooperationOrganId: this.topFrom.school,
+            courseViewType: this.topFrom.courseViewType,
             teamTeacherId: this.topFrom.boss,
             educationalTeacherId: this.topFrom.teacher,
             enrollClasses: this.topFrom.startClass.join(","),

+ 5 - 1
vue.config.js

@@ -21,8 +21,12 @@ const name = defaultSettings.title || '管乐迷后台管理系统' // page titl
 // let target = 'http://192.168.3.139:8000' // 箭河
 // let target = 'http://192.168.3.38:8000' //邹璇
 // let target = 'http://192.168.3.57:8000' //勇哥
+<<<<<<< HEAD
 // let target = 'http://dev.dayaedu.com' // 测试服
 let target = 'http://47.114.176.40:8000'
+=======
+let target = 'http://47.114.176.40:8000' // 测试服
+>>>>>>> wxl_01_15
 // let target = 'http://192.168.3.134' // 乔
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {
@@ -63,7 +67,7 @@ module.exports = {
       // http://47.99.212.176:8000
       // http://192.168.3.28:8000
       '/api-auth': {
-        target: 'http://dev.dayaedu.com',
+        target: 'http://47.114.176.40:8000',
         changeOrigin: true,
         pathRewrite: {
           '^api-auth': ''

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません