index.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. <template>
  2. <div class="mainContentBox">
  3. <avue-crud
  4. ref="crudRef"
  5. v-model:search="search"
  6. v-model="form"
  7. :data="data"
  8. :option="option"
  9. v-model:page="page"
  10. @row-save="addRow"
  11. @row-update="updateRow"
  12. @row-del="deleteRow"
  13. @search-change="searchChange"
  14. @search-reset="resetChange"
  15. @size-change="dataList"
  16. @current-change="dataList"
  17. @selection-change="selectionChange"
  18. >
  19. <template #filePath-form="scope">
  20. <!-- <single-upload v-model="form.drawingPath" :generatePdf="true"/>-->
  21. <FilesUpload
  22. v-model:src-list="srcList"
  23. v-model:pdf-list="pdfUrlList"
  24. v-model:file-name-list="fileNameList"
  25. :generate-pdf="true"
  26. @finished="testFiles"
  27. />
  28. </template>
  29. <template #menu-left="{ row, index, type }">
  30. <el-button @click="toSyncPdmFiles()" type="success">同步PDM</el-button>
  31. </template>
  32. <template #menu="{ row, index, type }">
  33. <PDFView
  34. :need-to-show-pdf="true"
  35. content-type="button"
  36. :is-link="true"
  37. :pdf-source="setSource(row)"
  38. />
  39. <el-button @click="deleteRecord(row, index, done)" text type="primary"
  40. >删除</el-button
  41. >
  42. </template>
  43. </avue-crud>
  44. <ExcelUpload ref="uploadRef" @finished="uploadFinished" />
  45. </div>
  46. <CommonTable
  47. ref="ctableRef"
  48. tableTitle="文档添加"
  49. tableType="MARTERIAL"
  50. @selected-sure="onSelectedFinish"
  51. />
  52. </template>
  53. <script setup>
  54. import { ref, getCurrentInstance } from "vue";
  55. import { useCrud } from "@/hooks/userCrud";
  56. import { useCommonStoreHook, useDictionaryStore } from "@/store";
  57. import { updateDrawaing } from "@/api/drawing";
  58. import dictDataUtil from "@/common/configs/dictDataUtil";
  59. import PDFView from "@/components/PDFView/index.vue";
  60. import { syncPdmFiles } from "@/api/document/index.ts";
  61. const { isShowTable, tableType } = toRefs(useCommonStoreHook());
  62. const setSource = (row) => {
  63. if (row.sourceType == 1) {
  64. return row.filePath;
  65. } else if (row.sourceType == 2) {
  66. return filePath + row.filePath;
  67. }
  68. };
  69. const SyncPdmCode = ref("");
  70. const SyncPdmStatus = ref(false);
  71. //同步
  72. const toSyncPdmFiles = () => {
  73. SyncPdmStatus.value = true;
  74. ctableRef.value.startSelect();
  75. };
  76. // 数据字典相关
  77. const { dicts } = useDictionaryStore();
  78. const fileUrl = ref(""); //单文件
  79. const pdfUrlList = ref([]);
  80. const srcList = ref([]);
  81. const fileNameList = ref([]);
  82. const testFiles = () => {
  83. form.value.filePath = pdfUrlList.value[0];
  84. };
  85. const filePath = import.meta.env.VITE_APP_UPLOAD_URL;
  86. const test = () => {
  87. isShowTable.value = true;
  88. tableType.value = tableType.value == 1 ? 2 : 1;
  89. };
  90. const ctableRef = ref(null);
  91. const changeItem = (row) => {
  92. updateDrawaing(row).then(() => {
  93. ElMessage.success("操作成功");
  94. dataList();
  95. });
  96. };
  97. const form2 = ref(null);
  98. const addRow = (form2, done) => {
  99. createRow(form, done, done);
  100. pdfUrlList.value = [];
  101. srcList.value = [];
  102. fileNameList.value = [];
  103. };
  104. // 传入一个url,后面不带/
  105. const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
  106. useCrud({
  107. src: "/api/v1/processFile",
  108. });
  109. const {
  110. dataEditList,
  111. createRow,
  112. updateRow,
  113. deleteRow,
  114. searchChange,
  115. dataList,
  116. resetChange,
  117. } = Methords; //增删改查
  118. const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
  119. const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
  120. // checkBtnPerm(ButtonPermKeys.PLAN.BTNS.order_add) :permission="permission"
  121. // const permission = reactive({
  122. // delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
  123. // addBtn: checkPerm(buttonPermission.PLAN.BTNS.order_add),
  124. // editBtn: checkPerm(buttonPermission.PLAN.BTNS.order_edit),
  125. // menu: true,
  126. // });
  127. const crudRef = ref(null); //crudRef.value 获取avue-crud对象
  128. const router = useRouter?.();
  129. onMounted?.(() => {
  130. dataEditList();
  131. });
  132. const onSelectedFinish = async (selectedValue) => {
  133. form.value.materialCode = selectedValue.materialCode;
  134. SyncPdmCode.value = selectedValue.materialCode;
  135. form.value.operationId = 1;
  136. if (SyncPdmStatus.value == true) {
  137. try {
  138. const { code } = await syncPdmFiles(SyncPdmCode.value);
  139. if (code == "200") {
  140. ElMessage.success("同步成功");
  141. dataList();
  142. }
  143. } catch (e) {
  144. ElMessage.error(e);
  145. } finally {
  146. SyncPdmStatus.value = false;
  147. }
  148. }
  149. };
  150. /**
  151. * 上传excel相关
  152. */
  153. const uploadRef = ref(null);
  154. const uploadFinished = () => {
  155. // 上传完成后的刷新操作
  156. page.currentPage = 1;
  157. dataEditList();
  158. };
  159. // 设置表格列或者其他自定义的option
  160. option.value = Object.assign(option.value, {
  161. searchEnter: true,
  162. selection: false,
  163. viewBtn: false,
  164. editBtn: false,
  165. delBtn: false,
  166. menu: true,
  167. column: [
  168. {
  169. label: "文档名称",
  170. prop: "fileName",
  171. search: true,
  172. overHidden: true,
  173. rules: [
  174. {
  175. required: true,
  176. trigger: "change",
  177. },
  178. ],
  179. },
  180. {
  181. label: "文档编码",
  182. prop: "fileCode",
  183. search: true,
  184. overHidden: true,
  185. rules: [
  186. {
  187. required: true,
  188. trigger: "change",
  189. },
  190. ],
  191. },
  192. {
  193. label: "物料编码",
  194. prop: "materialCode",
  195. overHidden: true,
  196. search: true,
  197. rules: [
  198. {
  199. required: true,
  200. trigger: "change",
  201. },
  202. ],
  203. click({ value, column }) {
  204. if (column.rules) {
  205. ctableRef.value.startSelect();
  206. }
  207. },
  208. },
  209. {
  210. label: "来源类型",
  211. prop: "sourceType",
  212. search: true,
  213. overHidden: true,
  214. editDisplay: false,
  215. type: "select",
  216. addDisabled: true,
  217. rules: [
  218. {
  219. required: true,
  220. trigger: "blur",
  221. },
  222. ],
  223. dicData: [
  224. {
  225. label: "PDM同步",
  226. value: 1,
  227. },
  228. {
  229. label: "手动维护",
  230. value: 2,
  231. },
  232. ],
  233. value: 2,
  234. },
  235. {
  236. label: "文件地址",
  237. prop: "filePath",
  238. span: 24,
  239. slot: true,
  240. hide: true,
  241. rules: [
  242. {
  243. required: true,
  244. trigger: "change",
  245. },
  246. ],
  247. },
  248. {
  249. label: "创建时间",
  250. prop: "created",
  251. width: 120,
  252. overHidden: true,
  253. display: false,
  254. },
  255. ],
  256. });
  257. const deleteRecord = (row, index, done) => {
  258. deleteRow(row, index, done);
  259. dataEditList();
  260. };
  261. </script>