teamBaseInfo.vue 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566
  1. <template>
  2. <div class="base-container">
  3. <div class="banseLeft">
  4. <!-- <div class="num">乐团编号:dywh01</div> -->
  5. <el-form
  6. :model="topFrom"
  7. ref="topinfo"
  8. label-width="120px"
  9. :inline="true"
  10. label-position="left"
  11. >
  12. <div class="head">乐团基本信息:</div>
  13. <!-- style="margin-left: 11px" -->
  14. <el-form-item
  15. label="所属分部"
  16. prop="section"
  17. :rules="[{ required: true, message: '所属分部不能为空' }]"
  18. >
  19. <el-select
  20. class="width400"
  21. v-model.trim="topFrom.section"
  22. filterable
  23. :disabled="basdisabled"
  24. @change="changeSection"
  25. clearable
  26. >
  27. <el-option
  28. v-for="(item, index) in sectionList"
  29. :key="index"
  30. :label="item.name"
  31. :value="item.id"
  32. ></el-option>
  33. </el-select>
  34. </el-form-item>
  35. <el-form-item
  36. label="乐团类型"
  37. prop="type"
  38. :rules="[{ required: true, message: '乐团类型不能为空' }]"
  39. >
  40. <el-select
  41. v-model.trim="topFrom.type"
  42. filterable
  43. :disabled="basdisabled"
  44. clearable
  45. @change="changeType"
  46. >
  47. <el-option
  48. v-for="(item, index) in typeList"
  49. :key="index"
  50. :label="item.name"
  51. :value="item.id"
  52. ></el-option>
  53. </el-select>
  54. </el-form-item>
  55. <el-form-item
  56. label="收费模式"
  57. prop="courseViewType"
  58. :rules="[{ required: true, message: '收费模式不能为空' }]"
  59. >
  60. <el-select
  61. v-model.trim="topFrom.courseViewType"
  62. filterable
  63. :disabled="basdisabled"
  64. clearable
  65. >
  66. <el-option
  67. :label="item.label"
  68. :value="Number(item.value)"
  69. v-for="item in courseViewTypeList"
  70. :key="item.value"
  71. :disabled="checkCourseView(Number(item.value))"
  72. ></el-option>
  73. <!-- <el-option label="AMR收费" :value="1"></el-option>
  74. <el-option label="会员收费" :value="2"></el-option> -->
  75. </el-select>
  76. </el-form-item>
  77. <el-form-item
  78. label="合作单位"
  79. prop="school"
  80. :rules="[{ required: true, message: '合作单位不能为空' }]"
  81. >
  82. <el-select
  83. v-model.trim="topFrom.school"
  84. :disabled="!topFrom.section || basdisabled"
  85. @change="chioseSchool"
  86. filterable
  87. clearable
  88. >
  89. <el-option
  90. v-for="(item, index) in cooperationList"
  91. :key="index"
  92. :label="item.name"
  93. :value="item.id"
  94. ></el-option>
  95. </el-select>
  96. </el-form-item>
  97. <el-form-item
  98. label="教学地点"
  99. prop="address"
  100. :rules="[{ required: true, message: '教学地点不能为空' }]"
  101. >
  102. <template #label>
  103. <p style="position: relative; display: inline-block">
  104. 教学地点
  105. <el-tooltip placement="top" popper-class="mTooltip">
  106. <div slot="content">
  107. 如果已生成课表,则会修改未上课时的教学点
  108. </div>
  109. <i
  110. class="el-icon-question"
  111. style="font-size: 18px; color: #f56c6c"
  112. ></i>
  113. </el-tooltip>
  114. </p>
  115. </template>
  116. <el-select
  117. v-model.trim="topFrom.address"
  118. filterable
  119. clearable
  120. :disabled="!topFrom.section || basdisabled"
  121. >
  122. <el-option
  123. v-for="(item, index) in addList"
  124. :key="index"
  125. :label="item.name"
  126. :value="item.id"
  127. ></el-option>
  128. </el-select>
  129. </el-form-item>
  130. <el-form-item
  131. label="乐团名称"
  132. prop="name"
  133. :rules="[{ required: true, message: '乐团名称不能为空' }]"
  134. >
  135. <el-input
  136. placeholder="请输入乐团名称"
  137. v-model.trim="topFrom.name"
  138. :disabled="basdisabled"
  139. ></el-input>
  140. </el-form-item>
  141. <el-form-item
  142. label="运营主管"
  143. prop="boss"
  144. :rules="[{ required: true, message: '运营主管不能为空' }]"
  145. >
  146. <el-select
  147. v-model.trim="topFrom.boss"
  148. :disabled="!topFrom.section || basdisabled"
  149. filterable
  150. clearable
  151. >
  152. <el-option
  153. v-for="item in bossList"
  154. :key="item.userId"
  155. :label="item.realName"
  156. :value="item.userId"
  157. >
  158. <span style="float: left">{{ item.realName }}</span>
  159. <span style="float: right; color: #8492a6; font-size: 13px">{{
  160. String(item.userId)
  161. }}</span>
  162. </el-option>
  163. </el-select>
  164. </el-form-item>
  165. <!-- <el-form-item
  166. label="预报名截止时间"
  167. prop="time"
  168. :rules="[{ required: true, message: '请输入预报名截止时间' }]"
  169. >
  170. <el-date-picker
  171. v-model.trim="topFrom.time"
  172. :disabled="basdisabled"
  173. type="date"
  174. value-format="yyyy-MM-dd"
  175. :picker-options="beginDate()"
  176. placeholder="选择日期"
  177. ></el-date-picker>
  178. </el-form-item> -->
  179. <el-form-item
  180. label="报名截止时间"
  181. prop="time"
  182. :rules="[{ required: true, message: '请输入报名截止时间' }]"
  183. >
  184. <el-date-picker
  185. v-model.trim="topFrom.time"
  186. :disabled="basdisabled"
  187. type="date"
  188. value-format="yyyy-MM-dd"
  189. :picker-options="beginDate()"
  190. placeholder="选择日期"
  191. ></el-date-picker>
  192. </el-form-item>
  193. <!-- <el-form-item
  194. label="预计开团时间"
  195. prop="startTime"
  196. :rules="[{ required: true, message: '请输入预计开团时间' }]"
  197. >
  198. <el-date-picker
  199. v-model.trim="topFrom.startTime"
  200. :disabled="basdisabled"
  201. type="date"
  202. value-format="yyyy-MM-dd"
  203. :picker-options="beginDate()"
  204. placeholder="选择日期"
  205. ></el-date-picker>
  206. </el-form-item> -->
  207. <el-form-item
  208. label="课酬结算标准"
  209. :rules="[{ required: true, message: '请选择课酬结算标准' }]"
  210. prop="salary"
  211. >
  212. <el-select
  213. v-model.trim="topFrom.salary"
  214. clearable
  215. :disabled="basdisabled"
  216. filterable
  217. >
  218. <el-option label="自定义课酬" value="TEACHER_DEFAULT"></el-option>
  219. <el-option label="标准课酬" value="GRADIENT_SALARY"></el-option>
  220. <!-- <el-option label="课堂课酬" value="CLASSROOM_SALARY"></el-option> -->
  221. </el-select>
  222. </el-form-item>
  223. <el-form-item label="机构类型" prop="ownershipType">
  224. <el-select
  225. v-model.trim="topFrom.ownershipType"
  226. :disabled="basdisabled"
  227. >
  228. <el-option label="自有" value="OWN"></el-option>
  229. <el-option label="三方" value="COOPERATION"></el-option>
  230. <!-- <el-option label="租赁"
  231. value="LEASE"></el-option>-->
  232. </el-select>
  233. </el-form-item>
  234. <!-- v-if="teamStatus == 'resetTeam' || teamStatus == 'teamList'" -->
  235. <div class="head">人员配置:</div>
  236. <el-form-item
  237. label="乐团主管"
  238. prop="teacher"
  239. :rules="[{ required: true, message: '乐团主管不能为空' }]"
  240. >
  241. <el-select
  242. v-model.trim="topFrom.teacher"
  243. :disabled="true"
  244. filterable
  245. clearable
  246. >
  247. <el-option
  248. v-for="(item, index) in educationList"
  249. :key="index"
  250. :label="item.value"
  251. :value="item.key"
  252. >
  253. <span style="float: left">{{ item.value }}</span>
  254. <span style="float: right; color: #8492a6; font-size: 13px">{{
  255. String(item.key)
  256. }}</span>
  257. </el-option>
  258. </el-select>
  259. </el-form-item>
  260. <el-form-item label="乐队指导" prop="head">
  261. <el-select
  262. v-model.trim="topFrom.head"
  263. filterable
  264. :disabled="!topFrom.section || basdisabled"
  265. clearable
  266. >
  267. <el-option
  268. v-for="(item, index) in teacherList"
  269. :key="index"
  270. :label="item.realName"
  271. :value="item.id"
  272. >
  273. <span style="float: left">{{ item.realName }}</span>
  274. <span style="float: right; color: #8492a6; font-size: 13px">{{
  275. String(item.id)
  276. }}</span>
  277. </el-option>
  278. </el-select>
  279. </el-form-item>
  280. <el-form-item label="维修技师" prop="repairUserId">
  281. <el-select
  282. v-model.trim="topFrom.repairUserId"
  283. :disabled="!topFrom.section || basdisabled"
  284. filterable
  285. clearable
  286. >
  287. <el-option
  288. v-for="(item, index) in technician"
  289. :key="index"
  290. :label="item.value"
  291. :value="item.key"
  292. >
  293. <span style="float: left">{{ item.value }}</span>
  294. <span style="float: right; color: #8492a6; font-size: 13px">{{
  295. String(item.key)
  296. }}</span>
  297. </el-option>
  298. </el-select>
  299. </el-form-item>
  300. <el-form-item label="衔接老师" prop="transactionTeacherId">
  301. <el-select
  302. v-model.trim="topFrom.transactionTeacherId"
  303. :disabled="!topFrom.section || basdisabled"
  304. filterable
  305. clearable
  306. >
  307. <el-option
  308. v-for="item in transactionList"
  309. :key="item.key"
  310. :label="item.value"
  311. :value="item.key"
  312. >
  313. <span style="float: left">{{ item.value }}</span>
  314. <span style="float: right; color: #8492a6; font-size: 13px">{{
  315. String(item.key)
  316. }}</span>
  317. </el-option>
  318. </el-select>
  319. </el-form-item>
  320. <div class="head">乐团设置:</div>
  321. <el-form-item
  322. label="同步群消息"
  323. prop="homeworkPushFlag"
  324. label-width="200px"
  325. :rules="[{ required: true, message: '同步群消息不能为空' }]"
  326. >
  327. <template #label>
  328. <p style="position: relative; display: inline-block">
  329. 开课后作业同步群消息
  330. <el-tooltip placement="top" popper-class="mTooltip">
  331. <div slot="content">
  332. 学员提交乐团课后作业时,群聊中是否发送作业提交消息
  333. </div>
  334. <i
  335. class="el-icon-question"
  336. style="font-size: 18px; color: #f56c6c"
  337. ></i>
  338. </el-tooltip>
  339. </p>
  340. </template>
  341. <el-switch
  342. v-model="topFrom.homeworkPushFlag"
  343. :disabled="basdisabled"
  344. :active-value="1"
  345. :inactive-value="0"
  346. >
  347. </el-switch>
  348. </el-form-item>
  349. <el-form-item
  350. label="是否显示免费课程"
  351. prop="memberCourseShowFlag"
  352. label-width="200px"
  353. :rules="[{ required: true, message: '是否显示免费课程不能为空' }]"
  354. >
  355. <template #label>
  356. <p style="position: relative; display: inline-block">
  357. 是否显示免费课程
  358. <el-tooltip placement="top" popper-class="mTooltip">
  359. <div slot="content">报名时是否显示免费赠送课程</div>
  360. <i
  361. class="el-icon-question"
  362. style="font-size: 18px; color: #f56c6c"
  363. ></i>
  364. </el-tooltip>
  365. </p>
  366. </template>
  367. <el-switch
  368. v-model="topFrom.memberCourseShowFlag"
  369. :disabled="basdisabled"
  370. :active-value="1"
  371. :inactive-value="0"
  372. >
  373. </el-switch>
  374. </el-form-item>
  375. <!-- <el-form-item label prop="isClass">
  376. <el-checkbox v-model.trim="topFrom.isClass" :disabled="basdisabled"
  377. >课堂课乐团</el-checkbox
  378. >
  379. </el-form-item> -->
  380. <br />
  381. <el-form-item label="" v-if="teamStatus == 'teamDraft'">
  382. <p style="color: red; padding-left: 50px">
  383. 修改【收费类型】会重置乐团声部与缴费信息
  384. </p>
  385. </el-form-item>
  386. </el-form>
  387. <div class="btnWrap">
  388. <!-- <div
  389. class="nextBtn"
  390. v-if="teamStatus == 'resetTeam'"
  391. v-permission="{
  392. child: 'musicGroup/update',
  393. parent: '/resetTeaming/teamBaseInfo',
  394. }"
  395. @click="resetSubmit"
  396. >
  397. 修改
  398. </div> -->
  399. <!-- 审批或者草稿的下一步 -->
  400. <div class="nextBtn" @click="gotoNext()" v-if="!basdisabled">
  401. {{ this.teamStatus == "teamDraft" ? "下一步" : "保存" }}
  402. </div>
  403. <div
  404. class="nextBtn"
  405. v-if="this.teamStatus == 'teamAudit'"
  406. @click="gotoNext()"
  407. >
  408. 下一步
  409. </div>
  410. </div>
  411. </div>
  412. </div>
  413. </template>
  414. <script>
  415. import {
  416. getType,
  417. getTeamBaseInfo,
  418. resetTeamBaseInfo,
  419. getEmployeeOrgan,
  420. getStudentList,
  421. musicGroupOpenPay,
  422. extensionPayment,
  423. extensionApplyExpire,
  424. findUserByRole,
  425. getTeacher,
  426. createTeam,
  427. } from "@/api/buildTeam";
  428. import { findTechnician } from "@/api/repairManager";
  429. import dayjs from "dayjs";
  430. import merge from "webpack-merge";
  431. import { queryByOrganId, getSchool } from "@/api/systemManage";
  432. import qrCode from "@/components/QrCode/index";
  433. import { classStatus, courseViewTypeList } from "@/utils/searchArray";
  434. import { vaildStudentUrl, vaildTeacherUrl } from "@/utils/validate";
  435. import mergeMusic from "../components/merge-music";
  436. export default {
  437. components: {
  438. mergeMusic,
  439. qrCode,
  440. },
  441. name: "teamBaseInfo",
  442. props: ["getTeamList"],
  443. data() {
  444. return {
  445. classStatus,
  446. courseViewTypeList,
  447. organId: null,
  448. topFrom: {
  449. type: "", // 收费类型
  450. section: "", //所属分部
  451. courseViewType: "", // 收费模式
  452. school: "", // 合作单位
  453. teacher: "", // 乐团主管
  454. name: "", //乐团名称
  455. boss: "", // 运营主管
  456. time: "", // 报名截止时间
  457. startClass: [], // 招生年级起始
  458. address: "", // 教学地点
  459. salary: "", // 收费模式
  460. head: "",
  461. homeworkPushFlag: 1, // 是否同步群消息
  462. memberCourseShowFlag: 0,
  463. isClass: false, //是否为课堂课
  464. startTime: "",
  465. feeType: null,
  466. paymentPattern: "", // 缴费方式
  467. paymentValid: [], // 缴费有效期
  468. paymentValidStartDate: null, // 缴费有效期开始
  469. paymentValidEndDate: null, // 缴费有效期结束
  470. ownershipType: "OWN", // 合作机构类型
  471. repairUserId: null, // 维修技师
  472. transactionTeacherId: null, // 衔接老师
  473. },
  474. baseInfo: {},
  475. money: 580,
  476. orderInfo: {
  477. marketPrice: 0, // 原价总金额
  478. referencePrice: 0, // 现价总金额
  479. }, // 金额列表,金额计算
  480. sectionList: [], // 分部列表
  481. typeList: [], // 收费类型列表
  482. cooperationList: [], // 教学点列表
  483. teacherList: [], // 获取老师列表
  484. educationList: [], // 乐团主管
  485. bossList: [],
  486. transactionList: [],
  487. addList: [], // 教学地点列表
  488. activeTeam: [],
  489. teamid: "",
  490. teamStatus: "",
  491. isInit: false,
  492. technician: [],
  493. basdisabled: false,
  494. // 整合报名中
  495. paymentExpireDate: "",
  496. applyExpireDate: null,
  497. mergeVisible: false,
  498. team_status: "",
  499. paymentNum: 0,
  500. paymentStatus: false,
  501. paymentForm: {
  502. paymentExpireDate: null,
  503. // feeType: null
  504. },
  505. paymentRules: {
  506. paymentExpireDate: [
  507. { required: true, message: "请设置缴费截止日期", trigger: "blur" },
  508. ],
  509. },
  510. extendForm: {
  511. expireDate: null,
  512. },
  513. extendRule: {
  514. expireDate: [
  515. { required: true, message: "请选择延长时间", trigger: "change" },
  516. ],
  517. },
  518. isPay: false,
  519. extendPaymentStatus: false, // 延长缴费
  520. codeStatus: false,
  521. qrCodeUrl: null,
  522. codeTitle: null,
  523. teamid: "",
  524. };
  525. },
  526. created() {},
  527. mounted() {
  528. if (this.$route.query.type == "newTeam") {
  529. this.onReset();
  530. }
  531. this.init();
  532. },
  533. activated() {
  534. if (
  535. (this.teamid && this.teamid != this.$route.query.id) ||
  536. this.teamStatus != this.$route.query.type
  537. ) {
  538. this.init();
  539. }
  540. if (this.$route.query.clear == "true") {
  541. this.onReset();
  542. }
  543. if (this.teamStatus == "newTeam") {
  544. this.$store.dispatch("buildIndex", 0);
  545. }
  546. if (this.teamStatus != "newTeam") {
  547. this.$store.dispatch("draftIndex", 0);
  548. }
  549. this.teamStatus = this.$route.query.type;
  550. if (
  551. this.teamStatus == "look" ||
  552. this.teamStatus == "teamAudit" ||
  553. this.teamStatus == "feeAudit" ||
  554. this.teamStatus == "APPLY" ||
  555. this.teamStatus == "PAY"
  556. ) {
  557. this.basdisabled = true;
  558. } else {
  559. this.basdisabled = false;
  560. }
  561. },
  562. deactivated() {},
  563. // async beforeDestroy() {
  564. // await this.setStore();
  565. // // await new Promise((res, err) => {
  566. // // setTimeout(() => {
  567. // // res();
  568. // // }, 1000);
  569. // // });
  570. // },
  571. methods: {
  572. async setStore(str) {
  573. if (this.teamid) {
  574. let loadash = this.$helpers.lodash;
  575. let sotrage = JSON.parse(localStorage.getItem(`${this.teamid}base`));
  576. // console.log(sotrage,this.topFrom)
  577. if (!loadash.isEqual(this.topFrom, sotrage) && sotrage) {
  578. // 提示保存
  579. return await this.$confirm("已修改当前页面数据是否保存", "提示", {
  580. confirmButtonText: "是",
  581. cancelButtonText: "否",
  582. type: "warning",
  583. closeOnClickModal: false,
  584. distinguishCancelAndClose: true,
  585. })
  586. .then(async () => {
  587. // localStorage.setItem(
  588. // `${this.teamid}base`,
  589. // JSON.stringify(this.topFrom)
  590. // );
  591. let b = await this.gotoNext(str);
  592. console.log(b);
  593. return b;
  594. })
  595. .catch((e) => {
  596. console.log(e);
  597. if (e == "close") {
  598. return false;
  599. } else {
  600. localStorage.removeItem(`${this.teamid}base`);
  601. return true;
  602. }
  603. // localStorage.setItem(`${this.teamid}base`,JSON.stringify(this.topFrom));
  604. });
  605. } else {
  606. return true;
  607. // localStorage.setItem(`${this.teamid}base`,JSON.stringify(this.topFrom));
  608. }
  609. } else {
  610. localStorage.setItem(`newTeambase`, JSON.stringify(this.topFrom));
  611. return true;
  612. }
  613. },
  614. //|| this.teamStatus === 'teamAudit'
  615. isNotEditing: function () {
  616. return !(
  617. this.teamStatus === "teamDraft" ||
  618. this.teamStatus === "newTeam" ||
  619. this.teamStatus === "teamList"
  620. );
  621. },
  622. changeFeeType(val) {},
  623. changePaymentValidStartDate(val) {
  624. if (val) {
  625. this.$set(this.topFrom, "paymentValidEndDate", "");
  626. }
  627. },
  628. changePaymentPattern(val) {
  629. // if (val === 2) {
  630. // // this.topFrom.paymentValidStartDate = null
  631. // this.$set(this.topFrom, 'paymentValidEndDate', '')
  632. // }
  633. },
  634. beginDate(end) {
  635. return {
  636. firstDayOfWeek: 1,
  637. disabledDate(time) {
  638. if (end) {
  639. return new Date(end).getTime() - 86400000 >= time.getTime();
  640. } else {
  641. return time.getTime() + 86400000 < Date.now();
  642. //开始时间不选时,结束时间最大值小于等于当天
  643. }
  644. },
  645. };
  646. },
  647. init() {
  648. this.isInit = true;
  649. if (this.$route.query.id) {
  650. this.teamid = this.$route.query.id;
  651. }
  652. this.teamStatus = this.$route.query.type;
  653. this.team_status = this.$route.query.team_status;
  654. // if (this.teamStatus == "newTeam") {
  655. // this.$store.dispatch("buildIndex", 0);
  656. // }
  657. // if (this.teamStatus != "newTeam") {
  658. // this.$store.dispatch("draftIndex", 0);
  659. // }
  660. // 传过来的乐团信息
  661. this.activeTeam = this.getTeamList;
  662. if (
  663. this.teamStatus == "look" ||
  664. this.teamStatus == "teamAudit" ||
  665. this.teamStatus == "feeAudit" ||
  666. this.teamStatus == "teamCanceled"
  667. ) {
  668. this.basdisabled = true;
  669. } else {
  670. this.basdisabled = false;
  671. }
  672. if (this.$route.query.id) {
  673. // 单团修改
  674. this.teamid = this.$route.query.id;
  675. let sotrage = JSON.parse(
  676. localStorage.getItem(`${this.$route.query.id}base`)
  677. );
  678. if (!sotrage?.section) {
  679. getTeamBaseInfo({ musicGroupId: this.teamid }).then((res) => {
  680. if (res.code == 200) {
  681. // if (this.$listeners.getBaseInfo) {
  682. // this.$listeners.getBaseInfo(res.data);
  683. // }
  684. // 头部
  685. this.setBase(res);
  686. // // 循环缴费月
  687. // this.payList.chioseMonth = res.data.months;
  688. if (res.data.musicGroup.organId) {
  689. // 获取员工
  690. this.getBaseList(res.data.musicGroup.organId);
  691. }
  692. this.$emit("getBaseInfo", res.data);
  693. }
  694. });
  695. } else {
  696. this.topFrom = sotrage;
  697. // this.applyExpireDate = sotrage.time;
  698. // this.paymentExpireDate = Storage.paymentExpireDate;
  699. if (this.topFrom?.section) {
  700. // 获取员工
  701. this.getBaseList(this.topFrom.section);
  702. }
  703. }
  704. } else {
  705. // 如果是新建团
  706. let sotrage = JSON.parse(localStorage.getItem(`newTeambase`));
  707. sotrage ? (this.topFrom = sotrage) : this.topFrom;
  708. if (this.topFrom?.section) {
  709. // 获取员工
  710. this.getBaseList(this.topFrom.section);
  711. }
  712. }
  713. this.getStudentStatus();
  714. this.$emit("getName", this.topFrom?.name);
  715. // getEmployeeOrgan().then((res) => {
  716. // if (res.code == 200) {
  717. // this.sectionList = res.data;
  718. // }
  719. // });
  720. // // 2.获取收费类型选项卡
  721. // getType({ rows: 1000 }).then((res) => {
  722. // if (res.code == 200) {
  723. // this.typeList = res.data.rows;
  724. // }
  725. // });
  726. Promise.all([getType({ rows: 1000 }), getEmployeeOrgan()]).then(
  727. (values) => {
  728. if (values[0].code == 200) {
  729. this.typeList = values[0].data.rows;
  730. // this.typeList = [];
  731. }
  732. if (values[1].code == 200) {
  733. this.sectionList = values[1].data;
  734. // this.sectionList = [];
  735. }
  736. let arr = [];
  737. if (this.sectionList.length <= 0) {
  738. arr.push("organ");
  739. }
  740. if (this.typeList.length <= 0) {
  741. arr.push("teamPayType");
  742. }
  743. this.$bus.$emit("showguide", arr);
  744. }
  745. );
  746. // console.log('到这里来',getEmployeeOrgan())
  747. // 缓存设置时的状态
  748. },
  749. changeSection(val) {
  750. // 修改分部的时候 重置运营主管 重置乐团主管 重置乐队指导 合作单位 教学点
  751. this.topFrom.teacher = "";
  752. this.topFrom.boss = "";
  753. this.topFrom.head = "";
  754. this.topFrom.school = "";
  755. this.topFrom.address = "";
  756. // 发请求 根据分部id 查询所有员工
  757. this.getBaseList(val);
  758. },
  759. async getBaseList(val) {
  760. // 合作单位
  761. // queryByOrganId({ organId: val }).then((res) => {
  762. // if (res.code == 200) {
  763. // this.cooperationList = res.data;
  764. // }
  765. // });
  766. // 教学点=>学校
  767. // getSchool({ organId: val }).then((res) => {
  768. // if (res.code == 200) {
  769. // this.addList = res.data;
  770. // }
  771. // });
  772. // 获取维修技师
  773. // findTechnician().then((res) => {
  774. // if (res.code == 200) {
  775. // this.technician = res.data;
  776. // }
  777. // });
  778. // 获取乐团主管
  779. try {
  780. const ruselt = await findUserByRole({
  781. id: val,
  782. });
  783. // 乐团主管
  784. this.educationList = ruselt?.data?.educationId;
  785. // 维修技师
  786. this.technician =ruselt?.data?.repairId
  787. // this.bossList = ruselt?.data?.TEAM_TEACHER;
  788. // 衔接老师
  789. this.transactionList = ruselt?.data?.joinTeacherId;
  790. } catch (e) {
  791. console.log(e);
  792. }
  793. // 获取运营主管
  794. // try {
  795. // const ruselt = await findUserByRole({
  796. // organId: val,
  797. // employeeRole: "TEAM_TEACHER",
  798. // });
  799. // this.bossList = ruselt.data;
  800. // } catch (e) {
  801. // console.log(e);
  802. // }
  803. // 获取指导老师
  804. getTeacher({ organId: val }).then((res) => {
  805. if (res.code == 200) {
  806. this.teacherList = res.data;
  807. }
  808. });
  809. Promise.all([
  810. queryByOrganId({ organId: val }),
  811. getSchool({ organId: val }),
  812. ]).then((values) => {
  813. if (values[0].code == 200) {
  814. this.cooperationList = values[0].data;
  815. }
  816. if (values[1].code == 200) {
  817. this.addList = values[1].data;
  818. }
  819. let arr = [];
  820. if (this.cooperationList.length <= 0) {
  821. arr.push("cooperationOrgan");
  822. }
  823. if (this.addList.length <= 0) {
  824. arr.push("school");
  825. }
  826. if (arr.length > 0) {
  827. this.$bus.$emit("showguide", arr);
  828. return;
  829. }
  830. });
  831. },
  832. chioseSchool(val) {
  833. // 清除教学点
  834. this.topFrom.teacher = "";
  835. if (val) {
  836. console.log(this.cooperationList);
  837. this.cooperationList.forEach((item) => {
  838. if (item.id == val) {
  839. console.log(item);
  840. this.$set(this.topFrom, "teacher", item.educationUserId);
  841. // this.topFrom.teacher = item.educationUserId;
  842. }
  843. });
  844. }
  845. console.log("chioseSchool", this.topFrom.teacher);
  846. },
  847. async gotoNext(str) {
  848. let tempStatus;
  849. return new Promise((resolve, reject) => {
  850. this.$refs["topinfo"].validate(async (valid, object) => {
  851. if (!valid) {
  852. this.$message.error("请填写建团必要参数");
  853. // return false
  854. resolve(false);
  855. } else {
  856. // 判断一下是否勾选了课程类型而没有输入金额
  857. // 验证通过
  858. this.$store.dispatch("topinfo", this.topFrom);
  859. if (this.teamStatus == "teamAudit") {
  860. // 获取数据提交
  861. this.$emit("handleClick", { name: "2" });
  862. } else {
  863. this.$emit("getName", this.topFrom.name);
  864. tempStatus = await this.resetSubmit(str);
  865. console.log(tempStatus, "tempStatus");
  866. resolve(tempStatus);
  867. }
  868. }
  869. });
  870. });
  871. },
  872. async resetSubmit(str) {
  873. return new Promise((resolve, reject) => {
  874. this.$refs["topinfo"].validate(async (valid, object) => {
  875. if (!valid) {
  876. this.$message.error("请填写必要参数");
  877. reject();
  878. } else {
  879. let status = null;
  880. // 1.resetTeam 乐团修改
  881. // 2.newTeam 新建乐团
  882. // 3.teamList 跨团修改
  883. // 4.teamDraft 乐团草稿
  884. switch (this.teamStatus) {
  885. case "resetTeam": {
  886. status = "PROGRESS";
  887. break;
  888. }
  889. case "newTeam": {
  890. status = "DRAFT";
  891. break;
  892. }
  893. case "teamList": {
  894. status = null;
  895. break;
  896. }
  897. case "teamDraft": {
  898. status = "DRAFT";
  899. break;
  900. }
  901. }
  902. let obj = {};
  903. // topFrom.ownershipType
  904. // 修改 合并对象
  905. obj.musicGroup = {
  906. settlementType: this.topFrom.salary,
  907. applyExpireDate: dayjs(this.topFrom.time).format(
  908. "YYYY-MM-DD HH:mm:ss"
  909. ),
  910. chargeTypeId: this.topFrom.type,
  911. cooperationOrganId: this.topFrom.school,
  912. courseViewType: this.topFrom.courseViewType,
  913. teamTeacherId: this.topFrom.boss,
  914. // educationalTeacherId: this.topFrom.teacher,
  915. // chioseSchool
  916. enrollClasses: this.topFrom.startClass.join(","),
  917. name: this.topFrom.name,
  918. paymentPattern: this.topFrom.paymentPattern,
  919. paymentValidStartDate: this.topFrom.paymentValidStartDate
  920. ? dayjs(this.topFrom.paymentValidStartDate).format("YYYY-MM-DD")
  921. : this.topFrom.paymentValidStartDate,
  922. paymentValidEndDate: this.topFrom.paymentValidEndDate
  923. ? dayjs(this.topFrom.paymentValidEndDate).format("YYYY-MM-DD")
  924. : this.topFrom.paymentValidEndDate,
  925. organId: this.topFrom.section,
  926. // paymentMonths:obj.months 有待确认
  927. schoolId: this.topFrom.address,
  928. id: this.teamid,
  929. directorUserId: this.topFrom.head,
  930. isClassroomLessons: this.topFrom.isClass,
  931. status,
  932. expectStartGroupDate: this.topFrom.startTime,
  933. ownershipType: this.topFrom.ownershipType,
  934. repairUserId: this.topFrom.repairUserId || null,
  935. feeType: this.topFrom.feeType,
  936. transactionTeacherId: this.topFrom.transactionTeacherId,
  937. homeworkPushFlag: this.topFrom.homeworkPushFlag,
  938. memberCourseShowFlag: this.topFrom.memberCourseShowFlag,
  939. };
  940. // obj.musicGroupPaymentEntities = [];
  941. // createTeam
  942. if (this.teamStatus != "newTeam") {
  943. return await resetTeamBaseInfo(obj).then(async (res) => {
  944. if (res.code == 200) {
  945. localStorage.setItem(
  946. `${this.teamid}base`,
  947. JSON.stringify(this.topFrom)
  948. );
  949. this.$emit("getBaseInfo");
  950. if (this.teamStatus == "teamDraft") {
  951. this.$message.success("保存成功");
  952. if (!str) {
  953. this.$emit("handleClick", { name: "2" });
  954. }
  955. resolve(true);
  956. // 跳到第二页
  957. } else {
  958. this.$message.success("修改乐团成功");
  959. // this.$router.push({ path: '/teamLists', query: { id: this.teamid, name: this.topFrom.name } })
  960. }
  961. resolve(true);
  962. }
  963. });
  964. } else {
  965. // 发送建团申请 成功后跳到第二页
  966. createTeam(obj).then((res) => {
  967. if (res.code == 200) {
  968. // this.$message.success('建团成功,请设置声部信息')
  969. // this.$emit("chiosetab", 1);
  970. const h = this.$createElement;
  971. this.$msgbox({
  972. title: "提示",
  973. message: h("p", null, [
  974. h("p", null, "新乐团基础信息创建完成"),
  975. h("p", null, "请设置声部信息"),
  976. ]),
  977. type: "warning",
  978. confirmButtonText: "是",
  979. cancelButtonText: "否",
  980. showCancelButton: true,
  981. customClass: "messageBox-prompt-test",
  982. })
  983. .then(() => {
  984. this.$router.push(
  985. {
  986. query: merge(this.$route.query, {
  987. type: "teamDraft",
  988. id: res.data,
  989. team_status: "DRAFT",
  990. }),
  991. },
  992. (router) => {
  993. console.log(router);
  994. router.meta.title = "乐团编辑中";
  995. }
  996. );
  997. this.$emit("getName", this.topFrom.name);
  998. this.$emit("handleClick", { name: "2" });
  999. return true;
  1000. })
  1001. .catch(() => {
  1002. this.$router.push(
  1003. {
  1004. query: merge(this.$route.query, {
  1005. type: "teamDraft",
  1006. id: res.data,
  1007. team_status: "DRAFT",
  1008. }),
  1009. },
  1010. (router) => {
  1011. console.log(router);
  1012. router.meta.title = "乐团编辑中";
  1013. }
  1014. );
  1015. this.$emit("getName", this.topFrom.name);
  1016. this.init();
  1017. return true;
  1018. });
  1019. }
  1020. });
  1021. }
  1022. // 发请求
  1023. }
  1024. });
  1025. });
  1026. },
  1027. changeApplyTime(val) {
  1028. this.$set(this.topFrom, "paymentValidStartDate", "");
  1029. this.$set(this.topFrom, "paymentValidEndDate", "");
  1030. // this.topFrom.paymentValidStartDate = ''
  1031. // this.topFrom.paymentValidEndDate = ''
  1032. },
  1033. onReset() {
  1034. this.topFrom = {
  1035. type: "", // 收费类型
  1036. section: "", //所属分部
  1037. school: "", // 合作单位
  1038. courseViewType: "",
  1039. teacher: "", // 乐团主管
  1040. name: "", //乐团名称
  1041. boss: "", // 运营主管
  1042. time: "", // 报名截止时间
  1043. startClass: [], // 招生年级起始
  1044. paymentValid: [], // 缴费有效期时间起始
  1045. address: "", // 教学地点
  1046. salary: "", // 收费模式
  1047. head: "",
  1048. paymentPattern: "", // 缴费方式
  1049. isClass: false, //是否为课堂课
  1050. startTime: "",
  1051. ownershipType: "OWN", // 合作机构类型
  1052. feeType: null,
  1053. homeworkPushFlag: 1,
  1054. memberCourseShowFlag: 0,
  1055. };
  1056. this.$refs["topinfo"].resetFields();
  1057. },
  1058. onGoHome() {
  1059. if (this.paymentNum <= 0) {
  1060. this.$message.error("当前缴费人数为0,无法开团");
  1061. return;
  1062. }
  1063. this.$confirm(`是否确认开团?`, "提示", {
  1064. confirmButtonText: "确定",
  1065. cancelButtonText: "取消",
  1066. type: "warning",
  1067. })
  1068. .then(() => {
  1069. musicGroupFound({
  1070. musicGroupId: this.$route.query.id,
  1071. }).then((res) => {
  1072. if (res.code == 200) {
  1073. // let query = this.$route.query;
  1074. // this.$message.success("开启成功");
  1075. // this.$router.push({
  1076. // path: "/teamList",
  1077. // query: {
  1078. // ...query,
  1079. // },
  1080. // });
  1081. this.onCancel();
  1082. }
  1083. });
  1084. })
  1085. .catch(() => {});
  1086. },
  1087. payStart() {
  1088. this.paymentStatus = true;
  1089. },
  1090. getStudentStatus() {
  1091. let obj = {
  1092. musicGroupId: this.teamid,
  1093. page: 1,
  1094. rows: 9999,
  1095. };
  1096. if (!this.teamid) return;
  1097. getStudentList(obj).then((res) => {
  1098. if (res.code == 200) {
  1099. res.data.rows.forEach((item) => {
  1100. // '未开启缴费', '开启缴费', '已缴费'
  1101. if (item.paymentStatus == 2) {
  1102. this.paymentNum += 1;
  1103. }
  1104. });
  1105. // this.rightList = res.data.rows;
  1106. // this.rules.total = res.data.total;
  1107. // return res;
  1108. }
  1109. });
  1110. },
  1111. payDate() {
  1112. let self = this;
  1113. return {
  1114. firstDayOfWeek: 1,
  1115. disabledDate(time) {
  1116. if (self.applyExpireDate) {
  1117. return (
  1118. time.getTime() <=
  1119. new Date(self.applyExpireDate.replace(/-/g, "/")).getTime()
  1120. );
  1121. } else {
  1122. return false;
  1123. }
  1124. },
  1125. };
  1126. },
  1127. onStartPayment(formName) {
  1128. // 开启缴费
  1129. this.$refs[formName].validate((valid) => {
  1130. if (valid) {
  1131. musicGroupOpenPay({
  1132. musicGroupId: this.teamid,
  1133. expireDate: this.paymentForm.paymentExpireDate,
  1134. // feeType: this.paymentForm.feeType
  1135. }).then((res) => {
  1136. if (res.code == 200) {
  1137. this.$message.success("开启成功");
  1138. this.paymentStatus = false;
  1139. this.$store.dispatch("delVisitedViews", this.$route);
  1140. this.$router.push({ path: "/teamList" });
  1141. // this.$router.push({
  1142. // path: "/business/resetTeaming",
  1143. // query: {
  1144. // status: "PAY",
  1145. // id: this.$route.query.id,
  1146. // name: this.$route.query.name,
  1147. // },
  1148. // });
  1149. // this.team_status = "PAY";
  1150. // this.paymentExpireDate = this.paymentForm.paymentExpireDate;
  1151. // this.getList();
  1152. }
  1153. });
  1154. } else {
  1155. return false;
  1156. }
  1157. });
  1158. },
  1159. applyDate() {
  1160. let self = this;
  1161. return {
  1162. firstDayOfWeek: 1,
  1163. disabledDate(time) {
  1164. if (self.paymentExpireDate) {
  1165. return (
  1166. time.getTime() >
  1167. new Date(self.paymentExpireDate.replace(/-/g, "/")).getTime()
  1168. );
  1169. } else {
  1170. return false;
  1171. }
  1172. },
  1173. };
  1174. },
  1175. extendTime(isPay) {
  1176. this.isPay = isPay;
  1177. if (isPay) {
  1178. // 点击的延长缴费
  1179. this.extendForm.expireDate = this.paymentExpireDate;
  1180. } else {
  1181. // 点击的延长报名
  1182. this.extendForm.expireDate = this.applyExpireDate;
  1183. }
  1184. this.extendPaymentStatus = true;
  1185. },
  1186. onExtendPayment(formName, isPay) {
  1187. this.$refs[formName].validate((valid) => {
  1188. if (valid) {
  1189. if (!isPay) {
  1190. extensionApplyExpire({
  1191. musicGroupId: this.teamid,
  1192. expireDate: this.extendForm.expireDate,
  1193. }).then((res) => {
  1194. if (res.code == 200) {
  1195. this.$message.success("延长报名成功");
  1196. this.extendPaymentStatus = false;
  1197. getTeamBaseInfo({ musicGroupId: this.teamid }).then((res) => {
  1198. if (res.code == 200) {
  1199. this.applyExpireDate = res.data.musicGroup.applyExpireDate;
  1200. this.setBase(res);
  1201. }
  1202. });
  1203. } else {
  1204. this.$message.error(res.msg);
  1205. }
  1206. });
  1207. } else {
  1208. extensionPayment({
  1209. musicGroupId: this.teamid,
  1210. expireDate: this.extendForm.expireDate,
  1211. }).then((res) => {
  1212. if (res.code == 200) {
  1213. this.$message.success("延长缴费成功");
  1214. this.extendPaymentStatus = false;
  1215. getTeamBaseInfo({ musicGroupId: this.teamid }).then((res) => {
  1216. if (res.code == 200) {
  1217. this.paymentExpireDate =
  1218. res.data.musicGroup.paymentExpireDate;
  1219. }
  1220. });
  1221. } else {
  1222. this.$message.error(res.msg);
  1223. }
  1224. });
  1225. }
  1226. }
  1227. });
  1228. },
  1229. onCreateQRCode(type) {
  1230. // 生成报名二维码
  1231. let id = this.teamid;
  1232. this.codeStatus = true;
  1233. if (type == "payment") {
  1234. this.codeTitle = "学员报名链接";
  1235. this.qrCodeUrl = vaildStudentUrl() + "/#/login?musicGroupId=" + id;
  1236. } else if (type == "detail") {
  1237. let teamName = this.$route.query.name;
  1238. this.codeTitle = "报名缴费详情";
  1239. this.qrCodeUrl =
  1240. vaildTeacherUrl() +
  1241. "/#/order?musicGroupId=" +
  1242. id +
  1243. "&musicGroupName=" +
  1244. teamName;
  1245. } else if (type == "rePayment") {
  1246. this.codeTitle = "学生报名链接(无乐器)";
  1247. this.qrCodeUrl =
  1248. vaildStudentUrl() + "/#/login?musicGroupId=" + id + "&instrument=1";
  1249. }
  1250. },
  1251. gotoStudentList() {
  1252. this.$router.push({
  1253. query: merge(this.$route.query, { tabrouter: 7 }),
  1254. });
  1255. // this.$router.replace({query:{...this.$route.query,tabrouter:7}})
  1256. },
  1257. setBase(res) {
  1258. this.topFrom.name = res.data.musicGroup.name;
  1259. this.$emit("getName", this.topFrom.name);
  1260. this.topFrom.time = res.data.musicGroup.applyExpireDate;
  1261. this.topFrom.type = res.data.musicGroup.chargeTypeId;
  1262. this.topFrom.startClass = res.data.musicGroup.enrollClasses.split(",");
  1263. this.topFrom.paymentPattern = res.data.musicGroup.paymentPattern;
  1264. this.topFrom.paymentValidStartDate =
  1265. res.data.musicGroup.paymentValidStartDate;
  1266. this.topFrom.paymentValidEndDate =
  1267. res.data.musicGroup.paymentValidEndDate;
  1268. this.topFrom.section = res.data.musicGroup.organId;
  1269. this.topFrom.courseViewType = res.data.musicGroup.courseViewType;
  1270. this.topFrom.school = res.data.musicGroup.cooperationOrganId;
  1271. this.topFrom.teacher = res.data.musicGroup.educationalTeacherId;
  1272. this.topFrom.boss = res.data.musicGroup.teamTeacherId;
  1273. this.topFrom.address = res.data.musicGroup.schoolId;
  1274. this.topFrom.salary = res.data.musicGroup.settlementType;
  1275. this.topFrom.head = res.data.musicGroup.directorUserId
  1276. ? res.data.musicGroup.directorUserId
  1277. : null;
  1278. this.topFrom.isClass = res.data.musicGroup.isClassroomLessons;
  1279. this.topFrom.startTime = res.data.musicGroup.expectStartGroupDate;
  1280. this.topFrom.ownershipType = res.data.musicGroup.ownershipType;
  1281. this.topFrom.repairUserId = res.data.musicGroup.repairUserId
  1282. ? res.data.musicGroup.repairUserId
  1283. : null;
  1284. this.topFrom.feeType = res.data.musicGroup.feeType
  1285. ? res.data.musicGroup.feeType
  1286. : null;
  1287. this.paymentExpireDate = res.data.musicGroup.paymentExpireDate;
  1288. this.applyExpireDate = res.data.musicGroup.applyExpireDate;
  1289. this.topFrom.transactionTeacherId =
  1290. res.data.musicGroup.transactionTeacherId || "";
  1291. this.topFrom.homeworkPushFlag = res.data.musicGroup.homeworkPushFlag;
  1292. this.topFrom.memberCourseShowFlag = res.data.musicGroup
  1293. .memberCourseShowFlag
  1294. ? 1
  1295. : 0;
  1296. localStorage.setItem(`${this.teamid}base`, JSON.stringify(this.topFrom));
  1297. },
  1298. changeType(val) {
  1299. if (val) {
  1300. localStorage.removeItem(`${this.teamid}sound`);
  1301. }
  1302. },
  1303. checkCourseView(val) {
  1304. if (this.teamStatus == "newTeam" || this.teamStatus == "teamDraft") {
  1305. return false;
  1306. } else {
  1307. if (
  1308. this.topFrom.courseViewType == 0 ||
  1309. this.topFrom.courseViewType == 1
  1310. ) {
  1311. // val ==2
  1312. return false;
  1313. } else {
  1314. return val == 0 || val == 1;
  1315. }
  1316. }
  1317. },
  1318. },
  1319. computed: {
  1320. startClassString() {
  1321. return this.topFrom.startClass
  1322. .map((item) => {
  1323. for (let i in this.classStatus) {
  1324. if (item == this.classStatus[i].value) {
  1325. return this.classStatus[i].label;
  1326. }
  1327. }
  1328. // return this.classStatus[item]
  1329. })
  1330. .join(",");
  1331. },
  1332. showNext() {
  1333. const teamStatus = this.teamStatus;
  1334. return (
  1335. teamStatus == "newTeam" ||
  1336. teamStatus == "teamDraft" ||
  1337. teamStatus == "teamAudit" ||
  1338. teamStatus == "feeAudit"
  1339. );
  1340. },
  1341. },
  1342. };
  1343. </script>
  1344. <style lang="scss" >
  1345. .messageBox-prompt-test {
  1346. .el-message-box__status {
  1347. top: 25% !important;
  1348. }
  1349. }
  1350. .base-container {
  1351. overflow: auto;
  1352. // display: flex;
  1353. // flex-direction: row;
  1354. // justify-content: flex-start;
  1355. // flex-wrap: nowrap;
  1356. font-size: 14px;
  1357. color: #444;
  1358. // width: fill-available;
  1359. .banseLeft {
  1360. // width: 1050px;
  1361. .head {
  1362. height: 48px;
  1363. line-height: 48px;
  1364. background-color: #edeef0;
  1365. font-size: 14px;
  1366. font-weight: bold;
  1367. color: #444;
  1368. padding: 0 11px;
  1369. margin-bottom: 20px;
  1370. }
  1371. .noMargin.head {
  1372. margin-bottom: 0;
  1373. }
  1374. .num {
  1375. padding: 15px 11px;
  1376. }
  1377. .checkRow {
  1378. min-width: 1200px;
  1379. padding-left: 28px;
  1380. display: flex;
  1381. flex-direction: row;
  1382. justify-content: flex-start;
  1383. flex-wrap: nowrap;
  1384. overflow: auto;
  1385. .el-checkbox {
  1386. line-height: 72px;
  1387. width: 120px;
  1388. }
  1389. .inputWrap {
  1390. line-height: 72px;
  1391. font-size: 14px;
  1392. color: #777;
  1393. margin-left: 65px;
  1394. input {
  1395. // border: none;
  1396. // width: 80px;
  1397. // margin-right: 10px;
  1398. // outline: none;
  1399. }
  1400. }
  1401. .inputWrap.rightFirst {
  1402. margin-left: 245px;
  1403. }
  1404. .textWrap {
  1405. display: flex;
  1406. flex-direction: row;
  1407. justify-content: flex-start;
  1408. font-size: 14px;
  1409. color: #777;
  1410. align-items: center;
  1411. span {
  1412. color: #f97215;
  1413. }
  1414. }
  1415. .selectWrap {
  1416. font-size: 14px;
  1417. padding-top: 5px;
  1418. margin-left: 100px;
  1419. margin-right: 52px;
  1420. .rowSelect {
  1421. .el-input__inner {
  1422. min-height: 69px;
  1423. }
  1424. }
  1425. }
  1426. .chioseList {
  1427. display: flex;
  1428. flex-direction: row;
  1429. justify-content: flex-start;
  1430. align-items: center;
  1431. font-size: 14px;
  1432. color: #777;
  1433. margin-left: 64px;
  1434. .chioseItem {
  1435. width: 80px;
  1436. height: 30px;
  1437. border-radius: 15px;
  1438. border: 1px solid #979797;
  1439. margin-right: 10px;
  1440. line-height: 30px;
  1441. text-align: center;
  1442. cursor: pointer;
  1443. }
  1444. .chioseItem.active {
  1445. background-color: #14928a;
  1446. border: 1px solid #14928a;
  1447. color: #fff;
  1448. }
  1449. }
  1450. // &:nth-child(even) {
  1451. // background-color: #c6cbd4;
  1452. // input {
  1453. // background-color: #c6cbd4;
  1454. // }
  1455. // }
  1456. }
  1457. }
  1458. .btnWrap {
  1459. margin-top: 30px;
  1460. }
  1461. .el-checkbox__input.is-checked + .el-checkbox__label {
  1462. color: #606266;
  1463. }
  1464. .subTitle {
  1465. // width: 1203px;
  1466. height: 40px;
  1467. line-height: 40px;
  1468. background-color: #fefceb;
  1469. padding: 0 25px;
  1470. box-sizing: border-box;
  1471. font-size: 16px;
  1472. color: #474747;
  1473. margin-bottom: 20px;
  1474. }
  1475. .chioseWrap {
  1476. margin-bottom: 30px;
  1477. display: flex;
  1478. flex-direction: row;
  1479. padding: 0 25px;
  1480. p {
  1481. width: 80px;
  1482. font-size: 14px;
  1483. // margin-right: 30px;
  1484. }
  1485. }
  1486. .classCheckBox {
  1487. margin-right: 10px;
  1488. }
  1489. }
  1490. </style>
  1491. <style scoped lang="scss">
  1492. .banseLeft {
  1493. /deep/.el-form--inline {
  1494. .el-form-item__content {
  1495. display: block;
  1496. }
  1497. }
  1498. /deep/.el-select {
  1499. width: 300px !important;
  1500. }
  1501. /deep/.el-date-editor {
  1502. width: 300px !important;
  1503. }
  1504. /deep/.el-checkbox {
  1505. margin-left: 15px !important;
  1506. }
  1507. /deep/.el-input {
  1508. position: relative;
  1509. font-size: 14px;
  1510. display: inline-block;
  1511. width: 300px;
  1512. }
  1513. }
  1514. input[disabled] {
  1515. background-color: #fff;
  1516. border-color: #b3b3b3;
  1517. color: #606266;
  1518. }
  1519. /deep/.el-radio-button__orig-radio:checked + .el-radio-button__inner {
  1520. background-color: rgb(19, 129, 122);
  1521. border-color: rgb(19, 129, 122);
  1522. // -webkit-box-shadow: -1px 0 0 0 rgb (19, 129, 122);
  1523. box-shadow: -1px 0 0 rgb(19, 129, 122);
  1524. color: #fff;
  1525. outline: none;
  1526. }
  1527. /deep/.el-radio-button__inner {
  1528. &:hover {
  1529. color: rgb(19, 129, 122);
  1530. }
  1531. outline: none;
  1532. }
  1533. /deep/.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled) {
  1534. -webkit-box-shadow: none;
  1535. box-shadow: none;
  1536. }
  1537. </style>