index.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  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 #menu-left="{ size }">
  20. <el-button
  21. :disabled="toDeleteIds.length < 1"
  22. type="danger"
  23. icon="el-icon-delete"
  24. :size="size"
  25. @click="multipleDelete"
  26. >删除</el-button
  27. >
  28. </template>
  29. </avue-crud>
  30. <el-dialog
  31. v-model="dialog1.visible"
  32. :title="dialog1.title"
  33. width="950px"
  34. @close="dialog1.visible = false"
  35. >
  36. <choice-item-page @materialInfo="materialInfo"/>
  37. </el-dialog>
  38. <ExcelUpload ref="uploadRef" @finished="uploadFinished" />
  39. </div>
  40. </template>
  41. <script setup>
  42. import { ref, getCurrentInstance } from "vue";
  43. import { useCrud } from "@/hooks/userCrud";
  44. import ButtonPermKeys from "@/common/configs/buttonPermission";
  45. import { useCommonStoreHook } from "@/store";
  46. import dictDataUtil from "@/common/configs/dictDataUtil";
  47. const { isShowTable, tableType } = toRefs(useCommonStoreHook());
  48. const test = () => {
  49. isShowTable.value = true;
  50. tableType.value = tableType.value == 1 ? 2 : 1;
  51. };
  52. // 传入一个url,后面不带/
  53. const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
  54. useCrud({
  55. src: "/api/v1/wms/stock",
  56. });
  57. const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
  58. const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
  59. const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
  60. const crudRef = ref(null); //crudRef.value 获取avue-crud对象
  61. const dialog1 = reactive({
  62. title: "物料选择",
  63. visible: false,
  64. });
  65. const materialInfo = (value) => {
  66. form.value.materialCode = value.materialCode
  67. form.value.materialName = value.materialName
  68. form.value.materialModel = value.spec
  69. form.value.unit = value.unitDictValue
  70. dialog1.visible = false
  71. }
  72. // 设置表格列或者其他自定义的option
  73. option.value = Object.assign(option.value, {
  74. delBtn: false,
  75. selection: true,
  76. column: [
  77. {
  78. label: "入库单号",
  79. prop: "taskNo",
  80. search: true,
  81. rules: [
  82. {
  83. required: true,
  84. message: "入库单号不能为空",
  85. trigger: "trigger",
  86. },
  87. ],
  88. },
  89. {
  90. label: "计划单号",
  91. prop: "planNo",
  92. search: true,
  93. rules: [
  94. {
  95. required: true,
  96. message: "计划单号不能为空",
  97. trigger: "trigger",
  98. },
  99. ],
  100. },
  101. {
  102. label: "仓库编码",
  103. prop: "houseType",
  104. type: "select",
  105. search: true,
  106. width: 90,
  107. overHidden: true,
  108. editDisabled: true,
  109. dicUrl:
  110. dictDataUtil.request_url +
  111. dictDataUtil.TYPE_CODE.warehouse_type,
  112. props: {
  113. label: "dictLabel",
  114. value: "dictValue",
  115. },
  116. rules: [
  117. {
  118. required: true,
  119. message: "仓库编码不能为空",
  120. trigger: "trigger",
  121. },
  122. ],
  123. },
  124. {
  125. label: "料箱编号",
  126. prop: "vehicleCode",
  127. editDisabled: true,
  128. rules: [
  129. {
  130. required: true,
  131. message: "料箱编号不能为空",
  132. trigger: "trigger",
  133. },
  134. ],
  135. },
  136. {
  137. label: "仓库坐标",
  138. prop: "coordinate",
  139. editDisabled: true,
  140. rules: [
  141. {
  142. required: true,
  143. message: "仓库位置不能为空",
  144. trigger: "trigger",
  145. },
  146. ],
  147. },
  148. {
  149. label: "批次号",
  150. width: 120,
  151. overHidden: true,
  152. prop: "batchCode",
  153. search: true
  154. },
  155. {
  156. label: "序列号",
  157. width: 130,
  158. overHidden: true,
  159. prop: "seqNo",
  160. },
  161. {
  162. label: "物料名称",
  163. prop: "materialName",
  164. width: 130,
  165. overHidden: true,
  166. click: ({ value, column }) => {
  167. if(column.boxType){
  168. dialog1.visible = true
  169. }
  170. },
  171. /*rules: [
  172. {
  173. required: true,
  174. message: "物料名称不能为空",
  175. trigger: "trigger",
  176. },
  177. ],*/
  178. },
  179. {
  180. label: "数量",
  181. prop: "num",
  182. type: 'number',
  183. min: 0,
  184. max: 99999
  185. /*rules: [
  186. {
  187. required: true,
  188. message: "数量不能为空",
  189. trigger: "trigger",
  190. },
  191. ],*/
  192. },
  193. {
  194. label: "单位",
  195. prop: "unit",
  196. },
  197. ],
  198. });
  199. onMounted(() => {
  200. // console.log("crudRef", crudRef)
  201. dataList();
  202. });
  203. /**
  204. * 上传excel相关
  205. */
  206. const uploadRef = ref(null);
  207. const uploadFinished = () => {
  208. // 上传完成后的刷新操作
  209. page.currentPage = 1;
  210. dataList();
  211. };
  212. const importExcelData = () => {
  213. if (uploadRef.value) {
  214. uploadRef.value.show("/api/v1/device/import");
  215. }
  216. };
  217. </script>