ExercisesList.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621
  1. <template>
  2. <div class="ev-list-container">
  3. <div class="ev-header">
  4. <Icon type="md-bookmarks" size="30" color="rgb(16, 171, 231)" />
  5. <span class="ev-title">题库列表</span>
  6. <span class="ev-length">共 {{list.length}} 道题</span>
  7. </div>
  8. <!-- 筛选部分 -->
  9. <div class="filter-wrap">
  10. <div class="filter-item">
  11. <span class="filter-title">来源:</span>
  12. <RadioGroup v-model="filterOrigin" type="button" @on-change="filterOriginChange">
  13. <Radio label="self">个人私有库</Radio>
  14. <Radio label="school">学校公用库</Radio>
  15. <Radio label="system">系统公用库</Radio>
  16. </RadioGroup>
  17. </div>
  18. <div class="filter-item">
  19. <span class="filter-title">题型:</span>
  20. <RadioGroup v-model="filterType" type="button" @on-change="filterTypeChange">
  21. <Radio label="all">全部</Radio>
  22. <Radio label="Single">单选</Radio>
  23. <Radio label="Multiple">多选</Radio>
  24. <Radio label="Judge">判断</Radio>
  25. <Radio label="Complete">填空</Radio>
  26. <Radio label="Subjective">问答</Radio>
  27. </RadioGroup>
  28. </div>
  29. <div class="filter-item">
  30. <span class="filter-title">难度:</span>
  31. <RadioGroup v-model="filterDiff" type="button" @on-change="filterDiffChange">
  32. <Radio label="all">全部</Radio>
  33. <Radio label="0">容易</Radio>
  34. <Radio label="1">较易</Radio>
  35. <Radio label="2">一般</Radio>
  36. <Radio label="3">较难</Radio>
  37. <Radio label="4">困难</Radio>
  38. </RadioGroup>
  39. </div>
  40. <div class="filter-item">
  41. <span class="filter-title">排序:</span>
  42. <RadioGroup v-model="filterSort" type="button" @on-change="filterSortChange">
  43. <Radio label="0">新增时间<Icon type="md-arrow-round-down" /></Radio>
  44. <Radio label="1">使用次数<Icon type="md-arrow-round-down" /></Radio>
  45. </RadioGroup>
  46. </div>
  47. </div>
  48. <div class="ev-list-operation">
  49. <Checkbox v-model="isShowAnswer">展示答案与解析</Checkbox>
  50. <span class="import-exercise">
  51. <Upload multiple action="api/ImportExercise/uploadWord" :headers="headers" :show-upload-list="isShowUploadList" :on-success="uploadSuccess">
  52. <Button type="info">导入习题</Button>
  53. </Upload>
  54. </span>
  55. <div class="operation-cart">
  56. <Poptip trigger="hover" title="我的试题篮" placement="bottom">
  57. <Badge :count="basketCount" show-zero type="success">
  58. <img src="../../../assets/icon/icon_cart.png" />
  59. </Badge>
  60. <div class="basket-content" slot="content">
  61. <p class="basket-title">共计 {{basketCount}} 道题</p>
  62. <div class="basket-body">
  63. <div class="basket-item">
  64. <span>单选题</span>
  65. <Progress :percent="basketList.all.length ? Number((basketList.Single.length / basketList.all.length)*100) : 0" stroke-color="rgb(16, 171, 231)" hide-info />
  66. <span style="margin-left:10px">{{ basketList.Single.length }} 道 <span class="basket-delete" @click="handleBasketDelete('Single')">删除</span></span>
  67. </div>
  68. <div class="basket-item">
  69. <span>多选题</span>
  70. <Progress :percent="basketList.all.length ? Number((basketList.Multiple.length / basketList.all.length)*100) : 0" stroke-color="rgb(16, 171, 231)" hide-info />
  71. <span style="margin-left:10px">{{ basketList.Multiple.length}} 道 <span class="basket-delete" @click="handleBasketDelete('Multiple')">删除</span></span>
  72. </div>
  73. <div class="basket-item">
  74. <span>判断题</span>
  75. <Progress :percent="basketList.all.length ? Number((basketList.Judge.length / basketList.all.length)*100) : 0" stroke-color="rgb(16, 171, 231)" hide-info />
  76. <span style="margin-left:10px">{{ basketList.Judge.length}} 道 <span class="basket-delete" @click="handleBasketDelete('Judge')">删除</span></span>
  77. </div>
  78. <div class="basket-item">
  79. <span>填空题</span>
  80. <Progress :percent="basketList.all.length ? Number((basketList.Complete.length / basketList.all.length)*100) : 0" stroke-color="rgb(16, 171, 231)" hide-info />
  81. <span style="margin-left:10px">{{ basketList.Complete.length}} 道 <span class="basket-delete" @click="handleBasketDelete('Complete')">删除</span></span>
  82. </div>
  83. <div class="basket-item">
  84. <span>问答题</span>
  85. <Progress :percent="basketList.all.length ? Number((basketList.Subjective.length / basketList.all.length)*100) : 0" stroke-color="rgb(16, 171, 231)" hide-info />
  86. <span style="margin-left:10px">{{ basketList.Subjective.length}} 道 <span class="basket-delete" @click="handleBasketDelete('Subjective')">删除</span></span>
  87. </div>
  88. <div class="basket-item">
  89. <span>综合题</span>
  90. <Progress :percent="basketList.all.length ? Number((basketList.Compose.length / basketList.all.length)*100) : 0" stroke-color="rgb(16, 171, 231)" hide-info />
  91. <span style="margin-left:10px">{{ basketList.Compose.length}} 道 <span class="basket-delete" @click="handleBasketDelete('Compose')">删除</span></span>
  92. </div>
  93. </div>
  94. <div :class="[basketList.all.length ? 'basket-footer' : 'basket-footer-no']">
  95. <p @click="handleSubmitPaper">进入组卷中心</p>
  96. </div>
  97. </div>
  98. </Poptip>
  99. </div>
  100. </div>
  101. <!-- 筛选部分结束 -->
  102. <!-- 题目列表部分 -->
  103. <div v-if="list.length == 0" class="no-data-text">
  104. <img src="../../../assets/icon/no_data.svg" width="120"/>
  105. <span style="margin-top:15px;color:#808080">暂无数据</span>
  106. </div>
  107. <div class="content-wrap" v-else>
  108. <Loading v-show="importLoading"></Loading>
  109. <div class="exercise-item" v-for="(item,index) of list">
  110. <!-- 题目难度类型以及绑定知识点 -->
  111. <div class="item-types">
  112. <span class="item-difficulty" :style="{backgroundColor:diffColors[item.difficulty || 3]}">{{exersicesDiff[item.difficulty || 3]}}</span>
  113. <span class="item-type">{{exersicesType[item.type]}}</span>
  114. <span class="item-relevant-points">
  115. <span class="item-tools-bind">
  116. <span class="item-tools-tool">
  117. <span class="item-bind-point">已关联知识点:</span>
  118. <span class="item-bind-point" v-for="concept in item.concept" v-show="item.concept"><Tag color="success">{{concept.name}}</Tag></span>
  119. <span class="item-bind-point" v-show="!item.concept">暂未关联</span>
  120. <Icon type="md-link" size="20" />
  121. <span @click="handleBindPoint(item.concept || [])">绑定知识点</span>
  122. </span>
  123. </span>
  124. </span>
  125. </div>
  126. <!-- 题干部分 -->
  127. <div class="item-question">
  128. <p>{{index+1}} : <span v-html="item.question"></span></p>
  129. </div>
  130. <!-- 选项部分 -->
  131. <div v-for="(option,optionIndex) in item.option">
  132. <p>{{String.fromCharCode(64 + parseInt(optionIndex+1))}} : <span v-html="option.value"></span></p>
  133. </div>
  134. <!-- 如果是组合题 -->
  135. <div v-for="(childQuestion,childIndex) in item.children" v-if="item.children.length">
  136. <div class="item-question">
  137. <p>{{childIndex+1}} : <span v-html="childQuestion.question"></span></p>
  138. </div>
  139. <div v-for="(childOption,childOptionIndex) in childQuestion.option">
  140. <p>{{String.fromCharCode(64 + parseInt(childOptionIndex+1))}} : <span v-html="childOption.value"></span></p>
  141. </div>
  142. <div class="item-answer" v-show="isShowAnswer">
  143. <span style="color:#01b4ef">【答案】:</span>
  144. <span v-html="childQuestion.answer[0] || childQuestion.answer" v-if="childQuestion.type == 'Subjective'"></span>
  145. <span :class="[ childQuestion.type == 'Complete' ? 'item-answer-item':'']" v-for="answer in childQuestion.answer" v-else-if="childQuestion.type == 'Complete'" v-html="answer"></span>
  146. <span :class="[ childQuestion.type == 'Complete' ? 'item-answer-item':'']" v-for="answer in childQuestion.answer" v-else>{{answer}}</span>
  147. </div>
  148. <div class="item-explain" v-show="isShowAnswer">
  149. <span style="color:#01b4ef">【解析】:</span>
  150. <span v-html="childQuestion.explain"></span>
  151. </div>
  152. </div>
  153. <!-- 组合题结束 -->
  154. <!-- 答案展示部分 -->
  155. <div class="item-answer" v-show="item.type != 'Compose'">
  156. <span class="answer-title-line"></span>
  157. <span class="answer-title" @click="showAnswer($event,'answer')">答案:点击展开答案详情</span>
  158. <div class="item-answer-details">
  159. <span v-html="item.answer" v-if="item.type == 'Subjective'"></span>
  160. <span :class="[ item.type == 'Complete' ? 'item-answer-item':'']" v-for="answer in item.answer" v-else-if="item.type == 'Complete'" v-html="answer"></span>
  161. <span :class="[ item.type == 'Complete' ? 'item-answer-item':'']" v-for="answer in item.answer" v-else>{{answer}}</span>
  162. </div>
  163. </div>
  164. <!-- 解析部分 -->
  165. <div class="item-explain" v-show="item.type != 'Compose'">
  166. <span class="explain-title-line"></span>
  167. <span class="explain-title" @click="showAnswer($event,'explain')">解析:点击展开解析详情</span>
  168. <div class="item-explain-details">
  169. <span v-html="item.explain"></span>
  170. </div>
  171. </div>
  172. <!-- 底部题目操作栏 -->
  173. <div class="item-tools">
  174. <span class="item-tools-info">来源:浙江省温州市2019年中考数学试卷</span>
  175. <span class="item-tools-info">使用次数:98 次</span>
  176. <span class="item-tools-info" style="border:0">更新时间:2019-07-01</span>
  177. <Button type="info" @click="handleChoose(item)">{{basketList.all.indexOf(item) > -1 ? '已选入' : '选题'}}</Button>
  178. <Button type="primary" @click="handleEdit(item)" style="margin-right:10px">编辑题目</Button>
  179. </div>
  180. </div>
  181. </div>
  182. <!-- 底部分页区域 -->
  183. <Page :total="totalNum"
  184. show-sizer
  185. @on-page-size-change="pageSizeChange"
  186. @on-change="pageChange"
  187. :page-size-opts="[5,10,15,20]" />
  188. <Button type="success" @click="backToAdd" style="margin:10px;">返回</Button>
  189. <Button type="success" @click="backToPaper" style="margin:10px;">试卷</Button>
  190. <!-- 绑定知识点弹窗开始 -->
  191. <Modal v-model="bindPointModal"
  192. title="绑定知识点"
  193. width="500"
  194. class-name="transferModal"
  195. @on-ok="handleTransferBlock"
  196. @on-cancel="">
  197. <div class="point-list">
  198. <p class="bind-title">选择知识点</p>
  199. <Input search placeholder="搜索知识点..." v-model="searchWord" @on-change="filterChange" />
  200. <Tabs v-model="tabSelectVal">
  201. <TabPane label="校本知识点" name="school">
  202. <Tree :data="knowPointList" ref="pointTree" :render="renderContent" check-strictly></Tree>
  203. </TabPane>
  204. <TabPane label="标准知识点" name="all">
  205. <Tree :data="allPointList" ref="pointTree" :render="renderContent" check-strictly></Tree>
  206. </TabPane>
  207. </Tabs>
  208. <Spin fix v-show="pointListLoading"></Spin>
  209. </div>
  210. <div class="selected-point-list">
  211. <p class="bind-title">已选知识点<span style="font-weight:500;font-size:12px"> (最多绑定5个知识点,颜色代表不同来源)</span><span class="btn-clear" @click="handleClearChecked">清空</span></p>
  212. <span class="checked-point" :style="{background:item.origin=='school'?'#10abe7':'#12b9ab'}" v-for="item in checkedPointList">{{item.name}}<Icon type="md-close" color="#fff" style="margin-left:5px;cursor:pointer" @click="deleteCheckedPoint(item)" /></span>
  213. </div>
  214. </Modal>
  215. <!-- 绑定知识点弹窗结束 -->
  216. </div>
  217. </template>
  218. <script>
  219. import IconText from '@/components/evaluation/IconText.vue'
  220. import Loading from '@/common/Loading.vue'
  221. import questions from './list.json'
  222. import { setTimeout } from 'core-js';
  223. export default {
  224. components: {
  225. IconText,
  226. Loading
  227. },
  228. data() {
  229. return {
  230. list: [],
  231. searchWord: '',
  232. basketCount: 0,
  233. basketList: {
  234. all:[],
  235. Single: [],
  236. Multiple: [],
  237. Judge: [],
  238. Complete: [],
  239. Subjective: [],
  240. Compose:[]
  241. },
  242. pointListLoading: true,
  243. isShowUploadList:false,
  244. schoolInfo: {},
  245. bindPointModal: false,
  246. exersicesType: {
  247. Single: "单选",
  248. Multiple: "多选",
  249. Judge: "判断",
  250. Complete: "填空",
  251. Subjective:"问答",
  252. Compose:"综合题"
  253. },
  254. exersicesDiff: ["容易", "较易", "一般", "较难", "困难"],
  255. diffColors: ['#32CF74', '#E8BE15', '#F19300', '#EB5E00', '#D30000'],
  256. filterType: "all",
  257. filterOrigin:"self",
  258. filterDiff:"all",
  259. filterSort: "0",
  260. pageSize: 5,
  261. pageNum: 1,
  262. totalNum: 100,
  263. allList: questions.result.data,
  264. knowPointList: [],
  265. schoolPointList: [],
  266. allPointList:[],
  267. checkedPointList: [],
  268. isShowAnswer: true,
  269. importLoading:false,
  270. tabSelectVal:"school"
  271. }
  272. },
  273. created() {
  274. this.schoolInfo = JSON.parse(localStorage.getItem('c_role_info')).roleClaim[0];
  275. this.list = questions.result.data;
  276. this.totalNum = questions.result.data.length;
  277. if (this.$route.params.exerciseItem) {
  278. this.list.unshift(this.$route.params.exerciseItem);
  279. }
  280. },
  281. methods: {
  282. //根据题库加载题目
  283. filterOriginChange(origin) {
  284. console.log(origin);
  285. },
  286. //筛选题型
  287. filterTypeChange(val) {
  288. if (val == "all") {
  289. this.list = questions.result.data;
  290. } else {
  291. this.list = questions.result.data.filter(item => item.type == val);
  292. }
  293. },
  294. //筛选难度
  295. filterDiffChange(val) {
  296. if (val == "all") {
  297. this.list = questions.result.data;
  298. } else {
  299. this.list = questions.result.data.filter(item => item.difficulty == val);
  300. }
  301. },
  302. //排序条件更换
  303. filterSortChange(val) {
  304. console.log(val);
  305. },
  306. //展开与收起答案
  307. showAnswer(e, type) {
  308. let el = e.currentTarget;
  309. let isShow = e.currentTarget.nextElementSibling.style.display||"none";
  310. setTimeout(function () {
  311. if (type == "explain") {
  312. el.nextElementSibling.style.display = isShow == "none" ? "block" : "none";
  313. el.innerHTML = isShow == "none" ? "解析:点击收起解析详情" : "解析:点击展开解析详情";
  314. } else {
  315. el.nextElementSibling.style.display = isShow == "none" ? "block" : "none";
  316. el.innerHTML = isShow == "none" ? "答案:点击收起答案详情" : "答案:点击展开答案详情";
  317. }
  318. },100)
  319. },
  320. backToAdd() {
  321. this.$router.push({
  322. path: '/createExercises',//或者路径跳转path: '/addCreditCards',
  323. })
  324. },
  325. backToPaper() {
  326. this.$router.push({
  327. path: '/testPaper',//或者路径跳转path: '/addCreditCards',
  328. })
  329. },
  330. //切换页码
  331. pageChange(page) {
  332. let start = this.pageSize * (page - 1);
  333. let end = this.pageSize * page;
  334. let list = questions.result.data;
  335. this.list = list.slice(start, end);
  336. window.scroll(0, 0);
  337. },
  338. //切换分页Size
  339. pageSizeChange(val) {
  340. this.pageSize = val;
  341. this.pageChange(1);
  342. },
  343. //编辑习题
  344. handleEdit(item) {
  345. item.options = item.option;
  346. item.difficulty = item.difficulty || 2;
  347. this.$router.push({
  348. name: 'createExercises',
  349. params:{
  350. item: item,
  351. }
  352. })
  353. },
  354. //选题
  355. handleChoose(item) {
  356. if (this.basketList.all.indexOf(item) > -1) {
  357. this.$Message.warning("该试题已存在试卷篮!");
  358. } else {
  359. this.basketList[item.type].push(item);
  360. this.basketList.all.push(item);
  361. this.basketCount += 1;
  362. }
  363. },
  364. //从试题篮删除题型
  365. handleBasketDelete(type) {
  366. this.$Modal.confirm({
  367. title: '删除题型',
  368. content: '<p>确认删除该题型吗?</p>',
  369. okText:"确认",
  370. cancelText:"取消",
  371. onOk: () => {
  372. this.basketList.all.forEach((item,index) => {
  373. if (item.type == type) {
  374. this.basketList.all.splice(index, 1);
  375. }
  376. })
  377. //console.log(this.basketList[type]);
  378. this.basketList[type] = [];
  379. this.basketCount = this.basketList.all.length;
  380. this.$Message.success("删除成功!");
  381. }
  382. });
  383. },
  384. //进入组卷中心
  385. handleSubmitPaper() {
  386. if (this.basketList.all.length) {
  387. this.$router.push({
  388. name:'testPaper'
  389. })
  390. }
  391. },
  392. //绑定知识点操作
  393. handleBindPoint(concepts) {
  394. this.bindPointModal = true;
  395. this.checkedPointList = concepts;
  396. this.knowPointList = this.schoolPointList;
  397. console.log(concepts);
  398. },
  399. //获取标准知识块数据
  400. getStandardList() {
  401. let data = {
  402. periods: ["Period_21"],
  403. pointParams: {
  404. SubjectCode: "Subject_Chinese",
  405. PartitionKey: "zh-CN",
  406. }
  407. }
  408. this.$api.FindKnowledgeBlockAndPointByDict(data).then(res => {
  409. let list = res.result.data;
  410. this.allPointList = list;
  411. })
  412. },
  413. //获取学校知识块仓库数据
  414. getSchoolPoints() {
  415. let data = {
  416. pointParams: {
  417. SubjectCode: "Subject_Chinese",
  418. PartitionKey: "zh-CN",
  419. SchoolCode: this.schoolInfo.claim[0].claimCode,
  420. Status: 1
  421. }
  422. }
  423. this.$api.FindSchoolBlockAndPointByDict(data).then(res => {
  424. let list = res.result.data;
  425. list.forEach(item => {
  426. item.expand = !item.expand;
  427. })
  428. this.schoolPointList = list;
  429. this.pointListLoading = false;
  430. })
  431. },
  432. //确认编辑知识块
  433. handleTransferBlock() {
  434. },
  435. //知识点绑定选中事件
  436. //pointTreeCheck(val, data) {
  437. // let points = val.filter(item => item.children.length == 0);
  438. // if (points.length > 5) {
  439. // this.checkedPointList = points.slice(0, 5);
  440. // this.$Message.warning("最多绑定5个知识点!");
  441. // } else {
  442. // this.checkedPointList = points;
  443. // }
  444. // console.log(val, data);
  445. //},
  446. //知识点树形结构渲染
  447. renderContent(h, { root, node, data }) {
  448. return h(
  449. "span",
  450. {
  451. domProps: {
  452. className: "singleClass"
  453. },
  454. on: {
  455. click: () => {
  456. this.titleClick(root, node, data, event);
  457. }
  458. }
  459. },[
  460. h("span", [
  461. h("Icon", {
  462. props: {
  463. type:
  464. data.children && data.children.length > 0
  465. ? "md-albums"
  466. : "ios-paper-outline"
  467. },
  468. style: {
  469. marginRight: "5px",
  470. }
  471. }),
  472. h("span", data.name),
  473. h('span',{
  474. domProps: {
  475. className: this.checkedPointList.map(item => item.knowledgeId).indexOf(data.knowledgeId || data.rowKey) > -1 ? "point-checkbox point-checked" : "point-checkbox point-unchecked"
  476. },
  477. style: {
  478. display: data.children && data.children.length > 0
  479. ? "none"
  480. : "inline-block"
  481. },
  482. on: {
  483. click: () => {
  484. let conceptData = {};
  485. if (this.checkedPointList.map(item => item.knowledgeId).indexOf(data.knowledgeId || data.rowKey) == -1) {
  486. if (this.checkedPointList.length < 5) {
  487. conceptData.origin = this.tabSelectVal;
  488. conceptData.knowledgeId = data.knowledgeId || data.rowKey;
  489. conceptData.name = data.name;
  490. conceptData.subjectCode = data.subjectCode;
  491. this.checkedPointList.push(conceptData);
  492. } else {
  493. this.$Message.warning("最多绑定5个知识点!");
  494. }
  495. } else {
  496. this.checkedPointList.splice(this.checkedPointList.map(item => item.knowledgeId).indexOf(data.knowledgeId || data.rowKey), 1);
  497. }
  498. console.log(this.checkedPointList);
  499. }
  500. }
  501. })
  502. ])
  503. ]
  504. );
  505. },
  506. //标题点击收缩展开
  507. titleClick(root, node, data, event) {
  508. data.expand = !data.expand;
  509. },
  510. //清空已选知识点
  511. handleClearChecked() {
  512. this.checkedPointList = [];
  513. },
  514. //删除指定知识点
  515. deleteCheckedPoint(item) {
  516. this.checkedPointList.splice(this.checkedPointList.indexOf(item), 1);
  517. },
  518. //知识点筛选功能
  519. filterChange() {
  520. this.knowPointList = !this.searchWord ? this.schoolPointList : this.schoolPointList.filter(item => item.name.toUpperCase().indexOf(this.searchWord.toUpperCase()) > -1)
  521. },
  522. //导入试题
  523. uploadSuccess(response, file, fileList) {
  524. let that = this;
  525. this.importLoading = true;
  526. if (response.error == null) {
  527. let requestData = { htmlString: response.result.data.HtmlString }
  528. this.$api.SaveAnalyzeHtml(requestData).then(res => {
  529. if (res.error == null) {
  530. setTimeout(function () {
  531. that.$Message.success('文件上传解析成功!');
  532. that.list = res.result.data;
  533. that.importLoading = false;
  534. },1000)
  535. //this.saveItemBank(res.result.data);
  536. }
  537. });
  538. } else {
  539. this.$Message.error('对不起,文档解析失败!');
  540. }
  541. },
  542. //保存试题到数据库
  543. saveItemBank(list) {
  544. this.$api.SaveItemBank(list).then(res => {
  545. console.log(res);
  546. })
  547. }
  548. },
  549. mounted() {
  550. this.getStandardList();
  551. this.getSchoolPoints();
  552. //this.getAllPoints();
  553. },
  554. computed: {
  555. headers(){
  556. let hd = {}
  557. hd["Authorization"] = "Bearer "+ localStorage.getItem("token");
  558. return hd;
  559. }
  560. }
  561. }
  562. </script>
  563. <style scoped>
  564. @import "../index/ExercisesList.css";
  565. </style>
  566. <!--<style src="../index/ExercisesList.css" scoped></style>-->
  567. <!--<style>
  568. .content-wrap .exercise-item p {
  569. margin:10px 0;
  570. display:inline-block;
  571. word-break:break-all;
  572. }
  573. .complete-line {
  574. margin:0 5px;
  575. padding: 0 45px;
  576. border-bottom: 2px solid rgb(128, 128, 128);
  577. }
  578. </style>-->