mediaCom.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <!-- 图片采集 -->
  2. <template>
  3. <div class="mainContentBox">
  4. <img src="" />
  5. <avue-crud
  6. ref="crudRef2"
  7. v-model:search="search"
  8. v-model="form"
  9. :data="data"
  10. :option="option"
  11. v-model:page="page"
  12. @row-update="updateRow"
  13. >
  14. <template #menu="{ row, index, type }">
  15. <el-button
  16. @click="openDialog(row)"
  17. icon="el-icon-link"
  18. text
  19. type="primary"
  20. >查看</el-button
  21. >
  22. </template>
  23. <template #filePath-form="scope">
  24. <single-upload v-model="form.filePath" />
  25. </template>
  26. </avue-crud>
  27. <el-dialog
  28. v-model="dialog.visible"
  29. :title="dialog.title"
  30. width="60%"
  31. @close="dialog.visible = false"
  32. ><el-image :src="url" fit="none" />
  33. </el-dialog>
  34. <CommonTable
  35. ref="ctableRef"
  36. tableTitle="人员选择"
  37. tableType="USERS"
  38. @selected-sure="onSelectedFinish"
  39. />
  40. </div>
  41. </template>
  42. <script setup>
  43. import { ref, getCurrentInstance } from "vue";
  44. import { useCrud } from "@/hooks/userCrud";
  45. import dictDataUtil from "@/common/configs/dictDataUtil";
  46. import ButtonPermKeys from "@/common/configs/buttonPermission";
  47. import {
  48. useCommonStoreHook,
  49. useDictionaryStore,
  50. useUserStoreHook,
  51. } from "@/store";
  52. import SingleUpload from "@/components/Upload/SingleUpload.vue";
  53. const ctableRef = ref(null);
  54. // 数据字典相关
  55. const { dicts } = useDictionaryStore();
  56. const dialog = reactive({
  57. title: "图片预览",
  58. visible: false,
  59. });
  60. const url = ref(null);
  61. // 传入一个url,后面不带/
  62. const {
  63. form,
  64. data,
  65. option,
  66. search,
  67. page,
  68. toDeleteIds,
  69. Methords,
  70. Utils,
  71. commonConfig,
  72. } = useCrud({
  73. src: "/api/v1/process/media",
  74. });
  75. const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
  76. Methords; //增删改查
  77. const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
  78. const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
  79. const crudRef = ref(null); //crudRef.value 获取avue-crud对象
  80. const openDialog = (row) => {
  81. dialog.visible = true;
  82. url.value = import.meta.env.VITE_APP_UPLOAD_URL + row.filePath;
  83. };
  84. const refreshTra = (row) => {
  85. commonConfig.value.params = { seqNo: row.seqNo,workOrderCode: row.workOrderCode};
  86. dataList();
  87. };
  88. const userStore = useUserStoreHook();
  89. defineExpose({ refreshTra });
  90. onMounted(() => {
  91. search.value.processId=props.processId;
  92. if (userStore.user.userId === 10000) {
  93. option.value.editBtn = true;
  94. }
  95. dataList();
  96. });
  97. const props =defineProps({
  98. processId: {
  99. type: Number,
  100. required: true,
  101. },
  102. });
  103. const onSelectedFinish = (selectValue) => {
  104. form.value.creator = selectValue.userName;
  105. };
  106. option.value = Object.assign(option.value, {
  107. selection: false,
  108. border: true,
  109. index: false,
  110. expandLevel: 3,
  111. headerAlign: "center",
  112. align: "center",
  113. labelWidth: 100,
  114. addBtn: false,
  115. menu: true,
  116. editBtn: false,
  117. delBtn: false,
  118. viewBtn: false,
  119. header: false,
  120. column: [
  121. {
  122. label: "上传人员",
  123. prop: "creator",
  124. span: 16,
  125. search: false,
  126. click: ({ value, column }) => {
  127. ctableRef.value.startSelect();
  128. },
  129. change: ({ value, column }) => {
  130. if (value != form.value.creator) {
  131. ctableRef.value.startSelect();
  132. }
  133. },
  134. rules: [
  135. {
  136. required: true,
  137. message: "请选择上传人员",
  138. trigger: "blur",
  139. },
  140. ],
  141. },
  142. {
  143. label: "上传时间",
  144. prop: "created",
  145. search: false,
  146. span: 16,
  147. format: "YYYY-MM-DD HH:mm:ss",
  148. valueFormat: "YYYY-MM-DD HH:mm:ss",
  149. type: "datetime",
  150. },
  151. {
  152. label: "图片上传",
  153. prop: "filePath",
  154. span: 16,
  155. slot: true,
  156. hide: true,
  157. rules: [
  158. {
  159. required: true,
  160. message: "请上传图片",
  161. trigger: "blur",
  162. },
  163. ],
  164. },
  165. ],
  166. });
  167. </script>