index.vue 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. <template>
  2. <!-- 暂未使用 -->
  3. <div class="mainContentBox">
  4. <avue-crud
  5. ref="crudRef"
  6. v-model:search="search"
  7. v-model="form"
  8. :data="data"
  9. :option="option"
  10. v-model:page="page"
  11. @row-save="createRow"
  12. @row-update="updateRow"
  13. @row-del="deleteRow"
  14. @search-change="searchChange"
  15. @search-reset="resetChange"
  16. @size-change="dataList"
  17. @current-change="dataList"
  18. @selection-change="selectionChange"
  19. >
  20. <template #drawingPath-form="scope">
  21. <!-- <single-upload v-model="form.drawingPath" :generatePdf="true"/>-->
  22. <FilesUpload
  23. v-model:src-list="srcList"
  24. v-model:pdf-list="pdfUrlList"
  25. v-model:file-name-list="fileNameList"
  26. :limit="10"
  27. :generate-pdf="true"
  28. @finished="testFiles"
  29. />
  30. </template>
  31. <template #enable="scope">
  32. <el-switch
  33. active-value="1"
  34. inactive-value="0"
  35. inline-prompt
  36. active-text="启用"
  37. inactive-text="禁用"
  38. v-model="scope.row.enable"
  39. @click="changeItem(scope.row)"
  40. class="ml-2"
  41. style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"
  42. />
  43. </template>
  44. <template #menu="{ row, index, type }">
  45. <PDFView
  46. :need-to-show-pdf="true"
  47. content-type="button"
  48. :is-link="true"
  49. :pdf-source="filePath + row.pdfPath"
  50. />
  51. <el-button @click="deleteRecord(row, index, done)" text type="primary"
  52. >删除</el-button
  53. >
  54. </template>
  55. </avue-crud>
  56. <ExcelUpload ref="uploadRef" @finished="uploadFinished" />
  57. </div>
  58. <CommonTable
  59. ref="ctableRef"
  60. tableTitle="BOM添加"
  61. tableType="MARTERIAL"
  62. @selected-sure="onSelectedFinish"
  63. />
  64. </template>
  65. <script setup lang="ts">
  66. import { ref, getCurrentInstance } from "vue";
  67. import { useCrud } from "@/hooks/userCrud";
  68. import { useCommonStoreHook, useDictionaryStore } from "@/store";
  69. import { updateDrawaing } from "@/api/drawing";
  70. import dictDataUtil from "@/common/configs/dictDataUtil";
  71. import PDFView from "@/components/PDFView/index.vue";
  72. const { isShowTable, tableType } = toRefs(useCommonStoreHook());
  73. // 数据字典相关
  74. const { dicts } = useDictionaryStore();
  75. const fileUrl = ref(""); //单文件
  76. const pdfUrlList = ref([]);
  77. const srcList = ref([]);
  78. const fileNameList = ref([]);
  79. const testFiles = () => {
  80. form.value.pdfPathList = pdfUrlList.value;
  81. form.value.drawingPathList = srcList.value;
  82. form.value.drawingPath = srcList.value[0];
  83. form.value.fileNameList = fileNameList.value;
  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. // 传入一个url,后面不带/
  98. const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
  99. useCrud({
  100. src: "/api/v1/base/drawing",
  101. });
  102. const {
  103. dataEditList,
  104. createRow,
  105. updateRow,
  106. deleteRow,
  107. searchChange,
  108. dataList,
  109. resetChange,
  110. } = Methords; //增删改查
  111. const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
  112. const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
  113. // checkBtnPerm(ButtonPermKeys.PLAN.BTNS.order_add) :permission="permission"
  114. // const permission = reactive({
  115. // delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
  116. // addBtn: checkPerm(buttonPermission.PLAN.BTNS.order_add),
  117. // editBtn: checkPerm(buttonPermission.PLAN.BTNS.order_edit),
  118. // menu: true,
  119. // });
  120. const crudRef = ref(null); //crudRef.value 获取avue-crud对象
  121. const router = useRouter?.();
  122. onMounted?.(() => {
  123. // console.log("crudRef", crudRef)
  124. dataEditList();
  125. });
  126. const onSelectedFinish = (selectedValue) => {
  127. form.value.associationCode = selectedValue.materialCode;
  128. form.value.associationName = selectedValue.materialCode;
  129. form.value.materialCode = selectedValue.materialCode;
  130. };
  131. /**
  132. * 上传excel相关
  133. */
  134. const uploadRef = ref(null);
  135. const uploadFinished = () => {
  136. // 上传完成后的刷新操作
  137. page.currentPage = 1;
  138. dataEditList();
  139. };
  140. // 设置表格列或者其他自定义的option
  141. option.value = Object.assign(option.value, {
  142. selection: false,
  143. viewBtn: false,
  144. editBtn: false,
  145. delBtn: false,
  146. menu: true,
  147. column: [
  148. {
  149. label: "图纸编号",
  150. prop: "drawingCode",
  151. width: 150,
  152. search: true,
  153. overHidden: true,
  154. rules: [
  155. {
  156. required: true,
  157. message: "请填写图纸编号",
  158. trigger: "blur",
  159. },
  160. ],
  161. },
  162. {
  163. label: "图纸名称",
  164. prop: "drawingTitle",
  165. width: 150,
  166. overHidden: true,
  167. search: true,
  168. rules: [
  169. {
  170. required: true,
  171. message: "请填写图纸名称",
  172. trigger: "blur",
  173. },
  174. ],
  175. },
  176. {
  177. label: "物料编号",
  178. prop: "associationCode",
  179. width: 150,
  180. search: true,
  181. overHidden: true,
  182. editDisplay: false,
  183. addDisplay: false,
  184. rules: [
  185. {
  186. required: true,
  187. message: "请填写物料编号",
  188. trigger: "blur",
  189. },
  190. ],
  191. },
  192. {
  193. label: "物料编号",
  194. prop: "materialCode",
  195. width: 150,
  196. overHidden: true,
  197. editDisplay: false,
  198. hide: true,
  199. rules: [
  200. {
  201. required: true,
  202. message: "请填写物料编号",
  203. trigger: "blur",
  204. },
  205. ],
  206. click() {
  207. if (ctableRef.value) {
  208. ctableRef.value.startSelect();
  209. }
  210. },
  211. },
  212. {
  213. label: "物料名称",
  214. prop: "associationName",
  215. width: 180,
  216. search: true,
  217. overHidden: true,
  218. disabled: true,
  219. rules: [
  220. {
  221. required: true,
  222. message: "请填写物料名称",
  223. trigger: "blur",
  224. },
  225. ],
  226. },
  227. {
  228. label: "图纸类型",
  229. prop: "drawingDictValue",
  230. search: true,
  231. filterable: true,
  232. type: "select",
  233. width: 100,
  234. overHidden: true,
  235. dicUrl: dictDataUtil.request_url + "drawing_type",
  236. props: { label: "dictLabel", value: "dictValue" },
  237. rules: [
  238. {
  239. required: true,
  240. message: "请选择物料属性",
  241. trigger: "blur",
  242. },
  243. ],
  244. },
  245. {
  246. label: "文件",
  247. prop: "drawingPath",
  248. span: 24,
  249. slot: true,
  250. hide: true,
  251. rules: [
  252. {
  253. required: true,
  254. message: "请选择文件",
  255. trigger: "blur",
  256. },
  257. ],
  258. },
  259. {
  260. label: "文件名称",
  261. prop: "fileName",
  262. span: 24,
  263. width: 120,
  264. overHidden: true,
  265. display: false,
  266. },
  267. {
  268. label: "文件数组",
  269. prop: "drawingPathList",
  270. span: 24,
  271. hide: true,
  272. display: false,
  273. },
  274. {
  275. label: "pdf数组",
  276. prop: "pdfPathList",
  277. span: 24,
  278. hide: true,
  279. display: false,
  280. },
  281. {
  282. label: "文件名称数组",
  283. prop: "fileNameList",
  284. span: 24,
  285. slot: true,
  286. hide: true,
  287. display: false,
  288. },
  289. /*{ label: "文件",
  290. prop: "drawing",
  291. type: 'img',
  292. span: 24,
  293. display:false,
  294. slot: true,
  295. formatter: (row, column, cellValue, index) => {
  296. return import.meta.env.VITE_APP_UPLOAD_URL + `${row.drawingPath}`;} },*/
  297. {
  298. label: "版本",
  299. prop: "drawingVersion",
  300. type: "number",
  301. precision: 1,
  302. rules: [
  303. {
  304. required: true,
  305. message: "版本号不能为空",
  306. trigger: "blur",
  307. },
  308. ],
  309. },
  310. {
  311. label: "创建时间",
  312. prop: "created",
  313. width: 120,
  314. overHidden: true,
  315. display: false,
  316. },
  317. {
  318. label: "启用状态",
  319. slot: true,
  320. headerAlign: "center",
  321. prop: "enable",
  322. width: 100,
  323. addDisplay: false,
  324. },
  325. ],
  326. });
  327. const deleteRecord = (row, index, done) => {
  328. deleteRow(row, index, done);
  329. dataEditList();
  330. };
  331. </script>