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. selection: false,
  162. viewBtn: false,
  163. editBtn: false,
  164. delBtn: false,
  165. menu: true,
  166. column: [
  167. {
  168. label: "文档名称",
  169. prop: "fileName",
  170. search: true,
  171. overHidden: true,
  172. rules: [
  173. {
  174. required: true,
  175. trigger: "blur",
  176. },
  177. ],
  178. },
  179. {
  180. label: "文档编码",
  181. prop: "fileCode",
  182. search: true,
  183. overHidden: true,
  184. rules: [
  185. {
  186. required: true,
  187. trigger: "blur",
  188. },
  189. ],
  190. },
  191. {
  192. label: "物料编码",
  193. prop: "materialCode",
  194. overHidden: true,
  195. search: true,
  196. rules: [
  197. {
  198. required: true,
  199. trigger: "blur",
  200. },
  201. ],
  202. click({ value, column }) {
  203. if (column.rules) {
  204. ctableRef.value.startSelect();
  205. }
  206. },
  207. },
  208. {
  209. label: "来源类型",
  210. prop: "sourceType",
  211. search: true,
  212. overHidden: true,
  213. editDisplay: false,
  214. type: "select",
  215. addDisabled: true,
  216. rules: [
  217. {
  218. required: true,
  219. trigger: "blur",
  220. },
  221. ],
  222. dicData: [
  223. {
  224. label: "PDM同步",
  225. value: 1,
  226. },
  227. {
  228. label: "手动维护",
  229. value: 2,
  230. },
  231. ],
  232. value: 2,
  233. },
  234. {
  235. label: "文件地址",
  236. prop: "filePath",
  237. span: 24,
  238. slot: true,
  239. hide: true,
  240. rules: [
  241. {
  242. required: true,
  243. trigger: "blur",
  244. },
  245. ],
  246. },
  247. {
  248. label: "创建时间",
  249. prop: "created",
  250. width: 120,
  251. overHidden: true,
  252. display: false,
  253. },
  254. ],
  255. });
  256. const deleteRecord = (row, index, done) => {
  257. deleteRow(row, index, done);
  258. dataEditList();
  259. };
  260. </script>