ChipPrintScreenCheck.vue 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497
  1. <template>
  2. <Modal v-model="fullscreenModal" fullscreen title="工位屏-补打">
  3. <div slot="header">
  4. <span style="font-size: 0.5rem">工位屏-补打</span>
  5. <div class="fullscreen-title-btn">
  6. <Button
  7. @click="handleWideScreenClick"
  8. size="large"
  9. id="full_screen_btn"
  10. type="primary"
  11. style="margin-right: 1rem"
  12. >
  13. {{ isWideScreen ? "正常模式" : "简单模式" }}
  14. </Button>
  15. <Button
  16. @click="handlePrint"
  17. size="large"
  18. type="primary"
  19. style="margin-right: 1rem"
  20. >
  21. 打 印
  22. </Button>
  23. <Button @click="back" size="large" type="primary">
  24. 返 回
  25. </Button>
  26. </div>
  27. </div>
  28. <div class="fullscreen-content">
  29. <div class="fullscreen-content-select">
  30. <div class="fullscreen-content-select-block">
  31. <Button
  32. @click="handleSelection(ordernoObj, 1)"
  33. size="large"
  34. type="primary"
  35. style="margin-right: 10px"
  36. >
  37. 项目选择
  38. </Button>
  39. <div class="icon-wrapper" v-show="selectedInfo.order_no">
  40. <Icon
  41. class="icon-close"
  42. @click="handleCancelSelected('order_no')"
  43. size="24"
  44. type="md-close"
  45. />
  46. <div>
  47. <span>订单编号:</span>
  48. <span>{{ selectedInfo.order_no }}</span>
  49. </div>
  50. <div>
  51. <span>项目名称:</span>
  52. <span>{{ selectedInfo.residential_name }}</span>
  53. </div>
  54. </div>
  55. </div>
  56. <div class="fullscreen-content-select-block">
  57. <Button
  58. @click="handleSelection(urlObj, 2)"
  59. size="large"
  60. type="primary"
  61. style="margin-right: 10px"
  62. >
  63. 图号选择
  64. </Button>
  65. <div style="display: flex; align-items: center">
  66. <div class="icon-wrapper">
  67. <div v-show="selectedInfo.url_number">
  68. <Icon
  69. class="icon-close"
  70. @click="handleCancelSelected('product_id')"
  71. size="24"
  72. type="md-close"
  73. />
  74. <span>图号:</span>
  75. <span>{{ selectedInfo.url_number }}</span>
  76. </div>
  77. </div>
  78. </div>
  79. </div>
  80. <div class="fullscreen-content-select-block">
  81. <Button
  82. @click="handleSelectionRowno(rownoObj)"
  83. size="large"
  84. type="primary"
  85. style="margin-right: 10px"
  86. >
  87. 行号选择
  88. </Button>
  89. <div
  90. class="icon-wrapper"
  91. v-show="selectedInfo.rows.length != 0"
  92. style="display: flex; align-items: center"
  93. >
  94. <span>行号:</span>
  95. <div style="display: flex; justify-content: flex-start">
  96. <div v-for="(item, index) in selectedInfo.rows" :key="item.key">
  97. <div class="icon-wrapper" style="margin-right: 0.35rem">
  98. <Icon
  99. class="icon-close"
  100. @click="handleCancelSelected(index, 1)"
  101. size="24"
  102. type="md-close"
  103. />
  104. <span style="display: inline-block"
  105. >{{ item.start }}-{{ item.end }}</span
  106. >
  107. </div>
  108. </div>
  109. </div>
  110. </div>
  111. </div>
  112. </div>
  113. <div class="fullscreen-content-choose">
  114. <div
  115. :class="[
  116. choose.isChoosed
  117. ? 'fullscreen-content-choose-block fullscreen-content-choose-block-choosen'
  118. : 'fullscreen-content-choose-block fullscreen-content-choose-block-unchoosen',
  119. isWideScreen ? 'fullscreen-content-choose-block-wide' : '',
  120. ]"
  121. v-for="choose in contentData"
  122. :key="choose.row"
  123. @click="handleChooseBlockClick(choose)"
  124. >
  125. <div :class="[isWideScreen ? 'chip-tag-choosed' : 'chip-tag']">
  126. 芯片
  127. <Icon
  128. size="20px"
  129. :style="
  130. isWideScreen
  131. ? 'font-size: 1rem; transform: translate(0, -50%)'
  132. : 'font-size: 1rem; transform: translate(0, -40%)'
  133. "
  134. style="font-size: 1rem; transform: translate(0, -40%)"
  135. :color="choose.isChoosed ? '#2d8cf0' : 'white'"
  136. type="md-arrow-dropup"
  137. />
  138. </div>
  139. <div v-show="!isWideScreen">
  140. <span>行号</span>
  141. <span>{{ choose.row_no }}</span>
  142. </div>
  143. <div v-show="!isWideScreen">
  144. <span>部件</span>
  145. <span>{{ choose.part_title }}</span>
  146. </div>
  147. <div v-show="!isWideScreen">
  148. <span>材料</span>
  149. <span>{{ choose.sub_part_title }}</span>
  150. </div>
  151. <div v-show="!isWideScreen">
  152. <span>毛料尺寸</span>
  153. <span>{{ choose.wool_size }}</span>
  154. </div>
  155. <div v-show="!isWideScreen">
  156. <span>精裁尺寸</span>
  157. <span>{{ choose.cut_size }}</span>
  158. </div>
  159. <div v-show="isWideScreen" class="wide-screen-rowno">
  160. <span
  161. :class="[
  162. choose.isChoosed
  163. ? 'wide-screen-rowno-span-choosed'
  164. : 'wide-screen-rowno-span',
  165. ]"
  166. >{{ choose.row_no }}</span
  167. >
  168. </div>
  169. <div>
  170. <span>未完成数量</span>
  171. <span>
  172. {{ choose.un_complete }}(总数:{{
  173. choose.on_complete + choose.un_complete
  174. }})
  175. </span>
  176. </div>
  177. <div>
  178. <span>未打印数量</span>
  179. <span
  180. >{{ choose.un_print }}(总数:{{
  181. choose.on_print + choose.un_print
  182. }})</span
  183. >
  184. </div>
  185. </div>
  186. </div>
  187. <div class="fullscreen-content-page">
  188. <Page
  189. @on-change="changePage"
  190. :page-size="page_size"
  191. :current="page_index"
  192. :total="total"
  193. />
  194. </div>
  195. </div>
  196. <div slot="footer"></div>
  197. <Modal
  198. class="selection-modal"
  199. v-model="selectionModal"
  200. :title="currencySelectedObj.title"
  201. width="80%"
  202. >
  203. <van-number-keyboard
  204. :show="show"
  205. @blur="show = false"
  206. @input="onInput"
  207. @delete="onDelete"
  208. z-index="99999"
  209. />
  210. <div class="selection-modal-top">
  211. <Input
  212. :placeholder="currencySelectedObj.title"
  213. v-model="currentSearchValue"
  214. @on-focus="show = true"
  215. @on-change="
  216. handleCurrentSearch(currencySelectedObj, currentSearchValue)
  217. "
  218. style="width: 80%"
  219. >
  220. <Icon
  221. @click="
  222. handleCurrentSearch(currencySelectedObj, currentSearchValue)
  223. "
  224. type="ios-search"
  225. slot="suffix"
  226. />
  227. </Input>
  228. </div>
  229. <div class="selection-modal-body">
  230. <div
  231. :class="[
  232. block.isCurrent
  233. ? 'selection-modal-body-block selection-modal-body-block-choosen'
  234. : 'selection-modal-body-block selection-modal-body-block-unchoosen',
  235. ]"
  236. v-for="(block, index) in currencySelectedObj.list"
  237. :key="index"
  238. @click="handleSelectionClick(currencySelectedObj, block)"
  239. >
  240. <div v-show="currencySelectedObj.type == 1">
  241. <span>订单编号:</span>
  242. <span>{{ block.order_no }}</span>
  243. </div>
  244. <div v-show="currencySelectedObj.type == 2">
  245. <span>{{ block.title }}</span>
  246. </div>
  247. <div v-show="currencySelectedObj.type == 1">
  248. <span>项目名称:</span>
  249. <span>{{ block.residential_name }}</span>
  250. </div>
  251. </div>
  252. <div
  253. style="font-size: 1rem"
  254. v-show="currencySelectedObj.list.length == 0"
  255. >
  256. 暂无数据
  257. </div>
  258. </div>
  259. <div class="fullscreen-content-page">
  260. <Page
  261. @on-change="changeModalPage"
  262. :current="
  263. currencySelectedObj.type == 1
  264. ? modal_1_page_index
  265. : modal_2_page_index
  266. "
  267. :page-size="
  268. currencySelectedObj.type == 1
  269. ? modal_1_page_size
  270. : modal_2_page_size
  271. "
  272. :total="currencySelectedObj.type == 1 ? modal_1_total : modal_2_total"
  273. />
  274. </div>
  275. <div slot="footer">
  276. <Button
  277. @click="selectionModal = false"
  278. type="primary"
  279. style="margin-right: 10px"
  280. >
  281. 返回
  282. </Button>
  283. <!-- <Button
  284. v-show="currencySelectedObj.type == 1"
  285. @click="handleSelectionComfirm(currencySelectedObj)"
  286. type="primary"
  287. >
  288. 确认
  289. </Button> -->
  290. </div>
  291. </Modal>
  292. <Modal
  293. class="selection-modal"
  294. v-model="selectionDetailModal"
  295. :title="currencySelectedObj.title"
  296. width="80%"
  297. >
  298. <div class="selection-modal-body" v-if="currencySelectedObj.hasChild">
  299. <div
  300. :class="[
  301. block.isCurrent
  302. ? 'selection-modal-body-block-detail selection-modal-body-block-detail-choosen'
  303. : 'selection-modal-body-block-detail selection-modal-body-block-detail-unchoosen',
  304. ]"
  305. v-for="(block, index) in chooseDetailUrlNo.children"
  306. :key="index"
  307. @click="handleSelectionDetailClick(chooseDetailUrlNo, block)"
  308. >
  309. <div>
  310. <span>{{ block.url_number }}</span>
  311. </div>
  312. </div>
  313. </div>
  314. <div slot="footer">
  315. <Button
  316. @click="
  317. selectionDetailModal = false;
  318. selectionModal = true;
  319. "
  320. type="primary"
  321. style="margin-right: 10px"
  322. >
  323. 返回
  324. </Button>
  325. <!-- <Button
  326. @click="handleSelectionComfirm(currencySelectedObj)"
  327. type="primary"
  328. >
  329. 确认
  330. </Button> -->
  331. </div>
  332. </Modal>
  333. <Modal
  334. class="selection-rowno-modal"
  335. v-model="selectionRownolModal"
  336. title="行号选择"
  337. width="80%"
  338. >
  339. <div class="selection-rowno-modal-body">
  340. <van-number-keyboard
  341. :show="show2"
  342. @blur="show2 = false"
  343. @input="keyboardTap"
  344. @delete="keyboardDele"
  345. z-index="99999"
  346. />
  347. <div
  348. class="selection-rowno-modal-body-block"
  349. v-for="(block, index) in chooseLineNo"
  350. :key="index"
  351. >
  352. <span>行号区间:</span>
  353. <Input
  354. v-model="block.start"
  355. @on-focus="handleRowNoInput(block, 1)"
  356. clearable
  357. style="width: 20%; margin: 0 10px"
  358. size="large"
  359. />
  360. -
  361. <Input
  362. v-model="block.end"
  363. @on-focus="handleRowNoInput(block, 2)"
  364. clearable
  365. style="width: 20%; margin: 0 10px"
  366. size="large"
  367. />
  368. <Button
  369. @click="handleAddRow(block, index)"
  370. type="primary"
  371. size="large"
  372. v-show="index == 0"
  373. style="margin-right: 10px"
  374. >
  375. 添加
  376. </Button>
  377. <Button
  378. @click="handleDeleRow(block, index)"
  379. type="primary"
  380. size="large"
  381. v-show="index != 0"
  382. style="margin-right: 10px"
  383. >
  384. 删除
  385. </Button>
  386. </div>
  387. </div>
  388. <div slot="footer">
  389. <Button
  390. @click="selectionRownolModal = false"
  391. type="primary"
  392. style="margin-right: 10px"
  393. >
  394. 返回
  395. </Button>
  396. <Button @click="handleRowNoComfirm(chooseLineNo)" type="primary">
  397. 确认
  398. </Button>
  399. </div>
  400. </Modal>
  401. <Modal
  402. class="selection-print-modal"
  403. v-model="printModal"
  404. title="打印"
  405. width="60%"
  406. >
  407. <div class="selection-print-modal-body">
  408. <div class="selection-print-modal-body-top">
  409. <div>
  410. <span>行号:</span>
  411. <span>{{ selectedObj.row_no }}</span>
  412. </div>
  413. <div>
  414. <span>部件名称:</span>
  415. <span>{{ selectedObj.part_title }}</span>
  416. </div>
  417. <div>
  418. <span>数量:</span>
  419. <InputNumber
  420. :max="selectedObj.on_print + selectedObj.un_print"
  421. :min="1"
  422. size="large"
  423. @on-focus="handlePrintInput"
  424. v-model="selectedObj.print_num"
  425. ></InputNumber>
  426. <van-number-keyboard
  427. :show="show3"
  428. @blur="show3 = false"
  429. @input="keyboardPrintTap"
  430. @delete="keyboardPrintDele"
  431. z-index="99999"
  432. />
  433. </div>
  434. </div>
  435. <div class="selection-print-modal-body-info">
  436. {{
  437. selectedObj.isFinished
  438. ? "该部件已打印,是否再次打印?"
  439. : "请确认打印数量是否正确!"
  440. }}
  441. <div>
  442. <Button
  443. v-show="selectedObj.isFinished"
  444. @click="handleSelectionRoom"
  445. type="primary"
  446. >
  447. 选择房间号
  448. </Button>
  449. </div>
  450. </div>
  451. </div>
  452. <div slot="footer">
  453. <Button
  454. @click="printModal = false"
  455. type="primary"
  456. style="margin-right: 10px"
  457. >
  458. 返回
  459. </Button>
  460. <Button @click="handlePrintComfirm(selectedObj)" type="primary">
  461. 确认
  462. </Button>
  463. </div>
  464. </Modal>
  465. <Modal
  466. class="selection-modal"
  467. v-model="roomModal"
  468. title="选择房间号"
  469. width="80%"
  470. >
  471. <div class="selection-modal-body">
  472. <div
  473. :class="[
  474. block.isCurrent
  475. ? 'selection-modal-body-block selection-modal-body-block-choosen'
  476. : 'selection-modal-body-block selection-modal-body-block-unchoosen',
  477. ]"
  478. v-for="(block, index) in modalRoomList"
  479. :key="index"
  480. @click="handleSelectedRoomClick(modalRoomList, block)"
  481. >
  482. <div>
  483. <span>{{ block.house }}</span>
  484. </div>
  485. </div>
  486. </div>
  487. <div class="fullscreen-content-page">
  488. <Page
  489. @on-change="changeRoomPage"
  490. :current="modal_room_page_index"
  491. :page-size="modal_room_page_size"
  492. :total="modal_room_total"
  493. />
  494. </div>
  495. <div slot="footer">
  496. <Button
  497. @click="handleRoomCancel"
  498. type="primary"
  499. style="margin-right: 10px"
  500. >
  501. 返回
  502. </Button>
  503. <Button @click="handlePrintComfirm(selectedObj, 1)" type="primary">
  504. 确认
  505. </Button>
  506. </div>
  507. </Modal>
  508. </Modal>
  509. </template>
  510. <script>
  511. // 这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  512. // 例如:import 《组件名称》 from '《组件路径》';
  513. import "@vant/touch-emulator";
  514. import $ from "jquery";
  515. export default {
  516. name: "",
  517. components: {},
  518. props: {},
  519. // import引入的组件需要注入到对象中才能使用
  520. data() {
  521. // 这里存放数据
  522. return {
  523. show: false,
  524. show2: false,
  525. show3: false,
  526. isFullScreen: false,
  527. fullscreenModal: true,
  528. selectionModal: false,
  529. selectionRownolModal: false,
  530. selectionDetailModal: false,
  531. printModal: false,
  532. roomModal: false,
  533. contentData: [],
  534. selectedObj: {},
  535. ordernoObj: {
  536. title: "订单编号/项目名称选择",
  537. currentSearchValue: "",
  538. list: [],
  539. hasChild: false,
  540. },
  541. urlObj: {
  542. title: "图号选择",
  543. list: [],
  544. hasChild: true,
  545. },
  546. rownoObj: {},
  547. currencySelectedObj: {
  548. title: "订单编号/项目名称选择",
  549. currentSearchValue: "",
  550. type: 1,
  551. list: [],
  552. },
  553. selectedInfo: {
  554. order_no: "",
  555. residential_name: "",
  556. url_number: "",
  557. product_id: "",
  558. rows: [],
  559. },
  560. page_index: 1,
  561. page_size: 6,
  562. total: 0,
  563. currentSearchValue: "",
  564. modal_1_page_index: 1,
  565. modal_1_page_size: 6,
  566. modal_1_total: 0,
  567. modal_room_page_index: 1,
  568. modal_room_page_size: 9,
  569. modal_room_total: 0,
  570. modal_2_page_index: 1,
  571. modal_2_page_size: 60,
  572. modal_2_total: 0,
  573. chooseOrderNo: {},
  574. chooseUrlNo: {},
  575. chooseDetailUrlNo: {},
  576. chooseLineNo: [{ start: "", end: "" }],
  577. keyboardObj: {},
  578. keyboardVal: "",
  579. modalRoomList: [],
  580. modalRoomListSelected: [],
  581. isWideScreen: localStorage.getItem("isWideScreen") || false,
  582. };
  583. },
  584. // 生命周期 - 创建完成(可以访问当前this实例)
  585. created() {},
  586. // 生命周期 - 挂载完成(可以访问DOM元素)
  587. mounted() {
  588. this.selectedInfo = JSON.parse(localStorage.getItem("printInfo"));
  589. this.getChipDetail();
  590. },
  591. methods: {
  592. back() {
  593. this.$router.go(-1);
  594. },
  595. handleSelection(obj, type) {
  596. if (type == 2 && this.selectedInfo.order_no == "") {
  597. return this.$Message.warning("请先选择项目");
  598. }
  599. this.currentSearchValue = "";
  600. this.currentSearchValue = obj.currentSearchValue;
  601. this.currencySelectedObj = obj;
  602. this.selectionModal = true;
  603. this.currencySelectedObj.type = type;
  604. if (this.currencySelectedObj.list.length == 0 || type == 2) {
  605. this.handleCurrentSearch(
  606. this.currencySelectedObj,
  607. this.currentSearchValue
  608. );
  609. }
  610. },
  611. handleSelectionRowno(row) {
  612. console.log(`row`, row);
  613. if (this.selectedInfo.rows.legth > 0) {
  614. this.chooseLineNo = JSON.parse(JSON.stringify(this.selectedInfo.rows));
  615. } else {
  616. this.chooseLineNo = [{ start: null, end: null }];
  617. }
  618. this.selectionRownolModal = true;
  619. },
  620. handleCancelSelected(v, type) {
  621. if (type) {
  622. this.selectedInfo.rows.splice(v, 1);
  623. } else if (v == "product_id") {
  624. this.selectedInfo.url_number = "";
  625. this.selectedInfo.product_id = "";
  626. } else {
  627. this.selectedInfo[v] = "";
  628. }
  629. if (v != "order_no") {
  630. this.getChipDetail();
  631. } else {
  632. this.selectedInfo.residential_name = "";
  633. this.selectedInfo.url_number = "";
  634. this.selectedInfo.product_id = "";
  635. this.selectedInfo.rows = [];
  636. this.contentData = [];
  637. this.total = 0;
  638. }
  639. },
  640. handleChooseBlockClick(row) {
  641. console.log(`row`, row);
  642. if (row.isChoosed) {
  643. row.isChoosed = false;
  644. } else {
  645. this.contentData.map((v) => {
  646. v.isChoosed = false;
  647. });
  648. row.isChoosed = true;
  649. }
  650. if (row.un_print == 0) {
  651. row.isFinished = true;
  652. }
  653. this.selectedObj = row;
  654. },
  655. handleSelectionClick(row, obj) {
  656. row.list.map((v) => (v.isCurrent = false));
  657. obj.isCurrent = true;
  658. if (row.hasChild) {
  659. // 行号
  660. this.selectionModal = false;
  661. this.selectionDetailModal = true;
  662. this.chooseDetailUrlNo = obj;
  663. this.currentSearchValue = this.rownoObj.currentSearchValue;
  664. this.contentData = [];
  665. this.total = 0;
  666. } else {
  667. // 订单号
  668. this.chooseOrderNo = obj;
  669. this.currentSearchValue = this.ordernoObj.currentSearchValue;
  670. }
  671. if (row.type == 1) {
  672. this.handleSelectionComfirm(this.currencySelectedObj);
  673. }
  674. this.$forceUpdate();
  675. },
  676. handleAddRow(row, index) {
  677. this.chooseLineNo.push({
  678. start: "",
  679. end: "",
  680. });
  681. },
  682. handleDeleRow(row, index) {
  683. this.chooseLineNo.splice(index, 1);
  684. },
  685. handleSelectionDetailClick(row, obj) {
  686. row.children.map((v) => (v.isCurrent = false));
  687. obj.isCurrent = true;
  688. this.chooseUrlNo = obj;
  689. this.handleSelectionComfirm(this.currencySelectedObj);
  690. this.$forceUpdate();
  691. },
  692. handleFullScreenClick() {
  693. this.isFullScreen = !this.isFullScreen;
  694. if (this.isFullScreen) {
  695. this.enterFullScreen();
  696. } else {
  697. this.exitFullScreen();
  698. }
  699. },
  700. handleWideScreenClick() {
  701. this.isWideScreen = !this.isWideScreen;
  702. localStorage.setItem("isWideScreen", this.isWideScreen);
  703. if (this.isWideScreen) {
  704. this.page_size = 12;
  705. } else {
  706. this.page_size = 6;
  707. }
  708. this.getChipDetail();
  709. },
  710. enterFullScreen() {
  711. let el = document.documentElement;
  712. let rfs =
  713. el.requestFullScreen ||
  714. el.webkitRequestFullScreen ||
  715. el.mozRequestFullScreen ||
  716. el.msRequestFullscreen;
  717. if (rfs) {
  718. rfs.call(el);
  719. } else if (typeof window.ActiveXObject !== "undefined") {
  720. // for IE,这里其实就是模拟了按下键盘的F11,使浏览器全屏
  721. let wscript = new ActiveXObject("WScript.Shell");
  722. if (wscript != null) {
  723. wscript.SendKeys("{F11}");
  724. }
  725. }
  726. },
  727. exitFullScreen() {
  728. let el = document;
  729. let cfs =
  730. el.cancelFullScreen ||
  731. el.mozCancelFullScreen ||
  732. el.msExitFullscreen ||
  733. el.webkitExitFullscreen ||
  734. el.exitFullscreen;
  735. if (cfs) {
  736. // typeof cfs != "undefined" && cfs
  737. cfs.call(el);
  738. } else if (typeof window.ActiveXObject !== "undefined") {
  739. // for IE,这里和fullScreen相同,模拟按下F11键退出全屏
  740. let wscript = new ActiveXObject("WScript.Shell");
  741. if (wscript != null) {
  742. wscript.SendKeys("{F11}");
  743. }
  744. }
  745. },
  746. handleCurrentSearch(row, val) {
  747. //type 1项目选择 2图号选择
  748. let url =
  749. row.type == 1
  750. ? "/api/station_get_order"
  751. : "/api/station_get_url_number";
  752. this.axios({
  753. method: "post",
  754. url,
  755. data: {
  756. page_index:
  757. row.type == 1 ? this.modal_1_page_index : this.modal_2_page_index,
  758. page_size:
  759. row.type == 1 ? this.modal_1_page_size : this.modal_2_page_size,
  760. order_no: row.type == 1 ? val : this.selectedInfo.order_no,
  761. url_number: row.type == 1 ? "" : val,
  762. },
  763. }).then((res) => {
  764. if (res.code == 200) {
  765. if (row.type == 1) {
  766. row.list = res.data.data;
  767. this.modal_1_total = res.data.total;
  768. } else {
  769. row.list = [];
  770. this.modal_2_total = res.data.total;
  771. let length = Math.ceil(res.data.data.length / 10);
  772. for (let index = 0; index < length; index++) {
  773. row.list.push({
  774. //最后一位不一定刚好10个
  775. title:
  776. length - index == 1
  777. ? `${res.data.data[10 * index].url_number}~${
  778. res.data.data[res.data.data.length - 1].url_number
  779. }`
  780. : `${res.data.data[10 * index].url_number}~${
  781. res.data.data[10 * index + 10].url_number
  782. }`,
  783. children: res.data.data.slice(10 * index, 10 * index + 10),
  784. });
  785. }
  786. }
  787. }
  788. });
  789. },
  790. changeRoomPage(e) {
  791. this.modal_room_page_index = e;
  792. this.getModalRoomList();
  793. },
  794. handleSelectionRoom() {
  795. this.getModalRoomList();
  796. this.roomModal = true;
  797. },
  798. getModalRoomList() {
  799. this.axios({
  800. method: "post",
  801. url: "/api/station_get_print_house",
  802. data: {
  803. order_no: this.selectedInfo.order_no,
  804. product_id: this.selectedInfo.product_id,
  805. rows: this.selectedInfo.rows,
  806. page_index: this.modal_room_page_index,
  807. page_size: this.modal_room_page_size,
  808. id: this.selectedObj.id,
  809. },
  810. }).then((res) => {
  811. if (res.code == 200) {
  812. res.data.data.map((v) => {
  813. v.isCurrent = false;
  814. this.modalRoomListSelected &&
  815. this.modalRoomListSelected.map((w) => {
  816. if (w.id == v.id) {
  817. v.isCurrent = true;
  818. }
  819. });
  820. });
  821. this.modalRoomList = res.data.data;
  822. this.modal_room_total = res.data.total;
  823. }
  824. });
  825. },
  826. handleSelectedRoomClick(list, block) {
  827. if (block.isCurrent) {
  828. this.modalRoomListSelected = this.modalRoomListSelected.filter(
  829. (v) => v.id != block.id
  830. );
  831. block.isCurrent = !block.isCurrent;
  832. } else {
  833. if (this.modalRoomListSelected.length < this.selectedObj.print_num) {
  834. block.isCurrent = !block.isCurrent;
  835. this.modalRoomListSelected = this.modalRoomListSelected.concat(
  836. this.modalRoomList.filter((v) => v.isCurrent)
  837. );
  838. } else {
  839. this.$Message.warning("与打印数量不符,请重新选择");
  840. }
  841. }
  842. this.modalRoomListSelected = Array.from(
  843. new Set([...this.modalRoomListSelected])
  844. );
  845. },
  846. //项目、图号确认
  847. handleSelectionComfirm(row) {
  848. console.log(`row`, row);
  849. // 这里需要把弹框关闭之后赋值到selectedInfo上
  850. // this.selectedInfo.order_no;
  851. // 1 项目选择 2图号选择
  852. if (row.type == 1) {
  853. this.selectedInfo.order_no = this.chooseOrderNo.order_no;
  854. this.selectedInfo.residential_name = this.chooseOrderNo.residential_name;
  855. this.selectionModal = false;
  856. } else if (row.type == 2) {
  857. this.selectedInfo.url_number = this.chooseUrlNo.url_number;
  858. this.selectedInfo.product_id = this.chooseUrlNo.product_id;
  859. this.selectionDetailModal = false;
  860. this.getChipDetail();
  861. }
  862. // order_no: "20211010",
  863. // residential_name: "2",
  864. // url_number: "3",
  865. // row_no: [],
  866. },
  867. // 获取具体详情
  868. getChipDetail() {
  869. this.axios({
  870. method: "post",
  871. url: "/api/station_get_order_on_product_pr",
  872. data: {
  873. order_no: this.selectedInfo.order_no,
  874. product_id: this.selectedInfo.product_id,
  875. rows: this.selectedInfo.rows,
  876. page_index: this.page_index,
  877. page_size: this.page_size,
  878. },
  879. }).then((res) => {
  880. if (res.code == 200) {
  881. console.log(`res`, res);
  882. res.data.data.map((v) => (v.isChoosed = false));
  883. this.contentData = res.data.data;
  884. this.total = res.data.total;
  885. }
  886. });
  887. },
  888. handlePrint() {
  889. if (!this.selectedObj.isChoosed) {
  890. return this.$Message.warning("请选择数据");
  891. }
  892. if (this.selectedObj.un_print == 0) {
  893. this.selectedObj.print_num = this.selectedObj.on_print;
  894. } else {
  895. this.selectedObj.print_num = this.selectedObj.un_print;
  896. }
  897. this.printModal = true;
  898. },
  899. handlePrintComfirm(row, type) {
  900. if (
  901. type &&
  902. this.modalRoomListSelected.length != this.selectedObj.print_num
  903. ) {
  904. return this.$Message.warning("与打印数量不符");
  905. }
  906. let ids = this.modalRoomListSelected.map((v) => {
  907. return v.id;
  908. });
  909. let data = type
  910. ? {
  911. order_no: this.selectedInfo.order_no,
  912. product_id: this.selectedInfo.product_id,
  913. rows: this.selectedInfo.rows,
  914. num: this.selectedObj.print_num,
  915. id: row.id,
  916. ids,
  917. type,
  918. }
  919. : {
  920. order_no: this.selectedInfo.order_no,
  921. product_id: this.selectedInfo.product_id,
  922. rows: this.selectedInfo.rows,
  923. num: this.selectedObj.print_num,
  924. id: row.id,
  925. };
  926. this.axios({
  927. method: "post",
  928. url: "/api/station_print",
  929. data,
  930. }).then((resp) => {
  931. if (resp.code == 200) {
  932. this.axios.get("/api/get_print_local_url").then((res) => {
  933. console.log(res);
  934. if (res.code == 200) {
  935. if (res.data.state) {
  936. this.handlePrintChipsUsb(resp.data, res.data.type);
  937. } else {
  938. this.handlePrintChipsIp(resp.data, res.data.type);
  939. }
  940. }
  941. });
  942. this.printModal = false;
  943. this.roomModal = false;
  944. }
  945. });
  946. },
  947. handleOk() {
  948. if (!this.selectedObj.isChoosed) {
  949. return this.$Message.warning("请选择数据");
  950. }
  951. if (this.selectedObj.type == 1 && this.selectedObj.un_print == 0) {
  952. return this.$Message.warning("部件存在未打印芯片,请先打印");
  953. }
  954. this.selectedObj.ok_num =
  955. this.selectedObj.on_print - this.selectedObj.on_complete;
  956. this.okModal = true;
  957. },
  958. handleRoomCancel() {
  959. this.modalRoomList.map((v) => {
  960. v.isCurrent = false;
  961. });
  962. this.modalRoomListSelected = [];
  963. this.roomModal = false;
  964. },
  965. handleOkComfirm(row) {
  966. if (this.modalRoomListSelected.length != this.selectedObj.print_num) {
  967. return this.$Message.warning("与打印数量不符,请重新选择");
  968. }
  969. this.axios({
  970. method: "post",
  971. url: "/api/station_complete",
  972. data: {
  973. order_no: this.selectedInfo.order_no,
  974. product_id: this.selectedInfo.product_id,
  975. rows: this.selectedInfo.rows,
  976. num: this.selectedObj.ok_num,
  977. id: row.id,
  978. },
  979. }).then((res) => {
  980. if (res.code == 200) {
  981. this.okModal = false;
  982. this.getChipDetail();
  983. }
  984. });
  985. },
  986. //行号确认
  987. handleRowNoComfirm() {
  988. this.selectedInfo.rows = JSON.parse(JSON.stringify(this.chooseLineNo));
  989. this.selectionRownolModal = false;
  990. this.getChipDetail();
  991. },
  992. onInput(value) {
  993. this.currentSearchValue = this.currentSearchValue + "" + value;
  994. this.handleCurrentSearch(
  995. this.currencySelectedObj,
  996. this.currentSearchValue
  997. );
  998. },
  999. onDelete() {
  1000. this.currentSearchValue = this.currentSearchValue.substring(
  1001. 0,
  1002. this.currentSearchValue.length - 1
  1003. );
  1004. this.handleCurrentSearch(
  1005. this.currencySelectedObj,
  1006. this.currentSearchValue
  1007. );
  1008. },
  1009. handlePrintInput() {
  1010. this.show3 = true;
  1011. },
  1012. keyboardPrintTap(value) {
  1013. let max = this.selectedObj.on_print + this.selectedObj.un_print;
  1014. this.selectedObj.print_num =
  1015. (this.selectedObj.print_num ? this.selectedObj.print_num : "") +
  1016. "" +
  1017. value;
  1018. if (this.selectedObj.print_num * 1 > max) {
  1019. this.selectedObj.print_num = max;
  1020. }
  1021. this.$forceUpdate();
  1022. },
  1023. keyboardPrintDele() {
  1024. this.selectedObj.print_num = (this.selectedObj.print_num + "").substring(
  1025. 0,
  1026. this.selectedObj.print_num.length - 1
  1027. );
  1028. this.$forceUpdate();
  1029. },
  1030. keyboardTap(value) {
  1031. this.keyboardObj[this.keyboardVal] =
  1032. (this.keyboardObj[this.keyboardVal]
  1033. ? this.keyboardObj[this.keyboardVal]
  1034. : "") +
  1035. "" +
  1036. value;
  1037. },
  1038. keyboardDele() {
  1039. this.keyboardObj[this.keyboardVal] = this.keyboardObj[
  1040. this.keyboardVal
  1041. ].substring(0, this.keyboardObj[this.keyboardVal].length - 1);
  1042. },
  1043. handleRowNoInput(row, type) {
  1044. if (type == 1) {
  1045. this.keyboardVal = "start";
  1046. } else {
  1047. this.keyboardVal = "end";
  1048. }
  1049. this.keyboardObj = row;
  1050. this.show2 = true;
  1051. },
  1052. changePage(e) {
  1053. this.page_index = e;
  1054. this.getChipDetail();
  1055. },
  1056. changeModalPage(e) {
  1057. this.currencySelectedObj.type == 1
  1058. ? (this.modal_1_page_index = e)
  1059. : (this.modal_2_page_index = e);
  1060. this.handleCurrentSearch(
  1061. this.currencySelectedObj,
  1062. this.currentSearchValue
  1063. );
  1064. },
  1065. handlePrintChipsIp(contents, type) {
  1066. this.axios.get("/api/get_print_url").then((res) => {
  1067. let data = {};
  1068. // let url = "http://192.168.0.145:888/postek/print"; //request_url
  1069. let url = `http://${res.data.request_url}:888/postek/print`; //request_url
  1070. data.reqParam = "1"; //这个一般不用改,如需改,查api
  1071. let printparamsJsonArray = [];
  1072. // let IP = "192.168.1.58";//print_url
  1073. // let IP = "192.168.0.199"; //print_url
  1074. let IP = res.data.print_url;
  1075. let port = 9100;
  1076. let IP_Port = IP + "," + port;
  1077. printparamsJsonArray.push({ PTK_Connect_Timer: IP_Port + ",1" });
  1078. printparamsJsonArray.push({ PTK_ClearBuffer: "" });
  1079. printparamsJsonArray.push({ PTK_SetDirection: "B" });
  1080. printparamsJsonArray.push({ PTK_SetPrintSpeed: "4" });
  1081. printparamsJsonArray.push({ PTK_SetDarkness: "10" });
  1082. printparamsJsonArray.push({
  1083. PTK_SetLabelHeight: 624 + "," + 24 + ",0,false",
  1084. });
  1085. printparamsJsonArray.push({ PTK_SetLabelWidth: 1080 });
  1086. console.log(`contents`, contents);
  1087. if (type == 1) {
  1088. contents.map((content) => {
  1089. //江山打印格式
  1090. //上
  1091. const printContent_l1 = `单号:${content.order_no}`;
  1092. printparamsJsonArray.push({
  1093. PTK_DrawText_TrueType:
  1094. "100,40,60,0,微软雅黑,1,700,0,0,0," + printContent_l1,
  1095. });
  1096. const printContent_l1_2 = `型号:${content.product_title}`;
  1097. printparamsJsonArray.push({
  1098. PTK_DrawText_TrueType:
  1099. "600,40,60,0,微软雅黑,1,700,0,0,0," + printContent_l1_2,
  1100. });
  1101. const printContent_l2 = `尺寸:${content.measure}`;
  1102. printparamsJsonArray.push({
  1103. PTK_DrawText_TrueType:
  1104. "100,110,60,0,微软雅黑,1,700,0,0,0," + printContent_l2,
  1105. });
  1106. const printContent_l2_2 = `工艺:${content.process_title}`;
  1107. printparamsJsonArray.push({
  1108. PTK_DrawText_TrueType:
  1109. "600,110,60,0,微软雅黑,1,700,0,0,0," + printContent_l2_2,
  1110. });
  1111. const printContent_l3 = `颜色:${content.color_title}`;
  1112. printparamsJsonArray.push({
  1113. PTK_DrawText_TrueType:
  1114. "100,250,60,0,微软雅黑,1,700,0,0,0," + printContent_l3,
  1115. });
  1116. const printContent_l3_2 = `部件:${content.part_title}`;
  1117. printparamsJsonArray.push({
  1118. PTK_DrawText_TrueType:
  1119. "100,180,60,0,微软雅黑,1,700,0,0,0," + printContent_l3_2,
  1120. });
  1121. //下
  1122. printparamsJsonArray.push({
  1123. PTK_DrawText_TrueType:
  1124. "100,435,45,0,微软雅黑,1,700,0,0,0," + printContent_l1,
  1125. });
  1126. printparamsJsonArray.push({
  1127. PTK_DrawText_TrueType:
  1128. "600,435,45,0,微软雅黑,1,700,0,0,0," + printContent_l1_2,
  1129. });
  1130. printparamsJsonArray.push({
  1131. PTK_DrawText_TrueType:
  1132. "100,480,45,0,微软雅黑,1,700,0,0,0," + printContent_l2,
  1133. });
  1134. printparamsJsonArray.push({
  1135. PTK_DrawText_TrueType:
  1136. "600,480,45,0,微软雅黑,1,700,0,0,0," + printContent_l2_2,
  1137. });
  1138. printparamsJsonArray.push({
  1139. PTK_DrawText_TrueType:
  1140. "100,525,45,0,微软雅黑,1,700,0,0,0," + printContent_l3,
  1141. });
  1142. printparamsJsonArray.push({
  1143. PTK_DrawText_TrueType:
  1144. "600,525,45,0,微软雅黑,1,700,0,0,0," + printContent_l3_2,
  1145. });
  1146. printparamsJsonArray.push({
  1147. PTK_RWRFIDLabel:
  1148. "1,0,0," + content.chip.length / 2 + ",1," + content.chip,
  1149. });
  1150. printparamsJsonArray.push({ PTK_PrintLabel: "1,1" });
  1151. });
  1152. } else {
  1153. contents.map((content) => {
  1154. //贝斯特打印格式
  1155. //上
  1156. const printContent_l1 = `项目:${content.client_name}`;
  1157. printparamsJsonArray.push({
  1158. PTK_DrawText_TrueType:
  1159. "100,40,60,0,微软雅黑,1,700,0,0,0," + printContent_l1,
  1160. });
  1161. const printContent_l1_2 = `区域:${
  1162. content.house ? content.house + "-" : ""
  1163. }${content.layer ? content.layer : ""}${
  1164. content.position ? content.position : ""
  1165. }`;
  1166. printparamsJsonArray.push({
  1167. PTK_DrawText_TrueType:
  1168. "600,40,60,0,微软雅黑,1,700,0,0,0," + printContent_l1_2,
  1169. });
  1170. const printContent_l2 = `房号:${content.number_detail}`;
  1171. printparamsJsonArray.push({
  1172. PTK_DrawText_TrueType:
  1173. "100,110,60,0,微软雅黑,1,700,0,0,0," + printContent_l2,
  1174. });
  1175. const printContent_l2_2 = `产品:${content.product_title}`;
  1176. printparamsJsonArray.push({
  1177. PTK_DrawText_TrueType:
  1178. "600,110,60,0,微软雅黑,1,700,0,0,0," + printContent_l2_2,
  1179. });
  1180. const printContent_l3 = `图号:${content.url_number}`;
  1181. printparamsJsonArray.push({
  1182. PTK_DrawText_TrueType:
  1183. "100,180,60,0,微软雅黑,1,700,0,0,0," + printContent_l3,
  1184. });
  1185. const printContent_l3_2 = `部件:${content.part_title}`;
  1186. printparamsJsonArray.push({
  1187. PTK_DrawText_TrueType:
  1188. "600,180,60,0,微软雅黑,1,700,0,0,0," + printContent_l3_2,
  1189. });
  1190. const printContent_l4 = `木皮:${content.color_title}`;
  1191. printparamsJsonArray.push({
  1192. PTK_DrawText_TrueType:
  1193. "100,320,60,0,微软雅黑,1,700,0,0,0," + printContent_l4,
  1194. });
  1195. const printContent_l4_2 = `尺寸:${content.measure}`;
  1196. printparamsJsonArray.push({
  1197. PTK_DrawText_TrueType:
  1198. "100,250,60,0,微软雅黑,1,700,0,0,0," + printContent_l4_2,
  1199. });
  1200. //下
  1201. printparamsJsonArray.push({
  1202. PTK_DrawText_TrueType:
  1203. "100,435,45,0,微软雅黑,1,700,0,0,0," + printContent_l1,
  1204. });
  1205. printparamsJsonArray.push({
  1206. PTK_DrawText_TrueType:
  1207. "600,435,45,0,微软雅黑,1,700,0,0,0," + printContent_l1_2,
  1208. });
  1209. printparamsJsonArray.push({
  1210. PTK_DrawText_TrueType:
  1211. "100,480,45,0,微软雅黑,1,700,0,0,0," + printContent_l2,
  1212. });
  1213. printparamsJsonArray.push({
  1214. PTK_DrawText_TrueType:
  1215. "600,480,45,0,微软雅黑,1,700,0,0,0," + printContent_l2_2,
  1216. });
  1217. printparamsJsonArray.push({
  1218. PTK_DrawText_TrueType:
  1219. "100,525,45,0,微软雅黑,1,700,0,0,0," + printContent_l3,
  1220. });
  1221. printparamsJsonArray.push({
  1222. PTK_DrawText_TrueType:
  1223. "600,525,45,0,微软雅黑,1,700,0,0,0," + printContent_l3_2,
  1224. });
  1225. printparamsJsonArray.push({
  1226. PTK_DrawText_TrueType:
  1227. "100,570,45,0,微软雅黑,1,700,0,0,0," + printContent_l4,
  1228. });
  1229. printparamsJsonArray.push({
  1230. PTK_DrawText_TrueType:
  1231. "600,570,45,0,微软雅黑,1,700,0,0,0," + printContent_l4_2,
  1232. });
  1233. // 17,35 420
  1234. printparamsJsonArray.push({
  1235. PTK_RWRFIDLabel:
  1236. "1,0,0," + content.chip.length / 2 + ",1," + content.chip,
  1237. });
  1238. printparamsJsonArray.push({ PTK_PrintLabel: "1,1" });
  1239. });
  1240. }
  1241. printparamsJsonArray.push({ PTK_CloseConnect: "" });
  1242. data.printparams = printparamsJsonArray;
  1243. let sub_data = JSON.parse(JSON.stringify(data));
  1244. sub_data.printparams = JSON.stringify(sub_data.printparams);
  1245. let _this = this;
  1246. $.ajax({
  1247. type: "post",
  1248. url,
  1249. data: sub_data,
  1250. dataType: "json",
  1251. timeout: 5000,
  1252. success: function(result) {
  1253. _this.getChipDetail();
  1254. if (result.retval == "0") {
  1255. _this.$Message.success("发送成功");
  1256. } else {
  1257. _this.$Message.error("发送失败,返回结果:" + result.msg);
  1258. }
  1259. },
  1260. error: function() {
  1261. _this.getChipDetail();
  1262. },
  1263. });
  1264. });
  1265. },
  1266. },
  1267. // 监听属性 类似于data概念
  1268. computed: {},
  1269. // 监控data中的数据变化
  1270. watch: {},
  1271. beforeCreate() {}, // 生命周期 - 创建之前
  1272. beforeMount() {}, // 生命周期 - 挂载之前
  1273. beforeUpdate() {}, // 生命周期 - 更新之前
  1274. updated() {}, // 生命周期 - 更新之后
  1275. beforeDestroy() {}, // 生命周期 - 销毁之前
  1276. destroyed() {}, // 生命周期 - 销毁完成
  1277. activated() {}, // 如果页面有keep-alive缓存功能,这个函数会触发
  1278. };
  1279. </script>
  1280. <style lang="scss" scoped>
  1281. .fullscreen-title-btn {
  1282. position: absolute;
  1283. right: 100px;
  1284. top: 0.175rem;
  1285. }
  1286. .fullscreen-content {
  1287. font-size: 26px;
  1288. font-family: "Microsoft YaHei", 微软雅黑;
  1289. font-weight: bold;
  1290. .fullscreen-content-select {
  1291. display: flex;
  1292. justify-content: space-around;
  1293. padding-bottom: 0.1rem;
  1294. border-bottom: 1px solid #e8eaec;
  1295. .fullscreen-content-select-block {
  1296. display: flex;
  1297. justify-content: center;
  1298. align-items: center;
  1299. }
  1300. .fullscreen-content-select-block:nth-child(1) {
  1301. width: 30%;
  1302. }
  1303. .fullscreen-content-select-block:nth-child(2) {
  1304. width: 20%;
  1305. }
  1306. .fullscreen-content-select-block:nth-child(3) {
  1307. }
  1308. }
  1309. .fullscreen-content-choose {
  1310. display: flex;
  1311. justify-content: flex-start;
  1312. flex-wrap: wrap;
  1313. padding-top: 0.1rem;
  1314. margin-bottom: 0.5rem;
  1315. .fullscreen-content-choose-block {
  1316. width: 33.33%;
  1317. border-radius: 5px;
  1318. border: 1px solid #2d8cf0;
  1319. // margin: 0.1rem 1%;
  1320. padding: 1%;
  1321. position: relative;
  1322. div {
  1323. display: flex;
  1324. justify-content: space-between;
  1325. // margin-top: 5px;
  1326. }
  1327. .chip-tag {
  1328. display: inline-block;
  1329. position: absolute;
  1330. width: 1rem;
  1331. top: 0;
  1332. left: 50%;
  1333. font-size: 18px;
  1334. background-color: #fadb14;
  1335. color: black;
  1336. height: 0.75rem;
  1337. border-radius: 15%;
  1338. text-align: center;
  1339. padding-top: 0.15rem;
  1340. transform: translate(-50%, -10%);
  1341. }
  1342. .chip-tag-choosed {
  1343. display: inline-block;
  1344. position: absolute;
  1345. width: 1rem;
  1346. top: 0;
  1347. left: 15%;
  1348. font-size: 18px;
  1349. background-color: #fadb14;
  1350. color: black;
  1351. height: 0.75rem;
  1352. border-radius: 15%;
  1353. text-align: center;
  1354. padding-top: 0.15rem;
  1355. transform: translate(-10%, -10%) !important;
  1356. }
  1357. }
  1358. .fullscreen-content-choose-block-wide {
  1359. width: 24.5%;
  1360. }
  1361. .fullscreen-content-choose-block-choosen {
  1362. color: white;
  1363. background-color: #2d8cf0;
  1364. }
  1365. .fullscreen-content-choose-block-unchoosen {
  1366. color: #2d8cf0;
  1367. background-color: white;
  1368. }
  1369. }
  1370. }
  1371. .fullscreen-content-page {
  1372. display: flex;
  1373. justify-content: center;
  1374. }
  1375. .selection-modal {
  1376. .selection-modal-top {
  1377. display: flex;
  1378. justify-content: center;
  1379. }
  1380. .selection-modal-body {
  1381. display: flex;
  1382. justify-content: center;
  1383. flex-wrap: wrap;
  1384. .selection-modal-body-block {
  1385. cursor: pointer;
  1386. width: 30%;
  1387. margin: 1%;
  1388. padding: 3% 1%;
  1389. background-color: #e9ecef;
  1390. div {
  1391. display: flex;
  1392. justify-content: center;
  1393. }
  1394. }
  1395. .selection-modal-body-block-detail {
  1396. cursor: pointer;
  1397. width: 17%;
  1398. margin: 1%;
  1399. padding: 3% 1%;
  1400. background-color: #e9ecef;
  1401. div {
  1402. display: flex;
  1403. justify-content: center;
  1404. }
  1405. }
  1406. .selection-modal-body-block-choosen,
  1407. .selection-modal-body-block-detail-choosen {
  1408. background-color: #fadb14;
  1409. }
  1410. .selection-modal-body-block-unchoosen,
  1411. .selection-modal-body-block-detail-unchoosen {
  1412. background-color: #e9ecef;
  1413. }
  1414. }
  1415. }
  1416. .selection-rowno-modal {
  1417. .selection-rowno-modal-body {
  1418. .selection-rowno-modal-body-block {
  1419. margin: 0.5rem 0;
  1420. text-align: center;
  1421. }
  1422. }
  1423. }
  1424. .selection-print-modal {
  1425. .selection-print-modal-body {
  1426. .selection-print-modal-body-top {
  1427. display: flex;
  1428. justify-content: space-around;
  1429. align-items: center;
  1430. margin: 0.5rem 0;
  1431. }
  1432. .selection-print-modal-body-info {
  1433. padding-top: 16px;
  1434. border-top: 1px solid #e8eaec;
  1435. text-align: center;
  1436. }
  1437. }
  1438. }
  1439. .icon-wrapper {
  1440. position: relative;
  1441. font-size: 0.25rem;
  1442. }
  1443. .icon-close {
  1444. position: absolute;
  1445. right: -0.35rem;
  1446. top: -0.2rem;
  1447. }
  1448. /deep/.ivu-page-item {
  1449. display: inline-block;
  1450. font-size: 0.5rem;
  1451. height: 1rem;
  1452. line-height: 1rem;
  1453. width: 1rem;
  1454. }
  1455. /deep/.ivu-modal-close {
  1456. border: 1px solid black;
  1457. }
  1458. /deep/.ivu-page-prev,
  1459. /deep/.ivu-page-next {
  1460. display: inline-block;
  1461. font-size: 0.5rem;
  1462. height: 1rem;
  1463. line-height: 1rem;
  1464. width: 1rem;
  1465. a {
  1466. font-size: 0.5rem;
  1467. }
  1468. }
  1469. /deep/.fullscreen-content-page {
  1470. display: flex;
  1471. justify-content: space-around;
  1472. }
  1473. .wide-screen-rowno {
  1474. display: flex;
  1475. justify-content: center !important;
  1476. span {
  1477. display: inline-block;
  1478. text-align: center;
  1479. width: 3rem;
  1480. height: 3rem;
  1481. line-height: 3rem;
  1482. border-radius: 50%;
  1483. font-size: 1.5rem;
  1484. }
  1485. .wide-screen-rowno-span-choosed {
  1486. color: #2d8cf0;
  1487. background-color: white;
  1488. }
  1489. .wide-screen-rowno-span {
  1490. color: white;
  1491. background-color: #2d8cf0;
  1492. }
  1493. }
  1494. </style>