|
@@ -1,6 +1,9 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
- <div class="soundBtnWrap">
|
|
|
+ <div
|
|
|
+ :class="isField ? 'soundBtnWrap' : 'soundBtnFixed'"
|
|
|
+ v-if="teamStatus != 'resetTeam' && !basdisabled"
|
|
|
+ >
|
|
|
<el-button
|
|
|
type="primary"
|
|
|
@click="allin"
|
|
@@ -17,6 +20,7 @@
|
|
|
>添加</el-button
|
|
|
>
|
|
|
</div>
|
|
|
+ <div class="wall" v-if="teamStatus != 'resetTeam' && !basdisabled"></div>
|
|
|
<div class="coreWrap">
|
|
|
<el-checkbox-group v-model="checkList" @change="lookCheck">
|
|
|
<el-collapse v-model="chioseActiveSound">
|
|
@@ -66,9 +70,15 @@
|
|
|
:value="item.id"
|
|
|
>
|
|
|
<span style="float: left">{{ item.name }}</span>
|
|
|
- <span style="float: right; color: #8492a6; font-size: 13px; padding-right:20px">{{
|
|
|
- item.groupPurchasePrice|moneyFormat
|
|
|
- }}元</span>
|
|
|
+ <span
|
|
|
+ style="
|
|
|
+ float: right;
|
|
|
+ color: #8492a6;
|
|
|
+ font-size: 13px;
|
|
|
+ padding-right: 20px;
|
|
|
+ "
|
|
|
+ >{{ item.groupPurchasePrice | moneyFormat }}元</span
|
|
|
+ >
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</div>
|
|
@@ -120,14 +130,50 @@ export default {
|
|
|
teamStatus: "", // 乐团状态
|
|
|
checkList: [],
|
|
|
basdisabled: false,
|
|
|
+ teamid: "",
|
|
|
+ isField: true,
|
|
|
};
|
|
|
},
|
|
|
mounted() {
|
|
|
+ if (this.$route.query.id) {
|
|
|
+ this.teamid = this.$route.query.id;
|
|
|
+ }
|
|
|
+ window.addEventListener("scroll", this.getScroll);
|
|
|
this.init();
|
|
|
},
|
|
|
+ deactivated() {
|
|
|
+ window.removeEventListener("scroll", this.getScroll);
|
|
|
+ },
|
|
|
+ beforeDestroy() {
|
|
|
+ sessionStorage.setItem(
|
|
|
+ `${this.teamid}sound`,
|
|
|
+ JSON.stringify(this.activeSoundList)
|
|
|
+ );
|
|
|
+ window.removeEventListener("scroll", this.getScroll);
|
|
|
+ },
|
|
|
activated() {
|
|
|
- this.init();
|
|
|
+ if (
|
|
|
+ (this.teamid && this.teamid != this.$route.query.id) ||
|
|
|
+ this.teamStatus != this.$route.query.type
|
|
|
+ ) {
|
|
|
+ this.init();
|
|
|
+ } else {
|
|
|
+ if (!this.teamid && this.activeSoundList.length < 1) {
|
|
|
+ this.init();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.teamStatus = this.$route.query.type;
|
|
|
+ if (
|
|
|
+ this.teamStatus == "look" ||
|
|
|
+ this.teamStatus == "teamAudit" ||
|
|
|
+ this.teamStatus == "feeAudit"
|
|
|
+ ) {
|
|
|
+ this.basdisabled = true;
|
|
|
+ } else {
|
|
|
+ this.basdisabled = false;
|
|
|
+ }
|
|
|
},
|
|
|
+
|
|
|
methods: {
|
|
|
init() {
|
|
|
// 获取第一页的数据
|
|
@@ -135,12 +181,6 @@ export default {
|
|
|
let type = this.topfor.type;
|
|
|
let section = this.topfor.section;
|
|
|
this.teamStatus = this.$route.query.type;
|
|
|
- if (this.$route.query.search) {
|
|
|
- this.Fsearch = this.$route.query.search;
|
|
|
- }
|
|
|
- if (this.$route.query.rules) {
|
|
|
- this.Frules = this.$route.query.rules;
|
|
|
- }
|
|
|
if (
|
|
|
this.teamStatus == "look" ||
|
|
|
this.teamStatus == "teamAudit" ||
|
|
@@ -150,88 +190,101 @@ export default {
|
|
|
} else {
|
|
|
this.basdisabled = false;
|
|
|
}
|
|
|
- getSoundTree({ tenantId: 1 }).then((res) => {
|
|
|
- if (res.code == 200) {
|
|
|
- this.soundList = res.data.rows;
|
|
|
- if (this.teamStatus == "newTeam" && type && section) {
|
|
|
- getDefaultSubject({
|
|
|
- chargeTypeId: type,
|
|
|
- organId: section,
|
|
|
- number: 1,
|
|
|
- }).then((res) => {
|
|
|
- if (res.code == 200) {
|
|
|
- let activeSound = [];
|
|
|
- this.activeSoundList = res.data.map((item) => {
|
|
|
- activeSound.push(item.id);
|
|
|
- return this.initSound(item);
|
|
|
- });
|
|
|
- this.activeSound = activeSound;
|
|
|
- this.chioseActiveSound = activeSound;
|
|
|
- this.changeActiveSound(activeSound.join(","));
|
|
|
- }
|
|
|
- });
|
|
|
- } else {
|
|
|
- this.teamid = this.$route.query.id;
|
|
|
- if (this.teamid) {
|
|
|
- findMusicGroupSubjectInfo({ musicGroupId: this.teamid }).then(
|
|
|
- (res) => {
|
|
|
- if (res.code == 200) {
|
|
|
- let activeSound = [];
|
|
|
- this.activeSoundList = res.data?.musicGroupSubjectPlans.map(
|
|
|
- (item) => {
|
|
|
- activeSound.push(item.subjectId);
|
|
|
- return {
|
|
|
- id: parseInt(item.subjectId),
|
|
|
- sound: item.subName,
|
|
|
- expectedStudentNum: item.expectedStudentNum,
|
|
|
- chioseMusic: [],
|
|
|
- markChioseList: [],
|
|
|
- goodsList: [],
|
|
|
- markList: [],
|
|
|
- };
|
|
|
- }
|
|
|
- );
|
|
|
- this.activeSound = activeSound;
|
|
|
- this.chioseActiveSound = activeSound;
|
|
|
- this.changeActiveSound(activeSound.join(","));
|
|
|
- // 格式化商品和教辅
|
|
|
- res.data.musicGroupSubjectGoodsGroups.forEach((shop) => {
|
|
|
- let index = findIndex(this.activeSoundList, (o) => {
|
|
|
- return o.id == shop.subjectId;
|
|
|
- });
|
|
|
+ let sotrage = JSON.parse(
|
|
|
+ sessionStorage.getItem(`${this.$route.query.id}sound`)
|
|
|
+ );
|
|
|
+ if (sotrage&&sotrage[0]?.id) {
|
|
|
+ this.activeSoundList = sotrage;
|
|
|
+ let activeSound = [];
|
|
|
|
|
|
- if (index != -1) {
|
|
|
- if (shop.type == "ACCESSORIES") {
|
|
|
- shop.goodsIdList.split(",").forEach((item) => {
|
|
|
- this.activeSoundList[index].markChioseList.push(
|
|
|
- parseInt(item)
|
|
|
+ this.activeSoundList.forEach((item) => {
|
|
|
+ activeSound.push(item.id);
|
|
|
+ });
|
|
|
+ this.chioseActiveSound = activeSound;
|
|
|
+ } else {
|
|
|
+ getSoundTree({ tenantId: 1 }).then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.soundList = res.data.rows;
|
|
|
+ if (this.teamStatus == "newTeam" && type && section) {
|
|
|
+ getDefaultSubject({
|
|
|
+ chargeTypeId: type,
|
|
|
+ organId: section,
|
|
|
+ number: 1,
|
|
|
+ }).then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ let activeSound = [];
|
|
|
+ this.activeSoundList = res.data.map((item) => {
|
|
|
+ activeSound.push(item.id);
|
|
|
+ return this.initSound(item);
|
|
|
+ });
|
|
|
+ this.activeSound = activeSound;
|
|
|
+ this.chioseActiveSound = activeSound;
|
|
|
+ this.changeActiveSound(activeSound.join(","));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.teamid = this.$route.query.id;
|
|
|
+ if (this.teamid) {
|
|
|
+ findMusicGroupSubjectInfo({ musicGroupId: this.teamid }).then(
|
|
|
+ (res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ let activeSound = [];
|
|
|
+ this.activeSoundList = res.data?.musicGroupSubjectPlans.map(
|
|
|
+ (item) => {
|
|
|
+ activeSound.push(item.subjectId);
|
|
|
+ return {
|
|
|
+ id: parseInt(item.subjectId),
|
|
|
+ sound: item.subName,
|
|
|
+ expectedStudentNum: item.expectedStudentNum,
|
|
|
+ chioseMusic: [],
|
|
|
+ markChioseList: [],
|
|
|
+ goodsList: [],
|
|
|
+ markList: [],
|
|
|
+ };
|
|
|
+ }
|
|
|
+ );
|
|
|
+ this.activeSound = activeSound;
|
|
|
+ this.chioseActiveSound = activeSound;
|
|
|
+ this.changeActiveSound(activeSound.join(","));
|
|
|
+ // 格式化商品和教辅
|
|
|
+ res.data.musicGroupSubjectGoodsGroups.forEach((shop) => {
|
|
|
+ let index = findIndex(this.activeSoundList, (o) => {
|
|
|
+ return o.id == shop.subjectId;
|
|
|
+ });
|
|
|
+
|
|
|
+ if (index != -1) {
|
|
|
+ if (shop.type == "ACCESSORIES") {
|
|
|
+ shop.goodsIdList.split(",").forEach((item) => {
|
|
|
+ this.activeSoundList[index].markChioseList.push(
|
|
|
+ parseInt(item)
|
|
|
+ );
|
|
|
+ });
|
|
|
+ } else if (shop.type == "INSTRUMENT") {
|
|
|
+ // 商品
|
|
|
+ let typeJson = Object.keys(
|
|
|
+ JSON.parse(shop.kitGroupPurchaseTypeJson)
|
|
|
);
|
|
|
- });
|
|
|
- } else if (shop.type == "INSTRUMENT") {
|
|
|
- // 商品
|
|
|
- let typeJson = Object.keys(
|
|
|
- JSON.parse(shop.kitGroupPurchaseTypeJson)
|
|
|
- );
|
|
|
- this.activeSoundList[index].chioseMusic.push({
|
|
|
- musical: parseInt(shop.goodsIdList),
|
|
|
- type: typeJson,
|
|
|
- groupPrice: shop.price,
|
|
|
- borrowPrice: shop.depositFee,
|
|
|
- groupRemissionCourseFee: Boolean(
|
|
|
- shop.groupRemissionCourseFee
|
|
|
- ),
|
|
|
- });
|
|
|
+ this.activeSoundList[index].chioseMusic.push({
|
|
|
+ musical: parseInt(shop.goodsIdList),
|
|
|
+ type: typeJson,
|
|
|
+ groupPrice: shop.price,
|
|
|
+ borrowPrice: shop.depositFee,
|
|
|
+ groupRemissionCourseFee: Boolean(
|
|
|
+ shop.groupRemissionCourseFee
|
|
|
+ ),
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- });
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
- // console.log(this.activeSoundList);
|
|
|
- }
|
|
|
- );
|
|
|
+ );
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- });
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
getSubject({ tenantId: 1 }).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
this.childSoundList = res.data;
|
|
@@ -371,7 +424,6 @@ export default {
|
|
|
// 格式化商品数据 chioseMusic: [{ musical: '', type: ["GROUP"], groupPrice: 0, borrowPrice: 1500 }],
|
|
|
|
|
|
active.chioseMusic.forEach((music) => {
|
|
|
- // console.log(music);
|
|
|
let goodsItem = null;
|
|
|
let depositFee = music.borrowPrice;
|
|
|
let price = music.groupPrice;
|
|
@@ -459,20 +511,22 @@ export default {
|
|
|
// zheli
|
|
|
|
|
|
// 把第3步单独拆出来做成独立的模块
|
|
|
- this.$confirm('乐团创建成功,是否提交审核?', '提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning'
|
|
|
- }).then(() => {
|
|
|
- this.teamStatus = 'teamDraft'
|
|
|
- this.teamid = res.data
|
|
|
- this.submitInfo(1)
|
|
|
- }).catch(() => {
|
|
|
- this.$store.dispatch('delVisitedViews', this.$route)
|
|
|
- this.$router.push({
|
|
|
- path: '/business/teamDetail'
|
|
|
+ this.$confirm("乐团创建成功,是否提交审核?", "提示", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning",
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ this.teamStatus = "teamDraft";
|
|
|
+ this.teamid = res.data;
|
|
|
+ this.submitInfo(1);
|
|
|
})
|
|
|
- });
|
|
|
+ .catch(() => {
|
|
|
+ this.$store.dispatch("delVisitedViews", this.$route);
|
|
|
+ this.$router.push({
|
|
|
+ path: "/business/teamDetail",
|
|
|
+ });
|
|
|
+ });
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
@@ -490,14 +544,14 @@ export default {
|
|
|
// this.$emit("chiosetab", 2);
|
|
|
|
|
|
// 创建乐团,只会到声部了
|
|
|
- let query = this.$route.query
|
|
|
- this.$store.dispatch('delVisitedViews', this.$route)
|
|
|
+ let query = this.$route.query;
|
|
|
+ this.$store.dispatch("delVisitedViews", this.$route);
|
|
|
this.$router.push({
|
|
|
- path: '/business/teamDetail',
|
|
|
+ path: "/business/teamDetail",
|
|
|
query: {
|
|
|
- ...query
|
|
|
- }
|
|
|
- })
|
|
|
+ ...query,
|
|
|
+ },
|
|
|
+ });
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -507,15 +561,24 @@ export default {
|
|
|
this.$message.error("请至少勾选一个");
|
|
|
return;
|
|
|
}
|
|
|
- for (let i = 0; i < this.activeSoundList.length; i++) {
|
|
|
- let index = this.checkList.indexOf(this.activeSoundList[i].id);
|
|
|
- if (index != -1) {
|
|
|
- this.activeSoundList.splice(i, 1);
|
|
|
- this.activeSound.splice(i, 1);
|
|
|
- i--;
|
|
|
- }
|
|
|
- }
|
|
|
- this.checkList = [];
|
|
|
+ this.$confirm("确定删除选中声部?", "提示", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning",
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ for (let i = 0; i < this.activeSoundList.length; i++) {
|
|
|
+ let index = this.checkList.indexOf(this.activeSoundList[i].id);
|
|
|
+ if (index != -1) {
|
|
|
+ this.activeSoundList.splice(i, 1);
|
|
|
+ this.activeSound.splice(i, 1);
|
|
|
+ i--;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.checkList = [];
|
|
|
+ this.$message.success("删除成功");
|
|
|
+ })
|
|
|
+ .catch(() => {});
|
|
|
},
|
|
|
allin() {
|
|
|
this.checkList = [];
|
|
@@ -555,10 +618,22 @@ export default {
|
|
|
ownershipType: this.topfor.ownershipType,
|
|
|
repairUserId: this.topfor.repairUserId,
|
|
|
feeType: this.topfor.feeType,
|
|
|
- directorUserId:this.topfor.head
|
|
|
+ directorUserId: this.topfor.head,
|
|
|
};
|
|
|
return obj;
|
|
|
},
|
|
|
+ getScroll() {
|
|
|
+
|
|
|
+ this.scrollTop =
|
|
|
+ window.pageYOffset ||
|
|
|
+ document.documentElement.scrollTop ||
|
|
|
+ document.body.scrollTop;
|
|
|
+ if (!!this.scrollTop && this.scrollTop >= 210) {
|
|
|
+ this.isField = false;
|
|
|
+ } else {
|
|
|
+ this.isField = true;
|
|
|
+ }
|
|
|
+ },
|
|
|
},
|
|
|
watch: {
|
|
|
activeSoundList: {
|
|
@@ -586,9 +661,26 @@ export default {
|
|
|
};
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
|
-.soundBtnWrap {
|
|
|
+.wall {
|
|
|
+ height: 60px;
|
|
|
margin-bottom: 20px;
|
|
|
}
|
|
|
+.soundBtnWrap {
|
|
|
+ width: 100%;
|
|
|
+ position: absolute;
|
|
|
+ background-color: #fff;
|
|
|
+ z-index: 100;
|
|
|
+ padding: 20px;
|
|
|
+}
|
|
|
+.soundBtnFixed {
|
|
|
+ top: 86px;
|
|
|
+ left: 205px;
|
|
|
+ width: 100%;
|
|
|
+ position: fixed;
|
|
|
+ background-color: #fff;
|
|
|
+ z-index: 100;
|
|
|
+ padding: 20px;
|
|
|
+}
|
|
|
/deep/.el-collapse-item__header {
|
|
|
background-color: #edeef0;
|
|
|
}
|