WordTable.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044
  1. <template>
  2. <div v-loading="loading" class="WordTable">
  3. <div class="wheader" v-if="!userID">
  4. <HeaderPage />
  5. </div>
  6. <div class="main">
  7. <a class="go-back" @click="$router.go(-1)">
  8. <i class="el-icon-arrow-left"></i>
  9. 返回
  10. </a>
  11. <div class="top">
  12. <div class="left">
  13. <div class="type_dv">
  14. <div class="sele">
  15. <span :class="[typeIndex == 0 ? 'sele' : '']" @click="cutType(0)">音节</span>
  16. <span :class="[typeIndex == 1 ? 'sele' : '']" @click="cutType(1)">汉字</span>
  17. <span :class="[typeIndex == 2 ? 'sele' : '']" @click="cutType(2)">词汇</span>
  18. </div>
  19. <div class="down" @click="download">
  20. <img src="../../assets/teacherdev/dowload-text.png" alt="" /><span>下载</span>
  21. </div>
  22. </div>
  23. <!-- <el-radio-group v-model="headText">
  24. <el-radio :label="1">词头</el-radio>
  25. <el-radio :label="2">文本</el-radio>
  26. </el-radio-group> -->
  27. </div>
  28. <div class="right">
  29. <!-- <el-cascader
  30. v-model="level"
  31. :options="levelList"
  32. :props="props"
  33. style="width: 140px; margin-right: 24px"
  34. @change="page1getdata"
  35. >
  36. <template slot-scope="{ data }">
  37. <span>{{ data.name }}</span>
  38. </template>
  39. </el-cascader> -->
  40. <el-select
  41. v-model="level"
  42. multiple
  43. collapse-tags
  44. style="width: 180px; margin-right: 24px"
  45. placeholder="请选择"
  46. @change="page1getdata"
  47. >
  48. <el-checkbox
  49. class="checkAllCheckbox"
  50. :indeterminate="isIndeterminate"
  51. v-model="checkAll"
  52. @change="handleCheckAllChange"
  53. >全部</el-checkbox
  54. >
  55. <el-option v-for="item in levelList" :key="item.value" :label="item.label" :value="item.value"> </el-option>
  56. </el-select>
  57. <div class="seek">
  58. <img src="../../assets/teacherdev/search-icon.png" alt="" />
  59. <input v-model="keyword" type="text" />
  60. </div>
  61. <div class="seekBtn" @click="page1getdata">搜索</div>
  62. </div>
  63. </div>
  64. <div class="table">
  65. <table border="0" cellspacing="0" cellpadding="0">
  66. <tr>
  67. <template v-for="(item, i) in tableHeader">
  68. <th
  69. v-if="
  70. (item.name === '拼音' && typeIndex !== 0) ||
  71. (item.name === '词性' && typeIndex === 2) ||
  72. (item.name !== '拼音' && item.name !== '词性')
  73. "
  74. :key="i"
  75. :style="{ width: item.width }"
  76. :class="[i === tableHeader.length - 1 ? 'bz' : '']"
  77. >
  78. <div>
  79. <span>
  80. {{ item.name == '音节' ? (typeIndex === 0 ? '音节' : '汉字') : item.name }}
  81. </span>
  82. <template v-if="item.sortShow">
  83. <div :class="['sort']">
  84. <div>
  85. <img
  86. :src="
  87. item.sort === 'up'
  88. ? require('../../assets/teacherdev/sort-sele-up.png')
  89. : require('../../assets/teacherdev/sort-up.png')
  90. "
  91. alt="排序"
  92. @click="SortEvent('up', item.name, item.sortName)"
  93. />
  94. </div>
  95. <div>
  96. <img
  97. :src="
  98. item.sort == 'down'
  99. ? require('../../assets/teacherdev/sort-sele-down.png')
  100. : require('../../assets/teacherdev/sort-down.png')
  101. "
  102. alt="排序"
  103. @click="SortEvent('down', item.name, item.sortName)"
  104. />
  105. </div>
  106. </div>
  107. </template>
  108. </div>
  109. </th>
  110. </template>
  111. </tr>
  112. <tr v-for="(item, index) in dataList.word_list" :key="index + 'td'">
  113. <td class="sort-td" style="text-align: center">{{ item.number }}</td>
  114. <td :class="['sort-td', typeIndex === 0 ? 'pinyin' : 'hanzi']">
  115. <span
  116. :style="{
  117. fontFamily: typeIndex !== 0 ? '楷体' : '',
  118. fontWeight: '400',
  119. fontSize: '18px',
  120. color: item.level_id && levelMap[item.level_id] ? levelMap[item.level_id].color : '',
  121. cursor: typeIndex !== 0 ? 'pointer' : '',
  122. }"
  123. @click="backHighlight(item, levelMap[item.level_id].color, 'all', index, typeIndex)"
  124. >{{ item.word }}</span
  125. >
  126. </td>
  127. <td v-if="typeIndex !== 0" class="sort-td" style="font-family: 'League'">
  128. {{ item.pinyin }}
  129. </td>
  130. <td v-if="typeIndex === 2" class="sort-td" style="font-family: '楷体'">
  131. {{ item.cx_name }}
  132. </td>
  133. <td class="sort-td">
  134. <span
  135. :style="{
  136. fontFamily: '楷体',
  137. fontSize: '16px',
  138. color: item.grade_id && levelMap[item.grade_id] ? levelMap[item.grade_id].color : '',
  139. }"
  140. >{{ item.grade_name }}</span
  141. >
  142. </td>
  143. <td class="sort-td">
  144. <span
  145. :style="{
  146. fontFamily: '楷体',
  147. fontSize: '16px',
  148. color: item.level_id && levelMap[item.level_id] ? levelMap[item.level_id].color : '',
  149. }"
  150. >{{ item.level_name }}</span
  151. >
  152. </td>
  153. <td
  154. class="sort-td"
  155. style="font-size: 16px; cursor: pointer"
  156. @click="backHighlight(item, levelMap[item.level_id].color, 'all', index)"
  157. >
  158. {{ item.freq }}
  159. </td>
  160. <td class="sort-td">{{ item.text_ratio }}%</td>
  161. <td>
  162. <div style="display: flex; flex-wrap: wrap">
  163. <span
  164. v-for="(items, i) in item.remarks"
  165. :key="i"
  166. class="beizhu"
  167. :style="{
  168. marginRight: '10px',
  169. cursor: 'pointer',
  170. borderColor: items.levelId && levelMap[items.levelId] ? levelMap[items.levelId].color + '16' : '',
  171. background: items.levelId && levelMap[items.levelId] ? levelMap[items.levelId].color + '50' : '',
  172. }"
  173. @click="backHighlight(items, levelMap[items.levelId].color, 'one', index)"
  174. >
  175. <span style="font-family: '楷体'" v-html="items.word"> </span>
  176. <span
  177. :style="{
  178. fontFamily: '楷体',
  179. color: items.levelId && levelMap[items.levelId] ? levelMap[items.levelId].color : '',
  180. }"
  181. >
  182. {{ items.levelName }}
  183. </span>
  184. <span>
  185. {{ items.freq }}
  186. </span>
  187. </span>
  188. </div>
  189. </td>
  190. </tr>
  191. </table>
  192. <template v-if="dataList.word_list.length == 0">
  193. <div class="no_data">暂无数据</div>
  194. </template>
  195. <!-- <el-table
  196. :data="dataList.list"
  197. style="width: 100%"
  198. @sort-change="sort_change"
  199. ref="table"
  200. :sort-orders="['levelName']"
  201. sortable="custom"
  202. >
  203. <el-table-column prop="number" label="序号" width="48" align="center">
  204. </el-table-column>
  205. <el-table-column
  206. prop="word"
  207. :label="typeIndex == 0 ? '音节' : '汉字'"
  208. width="93"
  209. sortable
  210. >
  211. <template slot-scope="item">
  212. <span
  213. :style="{
  214. color:
  215. item.row.levelName && levelMap[item.row.levelName]
  216. ? levelMap[item.row.levelName].color
  217. : '',
  218. }"
  219. >{{ item.row.word }}</span
  220. >
  221. </template>
  222. </el-table-column>
  223. <template v-if="typeIndex != 0">
  224. <el-table-column prop="pinYin" label="拼音" width="95" sortable>
  225. </el-table-column>
  226. </template>
  227. <el-table-column prop="gradeName" label="等次" width="95" sortable>
  228. <template slot-scope="item">
  229. <span
  230. :style="{
  231. color:
  232. item.row.gradeName && levelMap[item.row.gradeName]
  233. ? levelMap[item.row.gradeName].color
  234. : '',
  235. }"
  236. >{{ item.row.gradeName }}</span
  237. >
  238. </template>
  239. </el-table-column>
  240. <el-table-column prop="levelName" label="级别" width="106" sortable>
  241. <template slot-scope="item">
  242. <span
  243. :style="{
  244. color:
  245. item.row.levelName && levelMap[item.row.levelName]
  246. ? levelMap[item.row.levelName].color
  247. : '',
  248. }"
  249. >{{ item.row.levelName }}</span
  250. >
  251. </template>
  252. </el-table-column>
  253. <el-table-column prop="freq" label="频数" width="108" sortable>
  254. </el-table-column>
  255. <el-table-column prop="textRatio" label="比例" width="110" sortable>
  256. </el-table-column>
  257. <el-table-column prop="" label="备注">
  258. <template slot-scope="item">
  259. <div style="display: flex">
  260. <span
  261. v-for="(items, i) in item.row.remarks"
  262. :key=""
  263. class="beizhu"
  264. style="margin-right: 10px"
  265. >
  266. <span
  267. style="font-size: 18px; font-weight: 400"
  268. v-html="items.word"
  269. >
  270. </span>
  271. <span
  272. :style="{
  273. color:
  274. items.levelName && levelMap[items.levelName]
  275. ? levelMap[items.levelName].color
  276. : '',
  277. }"
  278. >
  279. {{ items.levelName }}
  280. </span>
  281. <span>
  282. {{ items.freq }}
  283. </span>
  284. </span>
  285. </div>
  286. </template>
  287. </el-table-column>
  288. </el-table> -->
  289. </div>
  290. <div v-if="dataList.word_list.length > 0" class="page">
  291. <el-pagination
  292. background
  293. :current-page="page"
  294. :page-size="pageSize"
  295. layout="prev, pager, next, jumper"
  296. :total="dataList.total_count"
  297. @current-change="handleCurrentChange"
  298. />
  299. </div>
  300. </div>
  301. </div>
  302. </template>
  303. <script>
  304. import HeaderPage from '@/components/Header.vue';
  305. import { postapi, publicMethods } from '@/api/api';
  306. import { levelMap } from '../../common/data';
  307. import { json2excel } from '@/utils/setMethods';
  308. export default {
  309. components: {
  310. HeaderPage,
  311. },
  312. data() {
  313. return {
  314. props: { multiple: true },
  315. typeIndex: 0,
  316. headText: 1,
  317. keyword: '',
  318. level: [],
  319. checkAll: false,
  320. isIndeterminate: true,
  321. levelList: [
  322. {
  323. value: null,
  324. label: '全部',
  325. },
  326. {
  327. value: 1,
  328. label: '初等',
  329. children: [
  330. { value: '100,101,102', label: '全部' },
  331. { value: '100', label: '1级' },
  332. { value: '101', label: '2级' },
  333. { value: '102', label: '3级' },
  334. ],
  335. },
  336. {
  337. value: 2,
  338. label: '中等',
  339. children: [
  340. { value: '103,104,105', label: '全部' },
  341. { value: '103', label: '4级' },
  342. { value: '104', label: '5级' },
  343. { value: '105', label: '6级' },
  344. ],
  345. },
  346. {
  347. value: 3,
  348. label: '高等',
  349. children: [{ value: '106', label: '7-9级' }],
  350. },
  351. {
  352. value: 107,
  353. label: '超纲',
  354. children: [{ value: '107', label: '超纲' }],
  355. },
  356. {
  357. value: 108,
  358. label: '专有',
  359. children: [{ value: '108', label: '专有' }],
  360. },
  361. {
  362. value: 109,
  363. label: '其它',
  364. children: [{ value: '109', label: '其它' }],
  365. },
  366. ],
  367. tableHeader: [
  368. {
  369. name: '序号',
  370. sortShow: false,
  371. width: '48px',
  372. },
  373. {
  374. name: '音节',
  375. sortShow: true,
  376. sort: '',
  377. width: '93px',
  378. sortName: 'word',
  379. },
  380. {
  381. name: '拼音',
  382. sortShow: true,
  383. sort: '',
  384. width: '95px',
  385. sortName: 'pin_yin',
  386. },
  387. {
  388. name: '词性',
  389. sortShow: false,
  390. sort: '',
  391. width: '',
  392. sortName: '',
  393. },
  394. {
  395. name: '等次',
  396. sortShow: true,
  397. sort: '',
  398. width: '95px',
  399. sortName: 'grade_id',
  400. },
  401. {
  402. name: '级别',
  403. sortShow: true,
  404. sort: 'down',
  405. width: '150px',
  406. sortName: 'level_id',
  407. },
  408. {
  409. name: '频数',
  410. sortShow: true,
  411. sort: '',
  412. width: '88px',
  413. sortName: 'freq',
  414. },
  415. {
  416. name: '比例',
  417. sortShow: true,
  418. sort: '',
  419. width: '90px',
  420. sortName: 'word_ratio',
  421. },
  422. {
  423. name: '备注',
  424. sortShow: false,
  425. sort: '',
  426. width: '',
  427. sortName: '',
  428. },
  429. ],
  430. dataList: {
  431. word_list: [],
  432. },
  433. page: 1,
  434. pageSize: 10,
  435. partition_key: null,
  436. searchType: null,
  437. levelMap,
  438. loading: false,
  439. sortType: 0,
  440. sortField: 'level_id',
  441. routerData: null,
  442. alldata: null,
  443. id: '',
  444. allLevels: [],
  445. userID: this.$route.query.userID,
  446. };
  447. },
  448. // 生命周期 - 创建完成(可以访问当前this实例)
  449. created() {
  450. this.routerData = JSON.parse(JSON.stringify(this.$route.query));
  451. this.partition_key = Number(this.$route.query.partition_key);
  452. this.id = this.routerData.id;
  453. this.getLevelList();
  454. this.getlist();
  455. },
  456. methods: {
  457. // 下载
  458. download() {
  459. let data = JSON.parse(JSON.stringify(this.alldata));
  460. data.forEach((item, index) => {
  461. item.text_ratio += '%';
  462. let str = '';
  463. // 处理备注
  464. item.remarks.forEach((items) => {
  465. let node = document.createElement('span');
  466. node.innerHTML = items.word;
  467. str += `${node.innerText} ${items.levelName} ${items.freq} `;
  468. });
  469. item.remarksTxt = str;
  470. item.number = index + 1;
  471. });
  472. let tHeader = [];
  473. let filterVal = [];
  474. this.tableHeader.forEach((item) => {
  475. tHeader.push(item.name);
  476. });
  477. if (this.typeIndex === 0) {
  478. tHeader.splice(2, 1);
  479. filterVal = ['number', 'word', 'grade_name', 'level_name', 'freq', 'text_ratio', 'remarksTxt'];
  480. } else if (this.typeIndex === 1) {
  481. tHeader[1] = '汉字';
  482. filterVal = ['number', 'word', 'pinyin', 'grade_name', 'level_name', 'freq', 'text_ratio', 'remarksTxt'];
  483. } else {
  484. tHeader[1] = '汉字';
  485. filterVal = [
  486. 'number',
  487. 'word',
  488. 'pinyin',
  489. 'cx_name',
  490. 'grade_name',
  491. 'level_name',
  492. 'freq',
  493. 'text_ratio',
  494. 'remarksTxt',
  495. ];
  496. }
  497. let excelDatas = [
  498. {
  499. tHeader,
  500. filterVal, // 表一的数据字段
  501. tableDatas: data, // 表一的整体json数据
  502. sheetName: 'sheet1', // 表一的sheet名字
  503. },
  504. ];
  505. // 引入的函数
  506. json2excel(excelDatas, '词表', true, 'xlsx');
  507. },
  508. // 返回并高亮对应数据
  509. backHighlight(item, color, type, index, typeIndex) {
  510. if (typeIndex === 0) {
  511. return;
  512. }
  513. let data = JSON.parse(JSON.stringify(this.routerData));
  514. let arr = [];
  515. if (type === 'all') {
  516. if (this.typeIndex === 0) {
  517. item.remarks.forEach((items) => {
  518. arr.push(items.word);
  519. });
  520. } else {
  521. arr.push(this.dataList.word_list[index].word);
  522. }
  523. } else if (this.typeIndex === 0) {
  524. arr.push(item.word);
  525. } else {
  526. let matchStr = item.word.replace(/<span style='color:red;'>/g, '').replace(/<\/span>/g, '');
  527. arr.push(matchStr);
  528. }
  529. data.remarks = JSON.stringify(arr);
  530. data.color = color;
  531. data.leftNavIndex = this.typeIndex;
  532. data.userID = this.userID;
  533. sessionStorage.setItem('tablehighlight', true);
  534. this.$router.replace({
  535. path: '/textanalysis/Result',
  536. query: data,
  537. });
  538. },
  539. handleCurrentChange(val) {
  540. this.page = val;
  541. this.getlist();
  542. },
  543. // 获取等级列表
  544. getLevelList() {
  545. this.allLevels = [];
  546. // this.levelList = [{
  547. // value: '',
  548. // id: '',
  549. // name: '全部',
  550. // label: '全部'
  551. // }]
  552. this.levelList = [];
  553. publicMethods('/TeachingServer/TextAnalyser/GetLevelList', {}).then((res) => {
  554. if (res.status === 1) {
  555. res.level_list.forEach((item) => {
  556. item.value = item.id;
  557. item.label = item.name;
  558. this.allLevels.push(item.id);
  559. });
  560. this.levelList = this.levelList.concat(res.level_list);
  561. }
  562. });
  563. },
  564. getlist() {
  565. this.loading = true;
  566. let order_column_list = [];
  567. if (this.sortType === 1) {
  568. order_column_list = [this.sortField + ':desc'];
  569. } else if (this.sortType === 0) {
  570. // 升序不传值
  571. order_column_list = [this.sortField];
  572. }
  573. let data = {
  574. cur_page: this.page,
  575. page_capacity: this.pageSize,
  576. type: this.typeIndex,
  577. word: this.keyword,
  578. order_column_list: order_column_list,
  579. level_id_list: this.level,
  580. analyse_record_id: this.id,
  581. };
  582. publicMethods('/TeachingServer/TextAnalyser/PageQueryWordList', data)
  583. // postapi({
  584. // url: '/GCLSTCServer/tools/TS/glossary/list',
  585. // data: {
  586. // pageIndex: this.page,
  587. // pageSize: this.pageSize,
  588. // partitionKey: this.partition_key,
  589. // searchType: this.typeIndex,
  590. // word: this.keyword,
  591. // sortField: this.sortField,
  592. // sortType: this.sortType,
  593. // levels: this.level ? this.level[1] : null,
  594. // },
  595. // })
  596. .then((res) => {
  597. let num = this.page * this.pageSize - this.pageSize + 1;
  598. res.word_list.forEach((item) => {
  599. item.remarks = JSON.parse(item.remarks);
  600. item.number = num;
  601. num += 1;
  602. });
  603. this.dataList = res;
  604. this.loading = false;
  605. })
  606. .catch(() => {
  607. this.loading = false;
  608. });
  609. publicMethods('/TeachingServer/TextAnalyser/PageQueryWordList', {
  610. cur_page: 1,
  611. page_capacity: 9999,
  612. type: this.typeIndex,
  613. word: this.keyword,
  614. order_column_list: order_column_list,
  615. level_id_list: this.level,
  616. analyse_record_id: this.id,
  617. })
  618. // postapi({
  619. // url: '/GCLSTCServer/tools/TS/glossary/list',
  620. // data: {
  621. // pageIndex: 1,
  622. // pageSize: 9999,
  623. // partitionKey: this.partition_key,
  624. // searchType: this.typeIndex,
  625. // word: this.keyword,
  626. // sortField: this.sortField,
  627. // sortType: this.sortType,
  628. // levels: this.level ? this.level[1] : null,
  629. // },
  630. // })
  631. .then((res) => {
  632. let num = 0;
  633. res.word_list.forEach((item) => {
  634. item.remarks = JSON.parse(item.remarks);
  635. item.number = num;
  636. num += 1;
  637. });
  638. this.alldata = res.word_list;
  639. });
  640. },
  641. page1getdata(value) {
  642. if (value) {
  643. let checkedCount = value.length;
  644. this.checkAll = checkedCount === this.levelList.length;
  645. this.isIndeterminate = checkedCount > 0 && checkedCount < this.levelList.length;
  646. }
  647. this.loading = true;
  648. this.page = 1;
  649. this.getlist();
  650. },
  651. SortEvent(type, name, sortName) {
  652. let sort = '';
  653. this.tableHeader.forEach((item) => {
  654. if (item.name === name) {
  655. if (!item.sort || item.sort === 'up') {
  656. item.sort = 'down';
  657. sort = 'down';
  658. } else if (item.sort === 'down') {
  659. item.sort = 'up';
  660. sort = 'up';
  661. }
  662. } else {
  663. item.sort = '';
  664. }
  665. });
  666. this.sortType = sort === 'down' ? 1 : 0;
  667. this.sortField = sortName;
  668. this.getlist();
  669. },
  670. // sort_change(column, prop, order) {
  671. // if (this.$refs.table) this.$refs.table.clearSort();
  672. // column.column.order = column.order;
  673. // if (column.prop === 'pinyin') {
  674. // this.sortField = 'pin_yin';
  675. // } else if (column.prop === 'gradeName') {
  676. // this.sortField = 'grade_id';
  677. // } else if (column.prop === 'levelName') {
  678. // this.sortField = 'level_id';
  679. // } else if (column.prop === 'textRatio') {
  680. // this.sortField = 'text_ratio';
  681. // } else {
  682. // this.sortField = column.prop;
  683. // }
  684. // if (column.order === 'descending') {
  685. // this.sortType = 1;
  686. // } else {
  687. // this.sortType = 0;
  688. // }
  689. // this.getlist();
  690. // },
  691. cutType(index) {
  692. this.typeIndex = index;
  693. this.page1getdata();
  694. },
  695. handleCheckAllChange(val) {
  696. this.level = val ? this.allLevels : [];
  697. this.isIndeterminate = false;
  698. },
  699. },
  700. };
  701. </script>
  702. <style lang="scss" scoped>
  703. .WordTable {
  704. min-height: 100%;
  705. background: #f6f6f6;
  706. .wheader {
  707. background: #fff;
  708. }
  709. .main {
  710. width: 1200px;
  711. margin: 0 auto;
  712. padding: 23px 0;
  713. .go-back {
  714. border-radius: 4px;
  715. border: 1px solid #d9d9d9;
  716. background: #fff;
  717. box-shadow: 0px 2px 0px 0px rgba(0, 0, 0, 0.02);
  718. display: flex;
  719. width: 60px;
  720. color: #333;
  721. font-size: 14px;
  722. font-weight: 400;
  723. line-height: 22px;
  724. padding: 9px 8px;
  725. align-items: center;
  726. cursor: pointer;
  727. margin-bottom: 16px;
  728. .el-icon-arrow-left {
  729. font-size: 16px;
  730. margin-right: 8px;
  731. }
  732. }
  733. .top {
  734. display: flex;
  735. justify-content: space-between;
  736. .left {
  737. display: flex;
  738. align-items: center;
  739. .type_dv {
  740. display: flex;
  741. margin-right: 40px;
  742. > .sele {
  743. display: flex;
  744. align-items: center;
  745. height: 40px;
  746. padding: 0 2px;
  747. background: #eee;
  748. border-radius: 4px;
  749. span {
  750. display: inline-block;
  751. width: 56px;
  752. height: 36px;
  753. font-size: 14px;
  754. font-weight: 400;
  755. line-height: 40px;
  756. color: #888;
  757. text-align: center;
  758. cursor: pointer;
  759. }
  760. .sele {
  761. color: #000;
  762. background: #fff;
  763. box-shadow: 0 2px 2px rgba(0, 0, 0, 8%);
  764. }
  765. }
  766. > .down {
  767. display: flex;
  768. align-items: center;
  769. margin-left: 24px;
  770. font-size: 14px;
  771. font-weight: 400;
  772. line-height: 22px;
  773. color: #000;
  774. cursor: pointer;
  775. img {
  776. width: 24px;
  777. height: 24px;
  778. margin-right: 4px;
  779. }
  780. }
  781. }
  782. }
  783. .right {
  784. display: flex;
  785. align-items: center;
  786. .seek {
  787. display: flex;
  788. width: 264px;
  789. height: 40px;
  790. background: #fff;
  791. border: 1px solid #ddd;
  792. border-radius: 2px 0 0 2px;
  793. img {
  794. width: 16px;
  795. height: 16px;
  796. margin: 12px 4px 12px 12px;
  797. }
  798. input {
  799. flex: 1;
  800. height: 40px;
  801. background: none;
  802. border: none;
  803. outline: none;
  804. }
  805. }
  806. .seekBtn {
  807. width: 56px;
  808. height: 40px;
  809. font-size: 16px;
  810. font-weight: 400;
  811. line-height: 40px;
  812. color: #fff;
  813. text-align: center;
  814. cursor: pointer;
  815. background: #ffa800;
  816. border: 1px solid #ffa800;
  817. border-radius: 0 2px 2px 0;
  818. }
  819. }
  820. }
  821. .table {
  822. margin-top: 21px;
  823. .no_data {
  824. height: 60px;
  825. line-height: 60px;
  826. color: #909399;
  827. text-align: center;
  828. background: #fff;
  829. }
  830. table {
  831. width: 100%;
  832. border-collapse: collapse;
  833. background: #fff;
  834. .pinyin {
  835. font-family: 'League';
  836. text-align: left !important;
  837. }
  838. .hanzi {
  839. text-align: left !important;
  840. }
  841. .jb {
  842. > div {
  843. justify-content: flex-end !important;
  844. .sort {
  845. margin-left: 10px;
  846. }
  847. }
  848. }
  849. th {
  850. background: #fff;
  851. .bz {
  852. flex: 1;
  853. }
  854. > div {
  855. display: flex;
  856. align-items: center;
  857. // justify-content: space-between;
  858. height: 48px;
  859. padding: 0 8px;
  860. .sort {
  861. cursor: pointer;
  862. margin-left: 4px;
  863. > div {
  864. // height: 11px;
  865. font-size: 0;
  866. img {
  867. width: 11px;
  868. height: 11px;
  869. }
  870. }
  871. > :nth-child(1) {
  872. > img {
  873. position: relative;
  874. top: 0px;
  875. }
  876. }
  877. > :nth-child(2) {
  878. > img {
  879. position: relative;
  880. bottom: 0px;
  881. }
  882. }
  883. }
  884. }
  885. }
  886. td {
  887. height: 40px;
  888. font-size: 14px;
  889. font-weight: 400;
  890. line-height: 40px;
  891. text-align: left;
  892. border-bottom: 1px solid #eee;
  893. }
  894. .sort-td {
  895. padding: 0 9px;
  896. }
  897. }
  898. }
  899. .page {
  900. margin-top: 24px;
  901. }
  902. .beizhu {
  903. display: flex;
  904. align-items: center;
  905. height: 28px;
  906. padding-right: 7px;
  907. padding-left: 4px;
  908. margin-top: 8px;
  909. margin-bottom: 8px;
  910. font-size: 16px;
  911. font-weight: 500;
  912. border: 1px solid;
  913. border-radius: 4px;
  914. > :not(:nth-last-child(1)) {
  915. margin-right: 8px;
  916. }
  917. }
  918. }
  919. }
  920. </style>
  921. <style lang="scss">
  922. .WordTable {
  923. .table {
  924. .el-table th {
  925. padding: 7px 0;
  926. background: #fff;
  927. }
  928. .el-table th > .cell {
  929. display: flex;
  930. align-items: center;
  931. justify-content: space-between;
  932. font-size: 14px;
  933. font-weight: 700;
  934. color: #333;
  935. }
  936. .el-table td {
  937. padding: 8px 0;
  938. }
  939. .el-table td > .cell {
  940. font-size: 14px;
  941. font-weight: 600;
  942. line-height: 22px;
  943. color: #333;
  944. }
  945. }
  946. .el-radio__input.is-checked + .el-radio__label {
  947. color: #000;
  948. }
  949. .el-radio__input.is-checked .el-radio__inner {
  950. background: #1e1e1e;
  951. border: 2px solid #c8c8c8;
  952. }
  953. .el-radio__inner::after {
  954. background: none;
  955. }
  956. .el-radio__inner {
  957. background: #c8c8c8;
  958. border: none;
  959. }
  960. .el-pagination.is-background .el-pager li:not(.disabled).active {
  961. color: rgba(0, 0, 0, 85%);
  962. background: #fff !important;
  963. border: 1px solid #333;
  964. }
  965. .el-pager {
  966. .number {
  967. background: #fff !important;
  968. border: 1px solid #d9d9d9;
  969. border-radius: 2px;
  970. }
  971. }
  972. .btn-prev,
  973. .btn-next {
  974. background: #fff !important;
  975. border: 1px solid #d9d9d9;
  976. border-radius: 2px;
  977. }
  978. }
  979. .checkAllCheckbox {
  980. width: 100%;
  981. padding: 0 20px;
  982. height: 34px;
  983. line-height: 34px;
  984. &:hover {
  985. background-color: #f5f7fa;
  986. }
  987. .el-checkbox__input {
  988. display: none;
  989. }
  990. .el-checkbox__label {
  991. padding: 0;
  992. }
  993. }
  994. </style>