traceabilityCom.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  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 = {
  63. seqNo: row.seqNo,
  64. workOrderCode: row.workOrderCode,
  65. };
  66. dataList();
  67. };
  68. defineExpose({ refreshTra });
  69. onMounted(() => {
  70. if (userStore.user.userId === 10000) {
  71. option.value.menu = true;
  72. option.value.editBtn = true;
  73. }
  74. });
  75. option.value = Object.assign(option.value, {
  76. selection: false,
  77. border: true,
  78. index: false,
  79. expandLevel: 3,
  80. headerAlign: "center",
  81. align: "center",
  82. labelWidth: 100,
  83. addBtn: false,
  84. delBtn: false,
  85. menuWidth: 100,
  86. editBtn: false,
  87. viewBtn: false,
  88. menu: false,
  89. header: false,
  90. column: [
  91. {
  92. label: "生产过程id",
  93. prop: "id",
  94. display: false,
  95. hide: true,
  96. width: 120,
  97. },
  98. {
  99. label: "工序名称",
  100. prop: "operationName",
  101. editDisplay: false,
  102. width: 120,
  103. },
  104. {
  105. label: "工段",
  106. prop: "workSection",
  107. editDisplay: false,
  108. type: "select",
  109. dicData: dicts.workshop_section,
  110. props: {
  111. label: "dictLabel",
  112. value: "dictValue",
  113. },
  114. },
  115. {
  116. label: "状态",
  117. editDisplay: false,
  118. prop: "currentState",
  119. search: false,
  120. dicData: dicts.process_state,
  121. props: {
  122. label: "dictLabel",
  123. value: "dictValue",
  124. },
  125. },
  126. {
  127. label: "开始时间",
  128. prop: "realStartWhen",
  129. search: false,
  130. format: "YYYY-MM-DD HH:mm:ss",
  131. valueFormat: "YYYY-MM-DD HH:mm:ss",
  132. width: 160,
  133. type: "datetime",
  134. rules: [
  135. {
  136. validator: (rule, value, callback) => {
  137. if (value == null || form.value.realEndWhen == null) {
  138. callback();
  139. } else if (
  140. new Date(value).getTime() <=
  141. new Date(form.value.realEndWhen).getTime()
  142. ) {
  143. callback();
  144. } else {
  145. callback(new Error("开始时间应小于等于结束时间"));
  146. }
  147. },
  148. message: "开始时间应小于等于结束时间",
  149. required: true,
  150. trigger: "change",
  151. },
  152. ],
  153. },
  154. {
  155. label: "结束时间",
  156. prop: "realEndWhen",
  157. format: "YYYY-MM-DD HH:mm:ss",
  158. valueFormat: "YYYY-MM-DD HH:mm:ss",
  159. width: 160,
  160. type: "datetime",
  161. rules: [
  162. {
  163. validator: (rule, value, callback) => {
  164. if (value == null || form.value.realStartWhen == null) {
  165. callback();
  166. } else if (
  167. new Date(value).getTime() >=
  168. new Date(form.value.realStartWhen).getTime()
  169. ) {
  170. callback();
  171. } else {
  172. callback(new Error("\结束时间应大于等于结束时间"));
  173. }
  174. },
  175. required: true,
  176. message: "结束时间应大于等于开始时间",
  177. trigger: "change",
  178. },
  179. ],
  180. },
  181. {
  182. label: "操作人",
  183. prop: "operator",
  184. search: false,
  185. width: 100,
  186. overHidden: true,
  187. click: ({ value, column }) => {
  188. userRef.value.startSelect();
  189. },
  190. change: ({ value, column }) => {
  191. if (value != form.value.operator) {
  192. userRef.value.startSelect();
  193. }
  194. },
  195. },
  196. {
  197. label: "报工人",
  198. prop: "reportName",
  199. search: false,
  200. display: false,
  201. width: 100,
  202. overHidden: true,
  203. },
  204. {
  205. label: "工时(秒)",
  206. prop: "totalTime",
  207. editDisplay: false,
  208. search: false,
  209. },
  210. {
  211. label: "工步",
  212. prop: "operationSort",
  213. editDisplay: false,
  214. search: false,
  215. },
  216. {
  217. label: "备注",
  218. prop: "operateCondition",
  219. search: false,
  220. width: 100,
  221. overHidden: true,
  222. },
  223. ],
  224. });
  225. // const validateTimeEnd = (rule, value, callback) => {
  226. // if (value === "") {
  227. // callback(new Error("Please input the password again"));
  228. // } else if (value !== ruleForm.pass) {
  229. // callback(new Error("Two inputs don't match!"));
  230. // } else {
  231. // callback();
  232. // }
  233. // };
  234. </script>