WordTable.vue 28 KB

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