seekPage.vue 69 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227
  1. <template>
  2. <div class="corpus_seekpage result" v-loading="loading">
  3. <Header v-if="!userID" />
  4. <template v-if="showPage">
  5. <div class="title">
  6. <p>教材语料库</p>
  7. <!-- <p>Corpus Dictionary</p> -->
  8. </div>
  9. <div class="seek" @keydown="downSeek">
  10. <input type="text" v-model="keyword" />
  11. <button @click="getdata(true)">搜索</button>
  12. <el-popover v-model="visibleOption" placement="bottom" width="335" trigger="click">
  13. <div class="set_corpus_dv">
  14. <span>教材</span>
  15. <!-- <el-select v-model="corpus.scope" style="width: 205px" placeholder="请选择">
  16. <el-option v-for="(itemD, indexD) in scopeList" :key="indexD" :label="itemD.label" :value="itemD.value" />
  17. </el-select> -->
  18. <el-cascader
  19. v-model="corpus.scope"
  20. placeholder=""
  21. :options="levelList"
  22. :props="{ multiple: true }"
  23. filterable
  24. collapse-tags
  25. ></el-cascader>
  26. </div>
  27. <div class="set_corpus_dv">
  28. <span>例句长度</span>
  29. <el-input
  30. v-model="corpus.sentenceStart"
  31. style="width: 55px; margin-right: 8px"
  32. onkeyup="value=value.replace(/^0+(\d)|[^\d]+/g,'')"
  33. class="numbre-input"
  34. />
  35. ——
  36. <el-input
  37. v-model="corpus.sentenceEnd"
  38. style="width: 55px; margin: 0 8px"
  39. onkeyup="value=value.replace(/^0+(\d)|[^\d]+/g,'')"
  40. class="numbre-input"
  41. />
  42. </div>
  43. <div class="set_corpus_submit">
  44. <div @click="visibleOption = false">取消</div>
  45. <div @click="sureCorpus">确认</div>
  46. </div>
  47. <div slot="reference" class="set_corpus" style="margin-left: 24px; cursor: pointer">筛选</div>
  48. </el-popover>
  49. </div>
  50. </template>
  51. <div class="txt">包含{{ book_count }}本教材、{{ word_count }}个字词,{{ sentence_count }}个例句</div>
  52. <div class="cx-list" v-if="showResult">
  53. <div class="cx-list-box">
  54. <span style="color: #de4444">{{ oldKey }}</span>
  55. <label v-for="(items, indexs) in allList.word_cx_list" :key="indexs"
  56. ><span>{{ items.cx_name }}</span
  57. ><span>{{ items.level_name }}</span></label
  58. >
  59. </div>
  60. <template v-if="editLiju">
  61. <el-row v-if="editLijuFlag">
  62. <el-button
  63. type="info"
  64. class="edit-cancle"
  65. @click="
  66. editLijuFlag = false;
  67. page = 1;
  68. padingEvetn();
  69. "
  70. >取消</el-button
  71. >
  72. <el-button
  73. type="primary"
  74. class="edit-sure"
  75. @click="
  76. editLijuFlag = false;
  77. page = 1;
  78. padingEvetn();
  79. "
  80. >完成</el-button
  81. ></el-row
  82. >
  83. <el-button
  84. v-else
  85. class="edit-liju"
  86. @click="
  87. editLijuFlag = true;
  88. selectDelLijuIds = [];
  89. page = 1;
  90. padingEvetn();
  91. "
  92. >例句编辑模式</el-button
  93. >
  94. </template>
  95. </div>
  96. <div
  97. class="txt_imgtable"
  98. v-if="showResult"
  99. :style="{ height: editLijuFlag ? '0' : '', overflow: editLijuFlag ? 'hidden' : '' }"
  100. >
  101. <div class="left">
  102. <div class="top">
  103. <div>
  104. <div class="pattern">
  105. <div :class="[patternIndex == 0 ? 'sele' : '']" @click="cutPattern(0)">引语模式</div>
  106. <div :class="[patternIndex == 1 ? 'sele' : '']" @click="cutPattern(1)">KWIC模式</div>
  107. </div>
  108. <template v-if="patternIndex == 1">
  109. <div class="KWIC_sort">
  110. <span
  111. :class="['sort', KWIC_sortIndex == 0 ? 'sele' : '']"
  112. @click="KWICsortEvent(0, 'sentence_list_sort_left')"
  113. >
  114. <img src="../../assets/teacherdev/analys-right.png" alt="" />
  115. </span>
  116. <span
  117. :class="['sort', KWIC_sortIndex == 1 ? 'sele' : '']"
  118. @click="KWICsortEvent(1, 'sentence_list_sort_mid')"
  119. >
  120. <img src="../../assets/teacherdev/analys-center.png" alt="" />
  121. </span>
  122. <span
  123. :class="['sort', KWIC_sortIndex == 2 ? 'sele' : '']"
  124. @click="KWICsortEvent(2, 'sentence_list_sort_right')"
  125. >
  126. <img src="../../assets/teacherdev/analys-left.png" alt="" />
  127. </span>
  128. </div>
  129. </template>
  130. <div class="refresh" @click="handleRefresh">
  131. <img src="../../assets/teacherdev/refresh.png" alt="" />
  132. </div>
  133. <template v-if="patternIndex == 0">
  134. <div class="lang_sort" :class="[sortType === 'length' ? 'active' : '']" @click="sortEvent('length')">
  135. 按长度
  136. <img
  137. v-if="sort == 'down' && sortType === 'length'"
  138. src="../../assets/teacherdev/ylk-sort-up.png"
  139. alt=""
  140. />
  141. <img
  142. v-else-if="sort == 'up' && sortType === 'length'"
  143. src="../../assets/teacherdev/ylk-sort-down.png"
  144. alt=""
  145. />
  146. <img v-else src="../../assets/teacherdev/ylk-sort-no.png" alt="" />
  147. </div>
  148. </template>
  149. <template v-else>
  150. <div style="display: flex">
  151. <!--<div
  152. class="lang_sort"
  153. :class="[sortType === 'zflength' ? 'active' : '']"
  154. @click="sortEvent('zflength')"
  155. >
  156. 按长度
  157. <img
  158. v-if="sort == 'down' && sortType === 'zflength'"
  159. src="../../assets/teacherdev/ylk-sort-up.png"
  160. alt=""
  161. />
  162. <img
  163. v-else-if="sort == 'up' && sortType === 'zflength'"
  164. src="../../assets/teacherdev/ylk-sort-down.png"
  165. alt=""
  166. />
  167. <img v-else src="../../assets/teacherdev/ylk-sort-no.png" alt="" />
  168. </div>-->
  169. <div
  170. class="lang_sort"
  171. :class="[sortType === 'pclength' ? 'active' : '']"
  172. @click="sortEvent('pclength')"
  173. >
  174. 按频次
  175. <img
  176. v-if="sort == 'down' && sortType === 'pclength'"
  177. src="../../assets/teacherdev/ylk-sort-up.png"
  178. alt=""
  179. />
  180. <img
  181. v-else-if="sort == 'up' && sortType === 'pclength'"
  182. src="../../assets/teacherdev/ylk-sort-down.png"
  183. alt=""
  184. />
  185. <img v-else src="../../assets/teacherdev/ylk-sort-no.png" alt="" />
  186. </div>
  187. </div>
  188. </template>
  189. </div>
  190. <div class="size">
  191. <template v-if="patternIndex == 0">
  192. <!-- <el-switch
  193. v-model="pinyinShow"
  194. active-text="拼音"
  195. active-color="#424242"
  196. style="margin-left: 24px"
  197. >
  198. </el-switch> -->
  199. <el-switch
  200. v-model="shiyiShow"
  201. active-text="释义"
  202. active-color="#424242"
  203. style="margin-left: 20px"
  204. @change="changeShiyi"
  205. >
  206. </el-switch>
  207. </template>
  208. <el-switch v-model="fenciShow" active-text="分词" active-color="#424242" style="margin-left: 8px">
  209. </el-switch>
  210. <span :class="[sizeIndex == 0 ? 'sele' : '']" @click="cutSize(0)">大</span>
  211. <span :class="[sizeIndex == 1 ? 'sele' : '']" @click="cutSize(1)">中</span>
  212. <span :class="[sizeIndex == 2 ? 'sele' : '']" @click="cutSize(2)">小</span>
  213. </div>
  214. </div>
  215. <div class="main">
  216. <div class="list">
  217. <template v-if="patternIndex == 0">
  218. <div v-for="(item, i) in ShowList" :key="i + 'sentence'" class="one">
  219. <div class="top">
  220. <!--
  221. :class="['number-' + sizeIndex + '-' + pinyinShow]"
  222. -->
  223. <div class="number">{{ item.number }}.</div>
  224. <!--
  225. :class="['speaker-' + sizeIndex + '-' + pinyinShow]"
  226. -->
  227. <!-- <img src="../../assets/teacherdev/speaker-one.png" alt="" /> -->
  228. <div class="words">
  229. <template v-if="item.sentence_fc_list_style && item.sentence_fc_list_style.length > 1">
  230. <span
  231. :style="{
  232. fontSize: conSize + 'px',
  233. padding: fenciShow ? '0 2px' : '',
  234. }"
  235. v-for="(items, indexs) in item.sentence_fc_list_style"
  236. :key="indexs"
  237. v-html="items"
  238. ></span>
  239. </template>
  240. <template v-else>
  241. <span
  242. :style="{
  243. fontSize: conSize + 'px',
  244. padding: fenciShow ? '0 2px' : '',
  245. }"
  246. v-html="item.res"
  247. ></span>
  248. </template>
  249. <template v-if="shiyiShow && item.word_definition_list.length > 0">
  250. <span class="shiyi">
  251. <span v-html="item.word_definition_list.join('; ')"> </span>
  252. </span>
  253. </template>
  254. </div>
  255. <!--
  256. :class="['shiyi-' + sizeIndex]"
  257. -->
  258. </div>
  259. <el-tooltip effect="dark" placement="bottom">
  260. <div slot="content">
  261. {{
  262. item.source_courseware_name_path_short
  263. ? item.source_courseware_name_path_short
  264. : item.source_courseware_name_path
  265. }}
  266. </div>
  267. <div class="bottom">
  268. {{
  269. item.source_courseware_name_path_short
  270. ? item.source_courseware_name_path_short
  271. : item.source_courseware_name_path
  272. }}
  273. </div>
  274. </el-tooltip>
  275. <!-- <div class="bottom">
  276. {{
  277. item.source_courseware_name_path_short
  278. ? item.source_courseware_name_path_short
  279. : item.source_courseware_name_path
  280. }}
  281. </div> -->
  282. </div>
  283. </template>
  284. <template v-else>
  285. <div v-for="(item, index) in ShowList" :key="'kwic' + index" class="kwic_one">
  286. <div class="number">{{ item.number }}</div>
  287. <div
  288. class="word"
  289. :style="{
  290. fontSize: conSize + 'px',
  291. }"
  292. >
  293. <div v-for="(txt, indexs) in item.resArr" :key="indexs">
  294. <div
  295. :style="{ padding: fenciShow ? '0 2px' : '', display: 'inline-block' }"
  296. v-for="(txts, indext) in txt"
  297. :key="indext"
  298. >
  299. <!-- <span v-html="txts"></span> -->
  300. <template v-if="sortType === 'pclength' && (KWIC_sortIndex === 0 || KWIC_sortIndex === 2)">
  301. <template v-if="indexs === 0 && KWIC_sortIndex === 0">
  302. <el-tooltip effect="dark" placement="bottom" style="display: inline">
  303. <div slot="content">
  304. {{
  305. item.adjoin_fc_frequency_list_left && item.adjoin_fc_frequency_list_left[indext]
  306. ? item.adjoin_fc_frequency_list_left[indext]
  307. : 1
  308. }}
  309. </div>
  310. <div class="">
  311. <span v-html="txts"></span>
  312. </div>
  313. </el-tooltip>
  314. </template>
  315. <template v-else-if="indexs === 2 && KWIC_sortIndex === 2">
  316. <el-tooltip effect="dark" placement="bottom" style="display: inline">
  317. <div slot="content">
  318. {{
  319. item.adjoin_fc_frequency_list_right && item.adjoin_fc_frequency_list_right[indext]
  320. ? item.adjoin_fc_frequency_list_right[indext]
  321. : 1
  322. }}
  323. </div>
  324. <div class="">
  325. <span v-html="txts"></span>
  326. </div>
  327. </el-tooltip>
  328. </template>
  329. <template v-else>
  330. <span v-html="txts"></span>
  331. </template>
  332. </template>
  333. <template v-else>
  334. <span v-html="txts"></span>
  335. </template>
  336. </div>
  337. </div>
  338. </div>
  339. <el-tooltip effect="dark" placement="bottom">
  340. <div slot="content">
  341. {{
  342. item.source_courseware_name_path_short
  343. ? item.source_courseware_name_path_short
  344. : item.source_courseware_name_path
  345. }}
  346. </div>
  347. <div class="laiyuan">
  348. {{
  349. item.source_courseware_name_path_short
  350. ? item.source_courseware_name_path_short
  351. : item.source_courseware_name_path
  352. }}
  353. </div>
  354. </el-tooltip>
  355. </div>
  356. </template>
  357. </div>
  358. <div class="page">
  359. <el-pagination
  360. background
  361. @current-change="handleCurrentChange"
  362. :current-page.sync="page"
  363. :page-size="pageSize"
  364. layout="prev, pager, next"
  365. :total="selectCurrent ? selectCurrent : CurrentList.length"
  366. :pager-count="5"
  367. >
  368. </el-pagination>
  369. <span class="text">
  370. 共 {{ selectCurrent ? selectCurrent : CurrentList.length }} 条
  371. {{
  372. patternIndex === 0 && selectLaiyuanBookIdList.length === 0 && !shiyiShow
  373. ? ' 命中 ' + scoreAHitNumber + ' 次'
  374. : ''
  375. }}
  376. </span>
  377. </div>
  378. </div>
  379. </div>
  380. <div class="right">
  381. <div class="top">
  382. <div>
  383. <div
  384. v-if="allList.stat_list_word_definition && allList.stat_list_word_definition.length > 0"
  385. :class="[rightTopIndex == 0 ? 'sele' : '']"
  386. @click="cutsyly(0)"
  387. >
  388. 释义
  389. </div>
  390. <div :class="[rightTopIndex == 1 ? 'sele' : '']" @click="cutsyly(1)">来源</div>
  391. </div>
  392. </div>
  393. <div class="bottom">
  394. <div id="shanxing_main" style="width: 720px; height: 600px"></div>
  395. <div class="list" v-if="rightList.length > 0">
  396. <div class="one all" style="border-bottom: 1px solid #eee">
  397. <div style="width: 60%">{{ rightTopIndex == 1 ? '来源' : '释义' }}</div>
  398. <div style="width: 20%">
  399. <span>出现次数</span>
  400. </div>
  401. <div style="width: 20%">
  402. <span>占比</span>
  403. </div>
  404. </div>
  405. <div
  406. v-for="(item, i) in rightList"
  407. :key="i + 'right'"
  408. class="one"
  409. :style="{
  410. borderBottom: i == rightList.length - 1 ? 'none' : '1px solid #eeeeee',
  411. backgroundColor:
  412. selectLaiyuanBookIdList.indexOf(item.book_id) > -1 ||
  413. selectShiyiBookIdList.indexOf(item.definition) > -1
  414. ? '#F2F3F5'
  415. : '',
  416. }"
  417. @mouseover="gaolangbzt(i, 'shanxing_main')"
  418. @mouseout="closegaolangbzt(i, 'shanxing_main')"
  419. @click="handleBookLiju(item, rightTopIndex)"
  420. >
  421. <div style="width: 60%">
  422. <span></span>
  423. <span v-html="item.book_name"></span>
  424. </div>
  425. <div style="width: 20%">
  426. <span>{{ item.count }}</span>
  427. </div>
  428. <div style="width: 20%">
  429. <span>{{ item.percent }}%</span>
  430. </div>
  431. </div>
  432. <div class="one all">
  433. <div style="width: 60%">
  434. <span></span>
  435. <span>合计</span>
  436. </div>
  437. <div style="width: 20%">
  438. <span>{{ allNumber }}</span>
  439. </div>
  440. <div style="width: 20%">
  441. <span>{{ rightTopIndex == 1 ? allPercent.toFixed(2) : '100.00' }}%</span>
  442. </div>
  443. </div>
  444. </div>
  445. </div>
  446. </div>
  447. </div>
  448. <div class="edit-liju-box" v-if="editLijuFlag === true && showResult">
  449. <div class="top">
  450. <div>
  451. <span class="select-number">已选 {{ selectDelLijuIds.length }}</span>
  452. <el-button type="danger" plain @click="handleDelLiju"><i class="el-icon-delete"></i>删除选中</el-button>
  453. </div>
  454. <el-button type="primary" plain @click="handleEditLiju()"><i class="el-icon-plus"></i>增加例句</el-button>
  455. </div>
  456. <div class="main">
  457. <div class="list">
  458. <div v-for="(item, i) in ShowList" :key="i + 'sentence'" class="one">
  459. <div class="top">
  460. <!--
  461. :class="['number-' + sizeIndex + '-' + pinyinShow]"
  462. -->
  463. <el-checkbox v-model="selectDelLijuIds" :label="item.sentence_id"><br /></el-checkbox>
  464. <div class="number">{{ item.number }}.</div>
  465. <!--
  466. :class="['speaker-' + sizeIndex + '-' + pinyinShow]"
  467. -->
  468. <!-- <img src="../../assets/teacherdev/speaker-one.png" alt="" /> -->
  469. <div class="words">
  470. <template v-if="item.sentence_fc_list_style && item.sentence_fc_list_style.length > 1">
  471. <span
  472. :style="{
  473. fontSize: conSize + 'px',
  474. }"
  475. v-for="(items, indexs) in item.sentence_fc_list_style"
  476. :key="indexs"
  477. v-html="items"
  478. ></span>
  479. </template>
  480. <template v-else>
  481. <span
  482. :style="{
  483. fontSize: conSize + 'px',
  484. padding: fenciShow ? '0 2px' : '',
  485. }"
  486. v-html="item.res"
  487. ></span>
  488. </template>
  489. <template v-if="shiyiShow && item.word_definition_list.length > 0">
  490. <span class="shiyi">
  491. <span v-html="item.word_definition_list.join('; ')"> </span>
  492. </span>
  493. </template>
  494. </div>
  495. <!--
  496. :class="['shiyi-' + sizeIndex]"
  497. -->
  498. </div>
  499. <el-tooltip effect="dark" placement="bottom">
  500. <div slot="content">
  501. {{
  502. item.source_courseware_name_path_short
  503. ? item.source_courseware_name_path_short
  504. : item.source_courseware_name_path
  505. }}
  506. </div>
  507. <div class="bottom">
  508. {{
  509. item.source_courseware_name_path_short
  510. ? item.source_courseware_name_path_short
  511. : item.source_courseware_name_path
  512. }}
  513. </div>
  514. </el-tooltip>
  515. <i class="el-icon-edit-outline" @click="handleEditLiju(item)"></i>
  516. </div>
  517. </div>
  518. <div class="page">
  519. <el-pagination
  520. background
  521. @current-change="handleCurrentChange"
  522. :current-page.sync="page"
  523. :page-size="pageSize"
  524. layout="prev, pager, next"
  525. :total="allList.sentence_list.length"
  526. :pager-count="5"
  527. >
  528. </el-pagination>
  529. <span class="text"> 共 {{ allList.sentence_list.length }} 条 </span>
  530. </div>
  531. </div>
  532. </div>
  533. <el-dialog
  534. title=""
  535. :visible.sync="showEditLijuFlag"
  536. width="365px"
  537. :before-close="handleClose"
  538. :modal="false"
  539. v-if="actvieEditLijuItem"
  540. class="seekpage-dialog"
  541. >
  542. <label>{{ actvieEditLijuItem.sentence_id ? '修改例句' : '增加例句' }}</label>
  543. <el-input v-model="actvieEditLijuItem.sentence"></el-input>
  544. <b class="tips">关键字不能删除,分词用两个空格区分。</b>
  545. <label>来源</label>
  546. <el-input v-model="actvieEditLijuItem.source_path"></el-input>
  547. <b class="tips">路径间用“/”隔开。</b>
  548. <label>关键字</label>
  549. <p>{{ keyword }}</p>
  550. <label>词性</label>
  551. <el-input v-model="actvieEditLijuItem.cixing"></el-input>
  552. <b class="tips">多个词性用逗号分割</b>
  553. <label>释义</label>
  554. <el-input type="textarea" v-model="actvieEditLijuItem.definition_list"></el-input>
  555. <b class="tips">多条释义另起一行</b>
  556. <span slot="footer" class="dialog-footer">
  557. <el-button @click="handleClose">取 消</el-button>
  558. <el-button type="primary" @click="save" :loading="loading">确 定</el-button>
  559. </span>
  560. </el-dialog>
  561. </div>
  562. </template>
  563. <script>
  564. //这里可以导入其它文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  565. //例如:import 《组件名称》from ‘《组件路径》';
  566. import Header from '@/components/Header';
  567. import { getConfigInfor } from '@/utils/index';
  568. import { getStaticContent, BookgetContent, LearnWebSI } from '@/api/api';
  569. import { setToken, getToken } from '@/utils/auth';
  570. import * as echarts from 'echarts';
  571. export default {
  572. name: 'corpus_seekpage',
  573. //import引入的组件需要注入到对象中才能使用
  574. components: {
  575. Header,
  576. },
  577. props: {},
  578. data() {
  579. //这里存放数据
  580. return {
  581. keyword: this.$route.query.keyword ? this.$route.query.keyword : null,
  582. oldKey: '',
  583. AccessToken: this.$route.query.AccessToken,
  584. AppID: this.$route.query.AppID,
  585. showPage: false,
  586. userID: this.$route.query.UserID ? this.$route.query.UserID : '',
  587. book_count: 0,
  588. word_count: 0,
  589. sentence_count: 0,
  590. visibleOption: false,
  591. corpus: {
  592. difficlty: null,
  593. scope: [],
  594. sentenceStart: null,
  595. sentenceEnd: null,
  596. },
  597. scopeList: [
  598. {
  599. value: '',
  600. label: '全部',
  601. },
  602. ],
  603. page: 1,
  604. pageSize: 30,
  605. shiyiShow: false,
  606. fenciShow: false,
  607. pinyinShow: true,
  608. JFIndex: 0,
  609. hzData: [],
  610. ShowHzData: [],
  611. loading: true,
  612. lang: null,
  613. unfold: true,
  614. patternIndex: 0,
  615. rightTopIndex: 0,
  616. sizeIndex: 1,
  617. sort: '',
  618. sortType: '',
  619. rightList: [],
  620. KWIC_sortIndex: 0,
  621. allNumber: 0,
  622. allPercent: 0,
  623. conSize: 20,
  624. pinyinSize: 12,
  625. allList: [],
  626. CurrentList: [],
  627. ShowList: [],
  628. chsFhList: [',', '。', '”', ':', '》', '《', '?', '!', ';'],
  629. scoreAHitNumber: 0,
  630. checkAll: false,
  631. isIndeterminate: true,
  632. allLevels: [],
  633. levelList: [],
  634. selectLaiyuanBookIdList: [], // 选中右侧来源书籍列表id
  635. selectShiyiBookIdList: [], // 选中右侧释义书籍列表id
  636. selectCurrent: 0,
  637. showResult: false,
  638. shiyiList: [], //含有释义例句列表
  639. bookListObj: {}, //书籍id和名称对应关系
  640. bookSourceObj: {}, //书籍来源id对应关系
  641. editLiju: false, // 是否有编辑例句权限
  642. editLijuFlag: false, // 编辑例句模式
  643. selectDelLijuIds: [], // 选中删除例句id数组
  644. actvieEditLijuItem: null,
  645. showEditLijuFlag: false,
  646. };
  647. },
  648. //计算属性 类似于data概念
  649. computed: {},
  650. //监控data中数据变化
  651. watch: {},
  652. //方法集合
  653. methods: {
  654. downSeek(e) {
  655. if (e.keyCode == 13) {
  656. this.getdata(true);
  657. }
  658. },
  659. getTotalCount() {
  660. const Mname = 'book-data_stat-GetBookWordExampleSentenceTotalCount';
  661. BookgetContent(Mname, {}).then((res) => {
  662. if (res.status === 1) {
  663. this.book_count = res.book_count;
  664. this.word_count = res.word_count;
  665. this.sentence_count = res.example_sentence_count;
  666. }
  667. });
  668. },
  669. // 存储句长信息
  670. sureCorpus() {
  671. this.visibleOption = false;
  672. this.getdata(true);
  673. // if (this.seekOptions) this.seekresult();
  674. },
  675. // 获取上架教材列表
  676. getLevelList() {
  677. this.allLevels = [];
  678. this.levelList = [];
  679. this.bookListObj = {};
  680. BookgetContent('book-book_manager-GetBookList', {
  681. publish_status: 1,
  682. }).then((res) => {
  683. this.loading = false;
  684. this.levelList = [];
  685. if (res.status === 1) {
  686. res.book_list.forEach((item) => {
  687. item.value = item.id;
  688. item.label = item.name;
  689. this.allLevels.push(item.id);
  690. this.$set(this.bookListObj, item.id, item.name);
  691. });
  692. // this.levelList = this.levelList.concat(res.book_list);
  693. let tempdata = {};
  694. res.book_list.forEach((str) => {
  695. let sort = '';
  696. if (str.name.indexOf('发展汉语') > -1) {
  697. if (str.name.indexOf('初级') > -1) {
  698. sort += '1';
  699. } else if (str.name.indexOf('中级') > -1) {
  700. sort += '2';
  701. } else if (str.name.indexOf('高级') > -1) {
  702. sort += '3';
  703. }
  704. if (str.name.indexOf('综合') > -1) {
  705. sort += '1';
  706. } else if (str.name.indexOf('听力') > -1) {
  707. sort += '2';
  708. } else if (str.name.indexOf('口语') > -1) {
  709. sort += '3';
  710. } else if (str.name.indexOf('阅读') > -1) {
  711. sort += '4';
  712. } else if ((str.name.indexOf('写作') > -1) | (str.name.indexOf('读写') > -1)) {
  713. sort += '5';
  714. }
  715. }
  716. str.sort = Number(sort);
  717. if (tempdata[str.series_code] != null) {
  718. tempdata[str.series_code].push(str);
  719. } else {
  720. let every = [];
  721. every.push(str);
  722. tempdata[str.series_code] = every;
  723. }
  724. });
  725. for (const key in tempdata) {
  726. let obj = {
  727. value: tempdata[key][0].series_code,
  728. label: tempdata[key][0].series_code ? tempdata[key][0].series_code : '未分类',
  729. children: tempdata[key].sort(this.compare('sort')),
  730. };
  731. this.levelList.push(obj);
  732. }
  733. }
  734. });
  735. },
  736. compare(property) {
  737. return function (a, b) {
  738. var value1 = a[property];
  739. var value2 = b[property];
  740. return value1 - value2;
  741. };
  742. },
  743. getrightListdata() {
  744. this.inityuan();
  745. },
  746. inityuan() {
  747. var chartDom = document.getElementById('shanxing_main');
  748. var myChart = echarts.init(chartDom);
  749. var option;
  750. this.allNumber = 0;
  751. this.allPercent = 0;
  752. let newdata = JSON.parse(JSON.stringify(this.rightList));
  753. newdata.forEach((item) => {
  754. this.allNumber += item.count;
  755. this.allPercent += item.percent;
  756. let percent = item.percent;
  757. item.value = item.count;
  758. if (percent % 1 == 0) {
  759. item.name = item.book_name + ' ' + percent + '%';
  760. } else {
  761. item.name = item.book_name + ' ' + percent.toFixed(2) + '%';
  762. }
  763. });
  764. if (this.rightTopIndex === 1) {
  765. let data = [];
  766. let tempdata = {};
  767. if (this.corpus.scope.length === 0) {
  768. this.levelList.forEach((item) => {
  769. let obj = {
  770. name: item.label,
  771. children: [],
  772. };
  773. item.children.forEach((items) => {
  774. let childObj = {
  775. name: '',
  776. value: 0,
  777. };
  778. if (this.bookSourceObj[items.id]) {
  779. childObj.name = items.name + ' ' + this.bookSourceObj[items.id].percent + '%';
  780. childObj.value = this.bookSourceObj[items.id].count;
  781. }
  782. obj.children.push(childObj);
  783. });
  784. data.push(obj);
  785. });
  786. } else {
  787. this.corpus.scope.forEach((str) => {
  788. if (!tempdata[str[0]]) {
  789. let obj = {
  790. name: str[0],
  791. children: [],
  792. };
  793. tempdata[str[0]] = obj;
  794. }
  795. let childObj = {
  796. name: '',
  797. value: 0,
  798. };
  799. if (this.bookSourceObj[str[1]]) {
  800. childObj.name = this.bookSourceObj[str[1]].book_name + ' ' + this.bookSourceObj[str[1]].percent + '%';
  801. childObj.value = this.bookSourceObj[str[1]].count;
  802. }
  803. tempdata[str[0]].children.push(childObj);
  804. });
  805. for (const key in tempdata) {
  806. data.push(tempdata[key]);
  807. }
  808. }
  809. option = {
  810. title: {
  811. text: '',
  812. subtext: '',
  813. textStyle: {
  814. fontSize: 14,
  815. align: 'center',
  816. },
  817. subtextStyle: {
  818. align: 'center',
  819. },
  820. sublink: '',
  821. },
  822. series: {
  823. type: 'sunburst',
  824. data: data,
  825. radius: [0, '95%'],
  826. sort: undefined,
  827. emphasis: {
  828. focus: 'ancestor',
  829. },
  830. levels: [
  831. {},
  832. {
  833. r0: '3%',
  834. r: '35%',
  835. itemStyle: {
  836. borderWidth: 2,
  837. },
  838. label: {
  839. align: 'left',
  840. },
  841. },
  842. {
  843. r0: '35%',
  844. r: '40%',
  845. label: {
  846. position: 'outside',
  847. },
  848. },
  849. ],
  850. },
  851. };
  852. } else {
  853. option = {
  854. series: [
  855. {
  856. name: 'Access From',
  857. type: 'pie',
  858. // radius: ["50%", "50%"],
  859. data: newdata.length > 0 ? newdata : [],
  860. itemStyle: {
  861. // borderColor: "#fff",
  862. // borderWidth: 2,
  863. },
  864. top: 50,
  865. emphasis: {
  866. itemStyle: {
  867. shadowBlur: 10,
  868. shadowOffsetX: 0,
  869. shadowColor: 'rgba(0, 0, 0, 0.5)',
  870. },
  871. },
  872. },
  873. ],
  874. xAxis: {
  875. show: false, //不显示坐标轴线、坐标轴刻度线和坐标轴上的文字
  876. axisTick: {
  877. show: false, //不显示坐标轴刻度线
  878. },
  879. axisLine: {
  880. show: false, //不显示坐标轴线
  881. },
  882. axisLabel: {
  883. show: false, //不显示坐标轴上的文字
  884. },
  885. },
  886. };
  887. }
  888. option && myChart.setOption(option);
  889. let number = 0;
  890. let _this = this;
  891. myChart.on('click', function (param) {
  892. //添加点击事件
  893. myChart.dispatchAction({ type: 'highlight', dataIndex: param.dataIndex }); //激活点击区域高亮
  894. if (param.dataIndex !== number) {
  895. // 当鼠标点击的时候 消除上一个扇区的高亮
  896. myChart.dispatchAction({ type: 'downplay', dataIndex: number });
  897. }
  898. number = param.dataIndex; //接住当前扇区的dataIndex
  899. if (_this.rightTopIndex === 0) {
  900. _this.handleShiyiLiju(param.data.definition);
  901. } else {
  902. _this.handleBookLiju(param.data);
  903. }
  904. });
  905. },
  906. // 鼠标进入
  907. gaolangbzt(index, id) {
  908. if (this.rightTopIndex === 1) return;
  909. var compareChart = echarts.getInstanceByDom(document.getElementById(id));
  910. compareChart.dispatchAction({
  911. type: 'highlight',
  912. seriesIndex: 0,
  913. dataIndex: index,
  914. });
  915. },
  916. // 鼠标移出
  917. closegaolangbzt(index, id) {
  918. var compareChart = echarts.getInstanceByDom(document.getElementById(id));
  919. compareChart.dispatchAction({
  920. type: 'downplay',
  921. seriesIndex: 0,
  922. dataIndex: index,
  923. });
  924. },
  925. // 计算选中教材例句
  926. handleBookLiju(item, index) {
  927. if (index === 0) {
  928. this.handleShiyiLiju(item.definition);
  929. return false;
  930. }
  931. let id = item.book_id;
  932. if (!id) return false;
  933. if (this.selectLaiyuanBookIdList.indexOf(id) > -1) {
  934. this.selectLaiyuanBookIdList.splice(this.selectLaiyuanBookIdList.indexOf(id), 1);
  935. } else {
  936. this.selectLaiyuanBookIdList.push(id);
  937. }
  938. this.page = 1;
  939. this.padingEvetn();
  940. window.scrollTo(0, 0);
  941. },
  942. // 计算选中教材例句
  943. handleShiyiLiju(shiyi) {
  944. if (!shiyi) return false;
  945. if (this.selectShiyiBookIdList.indexOf(shiyi) > -1) {
  946. this.selectShiyiBookIdList.splice(this.selectShiyiBookIdList.indexOf(shiyi), 1);
  947. } else {
  948. this.selectShiyiBookIdList.push(shiyi);
  949. }
  950. this.shiyiShow = this.selectShiyiBookIdList.length > 0;
  951. this.page = 1;
  952. this.padingEvetns();
  953. window.scrollTo(0, 0);
  954. },
  955. changehzdata() {
  956. this.hzData = [];
  957. this.jfEvent(0);
  958. let arr = this.keyword.trim().split('');
  959. arr.forEach((item) => {
  960. if (!/^[\u4e00-\u9fa5]/.test(item)) {
  961. return;
  962. }
  963. let result = pinyinUtil.getPinyin(item);
  964. let obj = {
  965. con: item,
  966. pinyin: result,
  967. hzDetail: {
  968. hz_json: null,
  969. },
  970. };
  971. this.hzData.push(obj);
  972. this.ShowHzData = JSON.parse(JSON.stringify(this.hzData));
  973. });
  974. },
  975. handleRefresh() {
  976. this.pinyinShow = true;
  977. this.shiyiShow = true;
  978. this.fenciShow = true;
  979. this.sizeIndex = 1;
  980. this.sort = '';
  981. this.sortType = '';
  982. this.KWIC_sortIndex = 0;
  983. this.cutSize(1);
  984. this.getdata();
  985. this.page = 1;
  986. },
  987. getdata(flag) {
  988. if (!this.keyword || !this.keyword.trim()) {
  989. this.$message.warning('请输入要搜索的内容');
  990. return;
  991. }
  992. this.loading = true;
  993. this.oldKey = this.keyword.trim();
  994. this.showResult = true;
  995. this.scoreAHitNumber = 0;
  996. let selectBookId = [];
  997. this.corpus.scope.forEach((item) => {
  998. selectBookId.push(item[1]);
  999. });
  1000. this.bookSourceObj = {};
  1001. let Mname = 'book-courseware_manager-GetCoursewareWordExampleSentenceList_Sort';
  1002. let data = {
  1003. // courseware_id: "003-20211012-17-BDUZ1JVCAN",
  1004. courseware_id: '',
  1005. // word: this.$route.query.keyword, // 单词
  1006. word: this.keyword.trim(),
  1007. search_scope: 3, // 检索范围 0 【本章】,1【本教材】,2【本套教材】,3【系统所有教材】
  1008. // 本章:同一本教材下,归属同一个第一级章节下的所有课件为同一章。
  1009. is_contain_word_variants: false, // 是否包含单词变体例句
  1010. is_contain_stat_data: true, //是否包统计数据
  1011. is_filter_repetitive_sentence: 'true', // 过滤重复例句
  1012. sort_mode: this.sort ? (this.sort == 'down' ? 'DESCENT' : 'ASCENT') : 'NO', // 排序模式 NO 【不排序】,ASCENT【顺序】,DESCENT【倒序】
  1013. compare_mode: this.patternIndex === 0 ? 'LENGTH' : 'KWIC', // 排序比较模式,LENGTH【例句长度】,KWIC【KWIC 模式】
  1014. kwic_arrange_type: this.KWIC_sortIndex === 0 ? 'LEFT' : this.KWIC_sortIndex === 1 ? 'MID' : 'RIGHT', // KWIC 排列类型, LEFT【左】,MID【中】,RIGHT【右】
  1015. kwic_compare_by: this.sortType === 'pclength' ? 1 : 0, // KWIC 排序比较依据,0【字符】,1【相邻的搭配词出现的次数】
  1016. book_publish_status: 1, // 教材发布状态 -1【全部】, 0【下架】1【上架】
  1017. book_id_list: selectBookId, // 指定教材查询,空表示在检索范围内检索所有教材。
  1018. sentence_fc_length_min: this.corpus.sentenceStart ? Number(this.corpus.sentenceStart) : -1, // 例句分词长度范围(最小值),-1 表示不检测最小值
  1019. sentence_fc_length_max: this.corpus.sentenceEnd ? Number(this.corpus.sentenceEnd) : -1, // 例句分词长度范围(最大值),-1 表示不检测最大值
  1020. is_analyse_word_cx: 'true',
  1021. is_analyse_word_level: 'true',
  1022. };
  1023. BookgetContent(Mname, data, this.AppID, this.AccessToken)
  1024. .then((res) => {
  1025. this.shiyiList = [];
  1026. this.allList = {
  1027. sentence_list: [],
  1028. sentence_list_sort_left: [],
  1029. sentence_list_sort_mid: [],
  1030. sentence_list_sort_right: [],
  1031. stat_list_sentence_source_book: res.stat_list_sentence_source_book,
  1032. stat_list_sentence_source_book_series_code: res.stat_list_sentence_source_book_series_code,
  1033. stat_list_word_definition: res.stat_list_word_definition,
  1034. word_level_name: res.word_level_name,
  1035. word_cx_list: res.word_cx_level_list,
  1036. };
  1037. res.stat_list_sentence_source_book.forEach((itesb) => {
  1038. itesb.name = itesb.book_name;
  1039. itesb.value = itesb.count;
  1040. this.$set(this.bookSourceObj, itesb.book_id, itesb);
  1041. });
  1042. if (res.sentence_list.length > 0) {
  1043. res.stat_list_word_definition.forEach((item) => {
  1044. // item.book_name_s = item.definition;
  1045. item.book_name = JSON.parse(JSON.stringify(item.definition)).replace(/<i>/g, '').replace(/<\/i>/g, '');
  1046. });
  1047. res.stat_list_sentence_source_book_series_code.forEach((item) => {
  1048. item.book_name = item.series_code;
  1049. });
  1050. // 清理脏数据
  1051. this.removeRubbishData(res);
  1052. if (res.stat_list_word_definition.length === 0) {
  1053. this.rightTopIndex = 1;
  1054. }
  1055. if (this.rightTopIndex === 0) {
  1056. this.rightList = res.stat_list_word_definition;
  1057. } else {
  1058. this.rightList = res.stat_list_sentence_source_book;
  1059. }
  1060. this.getrightListdata();
  1061. this.allList.sentence_list = this.handleExample(res.sentence_list);
  1062. if (this.patternIndex === 1) {
  1063. if (this.KWIC_sortIndex === 0) {
  1064. this.allList.sentence_list_sort_left = this.handleExample(res.sentence_list, 'left');
  1065. } else if (this.KWIC_sortIndex === 1) {
  1066. this.allList.sentence_list_sort_mid = this.handleExample(res.sentence_list, 'mid');
  1067. } else {
  1068. this.allList.sentence_list_sort_right = this.handleExample(res.sentence_list, 'right');
  1069. }
  1070. }
  1071. this.CurrentList = JSON.parse(JSON.stringify(res.sentence_list));
  1072. let shiyiIndex = 1;
  1073. JSON.parse(JSON.stringify(res.sentence_list)).forEach((items) => {
  1074. if (items.word_definition_list && items.word_definition_list.length > 0) {
  1075. items.number = shiyiIndex;
  1076. this.shiyiList.push(items);
  1077. shiyiIndex++;
  1078. }
  1079. });
  1080. this.padingEvetn();
  1081. } else {
  1082. this.CurrentList = [];
  1083. this.ShowList = [];
  1084. this.rightList = [];
  1085. this.shiyiList = [];
  1086. this.getrightListdata();
  1087. }
  1088. if (this.keyword.trim() && flag) {
  1089. this.changehzdata();
  1090. } else {
  1091. this.loading = false;
  1092. }
  1093. if (res.word_pinyin_list) {
  1094. res.word_pinyin_list.forEach((itemP, indexP) => {
  1095. if (this.hzData[indexP]) {
  1096. this.hzData[indexP].pinyin = itemP;
  1097. }
  1098. });
  1099. }
  1100. })
  1101. .catch((err) => {
  1102. this.loading = false;
  1103. });
  1104. },
  1105. handleExample(list, type) {
  1106. if (list.length > 0) {
  1107. list = list.map((item, index) => {
  1108. item.number = index + 1;
  1109. let str = item.source_courseware_name_path;
  1110. item.show_source_courseware_name_path = str.slice(0, 8) + '...';
  1111. if (type == 'left') {
  1112. let arr = JSON.parse(JSON.stringify(item.sentence_fc_list));
  1113. arr.forEach((items, indexs) => {
  1114. if (indexs == item.sentence_fc_list_word_index) {
  1115. arr[indexs] = `<span style=color:#DE4444;font-weight:700;>${arr[indexs]}</span>`;
  1116. }
  1117. });
  1118. let data = this.changefiveword(arr, item.sentence_fc_list_word_index, type);
  1119. item.resArr = data;
  1120. item.adjoin_fc_frequency_list_left = item.adjoin_fc_frequency_list.splice(
  1121. 0,
  1122. item.sentence_fc_list_word_index,
  1123. );
  1124. } else if (type == 'right') {
  1125. let sentence = JSON.parse(JSON.stringify(item.sentence));
  1126. let arr = JSON.parse(JSON.stringify(item.sentence_fc_list));
  1127. arr.forEach((items, indexs) => {
  1128. if (indexs == item.sentence_fc_list_word_index) {
  1129. arr[indexs] = `<span style=color:#DE4444;font-weight:700;>${arr[indexs]}</span>`;
  1130. }
  1131. });
  1132. let data = this.changefiveword(arr, item.sentence_fc_list_word_index, type);
  1133. item.resArr = data;
  1134. item.adjoin_fc_frequency_list_right = item.adjoin_fc_frequency_list.splice(
  1135. item.sentence_fc_list_word_index + 1,
  1136. );
  1137. } else if (type == 'mid') {
  1138. let sentence = JSON.parse(JSON.stringify(item.sentence));
  1139. let arr = JSON.parse(JSON.stringify(item.sentence_fc_list));
  1140. arr.forEach((items, indexs) => {
  1141. if (indexs == item.sentence_fc_list_word_index) {
  1142. arr[indexs] = `<span style=color:#DE4444;font-weight:700;>${arr[indexs]}</span>`;
  1143. }
  1144. });
  1145. let data = this.changefiveword(arr, item.sentence_fc_list_word_index, type);
  1146. item.resArr = data;
  1147. } else {
  1148. this.scoreAHitNumber += item.position_list.length;
  1149. let sentence_fc_list_style = [];
  1150. let newsentence = JSON.parse(JSON.stringify(item.sentence));
  1151. let res = '';
  1152. for (let i = 0; i < item.position_list.length; i++) {
  1153. let part1 = '';
  1154. let part2 = '';
  1155. let part3 = '';
  1156. if (item.position_list.length > 1) {
  1157. if (i == 0) {
  1158. part1 = newsentence.substring(0, item.position_list[i].begin);
  1159. part2 = newsentence.substring(item.position_list[i].begin, item.position_list[i].end);
  1160. part3 = newsentence.substring(item.position_list[i].end, item.position_list[i + 1].begin);
  1161. } else if (i == item.position_list.length - 1) {
  1162. part2 = newsentence.substring(item.position_list[i].begin, item.position_list[i].end);
  1163. part3 = newsentence.substring(item.position_list[i].end);
  1164. } else {
  1165. part2 = newsentence.substring(item.position_list[i].begin, item.position_list[i].end);
  1166. part3 = newsentence.substring(item.position_list[i].end, item.position_list[i + 1].begin);
  1167. }
  1168. } else {
  1169. part1 = newsentence.substring(0, item.position_list[i].begin);
  1170. part2 = newsentence.substring(item.position_list[i].begin, item.position_list[i].end);
  1171. part3 = newsentence.substring(item.position_list[i].end);
  1172. }
  1173. res += part1 + '<span style="color:#DE4444;">' + part2 + '</span>' + part3;
  1174. }
  1175. item.res = res;
  1176. item.sentence_fc_list.forEach((items, indexs) => {
  1177. if (item.sentence_fc_list_word_index_list.indexOf(indexs) > -1) {
  1178. sentence_fc_list_style.push('<span style="color:#DE4444;">' + items + '</span>');
  1179. } else {
  1180. sentence_fc_list_style.push(items);
  1181. }
  1182. });
  1183. item.sentence_fc_list_style = sentence_fc_list_style;
  1184. }
  1185. return item;
  1186. });
  1187. return list;
  1188. } else {
  1189. return [];
  1190. }
  1191. },
  1192. changefiveword(arr, index, type) {
  1193. let num = 6;
  1194. let colorIndex = 0;
  1195. let colorList = ['#4D7EFF', '#A4430F', '#9342C5', '#FF8718', '#1DAA91'];
  1196. for (let i = 1; i < num; i++) {
  1197. if (type == 'left') {
  1198. if (index - i >= 0) {
  1199. if (this.chsFhList.indexOf(arr[index - i]) == -1) {
  1200. arr[index - i] = `<span style=color:${colorList[colorIndex]};>${arr[index - i]}</span>`;
  1201. colorIndex++;
  1202. } else {
  1203. num++;
  1204. }
  1205. }
  1206. } else if (type == 'right') {
  1207. if (index + i <= arr.length - 1) {
  1208. if (this.chsFhList.indexOf(arr[index + i]) == -1) {
  1209. arr[index + i] = `<span style=color:${colorList[colorIndex]};>${arr[index + i]}</span>`;
  1210. colorIndex++;
  1211. } else {
  1212. num++;
  1213. }
  1214. }
  1215. }
  1216. }
  1217. let newarr = [];
  1218. let arr1 = [];
  1219. let arr2 = [];
  1220. let arr3 = [];
  1221. arr.forEach((item, i) => {
  1222. if (i < index) {
  1223. arr1.push(item);
  1224. } else if (i == index) {
  1225. arr2.push(item);
  1226. } else {
  1227. arr3.push(item);
  1228. }
  1229. });
  1230. newarr.push(arr1);
  1231. newarr.push(arr2);
  1232. newarr.push(arr3);
  1233. return newarr;
  1234. },
  1235. // 处理分页
  1236. padingEvetn() {
  1237. let arr =
  1238. this.shiyiShow && this.patternIndex === 0
  1239. ? JSON.parse(JSON.stringify(this.shiyiList))
  1240. : JSON.parse(JSON.stringify(this.CurrentList));
  1241. let arrs = [];
  1242. if (this.editLijuFlag) {
  1243. arrs = JSON.parse(JSON.stringify(this.allList.sentence_list));
  1244. } else if (this.selectLaiyuanBookIdList.length === 0) {
  1245. arrs = arr;
  1246. } else {
  1247. arr.forEach((item) => {
  1248. let path = item.source_courseware_id_path.split('/');
  1249. if (path.length > 0 && this.selectLaiyuanBookIdList.indexOf(path[0]) > -1) {
  1250. arrs.push(item);
  1251. }
  1252. });
  1253. }
  1254. this.selectCurrent = arrs.length;
  1255. arrs.forEach((item, index) => {
  1256. item.number = index + 1;
  1257. });
  1258. let newarr = arrs.splice((this.page - 1) * this.pageSize, this.pageSize);
  1259. this.ShowList = JSON.parse(JSON.stringify(newarr));
  1260. },
  1261. padingEvetns() {
  1262. let arr = JSON.parse(JSON.stringify(this.shiyiList));
  1263. let arrs = [];
  1264. if (this.selectShiyiBookIdList.length === 0) {
  1265. arrs = JSON.parse(JSON.stringify(this.CurrentList));
  1266. } else {
  1267. arr.forEach((item) => {
  1268. if (item.word_definition_list.length > 0) {
  1269. this.selectShiyiBookIdList.forEach((items) => {
  1270. if (item.word_definition_list.indexOf(items) > -1) {
  1271. arrs.push(item);
  1272. }
  1273. });
  1274. }
  1275. });
  1276. }
  1277. this.selectCurrent = arrs.length;
  1278. arrs.forEach((item, index) => {
  1279. item.number = index + 1;
  1280. });
  1281. let newarr = arrs.splice((this.page - 1) * this.pageSize, this.pageSize);
  1282. this.ShowList = JSON.parse(JSON.stringify(newarr));
  1283. },
  1284. // 删除脏数据
  1285. removeRubbishData(data) {
  1286. if (data.sentence_list.length > 0) {
  1287. for (let i = data.sentence_list.length; i--; ) {
  1288. if (
  1289. data.sentence_list[i].sentence_fc_list.length <= 1 ||
  1290. data.sentence_list[i].sentence_fc_list_word_index === -1
  1291. ) {
  1292. data.sentence_list.splice(i, 1);
  1293. }
  1294. }
  1295. }
  1296. },
  1297. handleCurrentChange(val) {
  1298. this.page = val;
  1299. this.padingEvetn();
  1300. },
  1301. // KWIC排序
  1302. KWICsortEvent(index, type) {
  1303. if (this.KWIC_sortIndex == index) return;
  1304. this.KWIC_sortIndex = index;
  1305. // this.CurrentList = this.allList[type];
  1306. // this.padingEvetn();
  1307. this.getdata();
  1308. },
  1309. // 切换释义
  1310. changeShiyi() {
  1311. this.page = 1;
  1312. this.padingEvetn();
  1313. },
  1314. // 排序
  1315. sortEvent(type) {
  1316. if (type !== this.sortType) {
  1317. this.sortType = type;
  1318. this.sort = '';
  1319. }
  1320. if (this.sort == 'down' || !this.sort) {
  1321. this.sort = 'up';
  1322. } else {
  1323. this.sort = 'down';
  1324. }
  1325. this.getdata();
  1326. this.page = 1;
  1327. },
  1328. // 修改大小
  1329. cutSize(index) {
  1330. this.sizeIndex = index;
  1331. if (index == 0) {
  1332. //大
  1333. if (this.patternIndex == 0) {
  1334. this.conSize = 24;
  1335. this.pinyinSize = 12;
  1336. } else {
  1337. this.conSize = 20;
  1338. }
  1339. } else if (index == 1) {
  1340. //中
  1341. if (this.patternIndex == 0) {
  1342. this.conSize = 20;
  1343. this.pinyinSize = 12;
  1344. } else {
  1345. this.conSize = 17;
  1346. }
  1347. } else {
  1348. //小
  1349. if (this.patternIndex == 0) {
  1350. this.conSize = 16;
  1351. this.pinyinSize = 10;
  1352. } else {
  1353. this.conSize = 15;
  1354. }
  1355. }
  1356. },
  1357. // 切换模式
  1358. cutPattern(index) {
  1359. if (this.patternIndex == index) {
  1360. return;
  1361. }
  1362. this.patternIndex = index;
  1363. this.getdata();
  1364. // if (this.patternIndex == 0) {
  1365. // this.CurrentList = JSON.parse(JSON.stringify(this.allList.sentence_list));
  1366. // } else {
  1367. // this.CurrentList = JSON.parse(JSON.stringify(this.allList.sentence_list_sort_left));
  1368. // }
  1369. // this.padingEvetn();
  1370. this.page = 1;
  1371. },
  1372. // 切换释义来源
  1373. cutsyly(index) {
  1374. if (this.rightTopIndex == index) {
  1375. return;
  1376. }
  1377. this.rightTopIndex = index;
  1378. if (this.rightTopIndex == 0) {
  1379. this.rightList = this.allList.stat_list_word_definition;
  1380. } else {
  1381. this.rightList = this.allList.stat_list_sentence_source_book;
  1382. }
  1383. // if (this.rightList.length > 0) {
  1384. this.inityuan();
  1385. // }
  1386. },
  1387. //编辑例句
  1388. handleEditLiju(item) {
  1389. this.actvieEditLijuItem = {
  1390. sentence_id: item ? item.sentence_id : '',
  1391. new_word: this.keyword ? this.keyword.trim() : '',
  1392. cixing: '',
  1393. source_path: item ? item.source_courseware_name_path_short : '',
  1394. definition_list: item ? item.word_definition_list.join('\n') : '',
  1395. sentence: item ? item.sentence_fc_list.join(' ') : '',
  1396. };
  1397. this.showEditLijuFlag = true;
  1398. },
  1399. handleClose() {
  1400. this.showEditLijuFlag = false;
  1401. this.actvieEditLijuItem = null;
  1402. },
  1403. // 保存
  1404. save() {
  1405. this.loading = true;
  1406. let word_list = [];
  1407. this.actvieEditLijuItem.sentence.split(' ').forEach((item) => {
  1408. let obj = {
  1409. word: item,
  1410. };
  1411. word_list.push(obj);
  1412. });
  1413. let Mname = 'book-courseware_manager-AddWordExampleSentence';
  1414. if (this.actvieEditLijuItem.sentence_id) {
  1415. Mname = 'book-courseware_manager-UpdateWordExampleSentence';
  1416. }
  1417. BookgetContent(Mname, {
  1418. sentence_id: this.actvieEditLijuItem.sentence_id,
  1419. new_word: {
  1420. new_word: this.actvieEditLijuItem.new_word,
  1421. cixing: this.actvieEditLijuItem.cixing,
  1422. definition_list: this.actvieEditLijuItem.definition_list.split('\n'),
  1423. },
  1424. source_path: this.actvieEditLijuItem.source_path,
  1425. word_list: word_list,
  1426. })
  1427. .then((res) => {
  1428. this.loading = false;
  1429. this.showEditLijuFlag = false;
  1430. this.actvieEditLijuItem = null;
  1431. this.$message.success('保存成功');
  1432. this.page = 1;
  1433. this.getdata(true);
  1434. })
  1435. .catch((res) => {
  1436. this.loading = false;
  1437. });
  1438. },
  1439. // 删除例句
  1440. handleDelLiju() {
  1441. if (this.selectDelLijuIds.length === 0) return;
  1442. this.loading = true;
  1443. let Mname = 'book-courseware_manager-DeleteWordExampleSentence';
  1444. BookgetContent(Mname, {
  1445. sentence_id_list: this.selectDelLijuIds,
  1446. })
  1447. .then((res) => {
  1448. this.loading = false;
  1449. this.selectDelLijuIds = [];
  1450. this.$message.success('删除成功');
  1451. this.getLevelList();
  1452. this.page = 1;
  1453. this.getdata(true);
  1454. })
  1455. .catch((res) => {
  1456. this.loading = false;
  1457. });
  1458. },
  1459. },
  1460. //生命周期 - 创建完成(可以访问当前this实例)
  1461. async created() {
  1462. const _this = this;
  1463. if (this.AccessToken) {
  1464. const Mname = 'login_control-ParseAccessToken';
  1465. await getStaticContent(Mname, {
  1466. access_token: _this.AccessToken,
  1467. }).then((res) => {
  1468. res.access_token = _this.AccessToken;
  1469. setToken(res);
  1470. sessionStorage.setItem('GCLS_Token_Tc', JSON.stringify(res));
  1471. this.showPage = true;
  1472. });
  1473. await getConfigInfor();
  1474. }
  1475. localStorage.removeItem('seekPageData');
  1476. this.showPage = true;
  1477. this.getLevelList();
  1478. this.getTotalCount();
  1479. if (this.keyword && this.keyword.trim()) {
  1480. this.getdata(true);
  1481. }
  1482. let userInfor = getToken()
  1483. ? JSON.parse(getToken())
  1484. : sessionStorage.getItem('GCLS_Token_Tc')
  1485. ? JSON.parse(sessionStorage.getItem('GCLS_Token_Tc'))
  1486. : null;
  1487. // userInfor.popedom_code_list = [2000004, 2000001, 2000007, 9000001];
  1488. this.editLiju = userInfor && userInfor.popedom_code_list && userInfor.popedom_code_list.indexOf(9000001) > -1;
  1489. },
  1490. //生命周期 - 挂载完成(可以访问DOM元素)
  1491. mounted() {},
  1492. //生命周期-创建之前
  1493. beforeCreated() {},
  1494. //生命周期-挂载之前
  1495. beforeMount() {},
  1496. //生命周期-更新之前
  1497. beforUpdate() {},
  1498. //生命周期-更新之后
  1499. updated() {},
  1500. //生命周期-销毁之前
  1501. beforeDestory() {},
  1502. //生命周期-销毁完成
  1503. destoryed() {},
  1504. //如果页面有keep-alive缓存功能,这个函数会触发
  1505. activated() {},
  1506. };
  1507. </script>
  1508. <style lang="scss" scoped>
  1509. /* @import url(); 引入css类 */
  1510. .corpus_seekpage {
  1511. .title {
  1512. margin-top: 24px;
  1513. > :nth-child(1) {
  1514. font-weight: 700;
  1515. font-size: 32px;
  1516. line-height: 38px;
  1517. color: #000000;
  1518. }
  1519. > :nth-child(2) {
  1520. font-weight: 400;
  1521. font-size: 14px;
  1522. line-height: 16px;
  1523. }
  1524. > p {
  1525. margin: 0;
  1526. text-align: center;
  1527. }
  1528. }
  1529. .seek {
  1530. margin-top: 18px;
  1531. display: flex;
  1532. justify-content: center;
  1533. height: 51px;
  1534. position: relative;
  1535. input {
  1536. width: 468px;
  1537. height: 51px;
  1538. border: 1px solid #669aff;
  1539. outline: none;
  1540. box-sizing: border-box;
  1541. padding: 0 10px;
  1542. }
  1543. button {
  1544. width: 96px;
  1545. height: 100%;
  1546. background: #669aff;
  1547. border-width: 1px 1px 1px 0px;
  1548. border-style: solid;
  1549. border-color: #669aff;
  1550. text-align: center;
  1551. font-weight: 400;
  1552. font-size: 16px;
  1553. line-height: 51px;
  1554. color: #ffffff;
  1555. cursor: pointer;
  1556. box-sizing: border-box;
  1557. }
  1558. .set_corpus {
  1559. position: absolute;
  1560. top: 16px;
  1561. }
  1562. }
  1563. .txt {
  1564. margin-top: 24px;
  1565. text-align: center;
  1566. font-weight: 400;
  1567. font-size: 16px;
  1568. line-height: 19px;
  1569. color: #000000;
  1570. opacity: 0.65;
  1571. }
  1572. .txt_imgtable {
  1573. width: 1200px;
  1574. margin: 0 auto;
  1575. .left {
  1576. position: relative;
  1577. width: 100%;
  1578. padding-bottom: 68px;
  1579. margin-right: 8px;
  1580. background: #fff;
  1581. border: 1px solid rgba(0, 0, 0, 8%);
  1582. border-radius: 0 0 8px 8px;
  1583. > .top {
  1584. display: flex;
  1585. align-items: center;
  1586. justify-content: space-between;
  1587. height: 44px;
  1588. font-size: 12px;
  1589. font-weight: 400;
  1590. color: #000;
  1591. border-bottom: 1px solid rgba(0, 0, 0, 8%);
  1592. > div {
  1593. display: flex;
  1594. align-items: center;
  1595. column-gap: 16px;
  1596. }
  1597. .KWIC_sort {
  1598. display: flex;
  1599. span {
  1600. display: inline-block;
  1601. display: flex;
  1602. align-items: center;
  1603. justify-content: center;
  1604. width: 28px;
  1605. height: 28px;
  1606. cursor: pointer;
  1607. background: #fff;
  1608. border-radius: 4px;
  1609. }
  1610. .sele {
  1611. background: #f0f0f0;
  1612. }
  1613. .sort {
  1614. img {
  1615. width: 14px;
  1616. height: 12px;
  1617. }
  1618. }
  1619. .down {
  1620. img {
  1621. width: 16px;
  1622. height: 16px;
  1623. }
  1624. }
  1625. }
  1626. .pattern {
  1627. display: flex;
  1628. align-items: center;
  1629. justify-content: center;
  1630. width: 144px;
  1631. height: 28px;
  1632. margin-left: 16px;
  1633. background: #eee;
  1634. border-radius: 4px;
  1635. > div {
  1636. width: 68px;
  1637. height: 24px;
  1638. font-size: 12px;
  1639. font-weight: 400;
  1640. line-height: 24px;
  1641. color: #888;
  1642. text-align: center;
  1643. cursor: pointer;
  1644. border-radius: 2px;
  1645. }
  1646. .sele {
  1647. color: #000;
  1648. background: #fff;
  1649. box-shadow: 0 2px 2px rgba(0, 0, 0, 8%);
  1650. }
  1651. }
  1652. .refresh {
  1653. display: flex;
  1654. align-items: center;
  1655. justify-content: center;
  1656. width: 28px;
  1657. height: 28px;
  1658. cursor: pointer;
  1659. background: #eee;
  1660. border-radius: 4px;
  1661. img {
  1662. width: 16px;
  1663. height: 16px;
  1664. }
  1665. }
  1666. .size {
  1667. margin-right: 12px;
  1668. span {
  1669. padding: 4px;
  1670. font-size: 14px;
  1671. cursor: pointer;
  1672. }
  1673. .sele {
  1674. background: #e6e6e6;
  1675. border-radius: 4px;
  1676. }
  1677. }
  1678. }
  1679. .lang_sort {
  1680. display: flex;
  1681. align-items: center;
  1682. justify-content: center;
  1683. width: max-content;
  1684. cursor: pointer;
  1685. margin-right: 16px;
  1686. border-radius: 20px;
  1687. border: 1px solid #e5e6eb;
  1688. padding: 4px 12px;
  1689. font-size: 14px;
  1690. &.active {
  1691. border-color: #4992ff;
  1692. background: #4992ff;
  1693. color: #fff;
  1694. }
  1695. img {
  1696. width: 16px;
  1697. height: 16px;
  1698. margin-left: 2px;
  1699. }
  1700. }
  1701. }
  1702. .right {
  1703. width: 100%;
  1704. padding-bottom: 39px;
  1705. background: #fff;
  1706. border: 1px solid rgba(0, 0, 0, 8%);
  1707. border-radius: 8px;
  1708. margin-top: 16px;
  1709. .top {
  1710. display: flex;
  1711. align-items: center;
  1712. height: 44px;
  1713. // border-bottom: 1px solid rgba(0, 0, 0, 8%);
  1714. > div {
  1715. display: flex;
  1716. align-items: center;
  1717. justify-content: center;
  1718. // width: 84px;
  1719. padding: 0 2px;
  1720. height: 28px;
  1721. margin-left: 16px;
  1722. background: #eee;
  1723. border-radius: 4px;
  1724. > div {
  1725. width: 40px;
  1726. height: 24px;
  1727. font-size: 12px;
  1728. font-weight: 400;
  1729. line-height: 24px;
  1730. color: #888;
  1731. text-align: center;
  1732. cursor: pointer;
  1733. border-radius: 2px;
  1734. }
  1735. .sele {
  1736. color: #000;
  1737. background: #fff;
  1738. box-shadow: 0 2px 2px rgba(0, 0, 0, 8%);
  1739. }
  1740. }
  1741. }
  1742. .bottom {
  1743. display: flex;
  1744. }
  1745. .list {
  1746. width: 508px;
  1747. margin: 0 auto;
  1748. max-height: 1450px;
  1749. overflow: auto;
  1750. .one {
  1751. display: flex;
  1752. justify-content: space-between;
  1753. padding: 12px;
  1754. font-size: 14px;
  1755. font-weight: 400;
  1756. line-height: 22px;
  1757. color: #333;
  1758. cursor: pointer;
  1759. border-bottom: 1px solid #eee;
  1760. > :nth-child(1) {
  1761. text-align: left;
  1762. }
  1763. > div {
  1764. width: 186px;
  1765. text-align: center;
  1766. }
  1767. }
  1768. .all {
  1769. font-size: 14px;
  1770. font-weight: 600;
  1771. line-height: 22px;
  1772. color: #333;
  1773. border-bottom: none;
  1774. }
  1775. }
  1776. }
  1777. }
  1778. .cx-list {
  1779. width: 1200px;
  1780. margin: 24px auto 0 auto;
  1781. display: flex;
  1782. justify-content: space-between;
  1783. .cx-list-box {
  1784. display: flex;
  1785. padding: 8px 16px;
  1786. align-items: center;
  1787. gap: 16px;
  1788. border-radius: 8px 8px 0px 0px;
  1789. border: 1px solid #ebebeb;
  1790. background: #f7f7f7;
  1791. border-bottom: none;
  1792. width: max-content;
  1793. color: #000;
  1794. font-size: 16px;
  1795. line-height: 24px;
  1796. label {
  1797. display: flex;
  1798. padding: 4px 16px;
  1799. flex-wrap: wrap;
  1800. border-radius: 4px;
  1801. gap: 8px;
  1802. background: #fff;
  1803. color: #007eff;
  1804. font-size: 14px;
  1805. font-weight: 600;
  1806. line-height: 22px;
  1807. > :nth-child(2) {
  1808. color: #000;
  1809. font-weight: 400;
  1810. }
  1811. }
  1812. }
  1813. .el-button {
  1814. font-weight: 400;
  1815. height: 38px;
  1816. }
  1817. .edit-liju {
  1818. padding: 8px 16px;
  1819. border-radius: 4px;
  1820. border: 1px solid #669aff;
  1821. background: #fff;
  1822. color: #2164e4;
  1823. font-size: 14px;
  1824. line-height: 22px;
  1825. }
  1826. }
  1827. .main {
  1828. // height: 95%;
  1829. .list {
  1830. margin-top: 16px;
  1831. .one {
  1832. padding: 0 16px;
  1833. margin-bottom: 8px;
  1834. display: flex;
  1835. align-items: end;
  1836. .top {
  1837. display: flex;
  1838. // align-items: center;
  1839. // flex-flow: wrap;
  1840. width: 100%;
  1841. .number {
  1842. flex-shrink: 0;
  1843. width: 22px;
  1844. margin-right: 8px;
  1845. font-size: 14px;
  1846. font-weight: 400;
  1847. line-height: 21px;
  1848. color: rgba(0, 0, 0, 30%);
  1849. text-align: right;
  1850. &-1-false {
  1851. margin-top: 3px;
  1852. }
  1853. &-0-true {
  1854. margin-top: 21px;
  1855. }
  1856. &-0-false {
  1857. margin-top: 5px;
  1858. }
  1859. &-2-true {
  1860. margin-top: 17px;
  1861. }
  1862. &-2-false {
  1863. margin-top: 1px;
  1864. }
  1865. }
  1866. img {
  1867. width: 16px;
  1868. height: 16px;
  1869. margin-right: 8px;
  1870. cursor: pointer;
  1871. &.speaker-1-false {
  1872. margin-top: 6px;
  1873. }
  1874. &.speaker-0-true {
  1875. margin-top: 24px;
  1876. }
  1877. &.speaker-0-false {
  1878. margin-top: 8px;
  1879. }
  1880. &.speaker-2-true {
  1881. margin-top: 20px;
  1882. }
  1883. &.speaker-2-false {
  1884. margin-top: 4px;
  1885. }
  1886. }
  1887. .words {
  1888. // display: flex;
  1889. // align-items: flex-end;
  1890. // flex-flow: wrap;
  1891. font-family: 'FZJCGFKTK';
  1892. word-break: break-all;
  1893. > div {
  1894. .pinyin {
  1895. margin-bottom: 2px;
  1896. font-family: 'League';
  1897. font-size: 12px;
  1898. font-weight: 500;
  1899. color: rgba(0, 0, 0, 50%);
  1900. text-align: center;
  1901. }
  1902. .con {
  1903. font-family: 'FZJCGFKTK';
  1904. font-size: 20px;
  1905. font-weight: 400;
  1906. color: #000;
  1907. text-align: center;
  1908. }
  1909. }
  1910. }
  1911. .shiyi {
  1912. font-size: 12px;
  1913. font-weight: 400;
  1914. line-height: 24px;
  1915. color: #48a3e6;
  1916. font-family: 'robot', 'FZJCGFKTK';
  1917. &-0 {
  1918. line-height: 32px;
  1919. }
  1920. &-1 {
  1921. line-height: 28px;
  1922. }
  1923. }
  1924. }
  1925. .bottom {
  1926. font-size: 12px;
  1927. font-weight: 400;
  1928. line-height: 150%;
  1929. color: rgba(0, 0, 0, 30%);
  1930. text-align: right;
  1931. width: 117px;
  1932. overflow: hidden;
  1933. text-overflow: ellipsis;
  1934. white-space: nowrap;
  1935. flex-shrink: 0;
  1936. }
  1937. }
  1938. .kwic_one {
  1939. display: flex;
  1940. align-items: center;
  1941. padding: 0 16px;
  1942. justify-content: space-between;
  1943. > :nth-child(1) {
  1944. justify-content: flex-end;
  1945. width: 16px;
  1946. margin-right: 16px;
  1947. }
  1948. .laiyuan {
  1949. width: 117px;
  1950. overflow: hidden;
  1951. font-size: 14px;
  1952. font-weight: 400;
  1953. line-height: 22px;
  1954. color: rgba(0, 0, 0, 65%);
  1955. text-overflow: ellipsis;
  1956. white-space: nowrap;
  1957. }
  1958. .word {
  1959. display: flex;
  1960. justify-content: center;
  1961. // width: 361px;
  1962. height: 22px;
  1963. margin-left: 16px;
  1964. overflow: hidden;
  1965. font-family: 'FZJCGFKTK';
  1966. font-size: 14px;
  1967. font-weight: 400;
  1968. line-height: 22px;
  1969. color: #000;
  1970. white-space: nowrap;
  1971. opacity: 1;
  1972. > :nth-child(1) {
  1973. // direction: rtl;
  1974. // unicode-bidi: plaintext;
  1975. // text-align: right;
  1976. display: flex;
  1977. justify-content: flex-end;
  1978. width: 472px;
  1979. overflow: hidden;
  1980. white-space: nowrap;
  1981. }
  1982. > :nth-child(3) {
  1983. width: 472px;
  1984. overflow: hidden;
  1985. text-align: left;
  1986. white-space: nowrap;
  1987. direction: ltr;
  1988. unicode-bidi: plaintext;
  1989. }
  1990. }
  1991. }
  1992. }
  1993. .page {
  1994. position: absolute;
  1995. bottom: 0;
  1996. box-sizing: border-box;
  1997. display: flex;
  1998. justify-content: space-between;
  1999. align-items: center;
  2000. width: 100%;
  2001. height: 64px;
  2002. border-top: 1px solid rgba(0, 0, 0, 0.08);
  2003. padding: 16px;
  2004. .text {
  2005. display: flex;
  2006. align-items: center;
  2007. font-size: 14px;
  2008. font-weight: 400;
  2009. line-height: 22px;
  2010. color: rgba(0, 0, 0, 60%);
  2011. text-align: center;
  2012. }
  2013. }
  2014. }
  2015. .edit-liju-box {
  2016. width: 1200px;
  2017. margin: 0 auto;
  2018. border-radius: 0px 8px 8px 8px;
  2019. border: 1px solid rgba(0, 0, 0, 0.08);
  2020. background: #fff;
  2021. box-sizing: border-box;
  2022. > .top {
  2023. display: flex;
  2024. justify-content: space-between;
  2025. align-items: center;
  2026. border-bottom: 1px solid rgba(0, 0, 0, 0.08);
  2027. padding: 8px 16px;
  2028. .select-number {
  2029. color: #669aff;
  2030. font-size: 14px;
  2031. font-weight: 500;
  2032. line-height: 22px;
  2033. margin-right: 16px;
  2034. }
  2035. .el-button {
  2036. padding: 4px 12px;
  2037. font-size: 14px;
  2038. font-weight: 400;
  2039. line-height: 22px;
  2040. border-radius: 20px;
  2041. }
  2042. }
  2043. .page {
  2044. position: inherit;
  2045. }
  2046. .el-icon-edit-outline {
  2047. cursor: pointer;
  2048. margin-left: 4px;
  2049. }
  2050. }
  2051. }
  2052. </style>
  2053. <style lang="scss">
  2054. .result {
  2055. .el-switch__core {
  2056. width: 26px !important;
  2057. height: 16px;
  2058. }
  2059. .el-switch__core::after {
  2060. top: 3px;
  2061. width: 8px;
  2062. height: 8px;
  2063. }
  2064. .el-switch.is-checked .el-switch__core::after {
  2065. margin-left: -10px;
  2066. }
  2067. .el-switch__label.is-active {
  2068. color: #000;
  2069. }
  2070. .page {
  2071. .el-pagination.is-background .el-pager li:not(.disabled).active {
  2072. background-color: #0052d9;
  2073. }
  2074. .el-pager li {
  2075. background: #fff;
  2076. border: 1px solid #dcdcdc;
  2077. border-radius: 3px;
  2078. }
  2079. }
  2080. }
  2081. .el-loading-mask {
  2082. z-index: 200000 !important;
  2083. }
  2084. .checkAllCheckbox {
  2085. width: 100%;
  2086. padding: 0 20px;
  2087. height: 34px;
  2088. line-height: 34px;
  2089. &:hover {
  2090. background-color: #f5f7fa;
  2091. }
  2092. .el-checkbox__input {
  2093. display: none;
  2094. }
  2095. .el-checkbox__label {
  2096. padding: 0;
  2097. }
  2098. }
  2099. .selectBook {
  2100. .el-tag {
  2101. max-width: 90px;
  2102. }
  2103. }
  2104. .el-button--primary,
  2105. .el-checkbox__input.is-checked .el-checkbox__inner,
  2106. .el-checkbox__input.is-indeterminate .el-checkbox__inner {
  2107. background-color: #669aff;
  2108. border-color: #669aff;
  2109. }
  2110. .el-button--primary.is-plain {
  2111. color: #669aff;
  2112. border-color: #669aff;
  2113. &:hover {
  2114. background-color: #669aff;
  2115. }
  2116. }
  2117. .el-checkbox__inner {
  2118. border-color: #669aff;
  2119. }
  2120. .seekpage-dialog {
  2121. .el-dialog__header {
  2122. padding: 0;
  2123. }
  2124. label {
  2125. color: #000;
  2126. font-size: 14px;
  2127. font-weight: 400;
  2128. line-height: 22px;
  2129. margin-bottom: 8px;
  2130. display: block;
  2131. }
  2132. .el-input {
  2133. margin-bottom: 8px;
  2134. }
  2135. .tips {
  2136. color: rgba(0, 0, 0, 0.4);
  2137. font-size: 14px;
  2138. font-weight: 400;
  2139. line-height: 22px;
  2140. margin-bottom: 8px;
  2141. display: block;
  2142. }
  2143. p {
  2144. color: #ff5757;
  2145. font-size: 24px;
  2146. font-weight: 400;
  2147. line-height: 32px;
  2148. margin-bottom: 8px;
  2149. }
  2150. }
  2151. </style>