step2.vue 56 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857
  1. <template>
  2. <div>
  3. <div id="content" class="page-grid-box">
  4. <div class="page-grid-item-menu">
  5. <a-button :disabled="!canUndo" size="small" @click="undo">
  6. 撤消
  7. </a-button>
  8. <a-button :disabled="!canRedo" size="small" @click="redo">
  9. 重做
  10. </a-button>
  11. <a-button size="small" @click="showTemplate"> 加载默认模板 </a-button>
  12. </div>
  13. <div ref="stencilContainer" class="page-grid-item-dragable-group" />
  14. <div class="page-grid-item-x6">
  15. <div ref="container" class="content" />
  16. </div>
  17. <div
  18. style="padding: 5px; background-color: #f5f5f5; width: 270px"
  19. class="page-grid-item-props"
  20. >
  21. <a-form
  22. :model="formState"
  23. :label-col="{ span: 8 }"
  24. :wrapper-col="{ span: 14 }"
  25. >
  26. <a-form-item
  27. label="X坐标"
  28. class="m-ant-form-item"
  29. >
  30. <a-input-number
  31. v-model:value="formState.x"
  32. :disabled="formState.type == 'tagBackground'"
  33. :min="0"
  34. class="m-form-item"
  35. @change="xChange"
  36. />
  37. </a-form-item>
  38. <a-form-item
  39. label="Y坐标"
  40. class="m-ant-form-item"
  41. >
  42. <a-input-number
  43. v-model:value="formState.y"
  44. :disabled="formState.type == 'tagBackground'"
  45. :min="0"
  46. class="m-form-item"
  47. @change="yChange"
  48. />
  49. </a-form-item>
  50. <a-form-item
  51. v-show="formState.type != null"
  52. label="节点类型"
  53. class="m-ant-form-item"
  54. >
  55. <a-select
  56. v-model:value="formState.type"
  57. class="m-form-item"
  58. @select="typeChange"
  59. >
  60. <a-select-option value="" />
  61. <a-select-option value="tagBackground">标签背景</a-select-option>
  62. <a-select-option value="assetNo">资产编号</a-select-option>
  63. <a-select-option value="assetName">资产名称</a-select-option>
  64. <a-select-option value="printField2">所属单位</a-select-option>
  65. <a-select-option value="depositoryUser">保管人</a-select-option>
  66. <a-select-option value="epc">Epc</a-select-option>
  67. <a-select-option value="barCode">二维码</a-select-option>
  68. <a-select-option value="staticImage">图片</a-select-option>
  69. </a-select>
  70. </a-form-item>
  71. <a-form-item
  72. label="高度"
  73. class="m-ant-form-item"
  74. >
  75. <a-input-number
  76. v-model:value="formState.height"
  77. :min="0"
  78. class="m-form-item"
  79. @change="heightChange"
  80. />
  81. </a-form-item>
  82. <a-form-item
  83. label="宽度"
  84. class="m-ant-form-item"
  85. >
  86. <a-input-number
  87. v-model:value="formState.width"
  88. :min="0"
  89. class="m-form-item"
  90. @change="widthChange"
  91. />
  92. </a-form-item>
  93. <a-form-item
  94. v-show="formState.text != null"
  95. label="内容"
  96. class="m-ant-form-item"
  97. >
  98. <a-input
  99. v-model:value="formState.text"
  100. class="m-form-item"
  101. @change="textChange"
  102. />
  103. </a-form-item>
  104. <a-form-item
  105. v-show="formState.fontSize != null"
  106. label="字体大小"
  107. class="m-ant-form-item"
  108. >
  109. <a-input
  110. v-model:value="formState.fontSize"
  111. class="m-form-item"
  112. @change="fontSizeChange"
  113. />
  114. </a-form-item>
  115. <a-form-item
  116. v-show="formState.textColor != null"
  117. label="文字颜色"
  118. class="m-ant-form-item"
  119. >
  120. <a-input
  121. v-model:value="formState.textColor"
  122. type="color"
  123. class="m-form-item"
  124. @change="textColorChange"
  125. />
  126. </a-form-item>
  127. <a-form-item
  128. v-show="formState.border != null"
  129. label="边框颜色"
  130. class="m-ant-form-item"
  131. >
  132. <a-input
  133. v-model:value="formState.border"
  134. type="color"
  135. class="m-form-item"
  136. @change="borderChange"
  137. />
  138. </a-form-item>
  139. <a-form-item
  140. v-show="formState.imgUrl != null"
  141. label="图片地址"
  142. class="m-ant-form-item"
  143. >
  144. <a-input
  145. v-model:value="formState.imgUrl"
  146. class="m-form-item"
  147. @change="imgUrlChange"
  148. />
  149. <a-upload
  150. name="file"
  151. :multiple="false"
  152. :before-upload="beforeImageUpload"
  153. accept="image/*"
  154. size="small"
  155. >
  156. <a-button size="small">
  157. <upload-outlined />
  158. 上传
  159. </a-button>
  160. </a-upload>
  161. </a-form-item>
  162. <a-form-item
  163. v-show="
  164. formState != null &&
  165. formState.type !== 'tagBackground'
  166. "
  167. label="操作"
  168. class="m-ant-form-item"
  169. >
  170. <a-button size="small" @click="deleteNode">删除</a-button>
  171. </a-form-item>
  172. </a-form>
  173. </div>
  174. </div>
  175. </div>
  176. <a-divider />
  177. <div class="operationDiv">
  178. <a-button @click="before">上一步</a-button>
  179. <div>
  180. <a-button style="margin-right: 48px" @click="output">保存模版</a-button>
  181. <a-button style="margin-right: 48px" type="primary" @click="getPng">
  182. 预览图片
  183. </a-button>
  184. </div>
  185. </div>
  186. <a-modal
  187. v-model:visible="visible"
  188. title="请填写模版名称"
  189. ok-text="确认"
  190. cancel-text="取消"
  191. @ok="handleOk"
  192. >
  193. <a-input v-model:value="TempName" placeholder="请输入模版名称" />
  194. </a-modal>
  195. <a-modal
  196. v-model:visible="imgVisible"
  197. title="预览图片"
  198. :body-style="bodyStyle"
  199. ok-text="确认"
  200. cancel-text="取消"
  201. @ok="imgHandleOk"
  202. >
  203. <a-image :src="imgBase64" />
  204. </a-modal>
  205. <a-modal
  206. v-model:visible="showBaseTemplate"
  207. title="请选择默认模板"
  208. ok-text="确认"
  209. cancel-text="取消"
  210. @ok="loadTemplate"
  211. >
  212. <label style="margin-left: 16px">默认模板:</label>
  213. <a-select
  214. v-model:value="baseValue"
  215. style="width: 200px"
  216. :options="options"
  217. @change="selectChange"
  218. />
  219. </a-modal>
  220. </template>
  221. <script setup>
  222. import { ref, h, onMounted, computed } from 'vue';
  223. // 为了加快主页的启动速度,延迟加载X6,使用全局的X6
  224. // import { Graph, Shape, Addon, DataUri } from '@antv/x6';
  225. // const { Graph, Shape, Addon, DataUri } = X6;
  226. // const { Stencil } = Addon;
  227. // const { Rect, Image } = Shape;
  228. import { useStore } from 'vuex';
  229. import { message, Modal } from 'ant-design-vue';
  230. import Common from '../../common/Common.js';
  231. import { UploadOutlined } from '@ant-design/icons-vue';
  232. import { template } from '../../common/template';
  233. import dayjs from 'dayjs';
  234. const store = useStore();
  235. let cellTem = null;
  236. const TemText = computed(() => store.state.downloadStore.tempText);
  237. const TempId = computed(() => store.state.downloadStore.templateId);
  238. const TempName = ref('');
  239. const imgBase64 = ref('');
  240. let graph = null;
  241. let history = null;
  242. const formState = ref({
  243. x: null,
  244. y: null,
  245. text: null,
  246. textColor: null,
  247. border: null,
  248. imgUrl: null,
  249. height: null,
  250. width: null,
  251. type: null,
  252. fontSize: null,
  253. });
  254. const container = ref(null);
  255. const stencilContainer = ref(null);
  256. const visible = ref(false);
  257. // 是否可以redo,undo
  258. const canRedo = ref(false);
  259. const canUndo = ref(false);
  260. const options = ref([]);
  261. const baseData = ref('');
  262. const baseValue = ref('');
  263. const showBaseTemplate = ref(false);
  264. const bodyStyle = {
  265. display: 'flex',
  266. justifyContent: 'center',
  267. };
  268. // 选择框配置数据
  269. const showTemplate = () => {
  270. showBaseTemplate.value = true;
  271. template.forEach(item => {
  272. item.label = item.templateName;
  273. item.value = JSON.stringify(item.templateData);
  274. });
  275. options.value = template;
  276. };
  277. // 获取默认数据
  278. const selectChange = value => {
  279. baseData.value = value;
  280. };
  281. // 加载默认模板
  282. const loadTemplate = () => {
  283. if (baseData.value !== '') {
  284. showBaseTemplate.value = false;
  285. graph.fromJSON(JSON.parse(baseData.value));
  286. } else {
  287. message.info('请选择默认模板');
  288. }
  289. };
  290. // 保存模板
  291. const handleOk = () => {
  292. if (TempName.value == '') {
  293. Modal.info({
  294. title: '提示',
  295. content: h('div', {}, [h('p', '模版名称不能为空')]),
  296. onOk() {
  297. // console.log('ok');
  298. },
  299. });
  300. return;
  301. }
  302. visible.value = false;
  303. let json = graph.toJSON();
  304. // console.log(json.cells);
  305. $.ajax({
  306. url: Common.getApiURL('printPageResource/uploadCustomerPrintTemplateX6'),
  307. type: 'post',
  308. // contentType: 'application/json',
  309. dataType: 'json',
  310. data: {
  311. no: dayjs(new Date()).format('YYYY-MM-DD HH:mm'),
  312. name: TempName.value,
  313. contentX6: JSON.stringify(json),
  314. type: 'X6',
  315. id: TempId.value,
  316. },
  317. beforeSend: function (request) {
  318. Common.addTokenToRequest(request);
  319. },
  320. success: res => {
  321. // console.log(res);
  322. if (res) {
  323. Modal.info({
  324. title: '提示',
  325. content: h('div', {}, [h('p', '上传成功!')]),
  326. onOk() {},
  327. });
  328. } else {
  329. Modal.info({
  330. title: '提示',
  331. content: h('div', {}, [h('p', res)]),
  332. onOk() {},
  333. });
  334. }
  335. },
  336. error: e => {
  337. Common.processException(e);
  338. },
  339. });
  340. // console.log('发请求');
  341. };
  342. const imgVisible = ref(false);
  343. const beforeImageUpload = file => {
  344. let reader = new FileReader();
  345. reader.readAsDataURL(file);
  346. reader.onload = e => {
  347. cellTem.attr('image/xlink:href', e.target.result);
  348. };
  349. return false;
  350. };
  351. const imgHandleOk = () => {
  352. imgVisible.value = false;
  353. };
  354. const before = () => {
  355. store.commit('changeStep', 0);
  356. };
  357. const textChange = () => {
  358. cellTem.attr('label/text', formState.value.text);
  359. };
  360. const fontSizeChange = () => {
  361. cellTem.attr('label/fontSize', formState.value.fontSize);
  362. };
  363. const output = () => {
  364. visible.value = true;
  365. console.log(graph.toJSON());
  366. // console.log(JSON.stringify(graph.toJSON()));
  367. };
  368. const getPng = () => {
  369. graph.toJPEG(
  370. dataUri => {
  371. // 下载
  372. imgVisible.value = true;
  373. imgBase64.value = dataUri;
  374. // console.log(dataUri);
  375. // DataUri.downloadDataUri(dataUri, 'temp.jpeg');
  376. },
  377. {
  378. serializeImages: true,
  379. quality: 1, //图片质量
  380. },
  381. );
  382. };
  383. const deleteNode = () => {
  384. let cells = graph.getSelectedCells();
  385. if (cells != null) {
  386. cells.forEach(cell => {
  387. if (!isTagBackgroundCell(cell)) {
  388. graph.removeNode(cell);
  389. }
  390. });
  391. }
  392. };
  393. const isTagBackgroundCell = cell => {
  394. if (cell == null) {
  395. return false;
  396. }
  397. // 根节点不允许修改
  398. if (cell.getData().type === 'tagBackground') {
  399. return true;
  400. }
  401. return false;
  402. };
  403. const textColorChange = () => {
  404. cellTem.attr('text/fill', formState.value.textColor);
  405. };
  406. const borderChange = () => {
  407. cellTem.attr('rect/stroke', formState.value.border);
  408. };
  409. const imgUrlChange = () => {
  410. cellTem.attr('image/xlink:href', formState.value.imgUrl);
  411. };
  412. const typeChange = (value, option) => {
  413. cellTem.data.type = value;
  414. };
  415. const widthChange = value => {
  416. if(value === null){
  417. formState.value.width = 0;
  418. }
  419. resetSize();
  420. };
  421. const heightChange = value => {
  422. if(value === null){
  423. formState.value.height = 0;
  424. }
  425. resetSize();
  426. };
  427. const resetSize = () => {
  428. if (cellTem == null) {
  429. return;
  430. }
  431. if (
  432. formState.value.width != null &&
  433. formState.value.height != null
  434. ) {
  435. cellTem.size(
  436. parseInt(formState.value.width),
  437. parseInt(formState.value.height),
  438. );
  439. }
  440. };
  441. const xChange = value => {
  442. if(value === null){
  443. formState.value.x = 0;
  444. }
  445. resetPosition();
  446. };
  447. const yChange = value => {
  448. if(value === null){
  449. formState.value.y = 0;
  450. }
  451. resetPosition();
  452. };
  453. const resetPosition = () => {
  454. if (cellTem == null) {
  455. return;
  456. }
  457. // 根节点不允许修改
  458. if (cellTem.getData().type === 'tagBackground') {
  459. return;
  460. }
  461. if (
  462. formState.value.x != null &&
  463. formState.value.y != null
  464. ) {
  465. cellTem.position(parseInt(formState.value.x), parseInt(formState.value.y));
  466. }
  467. };
  468. const undo = event => {
  469. history.undo();
  470. };
  471. const redo = event => {
  472. history.redo();
  473. };
  474. const setGraph = () => {
  475. graph = new X6.Graph({
  476. container: container.value,
  477. width: 800,
  478. height: 400,
  479. background: {
  480. color: '#ddd',
  481. },
  482. grid: {
  483. size: 10,
  484. visible: true,
  485. },
  486. history: {
  487. enabled: true,
  488. },
  489. resizing: {
  490. enabled: true,
  491. restricted: true,
  492. // 让节点成为另一个节点的子节点
  493. // embedding: {
  494. // enabled: true,
  495. // findParent({ node }) {
  496. // const bbox = node.getBBox()
  497. // return this.getNodes().filter((node) => {
  498. // // 只有 data.parent 为 true 的节点才是父节点
  499. // const data = node.getData()
  500. // if (data && data.parent) {
  501. // const targetBBox = node.getBBox()
  502. // return bbox.isIntersectWithRect(targetBBox)
  503. // }
  504. // return false
  505. // })
  506. // }
  507. // }
  508. },
  509. interacting: function (cellView) {
  510. if (cellView.cell.getData().type === 'tagBackground') {
  511. return { nodeMovable: false };
  512. }
  513. return true;
  514. },
  515. selecting: {
  516. enabled: true,
  517. },
  518. });
  519. // graph.on('cell:mouseenter', ({ cell }) => {
  520. // if (cell.data.parent) {
  521. // return;
  522. // }
  523. // if (cell.isNode()) {
  524. // cell.addTools([
  525. // {
  526. // name: 'button-remove',
  527. // args: {
  528. // x: 0,
  529. // y: 0,
  530. // offset: { x: 10, y: 10 },
  531. // },
  532. // },
  533. // ]);
  534. // }
  535. // });
  536. // graph.on('cell:mouseleave', ({ cell }) => {
  537. // cell.removeTools();
  538. // });
  539. const clearFormState = () => {
  540. formState.value.text = null;
  541. formState.value.textColor = null;
  542. formState.value.border = null;
  543. formState.value.imgUrl = null;
  544. formState.value.type = null;
  545. formState.value.fontSize = null;
  546. formState.value.x = null;
  547. formState.value.y = null;
  548. cellTem = null;
  549. };
  550. const getFormStateFromCell = cell => {
  551. cellTem = cell;
  552. if (cell.attrs.label != undefined && cell.attrs.label.fontSize != null) {
  553. // console.log('fontSize', '!!!!!!!!!!!!!!!');
  554. formState.value.fontSize = cell.attrs.label.fontSize;
  555. }
  556. if (cell.attrs.label != undefined && cell.attrs.label.text != null) {
  557. formState.value.text = cell.attrs.label.text;
  558. }
  559. if (cell.attrs.text != undefined && cell.attrs.text.fill != null) {
  560. formState.value.textColor = cell.attrs.text.fill;
  561. }
  562. if (cell.attrs.rect != undefined && cell.attrs.rect.stroke != null) {
  563. formState.value.border = cell.attrs.rect.stroke;
  564. }
  565. if (cell.data.type) {
  566. formState.value.type = cell.data.type;
  567. }
  568. if (
  569. cell.attrs.image != undefined &&
  570. cell.attrs.image['xlink:href'] != null
  571. ) {
  572. formState.value.imgUrl = cellTem.attrs.image['xlink:href'];
  573. }
  574. let sizeTemp = cellTem.size();
  575. formState.value.height = parseInt(sizeTemp.height);
  576. formState.value.width = parseInt(sizeTemp.width);
  577. let positionTemp = cellTem.position();
  578. formState.value.x = parseInt(positionTemp.x);
  579. formState.value.y = parseInt(positionTemp.y);
  580. };
  581. graph.on('cell:click', ({ cell }) => {
  582. clearFormState();
  583. getFormStateFromCell(cell);
  584. });
  585. graph.on('node:moved', ({ e, x, y, node, view }) => {
  586. getFormStateFromCell(node);
  587. });
  588. graph.on('node:resized', ({ e, x, y, node, view }) => {
  589. getFormStateFromCell(node);
  590. });
  591. graph.on('cell:added', ({ cell, index, options }) => {
  592. graph.cleanSelection();
  593. graph.select(cell);
  594. getFormStateFromCell(cell);
  595. });
  596. if (graph.isHistoryEnabled()) {
  597. graph.enableHistory();
  598. } else {
  599. graph.disableHistory();
  600. }
  601. if (graph.isSelectionEnabled()) {
  602. graph.enableSelection();
  603. } else {
  604. graph.disableSelection();
  605. }
  606. history = graph.history;
  607. history.on('change', () => {
  608. canRedo.value = history.canRedo();
  609. canUndo.value = history.canUndo();
  610. // console.log('canRedo=' + canRedo.value + ',canUndo=' + canUndo.value);
  611. });
  612. // 创建节点
  613. const Box = new X6.Shape.Rect({
  614. x: 0,
  615. y: 0,
  616. width: 740,
  617. height: 370,
  618. attrs: {
  619. rect: {
  620. stroke: '#FFFFFF',
  621. },
  622. },
  623. data: {
  624. parent: true,
  625. type: 'tagBackground',
  626. },
  627. });
  628. // 添加到画布
  629. graph.addNode(Box);
  630. };
  631. const setStencil = () => {
  632. const stencil = new X6.Addon.Stencil({
  633. title: '',
  634. target: graph,
  635. stencilGraphWidth: 280,
  636. layoutOptions: {
  637. columns: 1,
  638. resizeToFit: true,
  639. },
  640. groups: [
  641. {
  642. name: 'group',
  643. title: TemText.value,
  644. graphWidth: 280,
  645. graphHeight: 800,
  646. },
  647. ],
  648. });
  649. const tem1 = new X6.Shape.Rect({
  650. width: 100,
  651. height: 50,
  652. stroke: '#FFFFFF',
  653. attrs: {
  654. label: {
  655. fontSize: 14,
  656. text: '文本',
  657. refX: 0,
  658. refY: 0,
  659. textAnchor: 'start',
  660. textVerticalAnchor: 'top',
  661. textWrap: {
  662. ellipsis: true,
  663. },
  664. },
  665. rect: {
  666. stroke: '#FFFFFF',
  667. },
  668. },
  669. data: {
  670. type: '静态文本',
  671. },
  672. });
  673. const tem2 = new X6.Shape.Rect({
  674. width: 100,
  675. height: 50,
  676. attrs: {
  677. label: {
  678. fontSize: 14,
  679. text: '动态文本:',
  680. refX: 0,
  681. refY: 0,
  682. textAnchor: 'start',
  683. textVerticalAnchor: 'top',
  684. textWrap: {
  685. ellipsis: true,
  686. },
  687. },
  688. rect: {
  689. stroke: '#FFFFFF',
  690. },
  691. },
  692. data: {
  693. type: '动态文本',
  694. },
  695. });
  696. const tem3 = new X6.Shape.Image({
  697. width: 96,
  698. height: 30,
  699. data: {
  700. type: 'staticImage',
  701. },
  702. imageUrl:
  703. 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAQCAwMDAgQDAwMEBAQEBQkGBQUFBQsICAYJDQsNDQ0LDAwOEBQRDg8TDwwMEhgSExUWFxcXDhEZGxkWGhQWFxb/2wBDAQQEBAUFBQoGBgoWDwwPFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhb/wAARCACoA9cDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDxeiiivyk/v4KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiup+Hvw68Y+NpgPD+izzQZw13IPLgT6u3B+gyfavavDf7N/h3QdN/tb4i+K40hjGZI7eQQQL7GV+W/AA12YfAYiurxjp3eiPns14pynLJezr1b1P5Y+9L0stvnY+bACTgDJNdT4Y+G/jzxCqtpPhTU5o26StAY4z/wADfC/rXtl58VPgv8P82/gTwjFql5GMC6WLYuR/02kBkP4DFcR4u/aP+ImrsyadPZ6NCfui1gDyAe7vn9AK2eGwdL+LV5n2iv1eh50M5z/Ha4LAqnH+atK3/kkby/Em0P8AZo+Il4okvpNJ01O/nXRdh+CBh+tan/DO+jaf/wAh/wCKmiWZH3lCoCPxeRf5V5Br/i7xTrkjNq/iLU73d1We7dl/75zgVjVPt8FH4aTfrL/I2WW8R1tauPjDyhTX5zbf4HvK/CL4OQ/LdfGO0Zu/lyQD/wBmNTQ/B/4MXHywfF6Asembm3H8yK8Aoo+uUP8Anwvvf+YPh/NH/wAzOpf/AA0//kT6Lj/Zr8OammdB+JVvck9MQRzf+gSVka7+y54xtlLaZrek32OiyF4WP5qR+teGxu8cgeN2Vl6MpwRXW+E/ij8QPDjL/ZfirUBGp/1M8vnR/Ta+R+VaRxGAl8dFr0f+Zy1Mp4poa4fMI1PKdNL8Y6/gT+LPhH8RfDqtJqHha9eFOs1qBcJj1JQnH44rinVkYq6lWU4IIwRX0f8ADr9qKQSR23jXRV2ng32ncEe7RMefwI+leq3vh74X/FvQv7SW10/VEkGPttt+7uYj6MwwwPs35V0RyzDYlXwtXXs9/wCvkeVW4yzfJ5qOd4K0H9um7r7nf7nJPyPhqivcvi9+zjrmhRS6n4Pnk1qxQFmtWUC6jHsBxJ+GD7V4fIjxyNHIrKykhlYYII7EV5eIwtbDy5akbH2+U51gM2o+2wdRSXXuvVbr+rDaKKK5z1AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoq1otk+pazaadG6o95cJCrN0UswUE/nXr3xI/Zy8QeDvBepeI7vxFpdzDpsYd4oUkDOCwXjIx/FXVQwOIxEJVKULqO/keLmXEWVZZiaOFxlZQqVXaCd/ed0tLLu1ueL0UV6T8A/hDrHxFv/tczPYaFA+J70rzIR1SIHq3qeg7+hyo0alaahTV2ztzDMMLl+GlicVNRhHr+i7vskch4F8JeIPGOtLpXh7TZbyc8uV4SJf7zseFH1r6Z+Fv7PXhXwvZjV/GtxBq13CvmSJI2yyt8cknON+PVsD2r0FY/BPwk+H7yJHDpel2o+YgbpbmTHGT1kkP+cAV8pfHP4wa/wDEK9e1Rn0/Q43/AHNhG/8ArMdGlI+83t0Hb1r3Xh8Ll0VKt79Toun9ev3H5hHNs84vrSpZe3QwqdnP7T8r9/KL06y2PW/ix+0bpGixNovw+s4LySEeWL149trDjtEgxv8Arwv1r518ZeK/EXizUjfeIdXub+bPy+a/yx+yqPlUewArHorycVjq+JfvvTt0Pu8k4XyzJ4f7NTvPrN6yfz6eisgooorjPoQooooAKKKKACiiigAra8B+LNf8G69Hq/h+/ktbhcB1HMcy/wB116Mv1/CsWiqjKUZKUXZoyrUaVenKlVipRejT1TPuD4P/ABb8PeM/BFxrV1cQ6Xc6XFv1WCWTCwD/AJ6KT1Q9u+eOuM+V/tBeEZviJZf8Jd4M+HWuRykb31ErFCuoRY+/9nLeYTjkNgEjqDxjwDw9eJZavby3G97TzozdQq2BNGHVihHcHaOD6Cv0P0vxFoGoeHY9fsdWsm0t4vNW585VjRMfxEn5cdwemK+zyqMc4ozpYiVuVeV3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igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/2Q==',
  704. });
  705. const tem4 = new X6.Shape.Image({
  706. width: 50,
  707. height: 50,
  708. data: {
  709. type: '二维码',
  710. },
  711. imageUrl: 'data:image/png;base64,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',
  712. });
  713. stencil.load([tem1, tem2, tem3, tem4], 'group');
  714. stencilContainer.value.appendChild(stencil.container);
  715. };
  716. onMounted(() => {
  717. // console.log('加载完毕');
  718. setGraph();
  719. setStencil();
  720. let temp = store.state.downloadStore.templateVal;
  721. if (temp != '') {
  722. // console.log(temp);
  723. graph.fromJSON(JSON.parse(temp));
  724. }
  725. if (TemText.value == '新建模板') {
  726. showTemplate();
  727. TempName.value = '新建模板';
  728. }else{
  729. TempName.value = TemText.value;
  730. }
  731. });
  732. </script>
  733. <style scoped>
  734. .page-grid-box {
  735. display: grid;
  736. grid-template-columns: 165px auto 300px;
  737. grid-template-rows: 35px auto 270px;
  738. height: calc(100vh - 400px);
  739. }
  740. .page-grid-item-menu {
  741. grid-row-start: 1;
  742. grid-row-end: 2;
  743. grid-column-start: 1;
  744. grid-column-end: 4;
  745. }
  746. .page-grid-item-dragable-group {
  747. grid-row-start: 2;
  748. grid-row-end: 3;
  749. grid-column-start: 1;
  750. grid-column-end: 2;
  751. overflow: auto;
  752. position: relative;
  753. border-right: 1px solid rgb(231, 229, 229);
  754. }
  755. .page-grid-item-x6 {
  756. grid-row-start: 2;
  757. grid-row-end: 3;
  758. grid-column-start: 2;
  759. grid-column-end: 3;
  760. /* overflow: auto; */
  761. }
  762. .page-grid-item-props {
  763. grid-row-start: 2;
  764. grid-row-end: 3;
  765. grid-column-start: 3;
  766. grid-column-end: 4;
  767. overflow: auto;
  768. }
  769. .page-grid-item-1-1 {
  770. grid-row-start: 1;
  771. grid-row-end: 2;
  772. grid-column-start: 1;
  773. grid-column-end: 2;
  774. background-color: #fafafa;
  775. border-right: 1px solid rgb(231, 229, 229);
  776. padding: 5px 5px;
  777. }
  778. .page-grid-item-2-1 {
  779. grid-row-start: 2;
  780. grid-row-end: 3;
  781. grid-column-start: 1;
  782. grid-column-end: 2;
  783. overflow: auto;
  784. background-color: #fafafa;
  785. border-right: 1px solid rgb(231, 229, 229);
  786. padding: 0px 5px;
  787. }
  788. .m-form-item {
  789. width: 100%;
  790. }
  791. .m-ant-form-item {
  792. margin-bottom: 0px;
  793. }
  794. .operationDiv {
  795. display: flex;
  796. justify-content: space-between;
  797. margin-top: 100px;
  798. }
  799. </style>