memberSet.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782
  1. <template>
  2. <div class="m-container">
  3. <h2>
  4. <div class="squrt"></div>
  5. 学练宝设置
  6. </h2>
  7. <div class="m-core">
  8. <save-form
  9. :inline="true"
  10. class="searchForm"
  11. save-key="memberSet"
  12. @submit="search"
  13. @reset="onReSet"
  14. :model.sync="searchForm"
  15. >
  16. <!-- 状态 指导老师 活动方案-->
  17. <el-form-item prop="name">
  18. <el-input
  19. v-model.trim="searchForm.name"
  20. clearable
  21. placeholder="学练宝名称"
  22. ></el-input>
  23. </el-form-item>
  24. <el-form-item prop="createTimer">
  25. <el-date-picker
  26. v-model.trim="searchForm.createTimer"
  27. type="daterange"
  28. value-format="yyyy-MM-dd"
  29. range-separator="至"
  30. start-placeholder="更新开始时间"
  31. end-placeholder="更新结束时间"
  32. :picker-options="{ firstDayOfWeek: 1 }"
  33. ></el-date-picker>
  34. </el-form-item>
  35. <el-form-item prop="updateName">
  36. <el-input
  37. v-model.trim="searchForm.updateName"
  38. clearable
  39. placeholder="更新人"
  40. ></el-input>
  41. </el-form-item>
  42. <el-form-item>
  43. <el-button native-type="submit" type="danger">搜索</el-button>
  44. <el-button native-type="reset" type="primary">重置</el-button>
  45. </el-form-item>
  46. </save-form>
  47. <el-button
  48. type="primary"
  49. style="margin-bottom: 20px"
  50. v-permission="'memberRankSetting/add'"
  51. @click="addLeave"
  52. >新增</el-button
  53. >
  54. <el-table
  55. :data="tableList"
  56. :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
  57. row-key="id"
  58. :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
  59. >
  60. <el-table-column prop="name" label="学练宝名称"></el-table-column>
  61. <el-table-column align="center" prop="intro" label="学练宝介绍">
  62. <template slot-scope="scope">
  63. <tooltip :content="scope.row.intro" />
  64. </template>
  65. </el-table-column>
  66. <el-table-column
  67. align="center"
  68. prop="musicCount"
  69. label="曲目数量"
  70. ></el-table-column>
  71. <el-table-column
  72. align="center"
  73. prop="updateTime"
  74. label="更新时间"
  75. ></el-table-column>
  76. <el-table-column
  77. align="center"
  78. prop="operatorName"
  79. label="更新人"
  80. ></el-table-column>
  81. <el-table-column align="center" label="操作">
  82. <template slot-scope="scope">
  83. <div>
  84. <auth auths="memberRankSetting/get">
  85. <el-button v-if="scope.row.parentId <= 0" type="text" @click="addLeave(scope.row)"
  86. >添加子版本</el-button
  87. >
  88. </auth>
  89. <!-- memberRankSetting/add -->
  90. <auth auths="memberRankSetting/get">
  91. <el-button type="text" @click="resetMember(scope.row)"
  92. >详情</el-button
  93. >
  94. </auth>
  95. <auth
  96. :auths="['memberRankSetting/get', 'memberRankSetting/update']"
  97. mulit
  98. >
  99. <el-button type="text" @click="resetMember(scope.row, 'update')"
  100. >修改</el-button
  101. >
  102. </auth>
  103. <el-button type="text" @click="removeMember(scope.row)"
  104. >删除</el-button
  105. >
  106. </div>
  107. </template>
  108. </el-table-column>
  109. </el-table>
  110. <!-- <pagination
  111. save-key="memberSet"
  112. :total.sync="rules.total"
  113. sync
  114. :page.sync="rules.page"
  115. :limit.sync="rules.limit"
  116. :page-sizes="rules.page_size"
  117. @pagination="getList"
  118. /> -->
  119. </div>
  120. <el-dialog
  121. :title="title"
  122. :close-on-click-modal="false"
  123. :visible.sync="branchStatus"
  124. v-if="branchStatus"
  125. default-expand-all
  126. @close="onFormClose('ruleForm')"
  127. width="800px"
  128. >
  129. <el-form :model="form" :inline="true" ref="ruleForm">
  130. <el-alert
  131. title="学练宝信息"
  132. type="info"
  133. :closable="false"
  134. style="margin-bottom: 20px"
  135. >
  136. </el-alert>
  137. <el-form-item
  138. label="父级"
  139. prop="parentName"
  140. v-if="form.parentId"
  141. :label-width="formLabelWidth"
  142. >
  143. <el-input
  144. :disabled="true"
  145. v-model.trim="form.parentName"
  146. style="width: 620px"
  147. ></el-input>
  148. </el-form-item>
  149. <el-form-item
  150. label="学练宝名称"
  151. prop="name"
  152. :label-width="formLabelWidth"
  153. :rules="[{ required: true, message: '请输入学练宝名称' }]"
  154. >
  155. <el-input
  156. :disabled="addDisabled"
  157. v-model.trim="form.name"
  158. autocomplete="off"
  159. style="width: 620px"
  160. maxlength="10"
  161. show-word-limit
  162. placeholder="请输入学练宝名称"
  163. ></el-input>
  164. </el-form-item>
  165. <el-form-item
  166. label="学练宝介绍"
  167. prop="intro"
  168. :label-width="formLabelWidth"
  169. :rules="[{ required: true, message: '请输入学练宝介绍' }]"
  170. >
  171. <el-input
  172. maxlength="200"
  173. show-word-limit
  174. :disabled="addDisabled"
  175. v-model.trim="form.intro"
  176. autocomplete="off"
  177. type="textarea"
  178. :rows="5"
  179. style="width: 620px"
  180. placeholder="请输入学练宝介绍"
  181. ></el-input>
  182. </el-form-item>
  183. <el-alert
  184. title="学练宝权益"
  185. type="info"
  186. :closable="false"
  187. style="margin-bottom: 20px"
  188. >
  189. </el-alert>
  190. <el-form-item label="搜索:" :label-width="formLabelWidth">
  191. <el-input
  192. style="width: 210px"
  193. v-model.trim="searchRoleValue"
  194. placeholder="请输入搜索内容"
  195. ></el-input>
  196. <el-button
  197. style="margin-left: 10px"
  198. type="danger"
  199. @click="searchRoles"
  200. >搜索</el-button
  201. >
  202. <el-button type="primary" @click="onReSetRole">重置</el-button>
  203. </el-form-item>
  204. <br />
  205. <el-form-item label="学练宝内容" :label-width="formLabelWidth">
  206. <el-checkbox
  207. :disabled="addDisabled || this.buyFlag && pageType === 'update'"
  208. :indeterminate="isMemberIndeterminate"
  209. @change="onCheckMemberAll"
  210. v-model.trim="memberCheckAll"
  211. >全选</el-checkbox
  212. >
  213. <div>
  214. <el-tree
  215. class="tree"
  216. :data="treeMemberData"
  217. show-checkbox
  218. node-key="id"
  219. @check="onTreeMemberCheck"
  220. :filter-node-method="filterNode"
  221. ref="memberTrees"
  222. highlight-current
  223. :default-checked-keys="memberCheckList"
  224. :props="defaultProps"
  225. >
  226. <div slot-scope="{ node, data }">
  227. {{ node.label }}
  228. </div>
  229. </el-tree>
  230. </div>
  231. </el-form-item>
  232. <el-form-item label="学练宝内容2" :label-width="formLabelWidth">
  233. <!-- <el-checkbox
  234. :disabled="addDisabled"
  235. :indeterminate="isMemberIndeterminate"
  236. @change="onCheckMemberAll"
  237. v-model.trim="memberCheckAll"
  238. >全选</el-checkbox
  239. > -->
  240. <div style="padding-top: 5px;">
  241. <el-tree
  242. class="tree"
  243. :data="treeClassData"
  244. show-checkbox
  245. node-key="id"
  246. @check="onTreeClassCheck"
  247. :filter-node-method="filterNode"
  248. ref="classTrees"
  249. highlight-current
  250. :default-checked-keys="classCheckList"
  251. :props="defaultProps"
  252. >
  253. <div slot-scope="{ node, data }">
  254. {{ node.label }}
  255. </div>
  256. </el-tree>
  257. </div>
  258. </el-form-item>
  259. <el-form-item label="学练宝功能" :label-width="formLabelWidth">
  260. <el-checkbox
  261. :disabled="addDisabled || this.buyFlag && pageType === 'update'"
  262. :indeterminate="isIndeterminate"
  263. @change="onCheckAll"
  264. v-model.trim="checkAll"
  265. >全选</el-checkbox
  266. >
  267. <div>
  268. <el-tree
  269. class="tree"
  270. :data="treeData"
  271. show-checkbox
  272. node-key="id"
  273. ref="trees"
  274. @check="onTreeCheck"
  275. :filter-node-method="filterNode"
  276. highlight-current
  277. :default-checked-keys="checkList"
  278. :props="defaultProps"
  279. >
  280. <div slot-scope="{ node, data }">
  281. {{ node.label }}
  282. </div>
  283. </el-tree>
  284. </div>
  285. </el-form-item>
  286. </el-form>
  287. <span slot="footer" class="dialog-footer">
  288. <el-button v-if="!addDisabled" @click="branchStatus = false"
  289. >取 消</el-button
  290. >
  291. <el-button @click="onSubmit" type="primary">确 定</el-button>
  292. </span>
  293. </el-dialog>
  294. </div>
  295. </template>
  296. <script>
  297. import pagination from "@/components/Pagination/index";
  298. import Upload from "@/components/Upload/index";
  299. import ImageCropper from "@/components/ImageCropper";
  300. import Tooltip from "@/components/Tooltip/index";
  301. import {
  302. addMemberRank,
  303. getmemberRankList,
  304. getmemberRankDetail,
  305. resetMemberRank,
  306. api_memberRankCategoryTree,
  307. api_memberRankDel
  308. } from "./api";
  309. import { getTimeFormat } from "@/utils";
  310. import { getMemberPrivilegesItem } from "@/views/dictionaryManager/api";
  311. export default {
  312. components: { pagination, Upload, ImageCropper, Tooltip },
  313. name: "memberSet",
  314. data() {
  315. return {
  316. formLabelWidth: "120px",
  317. searchForm: {
  318. name: null,
  319. updateName: null,
  320. createTimer: []
  321. },
  322. rules: {
  323. // 分页规则
  324. limit: 10, // 限制显示条数
  325. page: 1, // 当前页
  326. total: 0, // 总条数
  327. page_size: [10, 20, 40, 50] // 选择限制显示条数
  328. },
  329. tableList: [],
  330. title: "新增会员等级",
  331. branchStatus: false,
  332. form: {
  333. name: null,
  334. intro: null,
  335. memberCategoryIdList: [],
  336. memberCourseTypeList: [],
  337. memberPrivilegesItemIdList: []
  338. },
  339. buyFlag: false, // 是否购买
  340. addDisabled: false,
  341. checkAll: false,
  342. isIndeterminate: false,
  343. memberCheckAll: false,
  344. isMemberIndeterminate: false,
  345. treeData: [],
  346. treeMemberData: [],
  347. treeClassData: [],
  348. defaultProps: {
  349. children: "children",
  350. label: "label",
  351. disabled: this.addDisabled
  352. },
  353. result: {
  354. roleName: null,
  355. roleDesc: null
  356. },
  357. classList: [],
  358. classCount: 0,
  359. memberRankList: [],
  360. memberRankCount: 0,
  361. searchRoleValue: "",
  362. silderList: [],
  363. slideCount: 0,
  364. pageType: "",
  365. allChildIds: [],
  366. allMemberChildIds: [],
  367. allClassChildIds: [],
  368. checkList: [],
  369. memberCheckList: [],
  370. classCheckList: [],
  371. searchName: ""
  372. };
  373. },
  374. async mounted() {
  375. this.getList();
  376. },
  377. methods: {
  378. onFormClose(ruleForm) {
  379. this.form = {
  380. name: "",
  381. icon: "",
  382. into: ""
  383. };
  384. this.$refs.trees.setCheckedNodes([]);
  385. this.onTreeCheck();
  386. this.$refs[ruleForm].resetFields();
  387. },
  388. search() {
  389. this.rules.page = 1;
  390. this.getList();
  391. },
  392. onReSet() {
  393. this.searchForm = {
  394. name: null,
  395. updateName: null,
  396. createTimer: []
  397. };
  398. this.search();
  399. },
  400. async getList() {
  401. try {
  402. // this.tableList = []
  403. let { createTimer, ...reset } = this.searchForm;
  404. const res = await getmemberRankList({
  405. ...reset,
  406. ...getTimeFormat(
  407. createTimer,
  408. ["updateStartTime", "updateEndTime"],
  409. "YYYY-MM-DD"
  410. )
  411. // rows: this.rules.limit,
  412. // page: this.rules.page,
  413. });
  414. this.tableList = res.data;
  415. // this.rules.total = res.data.total;
  416. } catch {}
  417. },
  418. async addLeave(row) {
  419. this.checkList = [];
  420. this.memberCheckList = [];
  421. this.classCheckList = [];
  422. this.isIndeterminate = false;
  423. this.checkAll = false;
  424. this.isMemberIndeterminate = false;
  425. this.memberCheckAll = false;
  426. this.title = "新增";
  427. // 添加新增
  428. this.form.name = null;
  429. this.form.intro = null;
  430. if (row) {
  431. this.form.parentId = row.id;
  432. this.form.parentName = row.name
  433. } else {
  434. this.form.parentId = 0
  435. }
  436. this.addDisabled = false;
  437. this.pageType = "create";
  438. await this.getMemberRankList(this.form.parentId || null);
  439. this.memberRankCount = 0;
  440. this.treeMemberData = await this.setMemberTableData(
  441. this.memberRankList,
  442. this.addDisabled
  443. );
  444. this.classCount = 0;
  445. this.treeClassData = await this.setMemberTableData(
  446. this.classList,
  447. this.addDisabled,
  448. "class"
  449. );
  450. await this.getNewTree(this.form.parentId || null);
  451. this.slideCount = 0;
  452. this.treeData = await this.setTableData(
  453. this.silderList,
  454. this.addDisabled
  455. );
  456. this.branchStatus = true;
  457. },
  458. onSubmit() {
  459. this.$refs.ruleForm.validate(async flag => {
  460. if (flag) {
  461. const tempIds = this.$refs.trees.getCheckedKeys();
  462. const halfIds = this.$refs.trees.getHalfCheckedKeys();
  463. const allIds = [...tempIds, ...halfIds];
  464. const memberTempIds = this.$refs.memberTrees.getCheckedKeys();
  465. const memberHalfIds = this.$refs.memberTrees.getHalfCheckedKeys();
  466. const memberAllIds = [...memberTempIds, ...memberHalfIds];
  467. const classTempIds = this.$refs.classTrees.getCheckedKeys();
  468. const classHalfIds = this.$refs.classTrees.getHalfCheckedKeys();
  469. const classAllIds = [...classTempIds, ...classHalfIds];
  470. if (this.pageType == "update") {
  471. try {
  472. await resetMemberRank({
  473. ...this.form,
  474. memberPrivilegesItemIdList: allIds,
  475. memberCategoryIdList: memberAllIds,
  476. memberCourseTypeList: classAllIds
  477. });
  478. this.$message.success("修改成功");
  479. this.branchStatus = false;
  480. this.getList();
  481. } catch {}
  482. } else if (this.pageType == "create") {
  483. try {
  484. await addMemberRank({
  485. ...this.form,
  486. memberPrivilegesItemIdList: allIds,
  487. memberCategoryIdList: memberAllIds,
  488. memberCourseTypeList: classAllIds
  489. });
  490. this.$message.success("新建成功");
  491. this.branchStatus = false;
  492. this.getList();
  493. } catch {}
  494. } else {
  495. this.branchStatus = false;
  496. }
  497. }
  498. });
  499. },
  500. onCheckMemberAll(val) {
  501. if (val) {
  502. // 先去掉半选
  503. this.isMemberIndeterminate = false;
  504. this.$refs.memberTrees.setCheckedNodes(this.treeMemberData);
  505. } else {
  506. this.$refs.memberTrees.setCheckedNodes([]);
  507. }
  508. },
  509. onCheckAll(val) {
  510. if (val) {
  511. // 先去掉半选
  512. this.isIndeterminate = false;
  513. this.$refs.trees.setCheckedNodes(this.treeData);
  514. } else {
  515. this.$refs.trees.setCheckedNodes([]);
  516. }
  517. },
  518. onTreeMemberCheck() {
  519. let checkTree = this.$refs.memberTrees.getCheckedKeys();
  520. this.memberCheckAll = checkTree.length >= this.memberRankCount;
  521. this.isMemberIndeterminate =
  522. checkTree.length > 0 && checkTree.length < this.memberRankCount;
  523. },
  524. onTreeClassCheck() {},
  525. onTreeCheck() {
  526. let checkTree = this.$refs.trees.getCheckedKeys();
  527. this.checkAll = checkTree.length >= this.slideCount;
  528. this.isIndeterminate =
  529. checkTree.length > 0 && checkTree.length < this.slideCount;
  530. },
  531. filterNode(value, data) {
  532. if (!value) return true;
  533. return data.label.indexOf(value) !== -1;
  534. },
  535. searchRoles() {
  536. this.$refs.memberTrees.filter(this.searchRoleValue);
  537. this.$refs.classTrees.filter(this.searchRoleValue);
  538. this.$refs.trees.filter(this.searchRoleValue);
  539. },
  540. onReSetRole() {
  541. this.searchRoleValue = "";
  542. this.$refs.memberTrees.filter(this.searchRoleValue);
  543. this.$refs.classTrees.filter(this.searchRoleValue);
  544. this.$refs.trees.filter(this.searchRoleValue);
  545. },
  546. setTableData(result, disabled) {
  547. let list = [];
  548. list = result.map(res => {
  549. let tempList = {};
  550. tempList = {
  551. id: res.id,
  552. name: res.name,
  553. label: res.name,
  554. disabled: disabled ? disabled : false
  555. };
  556. this.slideCount++;
  557. if (res.memberPrivilegesItems && res.memberPrivilegesItems.length > 0) {
  558. tempList.children = this.setTableData(
  559. res.memberPrivilegesItems,
  560. disabled
  561. );
  562. }
  563. return tempList;
  564. });
  565. return list;
  566. },
  567. setMemberTableData(result, disabled, type = "music") {
  568. let list = [];
  569. list = result.map(res => {
  570. let tempList = {};
  571. tempList = {
  572. id: res.id,
  573. name: res.name,
  574. label: res.name,
  575. disabled: disabled ? disabled : false
  576. };
  577. if (type === "music") {
  578. this.memberRankCount++;
  579. } else {
  580. this.classCount++;
  581. }
  582. if (
  583. res.sysMusicScoreCategoriesList &&
  584. res.sysMusicScoreCategoriesList.length > 0
  585. ) {
  586. tempList.children = this.setMemberTableData(
  587. res.sysMusicScoreCategoriesList,
  588. disabled
  589. );
  590. }
  591. return tempList;
  592. });
  593. return list;
  594. },
  595. removeMember(row) {
  596. this.$confirm("是否删除该学练宝设置?", "提示", {
  597. confirmButtonText: "确定",
  598. cancelButtonText: "取消",
  599. type: "warning"
  600. })
  601. .then(async () => {
  602. await api_memberRankDel({ id: row.id });
  603. this.$message.success("删除成功");
  604. this.getList()
  605. })
  606. .catch(() => {});
  607. },
  608. async resetMember(row, type) {
  609. this.branchStatus = true;
  610. await this.resetTree(row);
  611. let tempStatus = false
  612. if (type) {
  613. this.title = "修改";
  614. this.pageType = "update";
  615. this.addDisabled = false;
  616. tempStatus = this.buyFlag
  617. } else {
  618. this.addDisabled = true;
  619. tempStatus = true;
  620. this.title = "查看";
  621. this.pageType = "";
  622. }
  623. this.slideCount = 0;
  624. this.treeData = await this.setTableData(
  625. this.silderList,
  626. tempStatus
  627. );
  628. this.memberRankCount = 0;
  629. this.treeMemberData = await this.setMemberTableData(
  630. this.memberRankList,
  631. tempStatus
  632. );
  633. this.classCount = 0;
  634. this.treeClassData = await this.setMemberTableData(
  635. this.classList,
  636. tempStatus,
  637. "class"
  638. );
  639. },
  640. //递归获取到所有的为子级的ID
  641. getParent(checkIds, data, type = "tree") {
  642. let removeIds = JSON.parse(JSON.stringify(checkIds));
  643. this.getAllChildIds(data, type);
  644. let tempAllChildIds = [];
  645. if (type === "tree") {
  646. tempAllChildIds = this.allChildIds;
  647. } else if (type === "member") {
  648. tempAllChildIds = this.allMemberChildIds;
  649. } else if (type === "class") {
  650. tempAllChildIds = this.allClassChildIds;
  651. }
  652. for (let i = checkIds.length; i > 0; i--) {
  653. if (!tempAllChildIds.includes(Number(checkIds[i - 1]))) {
  654. removeIds.splice(i - 1, 1);
  655. }
  656. }
  657. return removeIds;
  658. },
  659. getAllChildIds(data, type) {
  660. // 获取所有最子集编号
  661. data.forEach(item => {
  662. let temp = [];
  663. if (item.children && item.children.length > 0) {
  664. temp = this.getAllChildIds(item.children, type);
  665. } else {
  666. if (type === "member") {
  667. this.allMemberChildIds.push(item.id);
  668. } else if (type === "class") {
  669. this.allClassChildIds.push(item.id);
  670. } else if (type === "tree") {
  671. this.allChildIds.push(item.id);
  672. }
  673. }
  674. });
  675. },
  676. async resetTree(row) {
  677. try {
  678. await this.getNewTree(row.parentId || null);
  679. await this.getMemberRankList(row.parentId || null);
  680. this.treeMemberData = await this.setMemberTableData(
  681. this.memberRankList
  682. );
  683. this.treeClassData = await this.setMemberTableData(
  684. this.classList,
  685. false,
  686. "class"
  687. );
  688. this.treeData = await this.setTableData(this.silderList);
  689. const { data } = await getmemberRankDetail({
  690. memberRankSettingId: row.id
  691. });
  692. this.buyFlag = data.buyFlag || false
  693. this.form = { ...data };
  694. console.log(row.parentId, 'parentId')
  695. if(row.parentId) {
  696. this.form.parentId = row.parentId;
  697. this.form.parentName = row.parentName
  698. }
  699. this.checkAll =
  700. data.memberPrivilegesItemIdList?.length >= this.slideCount && data.memberPrivilegesItemIdList?.length > 0 || false;
  701. // 反写树的值
  702. this.isIndeterminate =
  703. data.memberPrivilegesItemIdList?.length > 0 &&
  704. data.memberPrivilegesItemIdList?.length < this.slideCount;
  705. this.checkList = data.memberPrivilegesItemIdList;
  706. let tSplice = this.getParent(
  707. data.memberPrivilegesItemIdList || [],
  708. this.treeData
  709. );
  710. this.checkList = tSplice;
  711. this.$nextTick(() => {
  712. this.$refs.trees.setCheckedKeys(this.checkList);
  713. });
  714. this.memberCheckAll = data.memberCategoryIdList?.length >= this.memberRankCount && data.memberCategoryIdList?.length > 0 || false;
  715. this.isMemberIndeterminate = data.memberCategoryIdList?.length > 0 && data.memberCategoryIdList?.length < this.memberRankCount;
  716. this.memberCheckList = data.memberCategoryIdList;
  717. const mSplice = this.getParent(data.memberCategoryIdList || [], this.treeMemberData, 'member')
  718. this.memberCheckList = mSplice;
  719. this.$nextTick(() => {
  720. this.$refs.memberTrees.setCheckedKeys(this.memberCheckList);
  721. });
  722. // this.classCheckAll =
  723. // data.memberCourseTypeList?.length >= this.memberRankCount || false;
  724. // this.isClassIndeterminate =
  725. // data.memberCourseTypeList?.length > 0 &&
  726. // data.memberCourseTypeList?.length < this.memberRankCount;
  727. this.classCheckList = data.memberCourseTypeList;
  728. const cSplice = this.getParent(
  729. data.memberCourseTypeList || [],
  730. this.treeClassData,
  731. "class"
  732. );
  733. this.classCheckList = cSplice;
  734. this.$nextTick(() => {
  735. this.$refs.classTrees.setCheckedKeys(this.classCheckList);
  736. });
  737. } catch (e) {
  738. console.log(e);
  739. }
  740. },
  741. async getNewTree(parentId) {
  742. try {
  743. const resTree = await getMemberPrivilegesItem({ parentMemberId: parentId });
  744. this.silderList = resTree.data;
  745. this.slideCount = 0;
  746. } catch {}
  747. },
  748. async getMemberRankList(parentId) {
  749. try {
  750. const { data } = await api_memberRankCategoryTree({ parentMemberId: parentId });
  751. this.memberRankList = data.musicScoreCategories || [];
  752. this.memberRankCount = 0;
  753. this.classList = data.lessonCategories || [];
  754. this.classCount = 0;
  755. } catch {}
  756. }
  757. }
  758. };
  759. </script>
  760. <style lang="scss" scoped>
  761. .tree {
  762. min-width: 630px;
  763. }
  764. </style>