traceabilityCom.vue 5.6 KB

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