|
@@ -98,12 +98,12 @@
|
|
|
<a-form ref="bodyFormRef" :model="bodyData" :rules="bodyRules" style="margin-bottom: 20px;">
|
|
|
<a-row :gutter="16">
|
|
|
<a-col :span="8">
|
|
|
- <a-form-item label="商品编码:" name="productCode">
|
|
|
+ <a-form-item label="料件编码:" name="productCode">
|
|
|
<a-input v-model:value="bodyData.productCode" :disabled="isView" placeholder="请输入商品编码" allow-clear />
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
<a-col :span="8">
|
|
|
- <a-form-item label="商品名称:" name="productName">
|
|
|
+ <a-form-item label="料件名称:" name="productName">
|
|
|
<a-input v-model:value="bodyData.productName" :disabled="isView" placeholder="请输入商品名称" allow-clear />
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
@@ -317,6 +317,143 @@
|
|
|
</template>
|
|
|
</a-table>
|
|
|
</a-collapse-panel>
|
|
|
+ <a-collapse-panel key="4" header="产品信息">
|
|
|
+ <a-button type="primary" @click="onProductReset" v-if="!isView" style="margin-bottom: 20px;">重置</a-button>
|
|
|
+ <a-form ref="productFormRef" :model="productData" :rules="productRules" style="margin-bottom: 20px;">
|
|
|
+ <a-row :gutter="16">
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="商品序号:" name="productNumber">
|
|
|
+ <a-input v-model:value="productData.productNumber" :disabled="true" placeholder="" allow-clear />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="预录入编号:" name="ylCode">
|
|
|
+ <a-input v-model:value="productData.ylCode" :disabled="true" placeholder="" allow-clear />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="企业编号:" name="companyApplyCode">
|
|
|
+ <a-input v-model:value="productData.companyApplyCode" :disabled="true" placeholder="" allow-clear />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="企业名称:" name="companyName">
|
|
|
+ <a-input v-model:value="productData.companyName" :disabled="true" placeholder="" allow-clear />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="加工增值核算备案编号:" name="recordNumber">
|
|
|
+ <a-input v-model:value="productData.recordNumber" :disabled="true" placeholder="" allow-clear />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="主管关区代码:" name="regionCode">
|
|
|
+ <a-select v-model:value="productData.regionCode" :disabled="isView" placeholder="请选择主管关区代码" :options="regionCodeOptions" show-search allow-clear option-filter-prop="label"/>
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="商品编号:" name="productCode">
|
|
|
+ <a-input v-model:value="productData.productCode" :disabled="isView" placeholder="请输入商品编号" allow-clear />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="商品名称:" name="productName">
|
|
|
+ <a-input v-model:value="productData.productName" :disabled="true" placeholder="请选择商品编号" allow-clear />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="版本号:" name="version">
|
|
|
+ <a-input v-model:value="productData.version" :disabled="true" placeholder="请选择商品编号" allow-clear />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="HS编码:" name="hsCode">
|
|
|
+ <a-input v-model:value="productData.hsCode" :disabled="true" placeholder="请选择商品编号" allow-clear />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="人民币单价:" name="unitPrice">
|
|
|
+ <a-input-number v-model:value="productData.unitPrice" :disabled="isView" :min="0" style="width: 100%;" placeholder="请输入人民币单价" />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="商品数量:" name="quantity">
|
|
|
+ <a-input v-model:value="productData.quantity" :disabled="isView" :precision="0" :min="0" style="width: 100%;" placeholder="请输入商品数量" />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="计量单位:" name="measurementUnit">
|
|
|
+ <a-select v-model:value="bodyData.measurementUnit" :disabled="isView" placeholder="请选择商品编号" :options="legalUnitOptions" show-search allow-clear option-filter-prop="label"/>
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="成品内销人民币价格:" name="domesticSalePrice">
|
|
|
+ <a-input v-model:value="productData.domesticSalePrice" :disabled="isView" :min="0" style="width: 100%;" placeholder="请输入成品内销人民币价格" />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="境外进口料件总价(RMB):" name="importTotal">
|
|
|
+ <a-input v-model:value="productData.importTotal" :disabled="isView" :min="0" style="width: 100%;" placeholder="请输入境外进口料件总价(RMB)" />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="国内采购料件总价(RMB):" name="domesticTotal">
|
|
|
+ <a-input v-model:value="productData.domesticTotal" :disabled="isView" :min="0" style="width: 100%;" placeholder="请输入国内采购料件总价(RMB)" />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="自主核算产品收益占比:" name="selfRatio">
|
|
|
+ <a-input v-model:value="productData.selfRatio" :disabled="isView" placeholder="请输入自主核算产品收益占比" allow-clear />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="企业自主核算加工增值率:" name="selfRate">
|
|
|
+ <a-input v-model:value="productData.selfRate" :disabled="isView" placeholder="请输入企业自主核算加工增值率" allow-clear />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="备注:" name="remark">
|
|
|
+ <a-input v-model:value="productData.remark" :disabled="isView" placeholder="请输入备注" allow-clear />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ </a-row>
|
|
|
+ </a-form>
|
|
|
+ <template v-if="!isView">
|
|
|
+ <a-button type="primary" style="margin-right: 8px;" v-if="!(productData.id || productData.__index)" @click="onProductAdd">插入</a-button>
|
|
|
+ <a-button type="primary" style="margin-right: 8px;" v-else @click="onProductEdit">保存</a-button>
|
|
|
+ <xn-batch-delete
|
|
|
+ :selectedRowKeys="productSelectedRowKeys"
|
|
|
+ @batchDelete="deleteBatchProduct"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ <a-table
|
|
|
+ style="margin-top: 10px"
|
|
|
+ bordered
|
|
|
+ :dataSource="productList"
|
|
|
+ :columns="productColumns"
|
|
|
+ :pagination="false"
|
|
|
+ :scroll="{ x: 2000 }"
|
|
|
+ :row-selection="productOptions.rowSelection"
|
|
|
+ >
|
|
|
+ <template #bodyCell="{ column, record, index }">
|
|
|
+ <template v-if="column.dataIndex === 'regionCode'">
|
|
|
+ {{ $TOOL.dictTypeData('zgqdm', record.regionCode) }}
|
|
|
+ </template>
|
|
|
+ <template v-if="column.dataIndex === 'measurementUnit'">
|
|
|
+ {{ $TOOL.dictTypeData('measurement unit', record.legalUnit) }}
|
|
|
+ </template>
|
|
|
+ <template v-if="column.dataIndex === 'action'">
|
|
|
+ <template v-if="isView">
|
|
|
+ <a-button type="link" primary size="small" @click="onProductReset(), productData = cloneDeep(record)">查看</a-button>
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <a-button type="link" primary size="small" @click="onProductReset(), productData = cloneDeep(record)">编辑</a-button>
|
|
|
+ <a-button type="link" danger size="small" @click="onProductDel(index)">删除</a-button>
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
+ </a-table>
|
|
|
+ </a-collapse-panel>
|
|
|
<a-collapse-panel key="3" header="附件信息">
|
|
|
<template v-if="!isView">
|
|
|
<div class="file-tips">
|
|
@@ -384,10 +521,12 @@ const { proxy } = getCurrentInstance()
|
|
|
const emit = defineEmits({successful: null, onClose: null})
|
|
|
const formRef = ref()
|
|
|
const bodyFormRef = ref()
|
|
|
+const productFormRef = ref()
|
|
|
const ref_upload = ref()
|
|
|
// 表单数据
|
|
|
const formData = ref({})
|
|
|
const bodyData = ref({})
|
|
|
+const productData = ref({})
|
|
|
const fileData = ref({})
|
|
|
const submitLoading = ref(false)
|
|
|
const isView = ref(false)
|
|
@@ -398,10 +537,13 @@ const companyTypeOptions = ref([])
|
|
|
const activeKey = ref('1')
|
|
|
const bodySelectedRowKeys = ref([])
|
|
|
const bodyList = ref([])
|
|
|
+const productSelectedRowKeys = ref([])
|
|
|
+const productList = ref([])
|
|
|
const userInfo = tool.data.get('USER_INFO')
|
|
|
const legalUnitOptions = ref([])
|
|
|
const originCountryOptions = ref([])
|
|
|
const currencyOptions = ref([])
|
|
|
+const regionCodeOptions = ref([])
|
|
|
|
|
|
// 列表选择配置
|
|
|
const bodyOptions = {
|
|
@@ -411,6 +553,14 @@ const bodyOptions = {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+// 列表选择配置
|
|
|
+const productOptions = {
|
|
|
+ rowSelection: {
|
|
|
+ onChange: (selectedRowKey, selectedRows) => {
|
|
|
+ productSelectedRowKeys.value = selectedRows
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
const fileSelectedRowKeys = ref([])
|
|
|
const fileList = ref([])
|
|
|
// 列表选择配置
|
|
@@ -429,6 +579,7 @@ const onOpen = (record, view = false, type) => {
|
|
|
formData.value = res
|
|
|
bodyList.value = res.qyRecardBodyAddParams
|
|
|
fileList.value = res.qyRecordAttachmentAddParams
|
|
|
+ productList.value = res.qyRecordProductAddParams
|
|
|
if (type) {
|
|
|
formData.value.applyType = type
|
|
|
}
|
|
@@ -442,6 +593,7 @@ const onOpen = (record, view = false, type) => {
|
|
|
formData.value.companyLegalPhone = userInfo.contactPhone
|
|
|
formData.value.companyJyFw = userInfo.businessScope
|
|
|
formData.value.applyType = 'basq'
|
|
|
+ onProductReset()
|
|
|
}
|
|
|
tzTypeOptions.value = tool.dictList('tzlx')
|
|
|
applyTypeOptions.value = tool.dictList('qybalx')
|
|
@@ -449,11 +601,12 @@ const onOpen = (record, view = false, type) => {
|
|
|
legalUnitOptions.value = tool.dictList('measurement unit')
|
|
|
originCountryOptions.value = tool.dictList('address')
|
|
|
currencyOptions.value = tool.dictList('hbdm')
|
|
|
+ regionCodeOptions.value = tool.dictList('zgqdm')
|
|
|
|
|
|
}
|
|
|
// 关闭抽屉
|
|
|
const onClose = () => {
|
|
|
- formRef.value.resetFields()
|
|
|
+ formRef.value?.resetFields()
|
|
|
formData.value = {}
|
|
|
isView.value = true
|
|
|
emit('onClose')
|
|
@@ -472,8 +625,8 @@ const formRules = {
|
|
|
}
|
|
|
// 默认要校验的
|
|
|
const bodyRules = {
|
|
|
- productCode: [required('请输入商品编码')],
|
|
|
- productName: [required('请输入商品名称')],
|
|
|
+ productCode: [required('请输入料件编码')],
|
|
|
+ productName: [required('请输入料件名称')],
|
|
|
specModel: [required('请输入规格型号')],
|
|
|
recordQuantity: [required('请输入备案数量')],
|
|
|
recordUnit: [required('请输入备案计量单位')],
|
|
@@ -489,6 +642,20 @@ const bodyRules = {
|
|
|
inAccountCumulativeAmount: [required('请输入进账累计数量')],
|
|
|
outAccountCumulativeAmount: [required('请输入出账累计数量')],
|
|
|
}
|
|
|
+// 默认要校验的
|
|
|
+const productRules = {
|
|
|
+ regionCode: [required('请输入主管关区代码')],
|
|
|
+ productCode: [required('请输入商品编号')],
|
|
|
+ productName: [required('请输入商品名称')],
|
|
|
+ version: [required('请输入版本号')],
|
|
|
+ hsCode: [required('请输入HS编码')],
|
|
|
+ unitPrice: [required('请输入人民币单价')],
|
|
|
+ quantity: [required('请输入商品数量')],
|
|
|
+ measurementUnit: [required('请输入计量单位')],
|
|
|
+ domesticSalePrice: [required('请输入成品内销人民币价格')],
|
|
|
+ importTotal: [required('请输入境外进口料件总价(RMB)')],
|
|
|
+ domesticTotal: [required('请输入国内采购料件总价(RMB)')],
|
|
|
+}
|
|
|
const bodyColumns = [
|
|
|
{
|
|
|
title: '商品编码',
|
|
@@ -669,6 +836,109 @@ const bodyColumns = [
|
|
|
fixed: 'right'
|
|
|
},
|
|
|
]
|
|
|
+const productColumns = [
|
|
|
+ {
|
|
|
+ title: '商品序号',
|
|
|
+ dataIndex: 'productNumber',
|
|
|
+ width: 120
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '预录入编号',
|
|
|
+ dataIndex: 'ylCode',
|
|
|
+ width: 120
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '企业编号',
|
|
|
+ dataIndex: 'companyApplyCode',
|
|
|
+ width: 120
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '企业名称',
|
|
|
+ dataIndex: 'companyName',
|
|
|
+ width: 120
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '加工增值核算备案编号',
|
|
|
+ dataIndex: 'recordNumber',
|
|
|
+ width: 160
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '主管关区代码',
|
|
|
+ dataIndex: 'regionCode',
|
|
|
+ width: 160
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '商品编号',
|
|
|
+ dataIndex: 'productCode',
|
|
|
+ width: 120
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '商品名称',
|
|
|
+ dataIndex: 'productName',
|
|
|
+ width: 120
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '版本号',
|
|
|
+ dataIndex: 'version',
|
|
|
+ width: 120
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: 'HS编码',
|
|
|
+ dataIndex: 'hsCode',
|
|
|
+ width: 120
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '人民币单价',
|
|
|
+ dataIndex: 'unitPrice',
|
|
|
+ width: 120
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '商品数量',
|
|
|
+ dataIndex: 'quantity',
|
|
|
+ width: 120
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '计量单位',
|
|
|
+ dataIndex: 'measurementUnit',
|
|
|
+ width: 120
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '成品内销人民币价格',
|
|
|
+ dataIndex: 'domesticSalePrice',
|
|
|
+ width: 180
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '境外进口料件总价(RMB)',
|
|
|
+ dataIndex: 'importTotal',
|
|
|
+ width: 180
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '国内采购料件总价(RMB)',
|
|
|
+ dataIndex: 'domesticTotal',
|
|
|
+ width: 180
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '自主核算产品收益占比',
|
|
|
+ dataIndex: 'selfRatio',
|
|
|
+ width: 180
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '企业自主核算加工增值率',
|
|
|
+ dataIndex: 'selfRate',
|
|
|
+ width: 180
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '备注',
|
|
|
+ dataIndex: 'remark',
|
|
|
+ width: 120
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '操作',
|
|
|
+ dataIndex: 'action',
|
|
|
+ width: 160,
|
|
|
+ fixed: 'right'
|
|
|
+ },
|
|
|
+]
|
|
|
const fileColumns = [
|
|
|
{
|
|
|
title: '附件名称',
|
|
@@ -701,9 +971,11 @@ const onSubmit = () => {
|
|
|
if (!formDataParam.id) {
|
|
|
formDataParam.qyRecardBodyAddParams = bodyList.value
|
|
|
formDataParam.qyRecordAttachmentAddParams = fileList.value
|
|
|
+ formDataParam.qyRecordProductAddParams = productList.value
|
|
|
} else {
|
|
|
formDataParam.qyRecardBodyEditParams = bodyList.value
|
|
|
formDataParam.qyRecordAttachmentEditParams = fileList.value
|
|
|
+ formDataParam.qyRecordProductAddParams = productList.value
|
|
|
delete formDataParam.qyRecardBodyAddParams
|
|
|
delete formDataParam.qyRecordAttachmentAddParams
|
|
|
}
|
|
@@ -731,9 +1003,11 @@ const onTemp = () => {
|
|
|
if (!formDataParam.id) {
|
|
|
formDataParam.qyRecardBodyAddParams = bodyList.value
|
|
|
formDataParam.qyRecordAttachmentAddParams = fileList.value
|
|
|
+ formDataParam.qyRecordProductAddParams = productList.value
|
|
|
} else {
|
|
|
formDataParam.qyRecardBodyEditParams = bodyList.value
|
|
|
formDataParam.qyRecordAttachmentEditParams = fileList.value
|
|
|
+ formDataParam.qyRecordProductAddParams = productList.value
|
|
|
delete formDataParam.qyRecardBodyAddParams
|
|
|
delete formDataParam.qyRecordAttachmentAddParams
|
|
|
}
|
|
@@ -752,7 +1026,7 @@ const onTemp = () => {
|
|
|
})
|
|
|
}
|
|
|
const onBodyReset = () => {
|
|
|
- bodyFormRef.value.resetFields()
|
|
|
+ bodyFormRef.value?.resetFields()
|
|
|
bodyData.value = {}
|
|
|
}
|
|
|
const onBodyAdd = () => {
|
|
@@ -761,7 +1035,7 @@ const onBodyAdd = () => {
|
|
|
.then(() => {
|
|
|
bodyList.value.push(Object.assign({__index: new Date().getTime()}, bodyData.value))
|
|
|
onBodyReset()
|
|
|
- message.success('插入表体信息成功!')
|
|
|
+ message.success('插入料件信息成功!')
|
|
|
})
|
|
|
.catch(() => {
|
|
|
})
|
|
@@ -784,7 +1058,7 @@ const onBodyEdit = () => {
|
|
|
})
|
|
|
}
|
|
|
onBodyReset()
|
|
|
- message.success('编辑表体信息成功!')
|
|
|
+ message.success('编辑料件信息成功!')
|
|
|
})
|
|
|
.catch(() => {
|
|
|
})
|
|
@@ -813,6 +1087,72 @@ const deleteBatchBody = () => {
|
|
|
return flag
|
|
|
})
|
|
|
}
|
|
|
+const onProductReset = () => {
|
|
|
+ productFormRef.value?.resetFields()
|
|
|
+ debugger
|
|
|
+ productData.value = {
|
|
|
+ companyApplyCode: userInfo.companyNumber,
|
|
|
+ companyName: userInfo.companyName
|
|
|
+ }
|
|
|
+}
|
|
|
+const onProductAdd = () => {
|
|
|
+ productFormRef.value
|
|
|
+ .validate()
|
|
|
+ .then(() => {
|
|
|
+ productList.value.push(Object.assign({__index: new Date().getTime()}, productData.value))
|
|
|
+ onProductReset()
|
|
|
+ message.success('插入产品信息成功!')
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ })
|
|
|
+}
|
|
|
+const onProductEdit = () => {
|
|
|
+ productFormRef.value
|
|
|
+ .validate()
|
|
|
+ .then(() => {
|
|
|
+ let k = ''
|
|
|
+ if (productData.value.id) {
|
|
|
+ k = 'id'
|
|
|
+ } else if (productData.value.__index) {
|
|
|
+ k = '__index'
|
|
|
+ }
|
|
|
+ if (k) {
|
|
|
+ productList.value.forEach(v => {
|
|
|
+ if (v[k] === productData.value[k]) {
|
|
|
+ Object.assign(v, productData.value)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ onProductReset()
|
|
|
+ message.success('编辑产品信息成功!')
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ })
|
|
|
+}
|
|
|
+const onProductDel = (recode, index) => {
|
|
|
+ Modal.confirm({
|
|
|
+ title: '提示',
|
|
|
+ icon: createVNode(ExclamationCircleOutlined),
|
|
|
+ content: createVNode('div', { style: 'color:red;' }, `是否要删除${record.productName}?`),
|
|
|
+ centered: true,
|
|
|
+ onOk() {
|
|
|
+ productList.value.splice(index, 1)
|
|
|
+ },
|
|
|
+ onCancel() {
|
|
|
+ },
|
|
|
+ });
|
|
|
+}
|
|
|
+const deleteBatchProduct = () => {
|
|
|
+ productList.value = productList.value.filter(v => {
|
|
|
+ let flag = true
|
|
|
+ productSelectedRowKeys.value.forEach(s => {
|
|
|
+ if ((v.id && (v.id === s.id)) || (v.__index && (v.__index === s.__index))) {
|
|
|
+ flag = false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return flag
|
|
|
+ })
|
|
|
+}
|
|
|
const getFileExtension = (filename) => {
|
|
|
// 使用lastIndexOf查找最后一个"."的位置
|
|
|
var dotIndex = filename.lastIndexOf(".");
|