teamBaseInfo.vue 37 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045
  1. <template>
  2. <div class='base-container'>
  3. <div class="banseLeft">
  4. <div class="head">乐团基本信息:</div>
  5. <!-- <div class="num">乐团编号:dywh01</div> -->
  6. <el-form :model="topFrom"
  7. :inline="true"
  8. ref='topinfo'
  9. style="margin-left:11px;">
  10. <el-form-item label="收费类型"
  11. prop="type"
  12. :rules="[{ required: true, message: '收费类型不能为空'}]">
  13. <el-select v-model="topFrom.type"
  14. clearable>
  15. <el-option v-for="(item,index) in typeList"
  16. :key='index'
  17. :label="item.name"
  18. :value="item.id"></el-option>
  19. </el-select>
  20. </el-form-item>
  21. <el-form-item label="所属分部"
  22. prop="section"
  23. :rules="[{ required: true, message: '所属分部不能为空'},]">
  24. <el-select v-model="topFrom.section"
  25. clearable>
  26. <el-option v-for="(item,index) in sectionList"
  27. :key='index'
  28. :label="item.name"
  29. :value="item.id"></el-option>
  30. </el-select>
  31. </el-form-item>
  32. <el-form-item label="合作单位"
  33. prop="school"
  34. :rules="[{ required: true, message: '合作单位不能为空'},]">
  35. <el-select v-model="topFrom.school"
  36. @change="chioseSchool"
  37. clearable>
  38. <el-option v-for="(item,index) in cooperationList"
  39. :key='index'
  40. :label="item.name"
  41. :value="item.id"></el-option>
  42. </el-select>
  43. </el-form-item>
  44. <el-form-item label="教学地点"
  45. prop="address"
  46. :rules="[{ required: true, message: '教学地点不能为空'},]">
  47. <el-select v-model="topFrom.address">
  48. <el-option v-for="(item,index) in addList"
  49. :key='index'
  50. :label="item.name"
  51. :value="item.id"></el-option>
  52. </el-select>
  53. </el-form-item>
  54. <el-form-item label="乐团名称"
  55. prop='name'
  56. :rules="[{ required: true, message: '乐团名称不能为空'},]">
  57. <el-input placeholder="请输入乐团名称"
  58. v-model="topFrom.name"></el-input>
  59. </el-form-item>
  60. <el-form-item label="运营主管"
  61. prop='boss'
  62. :rules="[{ required: true, message: '运营主管不能为空'},]">
  63. <el-select v-model="topFrom.boss"
  64. filterable
  65. clearable>
  66. <el-option v-for="(item,index) in orgianList"
  67. :key='index'
  68. :label="item.realName"
  69. :value="item.id"></el-option>
  70. </el-select>
  71. </el-form-item>
  72. <el-form-item label="教务老师"
  73. prop='teacher'
  74. :rules="[{ required: true, message: '教务老师不能为空'},]">
  75. <el-select v-model="topFrom.teacher"
  76. filterable
  77. clearable>
  78. <el-option v-for="(item,index) in orgianList"
  79. :key='index'
  80. :label="item.realName"
  81. :value="item.id"></el-option>
  82. </el-select>
  83. </el-form-item>
  84. <el-form-item label="报名截止时间"
  85. prop='time'
  86. :rules="[{ required: true, message: '请输入报名截止时间'},]">
  87. <el-date-picker v-model="topFrom.time"
  88. style="width:100%!important"
  89. type="date"
  90. value-format="yyyy-MM-dd"
  91. placeholder="选择日期">
  92. </el-date-picker>
  93. </el-form-item>
  94. <el-form-item label="预计开团时间"
  95. prop='startTime'
  96. :rules="[{ required: true, message: '请输入预计开团时间'},]">
  97. <el-date-picker v-model="topFrom.startTime"
  98. style="width:100%!important"
  99. type="date"
  100. value-format="yyyy-MM-dd"
  101. placeholder="选择日期">
  102. </el-date-picker>
  103. </el-form-item>
  104. <el-form-item label="招生年级"
  105. prop='startClass'
  106. :rules="[{ required: true, message: '请选择招生年纪'},]">
  107. <el-select placeholder="起始年级"
  108. clearable
  109. multiple
  110. collapse-tags
  111. v-model="topFrom.startClass">
  112. <el-option value="1"
  113. label="一年级"></el-option>
  114. <el-option value="2"
  115. label="二年级"></el-option>
  116. <el-option value="3"
  117. label="三年级"></el-option>
  118. <el-option value="4"
  119. label="四年级"></el-option>
  120. <el-option value="5"
  121. label="五年级"></el-option>
  122. <el-option value="6"
  123. label="六年级"></el-option>
  124. <el-option value="7"
  125. label="初一"></el-option>
  126. <el-option value="8"
  127. label="初二"></el-option>
  128. <el-option value="9"
  129. label="初三"></el-option>
  130. <el-option value="10"
  131. label="高一"></el-option>
  132. <el-option value="11"
  133. label="高二"></el-option>
  134. <el-option value="12"
  135. label="高三"></el-option>
  136. </el-select>
  137. </el-form-item>
  138. <el-form-item label="课酬结算标准"
  139. :rules="[{ required: true, message: '请选择课酬结算标准'},]"
  140. prop="salary">
  141. <el-select v-model="topFrom.salary">
  142. <el-option label="默认课酬"
  143. value="TEACHER_DEFAULT"></el-option>
  144. <el-option label="3.0课酬"
  145. value="GRADIENT_SALARY"></el-option>
  146. <!-- <el-option label="课堂课酬"
  147. value="CLASSROOM_SALARY"></el-option> -->
  148. </el-select>
  149. </el-form-item>
  150. <el-form-item label=" 乐队指导"
  151. v-if="teamStatus=='resetTeam' || teamStatus=='teamList'"
  152. prop='head'>
  153. <el-select v-model="topFrom.head"
  154. filterable
  155. clearable>
  156. <el-option v-for="(item,index) in orgianList"
  157. :key='index'
  158. :label="item.realName"
  159. :value="item.id"></el-option>
  160. </el-select>
  161. </el-form-item>
  162. <el-form-item label=""
  163. prop="isClass">
  164. <el-checkbox v-model="topFrom.isClass">课堂课乐团</el-checkbox>
  165. </el-form-item>
  166. </el-form>
  167. <div class="checkList">
  168. <div class="head noMargin">课程组成形态:</div>
  169. <div class="checkRow">
  170. <el-checkbox label="乐团声部训练"
  171. v-model="checkList.soundInfo.ischeck"></el-checkbox>
  172. <div class="inputWrap">
  173. 单价: <input type="text"
  174. placeholder="请输入"
  175. v-model="checkList.soundInfo.value">
  176. </div>
  177. </div>
  178. <div class="checkRow">
  179. <el-checkbox label="乐团合奏训练"
  180. v-model="checkList.allInfo.ischeck"></el-checkbox>
  181. <div class="inputWrap">
  182. 单价: <input type="text"
  183. placeholder="请输入"
  184. v-model="checkList.allInfo.value">
  185. </div>
  186. </div>
  187. <div class="checkRow">
  188. <el-checkbox label="基础技能训练"
  189. v-model="checkList.baseInfo.ischeck"></el-checkbox>
  190. <div class="inputWrap">
  191. 单价: <input type="number"
  192. placeholder="请输入"
  193. v-model="checkList.baseInfo.value">
  194. </div>
  195. </div>
  196. <div class="checkRow">
  197. <el-checkbox label="假期集中训练"
  198. v-model="checkList.holidayInfo.ischeck"></el-checkbox>
  199. <div class="inputWrap">
  200. 单价: <input type="number"
  201. placeholder="请输入"
  202. v-model="checkList.holidayInfo.value">
  203. </div>
  204. </div>
  205. <div class="checkRow">
  206. <el-checkbox label="课程提示"
  207. class='classCheckBox'
  208. v-model="checkList.submit.ischeck"></el-checkbox>
  209. <div class="textWrap"
  210. v-if="checkList.submit.ischeck">
  211. <el-input type='textarea'
  212. :rows="1"
  213. style="width:500px"
  214. v-model="checkList.submit.value"></el-input>
  215. </div>
  216. </div>
  217. <div class="head noMargin">付费方式:</div>
  218. <div class="checkRow">
  219. <el-checkbox label="学校"
  220. class='classCheckBox'
  221. v-model="payList.school.ischeck"></el-checkbox>
  222. <div class="chioseList">
  223. <div class="chioseItem"
  224. :class="payList.school.chiose == 'ONE_OFF'?'active':''"
  225. @click="payList.school.chiose='ONE_OFF'">一次性</div>
  226. <div class="chioseItem"
  227. :class="payList.school.chiose == 'MONTHLY'?'active':''"
  228. @click="payList.school.chiose='MONTHLY'">一个月</div>
  229. <div class="chioseItem "
  230. :class="payList.school.chiose == 'TERM'?'active':''"
  231. @click="payList.school.chiose='TERM'">一学期</div>
  232. <div class="chioseItem"
  233. :class="payList.school.chiose == 'YEAR'?'active':''"
  234. @click="payList.school.chiose='YEAR'">一学年</div>
  235. </div>
  236. <div class="inputWrap">
  237. 预计收费: <input type="textarea"
  238. v-model="payList.school.price"
  239. placeholder="请输入">
  240. </div>
  241. <div class="inputWrap">
  242. 备注: <input type="textarea"
  243. v-model="payList.school.value"
  244. placeholder="请输入">
  245. </div>
  246. </div>
  247. <div class="checkRow">
  248. <el-checkbox label="公司"
  249. class='classCheckBox'
  250. v-model="payList.company.ischeck"></el-checkbox>
  251. <div class="chioseList">
  252. <div class="chioseItem"
  253. :class="payList.company.chiose == 'ONE_OFF'?'active':''"
  254. @click="payList.company.chiose='ONE_OFF'">一次性</div>
  255. <div class="chioseItem"
  256. :class="payList.company.chiose == 'MONTHLY'?'active':''"
  257. @click="payList.company.chiose='MONTHLY'">一个月</div>
  258. <div class="chioseItem "
  259. :class="payList.company.chiose == 'TERM'?'active':''"
  260. @click="payList.company.chiose='TERM'">一学期</div>
  261. <div class="chioseItem"
  262. :class="payList.company.chiose == 'YEAR'?'active':''"
  263. @click="payList.company.chiose='YEAR'">一学年</div>
  264. </div>
  265. <div class="inputWrap">
  266. 预计收费: <input type="textarea"
  267. placeholder="请输入"
  268. v-model="payList.company.price">
  269. </div>
  270. <div class="inputWrap">
  271. 备注: <input type="textarea"
  272. placeholder="请输入"
  273. v-model="payList.company.value">
  274. </div>
  275. </div>
  276. <div class="checkRow">
  277. <el-checkbox label="学员"
  278. class='classCheckBox'
  279. v-model="payList.student.ischeck"></el-checkbox>
  280. <div class="chioseList">
  281. <div class="chioseItem"
  282. :class="payList.student.chiose == 'ONE_OFF'?'active':''"
  283. @click="payList.student.chiose='ONE_OFF'">一次性</div>
  284. <div class="chioseItem"
  285. :class="payList.student.chiose == 'loop'?'active':''"
  286. @click="payList.student.chiose='loop'">周期循环</div>
  287. </div>
  288. </div>
  289. <p class="subTitle"
  290. v-if='payList.student.chiose == "loop"'>按月缴费时,将在所选月份的1号的前一周提醒用户缴费操作,单次的缴费金额为当前列表「预计收费」的设置金额</p>
  291. <div class="chioseWrap"
  292. v-if='payList.student.chiose == "loop"'>
  293. <p>请选择缴费月份:</p>
  294. <el-checkbox-group v-model="payList.chioseMonth"
  295. fill="#14928A"
  296. text-color='#474747'>
  297. <el-checkbox :label="1">一月</el-checkbox>
  298. <el-checkbox :label="2">二月</el-checkbox>
  299. <el-checkbox :label="3">三月</el-checkbox>
  300. <el-checkbox :label="4">四月</el-checkbox>
  301. <el-checkbox :label="5">五月</el-checkbox>
  302. <el-checkbox :label="6">六月</el-checkbox>
  303. <el-checkbox :label="7">七月</el-checkbox>
  304. <el-checkbox :label="8">八月</el-checkbox>
  305. <el-checkbox :label="9">九月</el-checkbox>
  306. <el-checkbox :label="10">十月</el-checkbox>
  307. <el-checkbox :label="11">十一月</el-checkbox>
  308. <el-checkbox :label="12">十二月</el-checkbox>
  309. </el-checkbox-group>
  310. </div>
  311. </div>
  312. </div>
  313. <div class="btnWrap">
  314. <div class="nextBtn"
  315. v-if="teamStatus=='resetTeam'"
  316. @click="resetSubmit">
  317. 修改
  318. </div>
  319. <!-- 审批或者草稿的下一步 -->
  320. <div class="nextBtn"
  321. @click="gotoNext(1)"
  322. v-if="teamStatus=='newTeam' || teamStatus=='teamDraft'||teamStatus=='teamAudit' ">
  323. 下一步
  324. </div>
  325. <!-- 跨团调整的下一步 -->
  326. <div class="nextBtn"
  327. v-if="teamStatus=='teamList'"
  328. @click="gotoNext(2)">
  329. 下一步
  330. </div>
  331. </div>
  332. <!-- <div class="baseRight">
  333. <header>乐团注册</header>
  334. <div class="section">
  335. <h2 class="title line_bottom">课程</h2>
  336. <p class="indate line_bottom"
  337. key="indate-price">有效期至:2019年9月1号 <span>现价:¥580</span></p>
  338. <div class="options"
  339. key="class-list">
  340. <div class="option">
  341. <div class="0_hd"><i class="check_default check_active"></i></div>
  342. <div class="o_bd">乐团声部训练</div>
  343. </div>
  344. <div class="option">
  345. <div class="0_hd"><i class="check_default check_active"></i></div>
  346. <div class="o_bd">乐团合奏训练</div>
  347. </div>
  348. <div class="option">
  349. <div class="0_hd"><i class="check_default check_active"></i></div>
  350. <div class="o_bd">基础技能训练</div>
  351. </div>
  352. <div class="option">
  353. <div class="0_hd"><i class="check_default check_active"></i></div>
  354. <div class="o_bd">假期集中训练</div>
  355. </div>
  356. </div>
  357. <div class="coutInfo">
  358. <i class="trumpet_icon"></i>年度安排十个月训练,共计168课时,120元/课时,原价20160元,现仅支付560元/月(约合34.5元/课时)
  359. </div>
  360. <div class="buy">
  361. <div class="price">
  362. <p class="oldprice">
  363. <del class="text">原价</del>
  364. <del>{{ orderInfo.marketPrice }}¥</del>
  365. </p>
  366. <p class="now_price">
  367. <span class="text">仅需支付</span>
  368. <span>{{ orderInfo.referencePrice }}¥</span>
  369. </p>
  370. </div>
  371. <a>购买</a>
  372. </div>
  373. </div>
  374. </div> -->
  375. </div>
  376. </template>
  377. <script>
  378. import { getSection, getType, getCooperation, getTeacher, getAddress, getPayMaster, getPayStatus, getTeamBaseInfo, resetTeamBaseInfo } from '@/api/buildTeam'
  379. import { queryEmployByOrganId } from '@/api/systemManage'
  380. import { scrollTo } from '@/utils/scroll-to'
  381. import axios from 'axios'
  382. import store from '@/store'
  383. import qs from 'qs'
  384. export default {
  385. props: ['getTeamList'],
  386. data () {
  387. return {
  388. organId: store.getters.organ,
  389. topFrom: {
  390. type: '', // 收费类型
  391. section: '', //所属分部
  392. school: '', // 合作单位
  393. teacher: '', // 教务老师
  394. name: '', //乐团名称
  395. boss: '', // 运营主管
  396. time: '', // 报名截止时间
  397. startClass: [], // 招生年级起始
  398. address: '', // 教学地点
  399. salary: '', // 收费模式
  400. head: '',
  401. isClass: false, //是否为课堂课
  402. startTime: ''
  403. },
  404. checkList: {
  405. soundInfo: { // 声部
  406. ischeck: false,
  407. value: ''
  408. },
  409. allInfo: { // 合奏
  410. ischeck: false,
  411. value: ''
  412. },
  413. baseInfo: { // 基础
  414. ischeck: false,
  415. value: ''
  416. },
  417. holidayInfo: { // 假期
  418. ischeck: false,
  419. value: ''
  420. },
  421. submit: {
  422. ischeck: false,
  423. value: '年度安排个月共xxx课时,课时,原价xxx元,现价xxxx元/月(约 xxxx元/课时 )'
  424. }
  425. }, // 选中的集合
  426. baseInfo: {},
  427. money: 580,
  428. orderInfo: {
  429. marketPrice: 0, // 原价总金额
  430. referencePrice: 0, // 现价总金额
  431. }, // 金额列表,金额计算
  432. sectionList: [], // 分部列表
  433. typeList: [], // 收费类型列表
  434. cooperationList: [], // 教学点列表
  435. teacherList: [], // 获取老师列表
  436. addList: [], // 教学地点列表
  437. payList: {
  438. school: {
  439. ischeck: false,
  440. value: '',
  441. price: '',
  442. chiose: ''
  443. },
  444. company: {
  445. ischeck: false,
  446. value: '',
  447. price: '',
  448. chiose: ''
  449. },
  450. student: {
  451. ischeck: true,
  452. chiose: 'loop'
  453. },
  454. chioseMonth: [], // 选中的月份
  455. },
  456. activeTeam: [],
  457. teamid: '',
  458. teamStatus: '',
  459. orgianList: []
  460. }
  461. },
  462. created () {
  463. // 分为3种 this.teamStatus
  464. // 1.resetTeam 乐团修改
  465. // 2. newTeam 新建乐团
  466. // 3.teamList 跨团修改
  467. // 4.teamDraft 乐团草稿
  468. let year = new Date().getFullYear();
  469. axios.post('/jiari/', qs.stringify({ d: year })).then(res => {
  470. // this.holidayList = Object.keys(res.data[year])
  471. })
  472. this.teamStatus = this.$route.query.type;
  473. // 传过来的乐团信息
  474. this.activeTeam = this.getTeamList;
  475. if (this.teamStatus == 'resetTeam' || this.teamStatus == 'teamDraft' || this.teamStatus == 'teamAudit') {
  476. // 单团修改
  477. this.teamid = this.$route.query.id;
  478. getTeamBaseInfo({ musicGroupId: this.teamid }).then(res => {
  479. if (res.code == 200) {
  480. // 头部
  481. this.topFrom.name = res.data.musicGroup.name;
  482. this.topFrom.time = res.data.musicGroup.applyExpireDate;
  483. this.topFrom.type = res.data.musicGroup.chargeTypeId;
  484. this.topFrom.startClass = res.data.musicGroup.enrollClasses.split(',');
  485. this.topFrom.section = res.data.musicGroup.organId;
  486. this.topFrom.school = res.data.musicGroup.cooperationOrganId;
  487. this.topFrom.teacher = res.data.musicGroup.educationalTeacherId;
  488. this.topFrom.boss = res.data.musicGroup.teamTeacherId;
  489. this.topFrom.address = res.data.musicGroup.schoolId;
  490. this.topFrom.salary = res.data.musicGroup.settlementType;
  491. this.topFrom.head = res.data.musicGroup.directorUserId;
  492. this.topFrom.isClass = res.data.musicGroup.isClassroomLessons
  493. this.topFrom.startTime = res.data.musicGroup.expectStartGroupDate;
  494. // 课程组成形式
  495. this.checkList = JSON.parse(res.data.musicGroup.courseForm);
  496. // 付费方式和周期
  497. for (let i in res.data.musicGroupPaymentEntities) {
  498. if (res.data.musicGroupPaymentEntities[i].name == '学校') {
  499. this.payList.school.ischeck = true;
  500. this.payList.school.value = res.data.musicGroupPaymentEntities[i].memo;
  501. this.payList.school.price = res.data.musicGroupPaymentEntities[i].amount;
  502. this.payList.school.chiose = res.data.musicGroupPaymentEntities[i].paymentMethod;
  503. }
  504. if (res.data.musicGroupPaymentEntities[i].name == '公司') {
  505. this.payList.company.ischeck = true;
  506. this.payList.company.value = res.data.musicGroupPaymentEntities[i].memo;
  507. this.payList.company.price = res.data.musicGroupPaymentEntities[i].amount;
  508. this.payList.company.chiose = res.data.musicGroupPaymentEntities[i].paymentMethod;
  509. }
  510. if (res.data.months.length > 0) {
  511. this.payList.student.ischeck = true;
  512. this.payList.student.chiose = 'loop'
  513. this.chioseMonth = res.data.months;
  514. } else {
  515. this.payList.student.ischeck = true;
  516. this.payList.student.chiose = 'ONE_OFF'
  517. }
  518. }
  519. // 循环缴费月
  520. this.payList.chioseMonth = res.data.months;
  521. }
  522. })
  523. }
  524. },
  525. mounted () {
  526. // 1.获取各个选项卡的数据内容
  527. getSection({ 'delFlag': 0, 'rows': 1000 }).then(res => {
  528. if (res.code == 200) {
  529. this.sectionList = res.data.rows;
  530. }
  531. }).catch()
  532. // 2.获取收费类型选项卡
  533. getType({ 'rows': 1000, organId: this.organId }).then(res => {
  534. if (res.code == 200) {
  535. this.typeList = res.data.rows;
  536. }
  537. })
  538. // 3.获取合作单位选项卡
  539. getCooperation({ 'rows': 1000, organId: this.organId }).then(res => {
  540. if (res.code == 200) {
  541. this.cooperationList = res.data.rows;
  542. }
  543. })
  544. // 4.获取老师选项卡
  545. // getTeacher({ 'rows': 1000, organId: this.organId }).then(res => {
  546. // if (res.code == 200) {
  547. // this.teacherList = res.data;
  548. // }
  549. // })
  550. // 5.获取教学地点选项卡
  551. getAddress({ 'rows': 1000, }).then(res => {
  552. if (res.code == 200) {
  553. this.addList = res.data.rows;
  554. }
  555. })
  556. // 6.默认支付主体
  557. // getPayMaster({ 'rows': 1000 }).then(res => {
  558. // console.log(res);
  559. // if (res.code == 200) {
  560. // this.payList = res.data.map(item => {
  561. // let obj = {};
  562. // obj.id = item.id;
  563. // obj.ischios
  564. // })
  565. // }
  566. // })
  567. // 缓存设置时的状态
  568. sessionStorage.setItem('resetCode', '1')
  569. // 获取分部下的员工
  570. queryEmployByOrganId({ organId: this.$store.getters.organ, rows: 1000 }).then(res => {
  571. if (res.code == 200) {
  572. this.orgianList = res.data.rows;
  573. }
  574. })
  575. },
  576. methods: {
  577. chioseSchool (val) {
  578. },
  579. gotoNext (num) {
  580. // 1.效验数据 判断是否数据正常=> 正常放入store存储
  581. // 不正常=> 进行效验提示
  582. this.$refs['topinfo'].validate((valid, object) => {
  583. if (!valid) {
  584. this.$message.error('请填写建团必要参数')
  585. } else {
  586. // 验证通过
  587. if (this.teamStatus == 'teamDraft') {
  588. // 获取数据提交
  589. this.resetSubmit();
  590. } else {
  591. this.$store.dispatch('topinfo', this.topFrom);
  592. this.$store.dispatch('checkinfo', this.checkList);
  593. this.$store.dispatch('getpayInfo', this.payList);
  594. this.$emit('chiosetab', num);
  595. }
  596. }
  597. })
  598. },
  599. resetSubmit () {
  600. this.$refs['topinfo'].validate((valid, object) => {
  601. if (!valid) {
  602. this.$message.error('请填写必要参数')
  603. } else {
  604. let status = null;
  605. // 1.resetTeam 乐团修改
  606. // 2. newTeam 新建乐团
  607. // 3.teamList 跨团修改
  608. // 4.teamDraft 乐团草稿
  609. switch (this.teamStatus) {
  610. case 'resetTeam': {
  611. status = 'PROGRESS'
  612. break
  613. }
  614. case 'newTeam': {
  615. status = null
  616. break
  617. }
  618. case 'teamList': {
  619. status = null
  620. break
  621. }
  622. case 'teamDraft': {
  623. status = 'DRAFT'
  624. break
  625. }
  626. }
  627. let obj = {};
  628. this.payList.student.chiose == 'loop' ? obj.months = this.payList.chioseMonth : obj.months = [];
  629. obj.musicGroup = {
  630. settlementType: this.topFrom.salary,
  631. applyExpireDate: this.topFrom.time + ' 00:00:01',
  632. chargeTypeId: this.topFrom.type,
  633. cooperationOrganId: this.topFrom.school,
  634. teamTeacherId: this.topFrom.boss,
  635. educationalTeacherId: this.topFrom.teacher,
  636. enrollClasses: this.topFrom.startClass.join(','),
  637. name: this.topFrom.name,
  638. organId: this.topFrom.section,
  639. // paymentMonths:obj.months 有待确认
  640. schoolId: this.topFrom.address,
  641. courseForm: JSON.stringify(this.checkList),
  642. id: this.teamid,
  643. directorUserId: this.topFrom.head,
  644. isClassroomLessons: this.topFrom.isClass,
  645. status,
  646. expectStartGroupDate: this.topFrom.startTime
  647. }
  648. obj.musicGroupPaymentEntities = []
  649. // 添加学校主体付费方式
  650. // console.log(this.payfor.company.ischeck)
  651. if (this.payList.school.ischeck) {
  652. obj.musicGroupPaymentEntities.push({
  653. 'amount': this.payList.school.price,
  654. 'memo': this.payList.school.value,
  655. 'paymentMethod': this.payList.school.chiose,
  656. 'name': '学校'
  657. })
  658. }
  659. // 添加公司主体付费方式
  660. if (this.payList.company.ischeck) {
  661. obj.musicGroupPaymentEntities.push({
  662. 'amount': this.payList.company.price,
  663. 'memo': this.payList.company.value,
  664. 'paymentMethod': this.payList.company.chiose,
  665. 'name': '公司'
  666. })
  667. }
  668. if (this.payList.student.ischeck) {
  669. obj.musicGroupPaymentEntities.push({
  670. 'paymentMethod': this.payList.student.chiose,
  671. 'name': '学生'
  672. })
  673. }
  674. // 发请求
  675. resetTeamBaseInfo(obj).then(res => {
  676. if (res.code == 200) {
  677. if (this.teamStatus == 'teamDraft') {
  678. this.$message.success('保存成功')
  679. // 跳到第二页
  680. // 删掉结束
  681. this.$emit('chiosetab', 1);
  682. } else {
  683. this.$message.success('修改乐团成功')
  684. this.$router.push({ path: '/business/teamDetails', query: { id: this.teamid, name: this.topFrom.name } })
  685. }
  686. }
  687. })
  688. }
  689. })
  690. }
  691. },
  692. computed: {
  693. },
  694. }
  695. </script>
  696. <style lang="scss">
  697. .base-container {
  698. overflow: auto;
  699. // display: flex;
  700. // flex-direction: row;
  701. // justify-content: flex-start;
  702. // flex-wrap: nowrap;
  703. font-size: 14px;
  704. color: #444;
  705. // width: fill-available;
  706. .banseLeft {
  707. // width: 1050px;
  708. .head {
  709. height: 48px;
  710. line-height: 48px;
  711. background-color: #edeef0;
  712. font-size: 14px;
  713. font-weight: bold;
  714. color: #444;
  715. padding: 0 11px;
  716. margin-bottom: 20px;
  717. }
  718. .noMargin.head {
  719. margin-bottom: 0;
  720. }
  721. .num {
  722. padding: 15px 11px;
  723. }
  724. .checkRow {
  725. // width: 1050px;
  726. padding-left: 28px;
  727. display: flex;
  728. flex-direction: row;
  729. justify-content: flex-start;
  730. flex-wrap: nowrap;
  731. overflow: auto;
  732. .el-checkbox {
  733. line-height: 72px;
  734. }
  735. .inputWrap {
  736. line-height: 72px;
  737. font-size: 14px;
  738. color: #777;
  739. margin-left: 65px;
  740. input {
  741. border: none;
  742. width: 80px;
  743. margin-right: 10px;
  744. outline: none;
  745. }
  746. }
  747. .inputWrap.rightFirst {
  748. margin-left: 245px;
  749. }
  750. .textWrap {
  751. display: flex;
  752. flex-direction: row;
  753. justify-content: flex-start;
  754. font-size: 14px;
  755. color: #777;
  756. align-items: center;
  757. span {
  758. color: #f97215;
  759. }
  760. }
  761. .selectWrap {
  762. font-size: 14px;
  763. padding-top: 5px;
  764. margin-left: 100px;
  765. margin-right: 52px;
  766. .rowSelect {
  767. .el-input__inner {
  768. min-height: 69px;
  769. }
  770. }
  771. }
  772. .chioseList {
  773. display: flex;
  774. flex-direction: row;
  775. justify-content: flex-start;
  776. align-items: center;
  777. font-size: 14px;
  778. color: #777;
  779. margin-left: 64px;
  780. .chioseItem {
  781. width: 80px;
  782. height: 30px;
  783. border-radius: 15px;
  784. border: 1px solid #979797;
  785. margin-right: 10px;
  786. line-height: 30px;
  787. text-align: center;
  788. cursor: pointer;
  789. }
  790. .chioseItem.active {
  791. background-color: #14928a;
  792. border: 1px solid #14928a;
  793. color: #fff;
  794. }
  795. }
  796. // &:nth-child(even) {
  797. // background-color: #c6cbd4;
  798. // input {
  799. // background-color: #c6cbd4;
  800. // }
  801. // }
  802. }
  803. }
  804. .btnWrap {
  805. margin-top: 30px;
  806. }
  807. .el-checkbox__input.is-checked + .el-checkbox__label {
  808. color: #606266;
  809. }
  810. .subTitle {
  811. width: 1203px;
  812. height: 40px;
  813. line-height: 40px;
  814. background-color: #fefceb;
  815. padding: 0 25px;
  816. box-sizing: border-box;
  817. font-size: 16px;
  818. color: #474747;
  819. margin-bottom: 20px;
  820. }
  821. .chioseWrap {
  822. margin-bottom: 30px;
  823. display: flex;
  824. flex-direction: row;
  825. padding: 0 25px;
  826. p {
  827. font-size: 14px;
  828. margin-right: 30px;
  829. }
  830. }
  831. // .baseRight {
  832. // width: 375px;
  833. // margin-left: 25px;
  834. // header {
  835. // width: 375px;
  836. // height: 40px;
  837. // line-height: 40px;
  838. // color: #000;
  839. // font-size: 14px;
  840. // background: #fff;
  841. // box-shadow: 0px 1px 8px 0px rgba(0, 0, 0, 0.07);
  842. // text-align: center;
  843. // margin-bottom: 6px;
  844. // }
  845. // .section {
  846. // width: 375px;
  847. // padding: 16px 22px 10px;
  848. // background: #fff;
  849. // margin-bottom: 10px;
  850. // .line_bottom {
  851. // border-bottom: 1px solid #ededed;
  852. // }
  853. // > .title {
  854. // font-size: 20px;
  855. // line-height: 28px;
  856. // font-weight: bold;
  857. // }
  858. // .indate {
  859. // font-size: 12px;
  860. // padding: 5px 0;
  861. // display: flex;
  862. // justify-content: space-between;
  863. // span {
  864. // color: #fa101d;
  865. // }
  866. // }
  867. // .coutInfo {
  868. // font-size: 14px;
  869. // color: #f85043;
  870. // text-align: left;
  871. // border-top: 1px solid #ededed;
  872. // padding: 12px 0 0 25px;
  873. // margin-top: 10px;
  874. // position: relative;
  875. // .trumpet_icon {
  876. // width: 14px;
  877. // height: 12px;
  878. // background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAYCAYAAADpnJ2CAAAAAXNSR0IArs4c6QAAAyZJREFUSA21Vk1IVFEUPufOezNilJXQD2UQRERamWhBaUWOSS3U0SawdgZai2gR0aoQXPSDm3JRCbm0xZBjbkQZS0KDjKywDCIIkoKKEIkm35uZezr32X0jQ+bY2IU359xzzj3fPXe++4PwDy0W8JdKgjYCWOkzzWIM9X5NN42RbqCKoxOHl1nR2FVJ1MRgqGzxhCxg8VDp6TSRTpCKsQL+aitqjwPRKQ3mjCVygFPz2MGKQqvG/zxW56+c7ZsXkIJH1liB8hARdQPButmD59WR8mUCuqy6ynwd686OmpsN++XjLUiYrZ0g5E6SdJmAVri2FMWDnnIz3P8gxex07Rp/owS6jQij3h1lu7G5Oe5UOF1bcc5+MTRFlBiTEH/iflLe+htYKsh0oHwzBcpztd3bHWlHxPtEUMTFHFV2YdceOglStnLiZGV6xEIlwbBF+JQaqpa6Qw246OiUOKOkICnPus4MFYGik7m80Z6MXtCpfKHIGBN6kIm2x66tLBJM7q3amak0DbqEgD84eQNzwiUkE+Wmk1vGjwtmnydTID0eQ5EpLoDZTGvjr4b2absXzGdKlwC73FloZ6aSSTKocjC7kyu3Ku8D2xOAuOk/ANKEAwhivZKqYXt7jFdyAnl7LTrgDMTcv4sOyCddnlOVnKlU6dTYaPKS5hHg5IIO77nnnfTw0h1QPTTgjWv9MrGB97ki5zvh/JmuJzOFgv4cPm9rGO6TUVD6SGezhV2sdF7OEcEB49qRqbRi0MKVLEEBHXxu8i6YabzMpx1NGJ18OIjr2pG5pHqu7r13efY1ncsK+rfxvtzPW2LY29U3Krxd/Xe4c55PiKgO+meJsNeHVIIdPd/dHHFoUToitSnpsDQrHGn1FpbmoMcoEIJPA/0BNvFEJlVgOi0rPPAWwwPfdKy6nphE1c71tL3snrK796EOSpVUX7Xano628cBgqk/157oP1Y1PcTkChDEwzRJfqNfhyrz7EO/2fPaFI8dAiGqe3sc/gc5pI3wtPFCrwVTcvBXOTuY8on7GrqBMvms8wjhodvWl/YhaEKAG//1MvMHXUO5Cn4m/ACXBMJBwQaFpAAAAAElFTkSuQmCC)
  879. // no-repeat center;
  880. // background-size: contain;
  881. // position: absolute;
  882. // left: 0;
  883. // top: 14px;
  884. // }
  885. // }
  886. // }
  887. // .options {
  888. // padding-top: 8px;
  889. // .oc {
  890. // &:last-child {
  891. // border-top: 1px solid #ededed;
  892. // margin-top: 8px;
  893. // padding-top: 9px;
  894. // }
  895. // }
  896. // .protocol {
  897. // padding-left: 20px;
  898. // font-size: 10px;
  899. // line-height: 14px;
  900. // }
  901. // .option {
  902. // line-height: 26px;
  903. // font-size: 15px;
  904. // display: flex;
  905. // align-items: center;
  906. // position: relative;
  907. // .o_bd {
  908. // flex: 1;
  909. // .c {
  910. // font-size: 12px;
  911. // }
  912. // }
  913. // .o_ft {
  914. // font-size: 12px;
  915. // color: #fa101d;
  916. // del {
  917. // color: #aaaaaa;
  918. // font-size: 11px;
  919. // }
  920. // }
  921. // .check_default {
  922. // margin-right: 8px;
  923. // display: block;
  924. // width: 14px;
  925. // height: 14px;
  926. // background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAABK0lEQVQ4T6WSP0vDQBjGn3MIiYX+CbhYG7BR7CL5ANmS2SWQ7H4DZ3ed/QbuOcjinGz5ANGloqmQ2i5CmhZqQgZPLjRQFYS2N9297/t73+fuHoK15bruASHkijF2AeB0lXohhDwwxu4cx/moy0m9oZRaAO5VVW0qioJ2u12lsixDkiSI43gB4NK2bY/HK5BDoihSXdf3Wq0WZrMZPpfLCtxvNNDpdDCfzxGG4VdRFDaHyUreq2maTUmS8DYaoSzL9RtAEAQc9/vI8xy+7y8YYyeEUnqjquq1pml4Hg7/QHUHDp8NBoiiiMu+5RMfDcM45wXv4/GPSb8PR71eFQqC4ImDuWVZ4nQyQZqm/4KyLOOw24XnecVO4HZSd3kc7pbNv2NrA+xkuRrexOTfqpPUy7sW3D4AAAAASUVORK5CYII=)
  927. // no-repeat center;
  928. // background-size: contain;
  929. // &.check_active {
  930. // background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAABaUlEQVQ4T2NkQAKHPD1F2TmYChgZGHwZGBlUwVL/GW7/Z2DY/PPHvwl227e/hilnhDFOBXoHMbKxzhd18eATtnNg4FJQBEt9e3Cf4e2hAwyv9+z49P/X70Sz9VvXgcTBGkGa2EREVqtU1jFxSUgy/F+1geHf6bNgjUymxgyMYQEM3148Z7jT3vTv15s3oSDNjCDncfKx39Fs7+Xj+vWX4U9YAgPDo8fIPmBgkJNlYFm1gOEbGzPD9criT98//VRhPB3o2yrq5V0lFx3H8MfCBVMTzAiQ5hN7GB4tXcTwctvmNsZTgd6XNDt6dbmOn2X4W1CBahMaj3lCB8M3S2OG6xXFlxlPBXl/N16+juNfURXD/6Wr8GpkjA5jYOprYzgbGfSDAo1wp55j+FtQTsCpnQzfLI0gTiU7cMiODuwJYD3Dv9PnoAnAiIExLBAzAVCU5GCawc7mYCn4z/APJZEzMjBt/v7jD0oiBwAFDdbhAm8qEQAAAABJRU5ErkJggg==)
  931. // no-repeat center;
  932. // background-size: contain;
  933. // }
  934. // }
  935. // }
  936. // }
  937. // .configuration {
  938. // padding-right: 5px;
  939. // padding-bottom: 9px;
  940. // .title {
  941. // background: rgba(246, 246, 246, 1);
  942. // height: 1px;
  943. // position: relative;
  944. // margin: 15px 0;
  945. // span {
  946. // position: absolute;
  947. // left: 12px;
  948. // top: -9px;
  949. // display: inline-block;
  950. // background-color: #fff;
  951. // font-size: 10px;
  952. // padding: 0 4px;
  953. // }
  954. // }
  955. // .content {
  956. // font-size: 12px;
  957. // padding-left: 16px;
  958. // line-height: 22px;
  959. // color: #acacac;
  960. // }
  961. // .options {
  962. // padding-top: 0;
  963. // padding-left: 16px;
  964. // .option {
  965. // font-size: 14px;
  966. // color: #6f6f6f;
  967. // }
  968. // }
  969. // }
  970. // .buy {
  971. // margin-top: 200px;
  972. // bottom: 0;
  973. // left: 0;
  974. // right: 0;
  975. // height: 60px;
  976. // display: flex;
  977. // align-items: center;
  978. // padding: 0 20px;
  979. // border-top: 1px solid #ffe9e9e9;
  980. // color: #000000;
  981. // font-size: 12px;
  982. // background: #fff;
  983. // .price {
  984. // flex: 1;
  985. // font-size: 14px;
  986. // }
  987. // font-size: 14px;
  988. // span {
  989. // color: #fa101d;
  990. // }
  991. // .text {
  992. // font-size: 12px;
  993. // width: 60px;
  994. // display: inline-block;
  995. // color: #000;
  996. // }
  997. // del {
  998. // color: #b5b5b5;
  999. // &.text {
  1000. // color: #b5b5b5;
  1001. // }
  1002. // }
  1003. // a {
  1004. // display: inline-block;
  1005. // font-size: 18px;
  1006. // color: #fff;
  1007. // background: #f1111b;
  1008. // border-radius: 4px;
  1009. // box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.19);
  1010. // padding: 8px 28px;
  1011. // }
  1012. // }
  1013. // }
  1014. .classCheckBox {
  1015. margin-right: 10px;
  1016. }
  1017. }
  1018. </style>