NodeShow.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. <template>
  2. <div class="form-wrap">
  3. <div class="cardwrap">
  4. <div class="title-area">
  5. <span><i class="el-icon-help mr5"></i>工序</span>
  6. </div>
  7. <div class="node-list">
  8. <div
  9. :class="{
  10. node: true,
  11. }"
  12. v-for="(item, index) of nodeList"
  13. :key="item.num"
  14. >
  15. <!-- currentNode: item.nodeId == currentNodeKey, -->
  16. <!-- @click="shiftNode(item)" -->
  17. <span class="num">>{{ index + 1 }}</span>
  18. <span class="title">{{ item.nodeInfo.name }}</span>
  19. <span class="time">1分钟</span>
  20. </div>
  21. </div>
  22. </div>
  23. </div>
  24. </template>
  25. <script>
  26. import getNodeSequence from "@/utils/bpmn/getNodeSequence";
  27. import { xmlStr2XmlObj } from "@/utils/bpmn/xml";
  28. export default {
  29. name: "NodeShow",
  30. props: ["formData", "row"],
  31. components: {},
  32. data() {
  33. return {
  34. search: "",
  35. nodeList: [],
  36. currentNodeKey: "",
  37. resFormData: {},
  38. columns: [
  39. {
  40. label: "编号",
  41. prop: "id",
  42. },
  43. {
  44. label: "编者",
  45. prop: "editor",
  46. },
  47. {
  48. label: "时间",
  49. prop: "time",
  50. },
  51. ],
  52. material: [
  53. {
  54. label: "名称",
  55. prop: "name",
  56. },
  57. {
  58. label: "尺寸",
  59. prop: "size",
  60. },
  61. {
  62. label: "规格",
  63. prop: "model",
  64. },
  65. {
  66. label: "数量",
  67. prop: "num",
  68. },
  69. {
  70. label: "备注",
  71. prop: "note",
  72. },
  73. ],
  74. };
  75. },
  76. watch: {
  77. myFormData: {
  78. handler(val) {},
  79. deep: true,
  80. immediate: true,
  81. },
  82. myRow: {
  83. handler(val) {
  84. this.currentNodeKey = val.benTaskNodeKey;
  85. if (val?.bepTaskProcessXmlContent) {
  86. let nodeSequence = getNodeSequence(
  87. xmlStr2XmlObj(val.bepTaskProcessXmlContent)
  88. );
  89. this.nodeList = nodeSequence?.filter(
  90. (item) => item.nodeInfo.localName != "exceptionTask"
  91. );
  92. // .slice(0, this.getIndexByNodeId(nodeSequence, this.currentNodeKey))
  93. // ?.filter((item) => item.nodeInfo.localName != "exceptionTask");
  94. // this.nodeList = getNodeSequence(
  95. // xmlStr2XmlObj(val.bepTaskProcessXmlContent)
  96. // )?.filter((item) => item.nodeInfo.localName != "exceptionTask");
  97. //去掉开始和结束节点
  98. // this.nodeList.shift();
  99. // this.nodeList[this.nodeList.length - 1]?.nodeInfo.localName ==
  100. // "endEvent" && this.nodeList.pop();
  101. console.log(this.nodeList);
  102. }
  103. },
  104. deep: true,
  105. immediate: true,
  106. },
  107. },
  108. computed: {
  109. myFormData() {
  110. return this.formData;
  111. },
  112. myRow() {
  113. return this.row;
  114. },
  115. },
  116. methods: {
  117. async getFormData() {
  118. let formData = {
  119. flag: false,
  120. msg: "",
  121. };
  122. return {
  123. flag: true,
  124. data: this.resFormData,
  125. };
  126. // if(){}
  127. // try {
  128. // let valid = await this.$refs.form.validate();
  129. // if (valid) {
  130. // formData.flag = true;
  131. // formData.data = this.form;
  132. // return formData;
  133. // } else {
  134. // formData.msg = "表单校验异常,请规范填写表单数据";
  135. // return formData;
  136. // }
  137. // } catch (error) {
  138. // // console.log(error);
  139. // formData.msg = "表单校验异常,请规范填写表单数据";
  140. // return formData;
  141. // }
  142. },
  143. async shiftNode(item) {
  144. if (item.nodeId == this.currentNodeKey) return;
  145. this.resFormData = {
  146. taskProcessKey: this.row.bepTaskKey,
  147. taskNodeKey: this.currentNodeKey,
  148. taskBackNodeKey: item.nodeId,
  149. };
  150. this.currentNodeKey = item.nodeId;
  151. // try {
  152. // let res = await this.$modal.confirm(
  153. // "是否确认切换流程至<" + item.nodeInfo.name + ">异常?"
  154. // );
  155. // console.log(res, item, this.row);
  156. // let payLoad = {
  157. // taskProcessKey: this.row.bepTaskKey,
  158. // taskNodeKey: this.currentNodeKey,
  159. // taskBackNodeKey: item.nodeId,
  160. // };
  161. // } catch (error) {
  162. // this.$message.info("取消成功");
  163. // }
  164. },
  165. getIndexByNodeId(nodeSequence, nodeId) {
  166. return nodeSequence.findIndex((item) => item.nodeId == nodeId);
  167. },
  168. },
  169. };
  170. </script>
  171. <style scoped lang="scss">
  172. .form-wrap {
  173. display: flex;
  174. flex-direction: column;
  175. width: 100%;
  176. .cardwrap {
  177. display: flex;
  178. flex-direction: column;
  179. width: 100%;
  180. padding-bottom: 20px;
  181. .title-area {
  182. display: flex;
  183. align-items: center;
  184. padding-bottom: 5px;
  185. font-size: 16px;
  186. border-bottom: 2px solid rgba(0, 0, 0, 0.404);
  187. box-sizing: border-box;
  188. }
  189. .table-area {
  190. padding-top: 10px;
  191. }
  192. .node-list {
  193. display: flex;
  194. flex-wrap: wrap;
  195. padding-top: 10px;
  196. .node {
  197. width: 33.3333%;
  198. height: 50px;
  199. display: flex;
  200. align-items: center;
  201. border-bottom: 1px dotted gray;
  202. padding: 0 5px;
  203. // &:hover {
  204. // border: 1px dotted rgb(0, 195, 255);
  205. // background-color: rgba(70, 194, 231, 0.63);
  206. // }
  207. .num {
  208. color: #40c3a8;
  209. font-size: 16px;
  210. margin-right: 5px;
  211. }
  212. .title {
  213. /* // color: #ececee34; */
  214. font-size: 14px;
  215. flex: 1;
  216. /* // ma */
  217. }
  218. .time {
  219. font-size: 12px;
  220. color: rgba(48, 44, 44, 0.247);
  221. margin-right: 10px;
  222. }
  223. }
  224. .currentNode {
  225. background-color: #7dec8f !important;
  226. }
  227. }
  228. }
  229. }
  230. </style>