新增入库模块
							parent
							
								
									f717e63946
								
							
						
					
					
						commit
						03eda3fa78
					
				| 
						 | 
					@ -5,6 +5,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import {SmartEnum} from '/@/types/smart-enum';
 | 
					import {SmartEnum} from '/@/types/smart-enum';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//单据类型
 | 
				
			||||||
export const ASN_ORDER_TYPE_ENUM: SmartEnum<string> = {
 | 
					export const ASN_ORDER_TYPE_ENUM: SmartEnum<string> = {
 | 
				
			||||||
    PURCHASE: {
 | 
					    PURCHASE: {
 | 
				
			||||||
        value: 'PURCHASE',
 | 
					        value: 'PURCHASE',
 | 
				
			||||||
| 
						 | 
					@ -19,6 +20,35 @@ export const ASN_ORDER_TYPE_ENUM: SmartEnum<string> = {
 | 
				
			||||||
        desc: '其他入库',
 | 
					        desc: '其他入库',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//单据状态
 | 
				
			||||||
 | 
					export const ASN_ORDER_STATUS_ENUM: SmartEnum<string> = {
 | 
				
			||||||
 | 
					    CREATED: {
 | 
				
			||||||
 | 
					        value: 'CREATED',
 | 
				
			||||||
 | 
					        desc: '已创建',
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    APPROVING: {
 | 
				
			||||||
 | 
					        value: 'APPROVING',
 | 
				
			||||||
 | 
					        desc: '已提交',
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    APPROVED: {
 | 
				
			||||||
 | 
					        value: 'APPROVED',
 | 
				
			||||||
 | 
					        desc: '已审核',
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    IN_PROGRESS: {
 | 
				
			||||||
 | 
					        value: 'IN_PROGRESS',
 | 
				
			||||||
 | 
					        desc: '入库中',
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    COMPLETED: {
 | 
				
			||||||
 | 
					        value: 'COMPLETED',
 | 
				
			||||||
 | 
					        desc: '已完成',
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    CANCELLED: {
 | 
				
			||||||
 | 
					        value: 'CANCELLED',
 | 
				
			||||||
 | 
					        desc: '已取消',
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
    ASN_ORDER_TYPE_ENUM,
 | 
					    ASN_ORDER_TYPE_ENUM,
 | 
				
			||||||
 | 
					    ASN_ORDER_STATUS_ENUM
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -62,6 +62,11 @@ async function queryData() {
 | 
				
			||||||
    disabledFlag: props.disabledFlag
 | 
					    disabledFlag: props.disabledFlag
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
  customers.value = res.data;
 | 
					  customers.value = res.data;
 | 
				
			||||||
 | 
					  //默认显示第一个元素
 | 
				
			||||||
 | 
					/*  if (customers.value.length > 0 &&!props.value) {
 | 
				
			||||||
 | 
					    selectValue.value = customers.value[0].customerId;
 | 
				
			||||||
 | 
					    handleChange(selectValue.value);
 | 
				
			||||||
 | 
					  }*/
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const emit = defineEmits(['update:value', 'change']);
 | 
					const emit = defineEmits(['update:value', 'change']);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,7 @@
 | 
				
			||||||
-->
 | 
					-->
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div class="detail-header">
 | 
					  <div class="detail-header">
 | 
				
			||||||
    <a-page-header :title="'添加入库单'" :avatar="{ src: logo }">
 | 
					    <a-page-header :title="form.asnId ? '编辑入库单' : '添加入库单'" :avatar="{ src: '' }">
 | 
				
			||||||
      <template #extra>
 | 
					      <template #extra>
 | 
				
			||||||
        <a-button @click="onSubmit" type="primary">
 | 
					        <a-button @click="onSubmit" type="primary">
 | 
				
			||||||
          <template #icon>
 | 
					          <template #icon>
 | 
				
			||||||
| 
						 | 
					@ -12,20 +12,20 @@
 | 
				
			||||||
          </template>
 | 
					          </template>
 | 
				
			||||||
          保存
 | 
					          保存
 | 
				
			||||||
        </a-button>
 | 
					        </a-button>
 | 
				
			||||||
        <a-button @click="onSubmit" type="primary" danger>
 | 
					        <a-button @click="onBack" type="primary" danger>
 | 
				
			||||||
          <template #icon>
 | 
					          <template #icon>
 | 
				
			||||||
            <ArrowLeftOutlined />
 | 
					            <ArrowLeftOutlined/>
 | 
				
			||||||
          </template>
 | 
					          </template>
 | 
				
			||||||
          返回
 | 
					          返回
 | 
				
			||||||
        </a-button>
 | 
					        </a-button>
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
      <div>
 | 
					      <div>
 | 
				
			||||||
        <a-form ref="formRef" :model="form" :rules="rules">
 | 
					        <a-form ref="formRef" :model="form" :rules="rules">
 | 
				
			||||||
 | 
					 | 
				
			||||||
          <a-row :gutter="24">
 | 
					          <a-row :gutter="24">
 | 
				
			||||||
            <a-col :span="8">
 | 
					            <a-col :span="8">
 | 
				
			||||||
              <a-form-item label="客户" name="customerId">
 | 
					              <a-form-item label="客户" name="customerId">
 | 
				
			||||||
                <CustomerSelect style="width: 100%"  v-model:value="form.customerId" :disabled-flag="true" @change="changeCustomerSelect"/>
 | 
					                <CustomerSelect style="width: 100%" v-model:value="form.customerId" :disabled-flag="true"
 | 
				
			||||||
 | 
					                                @change="changeCustomerSelect"/>
 | 
				
			||||||
              </a-form-item>
 | 
					              </a-form-item>
 | 
				
			||||||
            </a-col>
 | 
					            </a-col>
 | 
				
			||||||
            <a-col :span="8">
 | 
					            <a-col :span="8">
 | 
				
			||||||
| 
						 | 
					@ -44,7 +44,8 @@
 | 
				
			||||||
          <a-row :gutter="24">
 | 
					          <a-row :gutter="24">
 | 
				
			||||||
            <a-col :span="8">
 | 
					            <a-col :span="8">
 | 
				
			||||||
              <a-form-item label="单位" name="addressId">
 | 
					              <a-form-item label="单位" name="addressId">
 | 
				
			||||||
                <AddressSelect style="width: 100%"  v-model:value="form.addressId" :disabled-flag="true" @change="changeAddressSelect"/>
 | 
					                <AddressSelect style="width: 100%" v-model:value="form.addressId" :disabled-flag="true"
 | 
				
			||||||
 | 
					                               @change="changeAddressSelect"/>
 | 
				
			||||||
              </a-form-item>
 | 
					              </a-form-item>
 | 
				
			||||||
            </a-col>
 | 
					            </a-col>
 | 
				
			||||||
            <a-col :span="4">
 | 
					            <a-col :span="4">
 | 
				
			||||||
| 
						 | 
					@ -60,22 +61,21 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <a-col :span="8">
 | 
					            <a-col :span="8">
 | 
				
			||||||
              <a-form-item label="订单日期" name="orderDate">
 | 
					              <a-form-item label="订单日期" name="orderDate">
 | 
				
			||||||
                <a-date-picker style="width: 100%" format="YYYY-MM-DD"  v-model:value="form.orderDate" />
 | 
					                <a-date-picker style="width: 100%" value-format="YYYY-MM-DD" v-model:value="form.orderDate"/>
 | 
				
			||||||
              </a-form-item>
 | 
					              </a-form-item>
 | 
				
			||||||
            </a-col>
 | 
					            </a-col>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          </a-row>
 | 
					          </a-row>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          <a-row >
 | 
					          <a-row>
 | 
				
			||||||
            <a-col :span="24">
 | 
					            <a-col :span="24">
 | 
				
			||||||
              <a-form-item label="地址" name="address">
 | 
					              <a-form-item label="地址" name="address">
 | 
				
			||||||
                <a-textarea v-model:value="form.address" style="width: 100%; height: 100px; outline: none;" auto-size />
 | 
					                <a-textarea v-model:value="form.address" style="width: 100%; height: 100px; outline: none;" auto-size/>
 | 
				
			||||||
              </a-form-item>
 | 
					              </a-form-item>
 | 
				
			||||||
            </a-col>
 | 
					            </a-col>
 | 
				
			||||||
          </a-row>
 | 
					          </a-row>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
        </a-form>
 | 
					        </a-form>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    </a-page-header>
 | 
					    </a-page-header>
 | 
				
			||||||
| 
						 | 
					@ -83,16 +83,16 @@
 | 
				
			||||||
  <a-card class="smart-margin-top10" size="small">
 | 
					  <a-card class="smart-margin-top10" size="small">
 | 
				
			||||||
    <a-tabs>
 | 
					    <a-tabs>
 | 
				
			||||||
      <a-tab-pane key="employee" tab="员工信息">
 | 
					      <a-tab-pane key="employee" tab="员工信息">
 | 
				
			||||||
        <EmployeeList :enterpriseId="enterpriseId" />
 | 
					        <EmployeeList :enterpriseId="enterpriseId"/>
 | 
				
			||||||
      </a-tab-pane>
 | 
					      </a-tab-pane>
 | 
				
			||||||
      <a-tab-pane key="bank" tab="银行信息">
 | 
					      <a-tab-pane key="bank" tab="银行信息">
 | 
				
			||||||
        <BankList :enterpriseId="enterpriseId" />
 | 
					        <BankList :enterpriseId="enterpriseId"/>
 | 
				
			||||||
      </a-tab-pane>
 | 
					      </a-tab-pane>
 | 
				
			||||||
      <a-tab-pane key="invoice" tab="发票信息">
 | 
					      <a-tab-pane key="invoice" tab="发票信息">
 | 
				
			||||||
        <InvoiceList :enterpriseId="enterpriseId" />
 | 
					        <InvoiceList :enterpriseId="enterpriseId"/>
 | 
				
			||||||
      </a-tab-pane>
 | 
					      </a-tab-pane>
 | 
				
			||||||
      <a-tab-pane key="dataTracer" tab="变更记录">
 | 
					      <a-tab-pane key="dataTracer" tab="变更记录">
 | 
				
			||||||
        <DataTracer :dataId="enterpriseId" :type="DATA_TRACER_TYPE_ENUM.OA_ENTERPRISE.value" />
 | 
					        <DataTracer :dataId="enterpriseId" :type="DATA_TRACER_TYPE_ENUM.OA_ENTERPRISE.value"/>
 | 
				
			||||||
      </a-tab-pane>
 | 
					      </a-tab-pane>
 | 
				
			||||||
    </a-tabs>
 | 
					    </a-tabs>
 | 
				
			||||||
  </a-card>
 | 
					  </a-card>
 | 
				
			||||||
| 
						 | 
					@ -100,26 +100,27 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script setup lang="ts">
 | 
					<script setup lang="ts">
 | 
				
			||||||
import _ from 'lodash';
 | 
					import _ from 'lodash';
 | 
				
			||||||
import {computed, onMounted, reactive, ref} from 'vue';
 | 
					import {onMounted, reactive, ref} from 'vue';
 | 
				
			||||||
import { useRoute } from 'vue-router';
 | 
					import {useRoute, useRouter} from 'vue-router';
 | 
				
			||||||
import { enterpriseApi } from '/@/api/business/oa/enterprise-api';
 | 
					 | 
				
			||||||
import { SmartLoading } from '/@/components/framework/smart-loading';
 | 
					 | 
				
			||||||
import DataTracer from '/@/components/support/data-tracer/index.vue';
 | 
					import DataTracer from '/@/components/support/data-tracer/index.vue';
 | 
				
			||||||
import { DATA_TRACER_TYPE_ENUM } from '/@/constants/support/data-tracer-const';
 | 
					import {DATA_TRACER_TYPE_ENUM} from '/@/constants/support/data-tracer-const';
 | 
				
			||||||
import { smartSentry } from '/@/lib/smart-sentry';
 | 
					 | 
				
			||||||
import CustomerSelect from "/@/views/business/base/customer/customer-select.vue";
 | 
					import CustomerSelect from "/@/views/business/base/customer/customer-select.vue";
 | 
				
			||||||
import SmartEnumSelect from "/@/components/framework/smart-enum-select/index.vue";
 | 
					import SmartEnumSelect from "/@/components/framework/smart-enum-select/index.vue";
 | 
				
			||||||
import AddressSelect from "/@/views/business/base/address/address-select.vue";
 | 
					import AddressSelect from "/@/views/business/base/address/address-select.vue";
 | 
				
			||||||
import dayjs from 'dayjs';
 | 
					import dayjs from 'dayjs';
 | 
				
			||||||
import {message} from "ant-design-vue";
 | 
					import {message} from "ant-design-vue";
 | 
				
			||||||
 | 
					import {SmartLoading} from "/@/components/framework/smart-loading";
 | 
				
			||||||
 | 
					import {asnApi} from "/@/api/business/receive/asn/asn-api";
 | 
				
			||||||
 | 
					import {smartSentry} from "/@/lib/smart-sentry";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 表单
 | 
					// 表单
 | 
				
			||||||
const formRef = ref();
 | 
					const formRef = ref();
 | 
				
			||||||
const formDefault = {
 | 
					const formDefault = {
 | 
				
			||||||
 | 
					  asnId: undefined,//入库单id
 | 
				
			||||||
  customerId: undefined, //客户
 | 
					  customerId: undefined, //客户
 | 
				
			||||||
  customerNumber: undefined, //客户订单号
 | 
					  customerNumber: undefined, //客户订单号
 | 
				
			||||||
  orderType: undefined,//单据类型
 | 
					  orderType: undefined,//单据类型
 | 
				
			||||||
  orderDate: dayjs(),//订单日期
 | 
					  orderDate: dayjs().format('YYYY-MM-DD'),//订单日期
 | 
				
			||||||
  addressId: undefined,//收货单位
 | 
					  addressId: undefined,//收货单位
 | 
				
			||||||
  person: undefined,//联系人
 | 
					  person: undefined,//联系人
 | 
				
			||||||
  telephone: undefined,//电话
 | 
					  telephone: undefined,//电话
 | 
				
			||||||
| 
						 | 
					@ -130,15 +131,22 @@ let form = reactive({...formDefault});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//规则
 | 
					//规则
 | 
				
			||||||
const rules = {
 | 
					const rules = {
 | 
				
			||||||
  customerId: [{ required: true, message: '客户 必填' }],
 | 
					  customerId: [{required: true, message: '客户 必填'}],
 | 
				
			||||||
  customerNumber: [{ required: true, message: '客户订单号 必填' }],
 | 
					  customerNumber: [{required: true, message: '客户订单号 必填'}],
 | 
				
			||||||
  orderType: [{ required: true, message: '单据类型 必填' }],
 | 
					  orderType: [{required: true, message: '单据类型 必填'}],
 | 
				
			||||||
  orderDate: [{ required: true, message: '订单日期 必填' }],
 | 
					  orderDate: [{required: true, message: '订单日期 必填'}],
 | 
				
			||||||
  addressId: [{ required: true, message: '收货单位 必填' }],
 | 
					  addressId: [{required: true, message: '收货单位 必填'}],
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//选择
 | 
					//选择客户
 | 
				
			||||||
 | 
					function changeCustomerSelect(selectValue: any) {
 | 
				
			||||||
 | 
					  if (selectValue) {
 | 
				
			||||||
 | 
					    form.customerId = selectValue.customerId;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//选择收货单位
 | 
				
			||||||
function changeAddressSelect(selectValue: any) {
 | 
					function changeAddressSelect(selectValue: any) {
 | 
				
			||||||
  if (selectValue) {
 | 
					  if (selectValue) {
 | 
				
			||||||
    form.addressId = selectValue.addressId;
 | 
					    form.addressId = selectValue.addressId;
 | 
				
			||||||
| 
						 | 
					@ -148,49 +156,70 @@ function changeAddressSelect(selectValue: any) {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//数据展示
 | 
				
			||||||
const route = useRoute();
 | 
					const route = useRoute();
 | 
				
			||||||
let enterpriseId = ref();
 | 
					 | 
				
			||||||
onMounted(() => {
 | 
					onMounted(() => {
 | 
				
			||||||
  if (route.query.enterpriseId) {
 | 
					  //获取路由传过来的参数
 | 
				
			||||||
    enterpriseId.value = Number(route.query.enterpriseId);
 | 
					  const id = route.query.id;
 | 
				
			||||||
    getDetail();
 | 
					  if (typeof id === 'string') {
 | 
				
			||||||
 | 
					    // 从sessionStorage中获取数据
 | 
				
			||||||
 | 
					    const res = JSON.parse(sessionStorage.getItem(id) as string);
 | 
				
			||||||
 | 
					    //编辑时自动填充数据
 | 
				
			||||||
 | 
					    if (res.asnId) {
 | 
				
			||||||
 | 
					      form.asnId = res.asnId;
 | 
				
			||||||
 | 
					      form.customerId = res.customerId;
 | 
				
			||||||
 | 
					      form.customerNumber = res.customerNumber;
 | 
				
			||||||
 | 
					      form.orderType = res.orderType;
 | 
				
			||||||
 | 
					      form.orderDate = res.orderDate;
 | 
				
			||||||
 | 
					      form.addressId = res.addressId;
 | 
				
			||||||
 | 
					      form.person = res.person;
 | 
				
			||||||
 | 
					      form.telephone = res.telephone;
 | 
				
			||||||
 | 
					      form.address = res.address;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    sessionStorage.removeItem(id); // 获取数据后移除存储项
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//编辑
 | 
					 | 
				
			||||||
// 点击确定,验证表单
 | 
					// 点击确定,验证表单
 | 
				
			||||||
async function onSubmit() {
 | 
					async function onSubmit() {
 | 
				
			||||||
  try {
 | 
					  try {
 | 
				
			||||||
    await formRef.value.validateFields();
 | 
					    await formRef.value.validateFields();
 | 
				
			||||||
 | 
					    await save();
 | 
				
			||||||
  } catch (err) {
 | 
					  } catch (err) {
 | 
				
			||||||
    message.error('参数验证错误,请仔细填写表单数据!');
 | 
					    message.error('参数验证错误,请仔细填写表单数据!');
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 详情
 | 
					//保存/编辑
 | 
				
			||||||
let detail = ref({});
 | 
					async function save() {
 | 
				
			||||||
 | 
					  SmartLoading.show();
 | 
				
			||||||
async function getDetail() {
 | 
					 | 
				
			||||||
  try {
 | 
					  try {
 | 
				
			||||||
    let result = await enterpriseApi.detail(enterpriseId.value);
 | 
					    if (form.asnId) {
 | 
				
			||||||
    detail.value = result.data;
 | 
					      let res = await asnApi.update(form);
 | 
				
			||||||
  } catch (error) {
 | 
					      form.asnId = res.data.asnId;
 | 
				
			||||||
    smartSentry.captureError(error);
 | 
					    } else {
 | 
				
			||||||
 | 
					      let res = await asnApi.add(form);
 | 
				
			||||||
 | 
					      form.asnId = res.data.asnId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    message.success('操作成功');
 | 
				
			||||||
 | 
					  } catch (err) {
 | 
				
			||||||
 | 
					    smartSentry.captureError(err);
 | 
				
			||||||
  } finally {
 | 
					  } finally {
 | 
				
			||||||
    SmartLoading.hide();
 | 
					    SmartLoading.hide();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//返回
 | 
				
			||||||
 | 
					let router = useRouter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const logo = computed(() => {
 | 
					function onBack() {
 | 
				
			||||||
  if (!detail.value) {
 | 
					  router.push({
 | 
				
			||||||
    return '';
 | 
					    path: '/receive/asn/asn-list',
 | 
				
			||||||
  }
 | 
					    query: {refresh: '1'}
 | 
				
			||||||
  if (!_.isEmpty(detail.value.enterpriseLogo)) {
 | 
					  });
 | 
				
			||||||
    return detail.value.enterpriseLogo[0].fileUrl;
 | 
					}
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  return '';
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<style lang="less" scoped>
 | 
					<style lang="less" scoped>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -67,6 +67,16 @@
 | 
				
			||||||
    >
 | 
					    >
 | 
				
			||||||
      <template #bodyCell="{ text, record, column }">
 | 
					      <template #bodyCell="{ text, record, column }">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <template v-if="column.dataIndex === 'orderType'">
 | 
				
			||||||
 | 
					          {{ $smartEnumPlugin.getDescByValue('ASN_ORDER_TYPE_ENUM', text) }}
 | 
				
			||||||
 | 
					        </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <template v-if="column.dataIndex === 'status'">
 | 
				
			||||||
 | 
					          <a-tag :color="getStatusColor(text)">
 | 
				
			||||||
 | 
					            {{ $smartEnumPlugin.getDescByValue('ASN_ORDER_STATUS_ENUM', text) }}
 | 
				
			||||||
 | 
					          </a-tag>
 | 
				
			||||||
 | 
					        </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <template v-if="column.dataIndex === 'action'">
 | 
					        <template v-if="column.dataIndex === 'action'">
 | 
				
			||||||
          <div class="smart-table-operate">
 | 
					          <div class="smart-table-operate">
 | 
				
			||||||
| 
						 | 
					@ -107,7 +117,7 @@
 | 
				
			||||||
  </a-card>
 | 
					  </a-card>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
<script setup lang="ts">
 | 
					<script setup lang="ts">
 | 
				
			||||||
import {reactive, ref, onMounted} from 'vue';
 | 
					import {reactive, ref, onMounted, watch} from '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';
 | 
				
			||||||
import {PAGE_SIZE_OPTIONS} from '/@/constants/common-const';
 | 
					import {PAGE_SIZE_OPTIONS} from '/@/constants/common-const';
 | 
				
			||||||
| 
						 | 
					@ -115,7 +125,7 @@ import {smartSentry} from '/@/lib/smart-sentry';
 | 
				
			||||||
import TableOperator from '/@/components/support/table-operator/index.vue';
 | 
					import TableOperator from '/@/components/support/table-operator/index.vue';
 | 
				
			||||||
import {asnApi} from '/@/api/business/receive/asn/asn-api';
 | 
					import {asnApi} from '/@/api/business/receive/asn/asn-api';
 | 
				
			||||||
import {TABLE_ID_CONST} from "/@/constants/support/table-id-const";
 | 
					import {TABLE_ID_CONST} from "/@/constants/support/table-id-const";
 | 
				
			||||||
import {useRouter} from "vue-router";
 | 
					import {useRoute, useRouter} from "vue-router";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ---------------------------- 表格列 ----------------------------
 | 
					// ---------------------------- 表格列 ----------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -125,6 +135,11 @@ const columns = ref([
 | 
				
			||||||
    dataIndex: 'asnId',
 | 
					    dataIndex: 'asnId',
 | 
				
			||||||
    ellipsis: true,
 | 
					    ellipsis: true,
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    title: '客户',
 | 
				
			||||||
 | 
					    dataIndex: 'customerName',
 | 
				
			||||||
 | 
					    ellipsis: true,
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    title: '入库单号',
 | 
					    title: '入库单号',
 | 
				
			||||||
    dataIndex: 'asnNumber',
 | 
					    dataIndex: 'asnNumber',
 | 
				
			||||||
| 
						 | 
					@ -146,8 +161,8 @@ const columns = ref([
 | 
				
			||||||
    ellipsis: true,
 | 
					    ellipsis: true,
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    title: '收货地址',
 | 
					    title: '收货单位',
 | 
				
			||||||
    dataIndex: 'addressId',
 | 
					    dataIndex: 'name',
 | 
				
			||||||
    ellipsis: true,
 | 
					    ellipsis: true,
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
| 
						 | 
					@ -174,7 +189,7 @@ const columns = ref([
 | 
				
			||||||
    title: '操作',
 | 
					    title: '操作',
 | 
				
			||||||
    dataIndex: 'action',
 | 
					    dataIndex: 'action',
 | 
				
			||||||
    fixed: 'right',
 | 
					    fixed: 'right',
 | 
				
			||||||
    width: 90,
 | 
					    width: 140,
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
]);
 | 
					]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -222,21 +237,24 @@ async function queryData() {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
onMounted(queryData);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// ---------------------------- 添加/修改 ----------------------------
 | 
					// ---------------------------- 添加/修改 ----------------------------
 | 
				
			||||||
let router = useRouter();
 | 
					let router = useRouter();
 | 
				
			||||||
function showForm() {
 | 
					
 | 
				
			||||||
 | 
					function showForm(data: any) {
 | 
				
			||||||
 | 
					  const id = Date.now().toString(); // 生成一个唯一标识符
 | 
				
			||||||
 | 
					  //将数据存储到sessionStorage中
 | 
				
			||||||
 | 
					  sessionStorage.setItem(id, JSON.stringify(data));
 | 
				
			||||||
  router.push({
 | 
					  router.push({
 | 
				
			||||||
    path: '/receive/asn/asn-form',
 | 
					    path: '/receive/asn/asn-form',
 | 
				
			||||||
    query: { enterpriseId: 1 }
 | 
					    query: {
 | 
				
			||||||
 | 
					      id: id
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ---------------------------- 单个删除 ----------------------------
 | 
					// ---------------------------- 单个删除 ----------------------------
 | 
				
			||||||
//确认删除
 | 
					//确认删除
 | 
				
			||||||
function onDelete(data:object) {
 | 
					function onDelete(data: object) {
 | 
				
			||||||
  Modal.confirm({
 | 
					  Modal.confirm({
 | 
				
			||||||
    title: '提示',
 | 
					    title: '提示',
 | 
				
			||||||
    content: '确定要删除选吗?',
 | 
					    content: '确定要删除选吗?',
 | 
				
			||||||
| 
						 | 
					@ -252,7 +270,7 @@ function onDelete(data:object) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//请求删除
 | 
					//请求删除
 | 
				
			||||||
async function requestDelete(data:any) {
 | 
					async function requestDelete(data: any) {
 | 
				
			||||||
  SmartLoading.show();
 | 
					  SmartLoading.show();
 | 
				
			||||||
  try {
 | 
					  try {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -304,4 +322,38 @@ async function requestBatchDelete() {
 | 
				
			||||||
    SmartLoading.hide();
 | 
					    SmartLoading.hide();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//根据不同状态显示不同颜色;orange green purple success processing error default warning
 | 
				
			||||||
 | 
					function getStatusColor(status: string) {
 | 
				
			||||||
 | 
					  // 根据不同的状态值返回不同的颜色
 | 
				
			||||||
 | 
					  switch (status) {
 | 
				
			||||||
 | 
					    case 'CREATED':
 | 
				
			||||||
 | 
					      return 'orange';
 | 
				
			||||||
 | 
					    case 'APPROVING':
 | 
				
			||||||
 | 
					      return 'cyan';
 | 
				
			||||||
 | 
					    case 'APPROVED':
 | 
				
			||||||
 | 
					      return 'purple';
 | 
				
			||||||
 | 
					    case 'IN_PROGRESS':
 | 
				
			||||||
 | 
					      return 'blue';
 | 
				
			||||||
 | 
					    case 'COMPLETED':
 | 
				
			||||||
 | 
					      return 'green';
 | 
				
			||||||
 | 
					    case 'CANCELLED':
 | 
				
			||||||
 | 
					      return 'red';
 | 
				
			||||||
 | 
					    default:
 | 
				
			||||||
 | 
					      return 'orange';
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//监听asn-form组件返回到当前组件自动刷新。
 | 
				
			||||||
 | 
					const route = useRoute();
 | 
				
			||||||
 | 
					watch(
 | 
				
			||||||
 | 
					    () => route.query,
 | 
				
			||||||
 | 
					    (newValue) => {
 | 
				
			||||||
 | 
					      if (newValue.refresh === '1') {
 | 
				
			||||||
 | 
					        queryData();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					onMounted(queryData);
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -48,18 +48,18 @@ Caffeine :
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //------------------------ 删除 ---------------------
 | 
					  //------------------------ 删除 ---------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  async function remove(key) {
 | 
					  async function remove(key: string) {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      await cacheApi.remove(key);
 | 
					      await cacheApi.remove(key);
 | 
				
			||||||
      message.success('删除成功');
 | 
					      message.success('删除成功');
 | 
				
			||||||
      ajaxQuery();
 | 
					      await ajaxQuery();
 | 
				
			||||||
    } catch (e) {
 | 
					    } catch (e) {
 | 
				
			||||||
      smartSentry.captureError(e);
 | 
					      smartSentry.captureError(e);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //------------------------ 获取所有key ---------------------
 | 
					  //------------------------ 获取所有key ---------------------
 | 
				
			||||||
  async function getAllKeys(cacheName) {
 | 
					  async function getAllKeys(cacheName:String) {
 | 
				
			||||||
    SmartLoading.show();
 | 
					    SmartLoading.show();
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      let res = await cacheApi.getKeys(cacheName);
 | 
					      let res = await cacheApi.getKeys(cacheName);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue