ChipPrintScreen.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521
  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="handleFullScreenClick"
  8. size="large"
  9. id="full_screen_btn"
  10. type="primary"
  11. style="margin-right:1rem"
  12. >
  13. {{ isFullScreen ? "退 出" : "全 屏" }}
  14. </Button>
  15. <Button
  16. @click="back"
  17. size="large"
  18. type="primary"
  19. style="margin-right:1rem"
  20. >
  21. 打 印
  22. </Button>
  23. <Button
  24. @click="back"
  25. size="large"
  26. type="primary"
  27. style="margin-right:1rem"
  28. >
  29. 完 成
  30. </Button>
  31. <Button @click="back" size="large" type="primary">
  32. 查 看
  33. </Button>
  34. </div>
  35. </div>
  36. <div class="fullscreen-content">
  37. <div class="fullscreen-content-select">
  38. <div class="fullscreen-content-select-block">
  39. <Button
  40. @click="handleSelection(ordernoObj)"
  41. size="large"
  42. type="primary"
  43. >
  44. 项目选择
  45. </Button>
  46. </div>
  47. <div class="fullscreen-content-select-block">
  48. <Button @click="handleSelection(urlObj)" size="large" type="primary">
  49. 图号选择
  50. </Button>
  51. </div>
  52. <div class="fullscreen-content-select-block">
  53. <Button
  54. @click="handleSelectionRowno(rownoObj)"
  55. size="large"
  56. type="primary"
  57. >
  58. 行号选择
  59. </Button>
  60. </div>
  61. </div>
  62. <div class="fullscreen-content-choose">
  63. <swiper
  64. :slides-per-view="3"
  65. :space-between="50"
  66. @swiper="onSwiper"
  67. @slideChange="onSlideChange"
  68. >
  69. <swiper-slide>Slide 1</swiper-slide>
  70. <swiper-slide>Slide 2</swiper-slide>
  71. <swiper-slide>Slide 3</swiper-slide>
  72. ...
  73. </swiper>
  74. <div
  75. :class="[
  76. choose.isChoosed
  77. ? 'fullscreen-content-choose-block fullscreen-content-choose-block-choosen'
  78. : 'fullscreen-content-choose-block fullscreen-content-choose-block-unchoosen',
  79. ]"
  80. v-for="choose in contentData"
  81. :key="choose.row"
  82. @click="handleChooseBlockClick(choose)"
  83. >
  84. <div>
  85. <span>行号</span>
  86. <span>{{ choose.row }}</span>
  87. </div>
  88. <div>
  89. <span>部件名称</span>
  90. <span>{{ choose.part_title }}</span>
  91. </div>
  92. <div>
  93. <span>零部件名称</span>
  94. <span>{{ choose.detail_part_title }}</span>
  95. </div>
  96. <div>
  97. <span>毛料尺寸</span>
  98. <span>{{ choose.wool_size }}</span>
  99. </div>
  100. <div>
  101. <span>精裁尺寸</span>
  102. <span>{{ choose.measure_size }}</span>
  103. </div>
  104. <div>
  105. <span>未完成数量</span>
  106. <span>{{ choose.num }}</span>
  107. </div>
  108. <div>
  109. <span>未打印数量</span>
  110. <span>{{ choose.number }}</span>
  111. </div>
  112. </div>
  113. </div>
  114. </div>
  115. <div slot="footer"></div>
  116. <Modal
  117. class="selection-modal"
  118. v-model="selectionModal"
  119. :title="currencySelectedObj.title"
  120. width="80%"
  121. >
  122. <div class="selection-modal-top">
  123. <Input :placeholder="currencySelectedObj.title" style="width: 80%">
  124. <Icon type="ios-search" slot="suffix" />
  125. </Input>
  126. </div>
  127. <div class="selection-modal-body">
  128. <div
  129. class="selection-modal-body-block"
  130. v-for="block in currencySelectedObj.list"
  131. :key="block.order_no"
  132. @click="handleSelectionClick(currencySelectedObj)"
  133. >
  134. <div>
  135. <span>订单编号:</span>
  136. <span>{{ block.order_no }}</span>
  137. </div>
  138. <div>
  139. <span>项目名称:</span>
  140. <span>{{ block.project_name }}</span>
  141. </div>
  142. </div>
  143. </div>
  144. <div slot="footer">
  145. <Button @click="back" type="primary" style="margin-right:10px">
  146. 返回
  147. </Button>
  148. <Button @click="back" type="primary">
  149. 返回
  150. </Button>
  151. </div>
  152. </Modal>
  153. <Modal
  154. class="selection-rowno-modal"
  155. v-model="selectionRownolModal"
  156. title="行号选择"
  157. width="80%"
  158. >
  159. <div class="selection-rowno-modal-body"></div>
  160. <div slot="footer">
  161. <Button @click="back" type="primary" style="margin-right:10px">
  162. 返回
  163. </Button>
  164. <Button @click="back" type="primary">
  165. 返回
  166. </Button>
  167. </div>
  168. </Modal>
  169. </Modal>
  170. </template>
  171. <script>
  172. // 这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  173. // 例如:import 《组件名称》 from '《组件路径》';
  174. import { Swiper, SwiperSlide } from "swiper/vue";
  175. import "swiper/css";
  176. export default {
  177. name: "",
  178. components: {
  179. Swiper,
  180. SwiperSlide,
  181. },
  182. props: {},
  183. // import引入的组件需要注入到对象中才能使用
  184. data() {
  185. // 这里存放数据
  186. return {
  187. isFullScreen: false,
  188. fullscreenModal: true,
  189. selectionModal: false,
  190. selectionRownolModal: false,
  191. selectionDetailModal: false,
  192. contentData: [
  193. {
  194. row: 1,
  195. part_title: "部件名称1",
  196. detail_part_title: "零部件名称1",
  197. wool_size: "1*2*3",
  198. measure_size: "11*22*33",
  199. num: 3,
  200. number: 3,
  201. isChoosed: true,
  202. },
  203. {
  204. row: 2,
  205. part_title: "部件名称1",
  206. detail_part_title: "零部件名称1",
  207. wool_size: "1*2*3",
  208. measure_size: "11*22*33",
  209. num: 3,
  210. isChoosed: false,
  211. },
  212. {
  213. row: 3,
  214. part_title: "部件名称1",
  215. detail_part_title: "零部件名称1",
  216. wool_size: "1*2*3",
  217. measure_size: "11*22*33",
  218. num: 3,
  219. isChoosed: false,
  220. },
  221. {
  222. row: 4,
  223. part_title: "部件名称1",
  224. detail_part_title: "零部件名称1",
  225. wool_size: "1*2*3",
  226. measure_size: "11*22*33",
  227. num: 3,
  228. isChoosed: false,
  229. },
  230. {
  231. row: 5,
  232. part_title: "部件名称1",
  233. detail_part_title: "零部件名称1",
  234. wool_size: "1*2*3",
  235. measure_size: "11*22*33",
  236. num: 3,
  237. isChoosed: false,
  238. },
  239. {
  240. row: 6,
  241. part_title: "部件名称1",
  242. detail_part_title: "零部件名称1",
  243. wool_size: "1*2*3",
  244. measure_size: "11*22*33",
  245. num: 3,
  246. isChoosed: false,
  247. },
  248. {
  249. row: 7,
  250. part_title: "部件名称1",
  251. detail_part_title: "零部件名称1",
  252. wool_size: "1*2*3",
  253. measure_size: "11*22*33",
  254. num: 3,
  255. isChoosed: false,
  256. },
  257. {
  258. row: 8,
  259. part_title: "部件名称1",
  260. detail_part_title: "零部件名称1",
  261. wool_size: "1*2*3",
  262. measure_size: "11*22*33",
  263. num: 3,
  264. isChoosed: false,
  265. },
  266. {
  267. row: 9,
  268. part_title: "部件名称1",
  269. detail_part_title: "零部件名称1",
  270. wool_size: "1*2*3",
  271. measure_size: "11*22*33",
  272. num: 3,
  273. isChoosed: false,
  274. },
  275. {
  276. row: 10,
  277. part_title: "部件名称1",
  278. detail_part_title: "零部件名称1",
  279. wool_size: "1*2*3",
  280. measure_size: "11*22*33",
  281. num: 3,
  282. isChoosed: false,
  283. },
  284. {
  285. row: 11,
  286. part_title: "部件名称1",
  287. detail_part_title: "零部件名称1",
  288. wool_size: "1*2*3",
  289. measure_size: "11*22*33",
  290. num: 3,
  291. isChoosed: false,
  292. },
  293. {
  294. row: 12,
  295. part_title: "部件名称1",
  296. detail_part_title: "零部件名称1",
  297. wool_size: "1*2*3",
  298. measure_size: "11*22*33",
  299. num: 3,
  300. isChoosed: false,
  301. },
  302. ],
  303. selectedObj: [],
  304. ordernoObj: {
  305. title: "订单编号/项目名称选择",
  306. list: [
  307. {
  308. order_no: "1231",
  309. project_name: "321",
  310. },
  311. {
  312. order_no: "1232",
  313. project_name: "321",
  314. },
  315. {
  316. order_no: "1233",
  317. project_name: "321",
  318. },
  319. {
  320. order_no: "1234",
  321. project_name: "321",
  322. },
  323. {
  324. order_no: "1235",
  325. project_name: "321",
  326. },
  327. ],
  328. hasChild: false,
  329. },
  330. urlObj: {
  331. title: "图号选择",
  332. list: [
  333. {
  334. order_no: "1",
  335. project_name: "321",
  336. },
  337. {
  338. order_no: "2",
  339. project_name: "321",
  340. },
  341. {
  342. order_no: "3",
  343. project_name: "321",
  344. },
  345. {
  346. order_no: "4",
  347. project_name: "321",
  348. },
  349. {
  350. order_no: "5",
  351. project_name: "321",
  352. },
  353. ],
  354. hasChild: true,
  355. },
  356. rownoObj: {},
  357. currencySelectedObj: {
  358. title: "订单编号/项目名称选择",
  359. list: [],
  360. },
  361. };
  362. },
  363. // 生命周期 - 创建完成(可以访问当前this实例)
  364. created() {},
  365. // 生命周期 - 挂载完成(可以访问DOM元素)
  366. mounted() {},
  367. methods: {
  368. back() {
  369. this.$router.go(-1);
  370. },
  371. handleSelection(obj) {
  372. this.currencySelectedObj = obj;
  373. this.selectionModal = true;
  374. },
  375. handleSelectionRowno() {},
  376. handleChooseBlockClick(row) {
  377. if (row.isChoosed) {
  378. row.isChoosed = false;
  379. } else {
  380. this.contentData.map((v) => {
  381. v.isChoosed = false;
  382. });
  383. row.isChoosed = true;
  384. }
  385. this.selectedObj = this.contentData.filter((v) => v.isChoosed);
  386. },
  387. handleSelectionClick(row) {
  388. console.log("row :>> ", row);
  389. if (row.hasChild) {
  390. // 行号
  391. this.selectionModal = false;
  392. this.selectionDetailModal = true;
  393. } else {
  394. // 订单号
  395. }
  396. },
  397. handleFullScreenClick() {
  398. this.isFullScreen = !this.isFullScreen;
  399. if (this.isFullScreen) {
  400. this.enterFullScreen();
  401. } else {
  402. this.exitFullScreen();
  403. }
  404. },
  405. enterFullScreen() {
  406. let el = document.documentElement;
  407. let rfs =
  408. el.requestFullScreen ||
  409. el.webkitRequestFullScreen ||
  410. el.mozRequestFullScreen ||
  411. el.msRequestFullscreen;
  412. if (rfs) {
  413. rfs.call(el);
  414. } else if (typeof window.ActiveXObject !== "undefined") {
  415. // for IE,这里其实就是模拟了按下键盘的F11,使浏览器全屏
  416. let wscript = new ActiveXObject("WScript.Shell");
  417. if (wscript != null) {
  418. wscript.SendKeys("{F11}");
  419. }
  420. }
  421. },
  422. exitFullScreen() {
  423. let el = document;
  424. let cfs =
  425. el.cancelFullScreen ||
  426. el.mozCancelFullScreen ||
  427. el.msExitFullscreen ||
  428. el.webkitExitFullscreen ||
  429. el.exitFullscreen;
  430. if (cfs) {
  431. // typeof cfs != "undefined" && cfs
  432. cfs.call(el);
  433. } else if (typeof window.ActiveXObject !== "undefined") {
  434. // for IE,这里和fullScreen相同,模拟按下F11键退出全屏
  435. let wscript = new ActiveXObject("WScript.Shell");
  436. if (wscript != null) {
  437. wscript.SendKeys("{F11}");
  438. }
  439. }
  440. },
  441. },
  442. // 监听属性 类似于data概念
  443. computed: {},
  444. // 监控data中的数据变化
  445. watch: {},
  446. beforeCreate() {}, // 生命周期 - 创建之前
  447. beforeMount() {}, // 生命周期 - 挂载之前
  448. beforeUpdate() {}, // 生命周期 - 更新之前
  449. updated() {}, // 生命周期 - 更新之后
  450. beforeDestroy() {}, // 生命周期 - 销毁之前
  451. destroyed() {}, // 生命周期 - 销毁完成
  452. activated() {}, // 如果页面有keep-alive缓存功能,这个函数会触发
  453. };
  454. </script>
  455. <style lang="scss" scoped>
  456. .fullscreen-title-btn {
  457. position: absolute;
  458. right: 100px;
  459. top: 0.175rem;
  460. }
  461. .fullscreen-content {
  462. .fullscreen-content-select {
  463. display: flex;
  464. justify-content: space-around;
  465. padding-bottom: 16px;
  466. border-bottom: 1px solid #e8eaec;
  467. }
  468. .fullscreen-content-choose {
  469. display: flex;
  470. justify-content: flex-start;
  471. flex-wrap: wrap;
  472. .fullscreen-content-choose-block {
  473. width: 23%;
  474. border-radius: 5px;
  475. border: 1px solid #2d8cf0;
  476. margin: 5px 1%;
  477. padding: 1%;
  478. div {
  479. display: flex;
  480. justify-content: space-between;
  481. }
  482. }
  483. .fullscreen-content-choose-block-choosen {
  484. color: white;
  485. background-color: #2d8cf0;
  486. }
  487. .fullscreen-content-choose-block-unchoosen {
  488. color: #2d8cf0;
  489. background-color: white;
  490. }
  491. }
  492. }
  493. .selection-modal {
  494. .selection-modal-top {
  495. display: flex;
  496. justify-content: center;
  497. }
  498. .selection-modal-body {
  499. display: flex;
  500. justify-content: flex-start;
  501. flex-wrap: wrap;
  502. .selection-modal-body-block {
  503. width: 30%;
  504. margin: 1%;
  505. padding: 3% 1%;
  506. background-color: #e9ecef;
  507. div {
  508. display: flex;
  509. justify-content: center;
  510. }
  511. }
  512. }
  513. }
  514. .selection-rowno-modal {
  515. .selection-rowno-modal-body {
  516. }
  517. }
  518. </style>