|
@@ -0,0 +1,771 @@
|
|
|
+<template>
|
|
|
+ <div class="order-item-management">
|
|
|
+ <div v-if="orderInfo" class="order-info">
|
|
|
+ <el-descriptions title="订单信息" :column="3" border>
|
|
|
+ <el-descriptions-item label="订单编码">{{ orderInfo.orderCode }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="客户名称">{{ orderInfo.customerName }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="订单状态">
|
|
|
+ <el-tag :type="getOrderStatusType(orderInfo.status)">
|
|
|
+ {{ getOrderStatusText(orderInfo.status) }}
|
|
|
+ </el-tag>
|
|
|
+ </el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="item-management" style="margin-top: 20px;">
|
|
|
+ <avue-crud
|
|
|
+ :option="option"
|
|
|
+ :data="data"
|
|
|
+ ref="crud"
|
|
|
+ v-model="form"
|
|
|
+ :page.sync="page"
|
|
|
+ :before-open="beforeOpen"
|
|
|
+ :table-loading="loading"
|
|
|
+ @row-del="rowDel"
|
|
|
+ @row-update="rowUpdate"
|
|
|
+ @row-save="rowSave"
|
|
|
+ @search-change="searchChange"
|
|
|
+ @search-reset="searchReset"
|
|
|
+ @selection-change="selectionChange"
|
|
|
+ @current-change="currentChange"
|
|
|
+ @size-change="sizeChange"
|
|
|
+ @refresh-change="refreshChange"
|
|
|
+ @on-load="onLoad"
|
|
|
+ >
|
|
|
+ <template slot="menuLeft">
|
|
|
+ <el-button
|
|
|
+ type="danger"
|
|
|
+ size="small"
|
|
|
+ plain
|
|
|
+ icon="el-icon-delete"
|
|
|
+ @click="handleDelete"
|
|
|
+ >
|
|
|
+ 删除
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template slot-scope="{row}" slot="itemStatus">
|
|
|
+ <el-tag :type="getItemStatusType(row.itemStatus)">
|
|
|
+ {{ getItemStatusText(row.itemStatus) }}
|
|
|
+ </el-tag>
|
|
|
+ </template>
|
|
|
+ </avue-crud>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import { getList, add, update, remove, getDetail } from '@/api/order/order-item'
|
|
|
+
|
|
|
+/**
|
|
|
+ * 订单明细查询参数类型定义
|
|
|
+ * @typedef {Object} OrderItemQueryParams
|
|
|
+ * @property {string|number} orderId - 订单ID
|
|
|
+ * @property {string} [orderCode] - 订单编码
|
|
|
+ * @property {string|number} [itemId] - 物料ID
|
|
|
+ * @property {string} [itemCode] - 物料编码
|
|
|
+ * @property {string} [itemName] - 物料名称
|
|
|
+ * @property {string} [specs] - 规格型号
|
|
|
+ * @property {string|number} [mainItemCategoryId] - 主物料分类ID
|
|
|
+ * @property {string} [mainItemCategoryName] - 主物料分类名称
|
|
|
+ * @property {string|number} [warehouseId] - 仓库ID
|
|
|
+ * @property {string} [warehouseName] - 仓库名称
|
|
|
+ * @property {number} [itemStatus] - 明细状态 0-待确认 1-已确认 2-生产中 3-已完成 4-已取消
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * 订单明细表单数据类型定义
|
|
|
+ * @typedef {Object} OrderItemForm
|
|
|
+ * @property {string|number} [id] - 明细ID(修改时必填)
|
|
|
+ * @property {string|number} orderId - 订单ID
|
|
|
+ * @property {string} orderCode - 订单编码
|
|
|
+ * @property {string|number} itemId - 物料ID
|
|
|
+ * @property {string} itemCode - 物料编码
|
|
|
+ * @property {string} itemName - 物料名称
|
|
|
+ * @property {string} specs - 规格型号
|
|
|
+ * @property {string|number} mainItemCategoryId - 主物料分类ID
|
|
|
+ * @property {string} mainItemCategoryName - 主物料分类名称
|
|
|
+ * @property {string|number} warehouseId - 仓库ID
|
|
|
+ * @property {string} warehouseName - 仓库名称
|
|
|
+ * @property {string|number} availableQuantity - 可用数量
|
|
|
+ * @property {string|number} orderQuantity - 订单数量
|
|
|
+ * @property {string|number} confirmQuantity - 确认数量
|
|
|
+ * @property {string|number} unitPrice - 单价
|
|
|
+ * @property {string|number} taxRate - 税率
|
|
|
+ * @property {string|number} taxAmount - 税额
|
|
|
+ * @property {string|number} totalAmount - 总金额
|
|
|
+ * @property {number} itemStatus - 明细状态 0-待确认 1-已确认 2-生产中 3-已完成 4-已取消
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * 订单明细列表项类型定义
|
|
|
+ * @typedef {Object} OrderItemRecord
|
|
|
+ * @property {string} id - 明细ID
|
|
|
+ * @property {string} createUser - 创建用户ID
|
|
|
+ * @property {string} createDept - 创建部门ID
|
|
|
+ * @property {string} createTime - 创建时间
|
|
|
+ * @property {string} updateUser - 更新用户ID
|
|
|
+ * @property {string} updateTime - 更新时间
|
|
|
+ * @property {number} status - 状态 1-正常 0-禁用
|
|
|
+ * @property {number} isDeleted - 是否删除 0-未删除 1-已删除
|
|
|
+ * @property {string|number} orderId - 订单ID
|
|
|
+ * @property {string} orderCode - 订单编码
|
|
|
+ * @property {string|number} itemId - 物料ID
|
|
|
+ * @property {string} itemCode - 物料编码
|
|
|
+ * @property {string} itemName - 物料名称
|
|
|
+ * @property {string} specs - 规格型号
|
|
|
+ * @property {string|number} mainItemCategoryId - 主物料分类ID
|
|
|
+ * @property {string} mainItemCategoryName - 主物料分类名称
|
|
|
+ * @property {string|number} warehouseId - 仓库ID
|
|
|
+ * @property {string} warehouseName - 仓库名称
|
|
|
+ * @property {string} availableQuantity - 可用数量
|
|
|
+ * @property {string} orderQuantity - 订单数量
|
|
|
+ * @property {string} confirmQuantity - 确认数量
|
|
|
+ * @property {string} unitPrice - 单价
|
|
|
+ * @property {string} taxRate - 税率
|
|
|
+ * @property {string} taxAmount - 税额
|
|
|
+ * @property {string} totalAmount - 总金额
|
|
|
+ * @property {number} itemStatus - 明细状态 0-待确认 1-已确认 2-生产中 3-已完成 4-已取消
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * 订单信息类型定义
|
|
|
+ * @typedef {Object} OrderInfo
|
|
|
+ * @property {string} id - 订单ID
|
|
|
+ * @property {string} orderCode - 订单编码
|
|
|
+ * @property {string} customerName - 客户名称
|
|
|
+ * @property {number} status - 订单状态
|
|
|
+ */
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: 'OrderItemManagement',
|
|
|
+
|
|
|
+ props: {
|
|
|
+ /**
|
|
|
+ * 订单信息
|
|
|
+ * @type {OrderInfo}
|
|
|
+ */
|
|
|
+ orderInfo: {
|
|
|
+ type: Object,
|
|
|
+ default: () => null
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 是否显示组件
|
|
|
+ * @type {boolean}
|
|
|
+ */
|
|
|
+ visible: {
|
|
|
+ type: Boolean,
|
|
|
+ default: false
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ /**
|
|
|
+ * 明细表单数据
|
|
|
+ * @type {OrderItemForm}
|
|
|
+ */
|
|
|
+ form: {},
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 明细数据列表
|
|
|
+ * @type {OrderItemRecord[]}
|
|
|
+ */
|
|
|
+ data: [],
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 明细加载状态
|
|
|
+ * @type {boolean}
|
|
|
+ */
|
|
|
+ loading: true,
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 明细分页信息
|
|
|
+ * @type {{pageSize: number, currentPage: number, total: number}}
|
|
|
+ */
|
|
|
+ page: {
|
|
|
+ pageSize: 10,
|
|
|
+ currentPage: 1,
|
|
|
+ total: 0
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 选中的明细行数据
|
|
|
+ * @type {OrderItemRecord[]}
|
|
|
+ */
|
|
|
+ selectionList: [],
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 明细表格配置
|
|
|
+ * @type {Object}
|
|
|
+ */
|
|
|
+ option: {
|
|
|
+ height: 'auto',
|
|
|
+ calcHeight: 30,
|
|
|
+ tip: false,
|
|
|
+ searchShow: true,
|
|
|
+ searchMenuSpan: 6,
|
|
|
+ border: true,
|
|
|
+ index: true,
|
|
|
+ selection: true,
|
|
|
+ viewBtn: true,
|
|
|
+ addBtn: true,
|
|
|
+ editBtn: true,
|
|
|
+ delBtn: true,
|
|
|
+ dialogClickModal: false,
|
|
|
+ dialogWidth: 800,
|
|
|
+ column: [
|
|
|
+ {
|
|
|
+ label: '物料编码',
|
|
|
+ prop: 'itemCode',
|
|
|
+ search: true,
|
|
|
+ width: 120,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入物料编码',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '物料名称',
|
|
|
+ prop: 'itemName',
|
|
|
+ search: true,
|
|
|
+ width: 150,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入物料名称',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '规格型号',
|
|
|
+ prop: 'specs',
|
|
|
+ width: 120,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入规格型号',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '主物料分类',
|
|
|
+ prop: 'mainItemCategoryName',
|
|
|
+ width: 120,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入主物料分类名称',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '仓库名称',
|
|
|
+ prop: 'warehouseName',
|
|
|
+ width: 120,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入仓库名称',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '可用数量',
|
|
|
+ prop: 'availableQuantity',
|
|
|
+ type: 'number',
|
|
|
+ precision: 4,
|
|
|
+ width: 100,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入可用数量',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '订单数量',
|
|
|
+ prop: 'orderQuantity',
|
|
|
+ type: 'number',
|
|
|
+ precision: 4,
|
|
|
+ width: 100,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入订单数量',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '确认数量',
|
|
|
+ prop: 'confirmQuantity',
|
|
|
+ type: 'number',
|
|
|
+ precision: 4,
|
|
|
+ width: 100,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入确认数量',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '单价',
|
|
|
+ prop: 'unitPrice',
|
|
|
+ type: 'number',
|
|
|
+ precision: 2,
|
|
|
+ width: 100,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入单价',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '税率',
|
|
|
+ prop: 'taxRate',
|
|
|
+ type: 'number',
|
|
|
+ precision: 2,
|
|
|
+ width: 80,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入税率',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '税额',
|
|
|
+ prop: 'taxAmount',
|
|
|
+ type: 'number',
|
|
|
+ precision: 2,
|
|
|
+ width: 100,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入税额',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '总金额',
|
|
|
+ prop: 'totalAmount',
|
|
|
+ type: 'number',
|
|
|
+ precision: 2,
|
|
|
+ width: 100,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入总金额',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '明细状态',
|
|
|
+ prop: 'itemStatus',
|
|
|
+ type: 'select',
|
|
|
+ dicData: [
|
|
|
+ { label: '待确认', value: 0 },
|
|
|
+ { label: '已确认', value: 1 },
|
|
|
+ { label: '生产中', value: 2 },
|
|
|
+ { label: '已完成', value: 3 },
|
|
|
+ { label: '已取消', value: 4 }
|
|
|
+ ],
|
|
|
+ search: true,
|
|
|
+ slot: true,
|
|
|
+ width: 100,
|
|
|
+ value: 0,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择明细状态',
|
|
|
+ trigger: 'change'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '物料ID',
|
|
|
+ prop: 'itemId',
|
|
|
+ type: 'number',
|
|
|
+ hide: true,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入物料ID',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '主物料分类ID',
|
|
|
+ prop: 'mainItemCategoryId',
|
|
|
+ type: 'number',
|
|
|
+ hide: true,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入主物料分类ID',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '仓库ID',
|
|
|
+ prop: 'warehouseId',
|
|
|
+ type: 'number',
|
|
|
+ hide: true,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入仓库ID',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ watch: {
|
|
|
+ /**
|
|
|
+ * 监听订单信息变化
|
|
|
+ * @param {OrderInfo} newVal - 新的订单信息
|
|
|
+ * @param {OrderInfo} oldVal - 旧的订单信息
|
|
|
+ */
|
|
|
+ orderInfo: {
|
|
|
+ handler(newVal, oldVal) {
|
|
|
+ if (newVal && newVal.id !== (oldVal && oldVal.id)) {
|
|
|
+ this.page.currentPage = 1
|
|
|
+ this.onLoad(this.page)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ immediate: true
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 监听显示状态变化
|
|
|
+ * @param {boolean} newVal - 新的显示状态
|
|
|
+ */
|
|
|
+ visible: {
|
|
|
+ handler(newVal) {
|
|
|
+ if (newVal && this.orderInfo) {
|
|
|
+ this.page.currentPage = 1
|
|
|
+ this.onLoad(this.page)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ methods: {
|
|
|
+ /**
|
|
|
+ * 明细数据加载
|
|
|
+ * @param {Object} page - 分页参数
|
|
|
+ * @param {Object} params - 查询参数
|
|
|
+ */
|
|
|
+ async onLoad(page, params = {}) {
|
|
|
+ if (!this.orderInfo || !this.orderInfo.id) {
|
|
|
+ this.data = []
|
|
|
+ this.page.total = 0
|
|
|
+ this.loading = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ this.loading = true
|
|
|
+ try {
|
|
|
+ const queryParams = {
|
|
|
+ ...params,
|
|
|
+ orderId: this.orderInfo.id
|
|
|
+ }
|
|
|
+
|
|
|
+ const response = await getList(page.currentPage, page.pageSize, queryParams)
|
|
|
+
|
|
|
+ if (response.data && response.data.records) {
|
|
|
+ this.data = response.data.records
|
|
|
+ this.page.total = response.data.total
|
|
|
+ } else {
|
|
|
+ this.data = []
|
|
|
+ this.page.total = 0
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('加载明细数据失败:', error)
|
|
|
+ this.$message.error('加载明细数据失败')
|
|
|
+ this.data = []
|
|
|
+ this.page.total = 0
|
|
|
+ } finally {
|
|
|
+ this.loading = false
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 明细弹窗打开前处理
|
|
|
+ * @param {boolean} done - 完成回调
|
|
|
+ * @param {string} type - 操作类型 (add/edit/view)
|
|
|
+ */
|
|
|
+ beforeOpen(done, type) {
|
|
|
+ if (type === 'add') {
|
|
|
+ this.form = {
|
|
|
+ orderId: this.orderInfo && this.orderInfo.id,
|
|
|
+ orderCode: this.orderInfo && this.orderInfo.orderCode,
|
|
|
+ itemStatus: 0
|
|
|
+ }
|
|
|
+ }
|
|
|
+ done()
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 明细保存
|
|
|
+ * @param {OrderItemForm} row - 明细表单数据
|
|
|
+ * @param {boolean} done - 完成回调
|
|
|
+ * @param {boolean} loading - 加载状态回调
|
|
|
+ */
|
|
|
+ async rowSave(row, done, loading) {
|
|
|
+ try {
|
|
|
+ loading()
|
|
|
+ const formData = {
|
|
|
+ ...row,
|
|
|
+ orderId: this.orderInfo && this.orderInfo.id,
|
|
|
+ orderCode: this.orderInfo && this.orderInfo.orderCode
|
|
|
+ }
|
|
|
+
|
|
|
+ await add(formData)
|
|
|
+
|
|
|
+ this.$message.success('添加成功!')
|
|
|
+ done()
|
|
|
+ this.onLoad(this.page)
|
|
|
+ this.$emit('item-changed')
|
|
|
+ } catch (error) {
|
|
|
+ console.error('添加明细失败:', error)
|
|
|
+ this.$message.error('添加明细失败')
|
|
|
+ loading()
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 明细更新
|
|
|
+ * @param {OrderItemForm} row - 明细表单数据
|
|
|
+ * @param {number} index - 行索引
|
|
|
+ * @param {boolean} done - 完成回调
|
|
|
+ * @param {boolean} loading - 加载状态回调
|
|
|
+ */
|
|
|
+ async rowUpdate(row, index, done, loading) {
|
|
|
+ try {
|
|
|
+ loading()
|
|
|
+ const formData = {
|
|
|
+ ...row,
|
|
|
+ orderId: this.orderInfo && this.orderInfo.id,
|
|
|
+ orderCode: this.orderInfo && this.orderInfo.orderCode
|
|
|
+ }
|
|
|
+
|
|
|
+ await update(formData)
|
|
|
+
|
|
|
+ this.$message.success('修改成功!')
|
|
|
+ done()
|
|
|
+ this.onLoad(this.page)
|
|
|
+ this.$emit('item-changed')
|
|
|
+ } catch (error) {
|
|
|
+ console.error('修改明细失败:', error)
|
|
|
+ this.$message.error('修改明细失败')
|
|
|
+ loading()
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 明细删除
|
|
|
+ * @param {OrderItemRecord} row - 明细行数据
|
|
|
+ * @param {number} index - 行索引
|
|
|
+ */
|
|
|
+ async rowDel(row, index) {
|
|
|
+ try {
|
|
|
+ await remove(row.id)
|
|
|
+ this.$message.success('删除成功!')
|
|
|
+ this.onLoad(this.page)
|
|
|
+ this.$emit('item-changed')
|
|
|
+ } catch (error) {
|
|
|
+ console.error('删除明细失败:', error)
|
|
|
+ this.$message.error('删除明细失败')
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 明细批量删除
|
|
|
+ */
|
|
|
+ async handleDelete() {
|
|
|
+ if (this.selectionList.length === 0) {
|
|
|
+ this.$message.warning('请选择要删除的数据')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ await this.$confirm('确定删除选中的明细吗?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ })
|
|
|
+
|
|
|
+ const ids = this.selectionList.map(item => item.id).join(',')
|
|
|
+ await remove(ids)
|
|
|
+
|
|
|
+ this.$message.success('删除成功!')
|
|
|
+ this.selectionList = []
|
|
|
+ this.onLoad(this.page)
|
|
|
+ this.$emit('item-changed')
|
|
|
+ } catch (error) {
|
|
|
+ if (error !== 'cancel') {
|
|
|
+ console.error('批量删除明细失败:', error)
|
|
|
+ this.$message.error('批量删除明细失败')
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 明细搜索
|
|
|
+ * @param {Object} params - 搜索参数
|
|
|
+ * @param {boolean} done - 完成回调
|
|
|
+ */
|
|
|
+ searchChange(params, done) {
|
|
|
+ this.onLoad(this.page, params)
|
|
|
+ done()
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 明细搜索重置
|
|
|
+ */
|
|
|
+ searchReset() {
|
|
|
+ this.onLoad(this.page)
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 明细选择变化
|
|
|
+ * @param {OrderItemRecord[]} list - 选中的行数据
|
|
|
+ */
|
|
|
+ selectionChange(list) {
|
|
|
+ this.selectionList = list
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 明细页码变化
|
|
|
+ * @param {number} currentPage - 当前页码
|
|
|
+ */
|
|
|
+ currentChange(currentPage) {
|
|
|
+ this.page.currentPage = currentPage
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 明细页大小变化
|
|
|
+ * @param {number} pageSize - 页大小
|
|
|
+ */
|
|
|
+ sizeChange(pageSize) {
|
|
|
+ this.page.pageSize = pageSize
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 明细刷新
|
|
|
+ */
|
|
|
+ refreshChange() {
|
|
|
+ this.onLoad(this.page)
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取订单状态类型
|
|
|
+ * @param {number} status - 状态值
|
|
|
+ * @returns {string} 状态类型
|
|
|
+ */
|
|
|
+ getOrderStatusType(status) {
|
|
|
+ const statusMap = {
|
|
|
+ 0: 'info', // 草稿
|
|
|
+ 1: 'warning', // 已提交
|
|
|
+ 2: 'primary', // 已确认
|
|
|
+ 3: 'success', // 已完成
|
|
|
+ 4: 'danger' // 已取消
|
|
|
+ }
|
|
|
+ return statusMap[status] || 'info'
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取订单状态文本
|
|
|
+ * @param {number} status - 状态值
|
|
|
+ * @returns {string} 状态文本
|
|
|
+ */
|
|
|
+ getOrderStatusText(status) {
|
|
|
+ const statusMap = {
|
|
|
+ 0: '草稿',
|
|
|
+ 1: '已提交',
|
|
|
+ 2: '已确认',
|
|
|
+ 3: '已完成',
|
|
|
+ 4: '已取消'
|
|
|
+ }
|
|
|
+ return statusMap[status] || '未知'
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取明细状态类型
|
|
|
+ * @param {number} status - 状态值
|
|
|
+ * @returns {string} 状态类型
|
|
|
+ */
|
|
|
+ getItemStatusType(status) {
|
|
|
+ const statusMap = {
|
|
|
+ 0: 'info', // 待确认
|
|
|
+ 1: 'success', // 已确认
|
|
|
+ 2: 'warning', // 生产中
|
|
|
+ 3: 'success', // 已完成
|
|
|
+ 4: 'danger' // 已取消
|
|
|
+ }
|
|
|
+ return statusMap[status] || 'info'
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取明细状态文本
|
|
|
+ * @param {number} status - 状态值
|
|
|
+ * @returns {string} 状态文本
|
|
|
+ */
|
|
|
+ getItemStatusText(status) {
|
|
|
+ const statusMap = {
|
|
|
+ 0: '待确认',
|
|
|
+ 1: '已确认',
|
|
|
+ 2: '生产中',
|
|
|
+ 3: '已完成',
|
|
|
+ 4: '已取消'
|
|
|
+ }
|
|
|
+ return statusMap[status] || '未知'
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 刷新数据
|
|
|
+ */
|
|
|
+ refresh() {
|
|
|
+ this.onLoad(this.page)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.order-item-management {
|
|
|
+ width: 100%;
|
|
|
+}
|
|
|
+
|
|
|
+.order-info {
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.item-management {
|
|
|
+ min-height: 400px;
|
|
|
+}
|
|
|
+</style>
|