equitCom.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  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. v-model:page="page"
  11. @row-update="updateRow"
  12. >
  13. <template #menu="{ size, row, index }">
  14. <el-button
  15. v-if="row.equitCode != undefined && row.equitCode != null"
  16. type="primary"
  17. link
  18. size="small"
  19. @click="doEdit(row, index)"
  20. ><i-ep-edit />编辑
  21. </el-button>
  22. </template>
  23. </avue-crud>
  24. <el-dialog
  25. v-model="dialog.visible"
  26. :title="dialog.title"
  27. width="850px"
  28. @close="dialog.visible = false"
  29. :destroy-on-close="true"
  30. >
  31. <device-page
  32. @deviceInfo="deviceInfo"
  33. :deviceType="deviceDetail.equitType"
  34. />
  35. </el-dialog>
  36. </div>
  37. </template>
  38. <script setup>
  39. import { ref, getCurrentInstance } from "vue";
  40. import { useCrud } from "@/hooks/userCrud";
  41. import dictDataUtil from "@/common/configs/dictDataUtil";
  42. import ButtonPermKeys from "@/common/configs/buttonPermission";
  43. import {
  44. useCommonStoreHook,
  45. useDictionaryStore,
  46. useUserStoreHook,
  47. } from "@/store";
  48. // 数据字典相关
  49. const { dicts } = useDictionaryStore();
  50. // 传入一个url,后面不带/
  51. const {
  52. form,
  53. data,
  54. option,
  55. search,
  56. page,
  57. toDeleteIds,
  58. Methords,
  59. Utils,
  60. commonConfig,
  61. } = useCrud({
  62. src: "/api/v1/process/web/traceability/equitRecordInfo",
  63. });
  64. const dialog = reactive({
  65. title: "设备选择",
  66. visible: false,
  67. });
  68. const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
  69. Methords; //增删改查
  70. const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
  71. const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
  72. const crudRef2 = ref(null); //crudRef.value 获取avue-crud对象
  73. const userStore = useUserStoreHook();
  74. const refreshTra = (row) => {
  75. commonConfig.value.params = {
  76. seqNo: row.seqNo,
  77. workOrderCode: row.workOrderCode,
  78. };
  79. dataList();
  80. };
  81. const deviceDetail = ref({});
  82. const doEdit = (row, index) => {
  83. crudRef2.value && crudRef2.value.rowEdit(row, index);
  84. deviceDetail.value = row;
  85. };
  86. const deviceInfo = (value) => {
  87. form.value.equitCode = value.deviceNo;
  88. form.value.equitName = value.deviceName;
  89. form.value.validDate = value.meteringDate;
  90. form.value.equitId = value.id;
  91. dialog.visible = false;
  92. };
  93. defineExpose({ refreshTra });
  94. onMounted(() => {
  95. if (userStore.user.userId === 10000) {
  96. option.value.menu = true;
  97. }
  98. });
  99. option.value = Object.assign(option.value, {
  100. searchEnter: true,
  101. selection: false,
  102. border: true,
  103. index: false,
  104. expandLevel: 3,
  105. headerAlign: "center",
  106. align: "center",
  107. labelWidth: 100,
  108. addBtn: false,
  109. menu: false,
  110. editBtn: false,
  111. viewBtn: false,
  112. delBtn: false,
  113. header: false,
  114. rowKey: "opId",
  115. column: [
  116. {
  117. label: "工序Id",
  118. prop: "opId",
  119. display: false,
  120. hide: true,
  121. },
  122. {
  123. label: "工序名称",
  124. prop: "opName",
  125. display: false,
  126. },
  127. {
  128. label: "设备类型",
  129. prop: "equitType",
  130. search: false,
  131. disabled: true,
  132. type: "select",
  133. dicData: dicts.device_type,
  134. props: {
  135. label: "dictLabel",
  136. value: "dictValue",
  137. },
  138. },
  139. {
  140. label: "精度要求",
  141. prop: "accuracy",
  142. search: false,
  143. disabled: true,
  144. },
  145. {
  146. label: "设备编码",
  147. prop: "equitCode",
  148. search: false,
  149. rules: [
  150. {
  151. required: true,
  152. message: "请选择设备编码",
  153. trigger: "blur",
  154. },
  155. ],
  156. click: ({ value, column }) => {
  157. dialog.visible = true;
  158. },
  159. change: ({ value, column }) => {
  160. if (value != form.value.equitCode) {
  161. dialog.visible = true;
  162. }
  163. },
  164. },
  165. {
  166. label: "计量有效期",
  167. prop: "validDate",
  168. search: false,
  169. disabled: true,
  170. },
  171. {
  172. label: "设备名称",
  173. prop: "equitName",
  174. search: false,
  175. disabled: true,
  176. },
  177. {
  178. label: "设备id",
  179. prop: "equitId",
  180. search: false,
  181. display: false,
  182. hide: true,
  183. },
  184. {
  185. label: "录入时间",
  186. prop: "created",
  187. search: false,
  188. format: "YYYY-MM-DD HH:mm:ss",
  189. valueFormat: "YYYY-MM-DD HH:mm:ss",
  190. type: "datetime",
  191. },
  192. ],
  193. });
  194. </script>