index.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  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-update="updateRow"
  11. @row-del="deleteRow"
  12. @search-change="searchChange"
  13. @search-reset="resetChange"
  14. @size-change="dataBomList"
  15. @current-change="dataBomList"
  16. @selection-change="selectionChange"
  17. >
  18. <template #menu-left="{ size }">
  19. <el-button
  20. type="danger"
  21. icon="el-icon-plus"
  22. @click="openMaterial"
  23. >新增</el-button
  24. ></template>
  25. <template #menu="{row,index,type}">
  26. <el-button @click="binding(row)"
  27. icon="el-icon-link"
  28. text
  29. type="primary"
  30. >BOM</el-button>
  31. </template>
  32. <CommonTable
  33. ref="ctableRef"
  34. tableTitle="绑定子项"
  35. tableType="BOM"
  36. @selected-sure="onSelectedFinish"
  37. />
  38. <template #menu-right="{}">
  39. <el-dropdown split-button
  40. >导入
  41. <template #dropdown>
  42. <el-dropdown-menu>
  43. <el-dropdown-item
  44. @click="downloadTemplate('/api/v1/plan/order/template')"
  45. >
  46. <i-ep-download />下载模板
  47. </el-dropdown-item>
  48. <el-dropdown-item @click="importExcelData">
  49. <i-ep-top />导入数据
  50. </el-dropdown-item>
  51. </el-dropdown-menu>
  52. </template>
  53. </el-dropdown>
  54. <el-button
  55. class="ml-3"
  56. @click="exportData('/api/v1/plan/order/export')"
  57. >
  58. <template #icon> <i-ep-download /> </template>导出
  59. </el-button>
  60. </template>
  61. </avue-crud>
  62. <CommonTable
  63. ref="ctableRef"
  64. tableTitle="绑定子项"
  65. tableType="MARTERIAL"
  66. @selected-sure="onSelectedFinish"
  67. />
  68. </div>
  69. </template>
  70. <script setup lang="ts">
  71. import { ref, getCurrentInstance } from "vue";
  72. import { useCrud } from "../../../hooks/userCrud";
  73. import ButtonPermKeys from "../../../common/configs/buttonPermission";
  74. import { columns } from "./columns";
  75. import { useCommonStoreHook, useDictionaryStoreHook } from "../../../store/index";
  76. import {
  77. getList,
  78. } from "@/api/bom";
  79. const { isShowTable, tableType } = toRefs(useCommonStoreHook());
  80. // 数据字典相关
  81. const { dicts } = useDictionaryStoreHook();
  82. const router = useRouter();
  83. const route = useRoute();
  84. const test = () => {
  85. isShowTable.value = true;
  86. tableType.value = tableType.value == 1 ? 2 : 1;
  87. };
  88. const openMaterial=()=>{
  89. if (ctableRef.value) {
  90. ctableRef.value.startSelect();
  91. }
  92. }
  93. const formData=ref({});
  94. const dataBomList=()=>{
  95. formData.materialCode=route.params.materialCode;
  96. getList(formData).then((data: any) => {
  97. ElMessage({
  98. message: data.msg,
  99. type: "success",
  100. });
  101. });
  102. }
  103. const ctableRef = ref(null);
  104. const binding = (row) => {
  105. if (ctableRef.value) {
  106. ctableRef.value.startSelect();
  107. }
  108. };
  109. const dialog = reactive({
  110. title: "绑定子项",
  111. visible: false,
  112. });
  113. // 传入一个url,后面不带/
  114. const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
  115. useCrud({
  116. src: "/api/v1/base/materialBom",
  117. });
  118. const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
  119. Methords; //增删改查
  120. const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
  121. const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
  122. // checkBtnPerm(ButtonPermKeys.PLAN.BTNS.order_add) :permission="permission"
  123. // const permission = reactive({
  124. // delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
  125. // addBtn: checkPerm(buttonPermission.PLAN.BTNS.order_add),
  126. // editBtn: checkPerm(buttonPermission.PLAN.BTNS.order_edit),
  127. // menu: true,
  128. // });
  129. const crudRef = ref(null); //crudRef.value 获取avue-crud对象
  130. onMounted(() => {
  131. // console.log("crudRef", crudRef)
  132. formData.materialCode=route.params.materialCode;
  133. getList(formData).then((data: any) => {
  134. ElMessage({
  135. message: data.msg,
  136. type: "success",
  137. });
  138. // 上传完成后的刷新操作
  139. page.currentPage = 1;
  140. dataList();
  141. });
  142. });
  143. /**
  144. * 上传excel相关
  145. */
  146. const uploadRef = ref(null);
  147. const uploadFinished = () => {
  148. // 上传完成后的刷新操作
  149. page.currentPage = 1;
  150. dataList();
  151. };
  152. const importExcelData = () => {
  153. if (uploadRef.value) {
  154. uploadRef.value.show("/api/v1/plan/order/import");
  155. }
  156. };
  157. // 设置表格列或者其他自定义的option
  158. option.value = Object.assign(option.value, {
  159. selection: true,
  160. column: columns,
  161. });
  162. const onSelectedFinish = (selectedValue) => {
  163. /* formData.id=selectedValue.id;
  164. formData.parentId=factory.value.id;
  165. updateWorkShop(formData).then((data: any) => {
  166. ElMessage({
  167. message: data.msg,
  168. type: "success",
  169. });
  170. // 上传完成后的刷新操作
  171. page.currentPage = 1;
  172. dataList();
  173. });*/
  174. };
  175. </script>