index.vue 8.1 KB

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