index.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <template>
  2. <el-container class="is-vertical">
  3. <sc-page-header></sc-page-header>
  4. <scTable ref="xGridTable" v-bind="xGridOptions">
  5. <template #code_link="{ row }">
  6. <vxe-text status="primary" @click="table_detail(row)">{{ row.code }}</vxe-text>
  7. </template>
  8. <template #process_link="{ row }">
  9. <vxe-text status="primary" @click="table_detail(row)">工序</vxe-text>
  10. <div>
  11. <vxe-text status="primary" @click="table_detail(row)">分配</vxe-text>
  12. <vxe-text status="primary" @click="table_report(row)">汇报</vxe-text><!-- (报工)dialog(工序汇报) -->
  13. </div>
  14. </template>
  15. <template #action>
  16. <el-button type="primary" link @click="table_edit(row)">
  17. <!-- <template #icon><sc-iconify icon="mdi:transfer"></sc-iconify></template>送检 -->
  18. <!-- <template #icon><sc-iconify icon="mdi:transfer"></sc-iconify></template>入库申请 -->
  19. <template #icon><sc-iconify icon="ant-design:edit-outlined"></sc-iconify></template>修改
  20. </el-button>
  21. <el-button type="primary" link @click="table_del(row)">
  22. <template #icon><sc-iconify icon="ant-design:delete-outlined"></sc-iconify></template>删除
  23. </el-button>
  24. </template>
  25. </scTable>
  26. </el-container>
  27. <report-detail v-if="dialog.report" ref="reportRef" @success="refreshTable" @closed="dialog.report = false"></report-detail>
  28. </template>
  29. <script setup>
  30. import moment from "moment";
  31. import XEUtils from "xe-utils";
  32. import API from "@/api";
  33. import TOOL from "@/utils/tool";
  34. import { salesDic } from "@/utils/basicDic";
  35. import { mapFormItemInput, mapFormItemSelect, mapFormItemDatePicker, mapFormItemTenant } from "@/components/scTable/helper";
  36. import reportDetail from "./detail";
  37. import store from "@/store";
  38. watch(() => store.state.tenant.tenantId, () => refreshTable());
  39. const daterangeConfig = reactive({
  40. resetValue: () => [],
  41. props: {
  42. type: "daterange",
  43. startPlaceholder: "开始日期",
  44. endPlaceholder: "结束日期",
  45. format: "YYYY-MM-DD"
  46. }
  47. });
  48. const xGridOptions = reactive({
  49. // apiObj: API.production.prePlan,
  50. toolbarConfig: { export: false },
  51. formConfig: {
  52. data: {},
  53. items: [
  54. mapFormItemInput("nameLike", "派工主题"),
  55. mapFormItemInput("codeLike", "派工编号"),
  56. mapFormItemDatePicker("planDate", "计划周期", daterangeConfig)
  57. ]
  58. },
  59. paramsColums: [
  60. { column: "orderBy", defaultValue: "createTime_desc" },
  61. { column: "status", defaultValue: "pending" },
  62. { column: "tenantId" },
  63. { column: "nameLike" },
  64. { column: "codeLike" },
  65. { column: "beginDateBegin", field: "planDate[0]" },
  66. { column: "endDateEnd", field: "planDate[1]" }
  67. ],
  68. columns: [
  69. { type: "seq", fixed: "left", width: 60 },
  70. { visible: computed(() => store.state.tenant.tenantId === "0"), type: "html", field: "tenantName", title: "所属租户", fixed: "left", minWidth: 200, sortable: true, formatter: ({ cellValue, row }) => cellValue || XEUtils.get(XEUtils.find(store.state.tenant.tenants, item => item.id == row.tenantId), "name") },
  71. { type: "html", field: "name", title: "单据主题", fixed: "left", minWidth: 150, sortable: true },
  72. { field: "code", title: "派工产品", fixed: "left", minWidth: 150, sortable: true, className: "vxe-table-link-cell", slots: { default: "code_link" } },
  73. { field: "process", title: "加工工序", fixed: "left", minWidth: 150, sortable: true, className: "vxe-table-link-cell", slots: { default: "process_link" } },
  74. { field: "isReport", title: "是否汇报", fixed: "left", minWidth: 150, sortable: true, className: "vxe-table-link-cell", slots: { default: "code_link" } },
  75. { type: "html", field: "customerName", title: "生产人员", minWidth: 150, sortable: true },
  76. { type: "html", field: "num", title: "加工数量", minWidth: 150, sortable: true },
  77. { type: "html", field: "num1", title: "已分配数量", minWidth: 150, sortable: true },
  78. { type: "html", field: "num2", title: "未分配数量", minWidth: 150, sortable: true },
  79. { type: "html", field: "num3", title: "合格数量", minWidth: 150, sortable: true },
  80. { type: "html", field: "num4", title: "返工数量", minWidth: 150, sortable: true },
  81. { type: "html", field: "num5", title: "报废数量", minWidth: 150, sortable: true },
  82. { type: "html", field: "num6", title: "剩余数量", minWidth: 150, sortable: true },
  83. { field: "status", title: "状态", minWidth: 120, editRender: { name: "$cell-tag", options: salesDic.planStatus } },
  84. { field: "status1", title: "质检状态", minWidth: 120, editRender: { name: "$cell-tag", options: salesDic.planStatus } },
  85. { type: "html", field: "beginDate", title: "计划开工日期", minWidth: 120, sortable: true },
  86. { type: "html", field: "endDate", title: "计划完工日期", minWidth: 120, sortable: true },
  87. { visible: false, type: "html", field: "createTime", title: "创建日期", minWidth: 120, sortable: true, formatter: ({ cellValue }) => TOOL.dateFormat(cellValue, "YYYY-MM-DD") || cellValue },
  88. { title: "操作", fixed: "right", width: 160, slots: { default: "action" } }
  89. ],
  90. options: {
  91. data: [{}]
  92. }
  93. });
  94. // 显示隐藏 筛选表单
  95. const xGridTable = ref();
  96. const refreshTable = (mode = "add") => (xGridTable.value.searchData(mode), xGridTable.value.reloadColumn(columns));
  97. const dispatchRef = ref();
  98. const reportRef = ref();
  99. const dispatchDescRef = ref();
  100. const dialog = reactive({
  101. detail: false,
  102. report: false,
  103. desc: false
  104. });
  105. const table_report = (row) => {
  106. dialog.report = true;
  107. nextTick(() => reportRef.value?.setData(row));
  108. }
  109. const table_edit = row => {
  110. dialog.detail = true;
  111. nextTick(() => dispatchRef.value?.setData(row));
  112. }
  113. const table_detail = row => {
  114. dialog.desc = true;
  115. nextTick(() => dispatchDescRef.value?.setData(row));
  116. }
  117. const table_del = ({ id }) => {
  118. ElMessageBox.confirm("是否确认删除该派工单?", "删除警告", {
  119. type: "warning",
  120. confirmButtonText: "确定",
  121. cancelButtonText: "取消"
  122. }).then(() => {
  123. // API.production.plan.del({ id }).then(() => {
  124. // ElMessage.success("操作成功");
  125. // refreshTable();
  126. // });
  127. }).catch(() => {});
  128. }
  129. </script>