traceabilityCom.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <!-- 生产履历 -->
  2. <template>
  3. <div class="mainContentBox">
  4. <avue-crud
  5. ref="crudRef2"
  6. v-model:search="search"
  7. v-model="form"
  8. :data="data"
  9. :option="option"
  10. @row-update="updateRow"
  11. v-model:page="page"
  12. @search-change="searchChange"
  13. @search-reset="resetChange"
  14. @size-change="dataList"
  15. @current-change="dataList"
  16. />
  17. <CommonTable
  18. ref="userRef"
  19. tableTitle="操作人选择"
  20. tableType="USERS"
  21. @selected-sure="onUserSelectedFinish"
  22. />
  23. </div>
  24. </template>
  25. <script setup>
  26. import { ref, getCurrentInstance } from "vue";
  27. import { useCrud } from "@/hooks/userCrud";
  28. import dictDataUtil from "@/common/configs/dictDataUtil";
  29. import ButtonPermKeys from "@/common/configs/buttonPermission";
  30. import {
  31. useCommonStoreHook,
  32. useDictionaryStore,
  33. useUserStoreHook,
  34. } from "@/store";
  35. // 数据字典相关
  36. const { dicts } = useDictionaryStore();
  37. const userStore = useUserStoreHook();
  38. // 传入一个url,后面不带/
  39. const {
  40. form,
  41. data,
  42. option,
  43. search,
  44. page,
  45. toDeleteIds,
  46. Methords,
  47. Utils,
  48. commonConfig,
  49. } = useCrud({
  50. src: "/api/v1/process/info",
  51. });
  52. const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
  53. Methords; //增删改查
  54. const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
  55. const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
  56. const onUserSelectedFinish = (selectedValue) => {
  57. form.value.operator = selectedValue.userName;
  58. };
  59. const crudRef = ref(null); //crudRef.value 获取avue-crud对象
  60. const userRef = ref(null);
  61. const refreshTra = (row) => {
  62. commonConfig.value.params = { seqNo: row.seqNo,workOrderCode: row.workOrderCode};
  63. dataList();
  64. };
  65. defineExpose({ refreshTra });
  66. onMounted(() => {
  67. if (userStore.user.userId === 10000) {
  68. option.value.menu = true;
  69. option.value.editBtn = true;
  70. }
  71. });
  72. option.value = Object.assign(option.value, {
  73. selection: false,
  74. border: true,
  75. index: false,
  76. expandLevel: 3,
  77. headerAlign: "center",
  78. align: "center",
  79. labelWidth: 100,
  80. addBtn: false,
  81. delBtn: false,
  82. menuWidth: 100,
  83. editBtn: false,
  84. viewBtn: false,
  85. menu: false,
  86. header: false,
  87. column: [
  88. {
  89. label: "生产过程id",
  90. prop: "id",
  91. display: false,
  92. hide: true,
  93. width: 120,
  94. },
  95. {
  96. label: "工序名称",
  97. prop: "operationName",
  98. editDisplay: false,
  99. width: 120,
  100. },
  101. {
  102. label: "工段",
  103. prop: "workSection",
  104. editDisplay: false,
  105. type: "select",
  106. dicData: dicts.workshop_section,
  107. props: {
  108. label: "dictLabel",
  109. value: "dictValue",
  110. },
  111. },
  112. {
  113. label: "状态",
  114. editDisplay: false,
  115. prop: "currentState",
  116. search: false,
  117. dicData: dicts.process_state,
  118. props: {
  119. label: "dictLabel",
  120. value: "dictValue",
  121. },
  122. },
  123. {
  124. label: "开始时间",
  125. prop: "realStartWhen",
  126. search: false,
  127. format: "YYYY-MM-DD HH:mm:ss",
  128. valueFormat: "YYYY-MM-DD HH:mm:ss",
  129. width: 160,
  130. type: "datetime",
  131. rules: [
  132. {
  133. validator: (rule, value, callback) => {
  134. if (value == null || form.value.realEndWhen == null) {
  135. callback();
  136. } else if (
  137. new Date(value).getTime() <=
  138. new Date(form.value.realEndWhen).getTime()
  139. ) {
  140. callback();
  141. } else {
  142. callback(new Error("开始时间应小于等于结束时间"));
  143. }
  144. },
  145. message: "开始时间应小于等于结束时间",
  146. required: true,
  147. trigger: "change",
  148. },
  149. ],
  150. },
  151. {
  152. label: "结束时间",
  153. prop: "realEndWhen",
  154. format: "YYYY-MM-DD HH:mm:ss",
  155. valueFormat: "YYYY-MM-DD HH:mm:ss",
  156. width: 160,
  157. type: "datetime",
  158. rules: [
  159. {
  160. validator: (rule, value, callback) => {
  161. if (value == null || form.value.realStartWhen == null) {
  162. callback();
  163. } else if (
  164. new Date(value).getTime() >=
  165. new Date(form.value.realStartWhen).getTime()
  166. ) {
  167. callback();
  168. } else {
  169. callback(new Error("\结束时间应大于等于结束时间"));
  170. }
  171. },
  172. required: true,
  173. message: "结束时间应大于等于开始时间",
  174. trigger: "change",
  175. },
  176. ],
  177. },
  178. {
  179. label: "操作人",
  180. prop: "operator",
  181. search: false,
  182. width: 100,
  183. overHidden: true,
  184. click: ({ value, column }) => {
  185. userRef.value.startSelect();
  186. },
  187. change: ({ value, column }) => {
  188. if (value != form.value.operator) {
  189. userRef.value.startSelect();
  190. }
  191. },
  192. },
  193. {
  194. label: "工时(秒)",
  195. prop: "totalTime",
  196. editDisplay: false,
  197. search: false,
  198. },
  199. {
  200. label: "工步",
  201. prop: "operationSort",
  202. editDisplay: false,
  203. search: false,
  204. },
  205. ],
  206. });
  207. // const validateTimeEnd = (rule, value, callback) => {
  208. // if (value === "") {
  209. // callback(new Error("Please input the password again"));
  210. // } else if (value !== ruleForm.pass) {
  211. // callback(new Error("Two inputs don't match!"));
  212. // } else {
  213. // callback();
  214. // }
  215. // };
  216. </script>