批量收货
							parent
							
								
									ece5371380
								
							
						
					
					
						commit
						89c0ea49d1
					
				| 
						 | 
					@ -45,4 +45,11 @@ export const asnDetailApi = {
 | 
				
			||||||
        return postRequest('/asnDetail/batchDelete', idList);
 | 
					        return postRequest('/asnDetail/batchDelete', idList);
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 批量收货  @author  霍锦
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    batchReceive: (idList: number[]) => {
 | 
				
			||||||
 | 
					        return postRequest('/asnDetail/batchReceive', idList);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,19 @@
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 入库明细 api 封装
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @Author:    霍锦
 | 
				
			||||||
 | 
					 * @Date:      2025-03-26 15:16:28
 | 
				
			||||||
 | 
					 * @Copyright  友仓
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					import {postRequest} from '/@/lib/axios';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const receiveApi = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 批量收货  @author  霍锦
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    batchReceive: (idList: number[]) => {
 | 
				
			||||||
 | 
					        return postRequest('/receive/batchReceive', idList);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -118,7 +118,7 @@ function changeAreaSelect(selectValue: any) {
 | 
				
			||||||
async function onSubmit() {
 | 
					async function onSubmit() {
 | 
				
			||||||
  try {
 | 
					  try {
 | 
				
			||||||
    await formRef.value.validateFields();
 | 
					    await formRef.value.validateFields();
 | 
				
			||||||
    save();
 | 
					    await save();
 | 
				
			||||||
  } catch (err) {
 | 
					  } catch (err) {
 | 
				
			||||||
    message.error('参数验证错误,请仔细填写表单数据!');
 | 
					    message.error('参数验证错误,请仔细填写表单数据!');
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -92,6 +92,10 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <template #bodyCell="{ text, record, column }">
 | 
					      <template #bodyCell="{ text, record, column }">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <template v-if="column.dataIndex === 'asnNumber'">
 | 
				
			||||||
 | 
					          <a @click="showForm(record)">{{ record.asnNumber }}</a>
 | 
				
			||||||
 | 
					        </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <template v-if="column.dataIndex === 'orderType'">
 | 
					        <template v-if="column.dataIndex === 'orderType'">
 | 
				
			||||||
          {{ $smartEnumPlugin.getDescByValue('ASN_ORDER_TYPE_ENUM', text) }}
 | 
					          {{ $smartEnumPlugin.getDescByValue('ASN_ORDER_TYPE_ENUM', text) }}
 | 
				
			||||||
        </template>
 | 
					        </template>
 | 
				
			||||||
| 
						 | 
					@ -111,7 +115,8 @@
 | 
				
			||||||
              </template>
 | 
					              </template>
 | 
				
			||||||
              编辑
 | 
					              编辑
 | 
				
			||||||
            </a-button>
 | 
					            </a-button>
 | 
				
			||||||
            <a-button @click="onDelete(record)" danger type="link" v-privilege="'asn:delete'">
 | 
					            <a-button @click="onDelete(record)" danger type="link"
 | 
				
			||||||
 | 
					                      :disabled="record.orderQuantity-record.receivedQuantity==0" v-privilege="'asn:delete'">
 | 
				
			||||||
              <template #icon>
 | 
					              <template #icon>
 | 
				
			||||||
                <DeleteOutlined/>
 | 
					                <DeleteOutlined/>
 | 
				
			||||||
              </template>
 | 
					              </template>
 | 
				
			||||||
| 
						 | 
					@ -214,6 +219,7 @@ const columns = ref([
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    title: '操作',
 | 
					    title: '操作',
 | 
				
			||||||
    dataIndex: 'action',
 | 
					    dataIndex: 'action',
 | 
				
			||||||
 | 
					    align: 'center',
 | 
				
			||||||
    fixed: 'right',
 | 
					    fixed: 'right',
 | 
				
			||||||
    width: 140,
 | 
					    width: 140,
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,19 +18,29 @@
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <div class="smart-table-setting-block">
 | 
					      <div class="smart-table-setting-block">
 | 
				
			||||||
        <a-button class="button-style" type="primary" @click="showForm" :disabled="props.asnId==0">
 | 
					        <a-button class="button-style" type="primary" v-privilege="'asnDetail:add'" @click="showForm"
 | 
				
			||||||
 | 
					                  :disabled="props.asnId==0">
 | 
				
			||||||
          <template #icon>
 | 
					          <template #icon>
 | 
				
			||||||
            <PlusOutlined/>
 | 
					            <PlusOutlined/>
 | 
				
			||||||
          </template>
 | 
					          </template>
 | 
				
			||||||
          添加明细
 | 
					          添加明细
 | 
				
			||||||
        </a-button>
 | 
					        </a-button>
 | 
				
			||||||
        <a-button class="button-style" type="primary" danger
 | 
					        <a-button class="button-style" type="primary" v-privilege="'receive:batchReceive'" @click="confirmBatchReceive"
 | 
				
			||||||
 | 
					                  :disabled="props.asnId==0 || selectedRowKeyList.length == 0">
 | 
				
			||||||
 | 
					          <template #icon>
 | 
				
			||||||
 | 
					            <EditOutlined/>
 | 
				
			||||||
 | 
					          </template>
 | 
				
			||||||
 | 
					          批量收货
 | 
				
			||||||
 | 
					        </a-button>
 | 
				
			||||||
 | 
					        <a-button class="button-style" type="primary" v-privilege="'asnDetail:batchDelete'" @click="confirmBatchDelete"
 | 
				
			||||||
 | 
					                  danger
 | 
				
			||||||
                  :disabled="props.asnId==0 || selectedRowKeyList.length == 0">
 | 
					                  :disabled="props.asnId==0 || selectedRowKeyList.length == 0">
 | 
				
			||||||
          <template #icon>
 | 
					          <template #icon>
 | 
				
			||||||
            <DeleteOutlined/>
 | 
					            <DeleteOutlined/>
 | 
				
			||||||
          </template>
 | 
					          </template>
 | 
				
			||||||
          批量移除
 | 
					          批量移除
 | 
				
			||||||
        </a-button>
 | 
					        </a-button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <TableOperator v-model="columns" :tableId="TABLE_ID_CONST.BUSINESS.RECEIVE.ASN_DETAIL" :refresh="queryData"/>
 | 
					        <TableOperator v-model="columns" :tableId="TABLE_ID_CONST.BUSINESS.RECEIVE.ASN_DETAIL" :refresh="queryData"/>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -48,13 +58,15 @@
 | 
				
			||||||
      <template #bodyCell="{ text, record, index, column }">
 | 
					      <template #bodyCell="{ text, record, index, column }">
 | 
				
			||||||
        <template v-if="column.dataIndex === 'action'">
 | 
					        <template v-if="column.dataIndex === 'action'">
 | 
				
			||||||
          <div class="smart-table-operate">
 | 
					          <div class="smart-table-operate">
 | 
				
			||||||
            <a-button @click="showForm(record)" type="link" v-privilege="'asnDetail:update'">
 | 
					            <a-button @click="showForm(record)" type="link" :disabled="record.orderQuantity-record.receivedQuantity==0"
 | 
				
			||||||
 | 
					                      v-privilege="'asnDetail:update'">
 | 
				
			||||||
              <template #icon>
 | 
					              <template #icon>
 | 
				
			||||||
                <EditOutlined/>
 | 
					                <EditOutlined/>
 | 
				
			||||||
              </template>
 | 
					              </template>
 | 
				
			||||||
              编辑
 | 
					              编辑
 | 
				
			||||||
            </a-button>
 | 
					            </a-button>
 | 
				
			||||||
            <a-button @click="onDelete(record)" danger type="link" v-privilege="'asnDetail:delete'">
 | 
					            <a-button @click="onDelete(record)" danger type="link"
 | 
				
			||||||
 | 
					                      :disabled="record.orderQuantity-record.receivedQuantity==0" v-privilege="'asnDetail:delete'">
 | 
				
			||||||
              <template #icon>
 | 
					              <template #icon>
 | 
				
			||||||
                <DeleteOutlined/>
 | 
					                <DeleteOutlined/>
 | 
				
			||||||
              </template>
 | 
					              </template>
 | 
				
			||||||
| 
						 | 
					@ -92,6 +104,7 @@ import {smartSentry} from '/@/lib/smart-sentry';
 | 
				
			||||||
import {TABLE_ID_CONST} from "/@/constants/support/table-id-const";
 | 
					import {TABLE_ID_CONST} from "/@/constants/support/table-id-const";
 | 
				
			||||||
import TableOperator from "/@/components/support/table-operator/index.vue";
 | 
					import TableOperator from "/@/components/support/table-operator/index.vue";
 | 
				
			||||||
import {asnDetailApi} from "/@/api/business/receive/asnDetail/asn-detail-api";
 | 
					import {asnDetailApi} from "/@/api/business/receive/asnDetail/asn-detail-api";
 | 
				
			||||||
 | 
					import {receiveApi} from "/@/api/business/receive/receive-api";
 | 
				
			||||||
import AsnDetailForm from "/@/views/business/receive/asnDetail/asn-detail-form.vue";
 | 
					import AsnDetailForm from "/@/views/business/receive/asnDetail/asn-detail-form.vue";
 | 
				
			||||||
import {message, Modal} from "ant-design-vue";
 | 
					import {message, Modal} from "ant-design-vue";
 | 
				
			||||||
import {SmartLoading} from '/@/components/framework/smart-loading';
 | 
					import {SmartLoading} from '/@/components/framework/smart-loading';
 | 
				
			||||||
| 
						 | 
					@ -139,7 +152,7 @@ const columns = reactive([
 | 
				
			||||||
const defaultQueryForm = {
 | 
					const defaultQueryForm = {
 | 
				
			||||||
  pageNum: 1,
 | 
					  pageNum: 1,
 | 
				
			||||||
  pageSize: PAGE_SIZE,
 | 
					  pageSize: PAGE_SIZE,
 | 
				
			||||||
  asnId: undefined,
 | 
					  asnId: 0,
 | 
				
			||||||
  keyword: undefined,
 | 
					  keyword: undefined,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -197,7 +210,7 @@ function showForm(data: object) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//确认是否删除?
 | 
					//确认是否删除?
 | 
				
			||||||
function onDelete(data) {
 | 
					function onDelete(data: object) {
 | 
				
			||||||
  Modal.confirm({
 | 
					  Modal.confirm({
 | 
				
			||||||
    title: '提示',
 | 
					    title: '提示',
 | 
				
			||||||
    content: '确定要删除选吗?',
 | 
					    content: '确定要删除选吗?',
 | 
				
			||||||
| 
						 | 
					@ -213,11 +226,89 @@ function onDelete(data) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//请求删除
 | 
					//请求删除
 | 
				
			||||||
async function requestDelete(data) {
 | 
					async function requestDelete(data: any) {
 | 
				
			||||||
  SmartLoading.show();
 | 
					  SmartLoading.show();
 | 
				
			||||||
  try {
 | 
					  try {
 | 
				
			||||||
    await asnDetailApi.delete(data.asnDetailId);
 | 
					    const response = await asnDetailApi.delete(data.asnDetailId);
 | 
				
			||||||
    message.success('删除成功');
 | 
					    const {error, success} = JSON.parse(response.msg);
 | 
				
			||||||
 | 
					    if (error) {
 | 
				
			||||||
 | 
					      message.error(error);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (success) {
 | 
				
			||||||
 | 
					      message.success(success);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    await queryData();
 | 
				
			||||||
 | 
					  } catch (e) {
 | 
				
			||||||
 | 
					    smartSentry.captureError(e);
 | 
				
			||||||
 | 
					  } finally {
 | 
				
			||||||
 | 
					    SmartLoading.hide();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//批量删除
 | 
				
			||||||
 | 
					function confirmBatchDelete() {
 | 
				
			||||||
 | 
					  Modal.confirm({
 | 
				
			||||||
 | 
					    title: '提示',
 | 
				
			||||||
 | 
					    content: '确定要批量删除这些数据吗?',
 | 
				
			||||||
 | 
					    okText: '删除',
 | 
				
			||||||
 | 
					    okType: 'danger',
 | 
				
			||||||
 | 
					    onOk() {
 | 
				
			||||||
 | 
					      requestBatchDelete();
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    cancelText: '取消',
 | 
				
			||||||
 | 
					    onCancel() {
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//请求批量删除
 | 
				
			||||||
 | 
					async function requestBatchDelete() {
 | 
				
			||||||
 | 
					  try {
 | 
				
			||||||
 | 
					    SmartLoading.show();
 | 
				
			||||||
 | 
					    const response = await asnDetailApi.batchDelete(selectedRowKeyList.value);
 | 
				
			||||||
 | 
					    const {error, success} = JSON.parse(response.msg);
 | 
				
			||||||
 | 
					    if (error) {
 | 
				
			||||||
 | 
					      message.error(error);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (success) {
 | 
				
			||||||
 | 
					      message.success(success);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    await queryData();
 | 
				
			||||||
 | 
					  } catch (e) {
 | 
				
			||||||
 | 
					    smartSentry.captureError(e);
 | 
				
			||||||
 | 
					  } finally {
 | 
				
			||||||
 | 
					    SmartLoading.hide();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//批量收货 confirmBatchReceive
 | 
				
			||||||
 | 
					function confirmBatchReceive() {
 | 
				
			||||||
 | 
					  Modal.confirm({
 | 
				
			||||||
 | 
					    title: '提示',
 | 
				
			||||||
 | 
					    content: '确定是否批量收货?',
 | 
				
			||||||
 | 
					    okText: '确认',
 | 
				
			||||||
 | 
					    okType: 'danger',
 | 
				
			||||||
 | 
					    onOk() {
 | 
				
			||||||
 | 
					      requestBatchReceive();
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    cancelText: '取消',
 | 
				
			||||||
 | 
					    onCancel() {
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//请求批量收货
 | 
				
			||||||
 | 
					async function requestBatchReceive() {
 | 
				
			||||||
 | 
					  try {
 | 
				
			||||||
 | 
					    SmartLoading.show();
 | 
				
			||||||
 | 
					    const response = await receiveApi.batchReceive(selectedRowKeyList.value);
 | 
				
			||||||
 | 
					    const {error, success} = JSON.parse(response.msg);
 | 
				
			||||||
 | 
					    if (error) {
 | 
				
			||||||
 | 
					      message.error(error);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (success) {
 | 
				
			||||||
 | 
					      message.success(success);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    await queryData();
 | 
					    await queryData();
 | 
				
			||||||
  } catch (e) {
 | 
					  } catch (e) {
 | 
				
			||||||
    smartSentry.captureError(e);
 | 
					    smartSentry.captureError(e);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -116,7 +116,7 @@ async function save() {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    message.success('操作成功');
 | 
					    message.success('操作成功');
 | 
				
			||||||
    emits('reloadList');
 | 
					    emits('reloadList');
 | 
				
			||||||
    onClose();
 | 
					    continueResetForm()
 | 
				
			||||||
  } catch (err) {
 | 
					  } catch (err) {
 | 
				
			||||||
    smartSentry.captureError(err);
 | 
					    smartSentry.captureError(err);
 | 
				
			||||||
  } finally {
 | 
					  } finally {
 | 
				
			||||||
| 
						 | 
					@ -124,6 +124,15 @@ async function save() {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function continueResetForm() {
 | 
				
			||||||
 | 
					  const asnId = form.asnId;
 | 
				
			||||||
 | 
					  Object.assign(form, formDefault);
 | 
				
			||||||
 | 
					  form.asnId = asnId;
 | 
				
			||||||
 | 
					  nextTick(() => {
 | 
				
			||||||
 | 
					    formRef.value.clearValidate();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
defineExpose({
 | 
					defineExpose({
 | 
				
			||||||
  show,
 | 
					  show,
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue