Browse Source

Merge remote-tracking branch 'origin/master'

heguanxun 9 months ago
parent
commit
c5df5e1e1e
37 changed files with 1141 additions and 45 deletions
  1. 6 0
      snowy-admin-web/src/api/yqyc/qySecondlineHfdApi.js
  2. 1 1
      snowy-admin-web/src/views/yqyc/component/enterprise/detail.vue
  3. 1 1
      snowy-admin-web/src/views/yqyc/general-ledger/one/detail.vue
  4. 1 1
      snowy-admin-web/src/views/yqyc/general-ledger/one/goods.vue
  5. 1 1
      snowy-admin-web/src/views/yqyc/general-ledger/one/index.vue
  6. 1 1
      snowy-admin-web/src/views/yqyc/general-ledger/two/detail.vue
  7. 1 1
      snowy-admin-web/src/views/yqyc/general-ledger/two/goods.vue
  8. 1 1
      snowy-admin-web/src/views/yqyc/general-ledger/two/index.vue
  9. 348 8
      snowy-admin-web/src/views/yqyc/zero/enterprise-ledger/detail.vue
  10. 1 1
      snowy-admin-web/src/views/yqyc/zero/enterprise-ledger/index.vue
  11. 1 1
      snowy-admin-web/src/views/yqyc/zero/enterprise-ledger/result.vue
  12. 1 1
      snowy-admin-web/src/views/yqyc/zero/enterprise-qualification/detail.vue
  13. 1 1
      snowy-admin-web/src/views/yqyc/zero/enterprise-qualification/index.vue
  14. 1 1
      snowy-admin-web/src/views/yqyc/zero/enterprise-qualification/result.vue
  15. 5 3
      snowy-admin-web/src/views/yqyc/zero/two/out-nuclear-annotation/detail.vue
  16. 1 1
      snowy-admin-web/src/views/yqyc/zero/two/out-nuclear-annotation/index.vue
  17. 1 1
      snowy-admin-web/src/views/yqyc/zero/two/out-nuclear-annotation/result.vue
  18. 82 18
      snowy-admin-web/src/views/yqyc/zero/two/out-nuclear-release/detail.vue
  19. 1 1
      snowy-admin-web/src/views/yqyc/zero/two/out-nuclear-release/index.vue
  20. 1 1
      snowy-admin-web/src/views/yqyc/zero/two/out-nuclear-release/result.vue
  21. 7 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehfd/controller/QySecondlineHfdController.java
  22. 2 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehfd/service/QySecondlineHfdService.java
  23. 7 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehfd/service/impl/QySecondlineHfdServiceImpl.java
  24. 174 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/controller/QySecondlineHzdQdController.java
  25. 58 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/entity/QySecondlineHzdQd.java
  26. 34 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/enums/QySecondlineHzdQdEnum.java
  27. 25 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/mapper/QySecondlineHzdQdMapper.java
  28. 5 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/mapper/mapping/QySecondlineHzdQdMapper.xml
  29. 42 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/param/QySecondlineHzdQdAddParam.java
  30. 47 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/param/QySecondlineHzdQdEditParam.java
  31. 35 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/param/QySecondlineHzdQdIdParam.java
  32. 51 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/param/QySecondlineHzdQdPageParam.java
  33. 80 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/service/QySecondlineHzdQdService.java
  34. 94 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/service/impl/QySecondlineHzdQdServiceImpl.java
  35. 8 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdtz/controller/QySecondlineHzdTzController.java
  36. 3 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdtz/service/QySecondlineHzdTzService.java
  37. 12 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdtz/service/impl/QySecondlineHzdTzServiceImpl.java

+ 6 - 0
snowy-admin-web/src/api/yqyc/qySecondlineHfdApi.js

@@ -33,5 +33,11 @@ export default {
 	},
 	},
 	qysecondlinehfdlistGetListByHfdId(data) {
 	qysecondlinehfdlistGetListByHfdId(data) {
 		return baseRequest(`/biz/qysecondlinehfdlist/getListByHfdId`, data, 'get')
 		return baseRequest(`/biz/qysecondlinehfdlist/getListByHfdId`, data, 'get')
+	},
+	qysecondlinehfdlistGetBgCodeList(data) {
+		return baseRequest(`/biz/qysecondlinehfd/getBgCodeList`, data, 'get')
+	},
+	qysecondlinehfdlistGetHfdBgInfoByBgCode(data) {
+		return baseRequest(`/biz/qysecondlinehfd/getHfdBgInfoByBgCode`, data, 'get')
 	}
 	}
 }
 }

+ 1 - 1
snowy-admin-web/src/views/yqyc/component/enterprise/detail.vue

@@ -139,7 +139,7 @@
 	}
 	}
 	// 关闭抽屉
 	// 关闭抽屉
 	const onClose = () => {
 	const onClose = () => {
-		formRef.value.resetFields()
+		formRef.value?.resetFields()
 		formData.value = {}
 		formData.value = {}
 		open.value = false
 		open.value = false
 	}
 	}

+ 1 - 1
snowy-admin-web/src/views/yqyc/general-ledger/one/detail.vue

@@ -142,7 +142,7 @@
 	}
 	}
 	// 关闭抽屉
 	// 关闭抽屉
 	const onClose = () => {
 	const onClose = () => {
-		formRef.value.resetFields()
+		formRef.value?.resetFields()
 		formData.value = {}
 		formData.value = {}
 		isView.value = true
 		isView.value = true
 		emit('onClose')
 		emit('onClose')

+ 1 - 1
snowy-admin-web/src/views/yqyc/general-ledger/one/goods.vue

@@ -293,7 +293,7 @@
 	}
 	}
 	// 关闭抽屉
 	// 关闭抽屉
 	const onClose = () => {
 	const onClose = () => {
-		formRef.value.resetFields()
+		formRef.value?.resetFields()
 		formData.value = {}
 		formData.value = {}
 		open.value = false
 		open.value = false
 	}
 	}

+ 1 - 1
snowy-admin-web/src/views/yqyc/general-ledger/one/index.vue

@@ -323,7 +323,7 @@ const onSearch = (parameter) => {
 }
 }
 // 重置
 // 重置
 const reset = () => {
 const reset = () => {
-  searchFormRef.value.resetFields()
+  searchFormRef.value?.resetFields()
   onSearch(true)
   onSearch(true)
 }
 }
 // 删除
 // 删除

+ 1 - 1
snowy-admin-web/src/views/yqyc/general-ledger/two/detail.vue

@@ -137,7 +137,7 @@
 	}
 	}
 	// 关闭抽屉
 	// 关闭抽屉
 	const onClose = () => {
 	const onClose = () => {
-		formRef.value.resetFields()
+		formRef.value?.resetFields()
 		formData.value = {}
 		formData.value = {}
 		isView.value = true
 		isView.value = true
 		emit('onClose')
 		emit('onClose')

+ 1 - 1
snowy-admin-web/src/views/yqyc/general-ledger/two/goods.vue

@@ -276,7 +276,7 @@
 	}
 	}
 	// 关闭抽屉
 	// 关闭抽屉
 	const onClose = () => {
 	const onClose = () => {
-		formRef.value.resetFields()
+		formRef.value?.resetFields()
 		formData.value = {}
 		formData.value = {}
 		open.value = false
 		open.value = false
 	}
 	}

+ 1 - 1
snowy-admin-web/src/views/yqyc/general-ledger/two/index.vue

@@ -304,7 +304,7 @@ const onSearch = (parameter) => {
 }
 }
 // 重置
 // 重置
 const reset = () => {
 const reset = () => {
-  searchFormRef.value.resetFields()
+  searchFormRef.value?.resetFields()
   onSearch(true)
   onSearch(true)
 }
 }
 // 删除
 // 删除

+ 348 - 8
snowy-admin-web/src/views/yqyc/zero/enterprise-ledger/detail.vue

@@ -98,12 +98,12 @@
 				<a-form ref="bodyFormRef" :model="bodyData" :rules="bodyRules" style="margin-bottom: 20px;">
 				<a-form ref="bodyFormRef" :model="bodyData" :rules="bodyRules" style="margin-bottom: 20px;">
 					<a-row :gutter="16">
 					<a-row :gutter="16">
 						<a-col :span="8">
 						<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-input v-model:value="bodyData.productCode" :disabled="isView" placeholder="请输入商品编码" allow-clear />
 							</a-form-item>
 							</a-form-item>
 						</a-col>
 						</a-col>
 						<a-col :span="8">
 						<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-input v-model:value="bodyData.productName" :disabled="isView" placeholder="请输入商品名称" allow-clear />
 							</a-form-item>
 							</a-form-item>
 						</a-col>
 						</a-col>
@@ -317,6 +317,143 @@
 					</template>
 					</template>
 				</a-table>
 				</a-table>
 			</a-collapse-panel>
 			</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="附件信息">
 			<a-collapse-panel key="3" header="附件信息">
 				<template v-if="!isView">
 				<template v-if="!isView">
 					<div class="file-tips">
 					<div class="file-tips">
@@ -384,10 +521,12 @@ const { proxy } = getCurrentInstance()
 const emit = defineEmits({successful: null, onClose: null})
 const emit = defineEmits({successful: null, onClose: null})
 const formRef = ref()
 const formRef = ref()
 const bodyFormRef = ref()
 const bodyFormRef = ref()
+const productFormRef = ref()
 const ref_upload = ref()
 const ref_upload = ref()
 // 表单数据
 // 表单数据
 const formData = ref({})
 const formData = ref({})
 const bodyData = ref({})
 const bodyData = ref({})
+const productData = ref({})
 const fileData = ref({})
 const fileData = ref({})
 const submitLoading = ref(false)
 const submitLoading = ref(false)
 const isView = ref(false)
 const isView = ref(false)
@@ -398,10 +537,13 @@ const companyTypeOptions = ref([])
 const activeKey = ref('1')
 const activeKey = ref('1')
 const bodySelectedRowKeys = ref([])
 const bodySelectedRowKeys = ref([])
 const bodyList = ref([])
 const bodyList = ref([])
+const productSelectedRowKeys = ref([])
+const productList = ref([])
 const userInfo = tool.data.get('USER_INFO')
 const userInfo = tool.data.get('USER_INFO')
 const legalUnitOptions = ref([])
 const legalUnitOptions = ref([])
 const originCountryOptions = ref([])
 const originCountryOptions = ref([])
 const currencyOptions = ref([])
 const currencyOptions = ref([])
+const regionCodeOptions = ref([])
 
 
 // 列表选择配置
 // 列表选择配置
 const bodyOptions = {
 const bodyOptions = {
@@ -411,6 +553,14 @@ const bodyOptions = {
 		}
 		}
 	}
 	}
 }
 }
+// 列表选择配置
+const productOptions = {
+	rowSelection: {
+		onChange: (selectedRowKey, selectedRows) => {
+			productSelectedRowKeys.value = selectedRows
+		}
+	}
+}
 const fileSelectedRowKeys = ref([])
 const fileSelectedRowKeys = ref([])
 const fileList = ref([])
 const fileList = ref([])
 // 列表选择配置
 // 列表选择配置
@@ -429,6 +579,7 @@ const onOpen = (record, view = false, type) => {
 			formData.value = res
 			formData.value = res
 			bodyList.value = res.qyRecardBodyAddParams
 			bodyList.value = res.qyRecardBodyAddParams
 			fileList.value = res.qyRecordAttachmentAddParams
 			fileList.value = res.qyRecordAttachmentAddParams
+			productList.value = res.qyRecordProductAddParams
 			if (type) {
 			if (type) {
 				formData.value.applyType = type
 				formData.value.applyType = type
 			}
 			}
@@ -442,6 +593,7 @@ const onOpen = (record, view = false, type) => {
 		formData.value.companyLegalPhone = userInfo.contactPhone
 		formData.value.companyLegalPhone = userInfo.contactPhone
 		formData.value.companyJyFw = userInfo.businessScope
 		formData.value.companyJyFw = userInfo.businessScope
 		formData.value.applyType = 'basq'
 		formData.value.applyType = 'basq'
+		onProductReset()
 	}
 	}
 	tzTypeOptions.value = tool.dictList('tzlx')
 	tzTypeOptions.value = tool.dictList('tzlx')
 	applyTypeOptions.value = tool.dictList('qybalx')
 	applyTypeOptions.value = tool.dictList('qybalx')
@@ -449,11 +601,12 @@ const onOpen = (record, view = false, type) => {
 	legalUnitOptions.value = tool.dictList('measurement unit')
 	legalUnitOptions.value = tool.dictList('measurement unit')
 	originCountryOptions.value = tool.dictList('address')
 	originCountryOptions.value = tool.dictList('address')
 	currencyOptions.value = tool.dictList('hbdm')
 	currencyOptions.value = tool.dictList('hbdm')
+	regionCodeOptions.value = tool.dictList('zgqdm')
 
 
 }
 }
 // 关闭抽屉
 // 关闭抽屉
 const onClose = () => {
 const onClose = () => {
-	formRef.value.resetFields()
+	formRef.value?.resetFields()
 	formData.value = {}
 	formData.value = {}
 	isView.value = true
 	isView.value = true
 	emit('onClose')
 	emit('onClose')
@@ -472,8 +625,8 @@ const formRules = {
 }
 }
 // 默认要校验的
 // 默认要校验的
 const bodyRules = {
 const bodyRules = {
-	productCode: [required('请输入商品编码')],
-	productName: [required('请输入商品名称')],
+	productCode: [required('请输入料件编码')],
+	productName: [required('请输入料件名称')],
 	specModel: [required('请输入规格型号')],
 	specModel: [required('请输入规格型号')],
 	recordQuantity: [required('请输入备案数量')],
 	recordQuantity: [required('请输入备案数量')],
 	recordUnit: [required('请输入备案计量单位')],
 	recordUnit: [required('请输入备案计量单位')],
@@ -489,6 +642,20 @@ const bodyRules = {
 	inAccountCumulativeAmount: [required('请输入进账累计数量')],
 	inAccountCumulativeAmount: [required('请输入进账累计数量')],
 	outAccountCumulativeAmount: [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 = [
 const bodyColumns = [
 	{
 	{
 		title: '商品编码',
 		title: '商品编码',
@@ -669,6 +836,109 @@ const bodyColumns = [
 		fixed: 'right'
 		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 = [
 const fileColumns = [
 	{
 	{
 		title: '附件名称',
 		title: '附件名称',
@@ -701,9 +971,11 @@ const onSubmit = () => {
 		if (!formDataParam.id) {
 		if (!formDataParam.id) {
 			formDataParam.qyRecardBodyAddParams = bodyList.value
 			formDataParam.qyRecardBodyAddParams = bodyList.value
 			formDataParam.qyRecordAttachmentAddParams = fileList.value
 			formDataParam.qyRecordAttachmentAddParams = fileList.value
+			formDataParam.qyRecordProductAddParams = productList.value
 		} else {
 		} else {
 			formDataParam.qyRecardBodyEditParams = bodyList.value
 			formDataParam.qyRecardBodyEditParams = bodyList.value
 			formDataParam.qyRecordAttachmentEditParams = fileList.value
 			formDataParam.qyRecordAttachmentEditParams = fileList.value
+			formDataParam.qyRecordProductAddParams = productList.value
 			delete formDataParam.qyRecardBodyAddParams
 			delete formDataParam.qyRecardBodyAddParams
 			delete formDataParam.qyRecordAttachmentAddParams
 			delete formDataParam.qyRecordAttachmentAddParams
 		}
 		}
@@ -731,9 +1003,11 @@ const onTemp = () => {
 		if (!formDataParam.id) {
 		if (!formDataParam.id) {
 			formDataParam.qyRecardBodyAddParams = bodyList.value
 			formDataParam.qyRecardBodyAddParams = bodyList.value
 			formDataParam.qyRecordAttachmentAddParams = fileList.value
 			formDataParam.qyRecordAttachmentAddParams = fileList.value
+			formDataParam.qyRecordProductAddParams = productList.value
 		} else {
 		} else {
 			formDataParam.qyRecardBodyEditParams = bodyList.value
 			formDataParam.qyRecardBodyEditParams = bodyList.value
 			formDataParam.qyRecordAttachmentEditParams = fileList.value
 			formDataParam.qyRecordAttachmentEditParams = fileList.value
+			formDataParam.qyRecordProductAddParams = productList.value
 			delete formDataParam.qyRecardBodyAddParams
 			delete formDataParam.qyRecardBodyAddParams
 			delete formDataParam.qyRecordAttachmentAddParams
 			delete formDataParam.qyRecordAttachmentAddParams
 		}
 		}
@@ -752,7 +1026,7 @@ const onTemp = () => {
 	})
 	})
 }
 }
 const onBodyReset = () => {
 const onBodyReset = () => {
-	bodyFormRef.value.resetFields()
+	bodyFormRef.value?.resetFields()
 	bodyData.value = {}
 	bodyData.value = {}
 }
 }
 const onBodyAdd = () => {
 const onBodyAdd = () => {
@@ -761,7 +1035,7 @@ const onBodyAdd = () => {
 	.then(() => {
 	.then(() => {
 		bodyList.value.push(Object.assign({__index: new Date().getTime()}, bodyData.value))
 		bodyList.value.push(Object.assign({__index: new Date().getTime()}, bodyData.value))
 		onBodyReset()
 		onBodyReset()
-		message.success('插入表体信息成功!')
+		message.success('插入料件信息成功!')
 	})
 	})
 	.catch(() => {
 	.catch(() => {
 	})
 	})
@@ -784,7 +1058,7 @@ const onBodyEdit = () => {
 			})
 			})
 		}
 		}
 		onBodyReset()
 		onBodyReset()
-		message.success('编辑表体信息成功!')
+		message.success('编辑料件信息成功!')
 	})
 	})
 	.catch(() => {
 	.catch(() => {
 	})
 	})
@@ -813,6 +1087,72 @@ const deleteBatchBody = () => {
 		return flag
 		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) => {
 const getFileExtension = (filename) => {
 	// 使用lastIndexOf查找最后一个"."的位置
 	// 使用lastIndexOf查找最后一个"."的位置
 	var dotIndex = filename.lastIndexOf(".");
 	var dotIndex = filename.lastIndexOf(".");

+ 1 - 1
snowy-admin-web/src/views/yqyc/zero/enterprise-ledger/index.vue

@@ -212,7 +212,7 @@
     }
     }
     // 重置
     // 重置
     const reset = () => {
     const reset = () => {
-        searchFormRef.value.resetFields()
+        searchFormRef.value?.resetFields()
         onSearch(true)
         onSearch(true)
     }
     }
 	// 删除
 	// 删除

+ 1 - 1
snowy-admin-web/src/views/yqyc/zero/enterprise-ledger/result.vue

@@ -62,7 +62,7 @@ const onOpen = (record, view = false) => {
 }
 }
 // 关闭抽屉
 // 关闭抽屉
 const onClose = () => {
 const onClose = () => {
-	formRef.value.resetFields()
+	formRef.value?.resetFields()
 	formData.value = {}
 	formData.value = {}
 	open.value = false
 	open.value = false
 }
 }

+ 1 - 1
snowy-admin-web/src/views/yqyc/zero/enterprise-qualification/detail.vue

@@ -234,7 +234,7 @@ const onOpen = (record, view = false) => {
 }
 }
 // 关闭抽屉
 // 关闭抽屉
 const onClose = () => {
 const onClose = () => {
-  formRef.value.resetFields()
+  formRef.value?.resetFields()
   formData.value = {}
   formData.value = {}
   isView.value = true
   isView.value = true
   emit('onClose')
   emit('onClose')

+ 1 - 1
snowy-admin-web/src/views/yqyc/zero/enterprise-qualification/index.vue

@@ -220,7 +220,7 @@ const onSearch = (parameter) => {
 }
 }
 // 重置
 // 重置
 const reset = () => {
 const reset = () => {
-  searchFormRef.value.resetFields()
+  searchFormRef.value?.resetFields()
   onSearch(true)
   onSearch(true)
 }
 }
 // 删除
 // 删除

+ 1 - 1
snowy-admin-web/src/views/yqyc/zero/enterprise-qualification/result.vue

@@ -62,7 +62,7 @@ const onOpen = (record, view = false) => {
 }
 }
 // 关闭抽屉
 // 关闭抽屉
 const onClose = () => {
 const onClose = () => {
-	formRef.value.resetFields()
+	formRef.value?.resetFields()
 	formData.value = {}
 	formData.value = {}
 	open.value = false
 	open.value = false
 }
 }

+ 5 - 3
snowy-admin-web/src/views/yqyc/zero/two/out-nuclear-annotation/detail.vue

@@ -30,7 +30,7 @@
               </a-col>
               </a-col>
               <a-col :span="8">
               <a-col :span="8">
                 <a-form-item label="使用单位:" name="useDept">
                 <a-form-item label="使用单位:" name="useDept">
-                  <a-input v-model:value="formData.useDept" :disabled="isView" placeholder="请输入使用单位" allow-clear />
+                  <a-input v-model:value="formData.useDept" :disabled="true" placeholder="请输入使用单位" allow-clear />
                 </a-form-item>
                 </a-form-item>
               </a-col>
               </a-col>
               <a-col :span="8">
               <a-col :span="8">
@@ -436,6 +436,7 @@
 	const zzmdgOptions = ref([])
 	const zzmdgOptions = ref([])
 	const tzOptions = ref([])
 	const tzOptions = ref([])
 	const activeKey = ref('1')
 	const activeKey = ref('1')
+	const userInfo = tool.data.get('USER_INFO')
 	// 打开抽屉
 	// 打开抽屉
 	const onOpen = (record, view = false, copy) => {
 	const onOpen = (record, view = false, copy) => {
 	    isView.value = view
 	    isView.value = view
@@ -450,6 +451,7 @@
 			})
 			})
 		} else {
 		} else {
 			formData.value.tzType = '二线出区'
 			formData.value.tzType = '二线出区'
+			formData.value.useDept = userInfo.companyName
 		}
 		}
 		qySecondlineHzdTzApi.qySecondlineHzdTzQyRecordInfo().then(res => {
 		qySecondlineHzdTzApi.qySecondlineHzdTzQyRecordInfo().then(res => {
 			tzOptions.value = res.map(v => Object.assign(v, {label: v.tzCode, value: v.tzCode}))
 			tzOptions.value = res.map(v => Object.assign(v, {label: v.tzCode, value: v.tzCode}))
@@ -466,7 +468,7 @@
 	}
 	}
 	// 关闭抽屉
 	// 关闭抽屉
 	const onClose = () => {
 	const onClose = () => {
-		formRef.value.resetFields()
+		formRef.value?.resetFields()
 		formData.value = {}
 		formData.value = {}
 		isView.value = true
 		isView.value = true
 		emit('onClose')
 		emit('onClose')
@@ -482,7 +484,7 @@
 			.then(() => {
 			.then(() => {
 				submitLoading.value = true
 				submitLoading.value = true
 				const params = {
 				const params = {
-					baseInfo: Object.assign(formData.value, {status: '2'}),
+					baseInfo: Object.assign(formData.value, {status: '3'}),
 					productList: bodyList.value,
 					productList: bodyList.value,
 					attachmentList: fileList.value,
 					attachmentList: fileList.value,
 				}
 				}

+ 1 - 1
snowy-admin-web/src/views/yqyc/zero/two/out-nuclear-annotation/index.vue

@@ -204,7 +204,7 @@
     }
     }
     // 重置
     // 重置
     const reset = () => {
     const reset = () => {
-        searchFormRef.value.resetFields()
+        searchFormRef.value?.resetFields()
         onSearch(true)
         onSearch(true)
     }
     }
 	// 删除
 	// 删除

+ 1 - 1
snowy-admin-web/src/views/yqyc/zero/two/out-nuclear-annotation/result.vue

@@ -60,7 +60,7 @@ const onOpen = (record, view = false) => {
 }
 }
 // 关闭抽屉
 // 关闭抽屉
 const onClose = () => {
 const onClose = () => {
-	formRef.value.resetFields()
+	formRef.value?.resetFields()
 	formData.value = {}
 	formData.value = {}
 	open.value = false
 	open.value = false
 }
 }

+ 82 - 18
snowy-admin-web/src/views/yqyc/zero/two/out-nuclear-release/detail.vue

@@ -20,7 +20,7 @@
 					<a-row :gutter="16">
 					<a-row :gutter="16">
 						<a-col :span="8">
 						<a-col :span="8">
 							<a-form-item label="核放单预录入号:" name="hfdrCode">
 							<a-form-item label="核放单预录入号:" name="hfdrCode">
-								<a-input v-model:value="formData.hfdrCode" :disabled="isView" placeholder="请输入核放单预录入号" allow-clear />
+								<a-input v-model:value="formData.hfdrCode" :disabled="true" placeholder="请输入核放单预录入号" allow-clear />
 							</a-form-item>
 							</a-form-item>
 						</a-col>
 						</a-col>
 						<a-col :span="8">
 						<a-col :span="8">
@@ -59,53 +59,58 @@
 							</a-form-item>
 							</a-form-item>
 						</a-col>
 						</a-col>
 						<a-col :span="8">
 						<a-col :span="8">
+							<a-form-item label="报关单号:" name="hfdBgCode">
+								<a-select v-model:value="formData.hfdBgCode" :disabled="isView" placeholder="请选择报关单号" :options="bgdhOptions" show-search allow-clear option-filter-prop="label" @change="onChangBgdh"/>
+							</a-form-item>
+						</a-col>
+						<a-col :span="8">
 							<a-form-item label="承运车车牌号:" name="cyccph">
 							<a-form-item label="承运车车牌号:" name="cyccph">
-								<a-input v-model:value="formData.cyccph" :disabled="isView" placeholder="请输入承运车车牌号" allow-clear />
+								<a-input v-model:value="formData.cyccph" :disabled="true" placeholder="请选择报关单号" allow-clear />
 							</a-form-item>
 							</a-form-item>
 						</a-col>
 						</a-col>
 						<a-col :span="8">
 						<a-col :span="8">
 							<a-form-item label="IC卡号(电子车牌):" name="ickh">
 							<a-form-item label="IC卡号(电子车牌):" name="ickh">
-								<a-input v-model:value="formData.ickh" :disabled="isView" placeholder="请输入ic卡号" allow-clear />
+								<a-input v-model:value="formData.ickh" :disabled="true" placeholder="请选择报关单号" allow-clear />
 							</a-form-item>
 							</a-form-item>
 						</a-col>
 						</a-col>
 						<a-col :span="8">
 						<a-col :span="8">
 							<a-form-item label="车架号:" name="cjh">
 							<a-form-item label="车架号:" name="cjh">
-								<a-input v-model:value="formData.cjh" :disabled="isView" placeholder="请输入车架号" allow-clear />
+								<a-input v-model:value="formData.cjh" :disabled="true" placeholder="请选择报关单号" allow-clear />
 							</a-form-item>
 							</a-form-item>
 						</a-col>
 						</a-col>
 						<a-col :span="8">
 						<a-col :span="8">
-							<a-form-item label="车架重:" name="cjz">
-								<a-input v-model:value="formData.cjz" :disabled="isView" placeholder="请输入车架重" allow-clear />
+							<a-form-item label="车架重(kg):" name="cjz">
+								<a-input v-model:value="formData.cjz" :disabled="true" placeholder="请选择报关单号" allow-clear />
 							</a-form-item>
 							</a-form-item>
 						</a-col>
 						</a-col>
 						<a-col :span="8">
 						<a-col :span="8">
-							<a-form-item label="车自重:" name="czz">
-								<a-input v-model:value="formData.czz" :disabled="isView" placeholder="请输入车自重" allow-clear />
+							<a-form-item label="车自重(kg):" name="czz">
+								<a-input v-model:value="formData.czz" :disabled="true" placeholder="请选择报关单号" allow-clear />
 							</a-form-item>
 							</a-form-item>
 						</a-col>
 						</a-col>
 						<a-col :span="8">
 						<a-col :span="8">
 							<a-form-item label="集装箱号:" name="jzxh">
 							<a-form-item label="集装箱号:" name="jzxh">
-								<a-input v-model:value="formData.jzxh" :disabled="isView" placeholder="请输入集装箱号" allow-clear />
+								<a-select v-model:value="formData.jzxh" :disabled="isView || !formData.hfdBgCode" placeholder="请选择报关单号" :options="jzxhOptions" show-search allow-clear option-filter-prop="label" @change="onChangJzxh"/>
 							</a-form-item>
 							</a-form-item>
 						</a-col>
 						</a-col>
 						<a-col :span="8">
 						<a-col :span="8">
 							<a-form-item label="集装箱类型:" name="jzxlx">
 							<a-form-item label="集装箱类型:" name="jzxlx">
-								<a-input v-model:value="formData.jzxlx" :disabled="isView" placeholder="请输入集装箱类型" allow-clear />
+								<a-input v-model:value="formData.jzxlx" :disabled="true" placeholder="请选择集装箱号" allow-clear />
 							</a-form-item>
 							</a-form-item>
 						</a-col>
 						</a-col>
 						<a-col :span="8">
 						<a-col :span="8">
 							<a-form-item label="总重量(kg):" name="zzl">
 							<a-form-item label="总重量(kg):" name="zzl">
-								<a-input v-model:value="formData.zzl" :disabled="isView" placeholder="请输入总重量" allow-clear />
+								<a-input v-model:value="formData.zzl" :disabled="true" placeholder="请选择集装箱号" allow-clear />
 							</a-form-item>
 							</a-form-item>
 						</a-col>
 						</a-col>
 						<a-col :span="8">
 						<a-col :span="8">
 							<a-form-item label="货物毛重量(kg):" name="hwmzl">
 							<a-form-item label="货物毛重量(kg):" name="hwmzl">
-								<a-input v-model:value="formData.hwmzl" :disabled="isView" placeholder="请输入货物毛重量" allow-clear />
+								<a-input v-model:value="formData.hwmzl" :disabled="true" placeholder="请选择集装箱号" allow-clear />
 							</a-form-item>
 							</a-form-item>
 						</a-col>
 						</a-col>
 						<a-col :span="8">
 						<a-col :span="8">
 							<a-form-item label="货物总净重(kg):" name="hwjzl">
 							<a-form-item label="货物总净重(kg):" name="hwjzl">
-								<a-input v-model:value="formData.hwjzl" :disabled="isView" placeholder="请输入货物总净重" allow-clear />
+								<a-input v-model:value="formData.hwjzl" :disabled="true" placeholder="请选择集装箱号" allow-clear />
 							</a-form-item>
 							</a-form-item>
 						</a-col>
 						</a-col>
 						<a-col :span="8">
 						<a-col :span="8">
@@ -115,7 +120,7 @@
 						</a-col>
 						</a-col>
 						<a-col :span="8">
 						<a-col :span="8">
 							<a-form-item label="申报企业编号:" name="sbqybh">
 							<a-form-item label="申报企业编号:" name="sbqybh">
-								<a-input v-model:value="formData.sbqybh" :disabled="isView" placeholder="请输入申报企业编号" allow-clear />
+								<a-input v-model:value="formData.sbqybh" :disabled="true" placeholder="请输入申报企业编号" allow-clear />
 							</a-form-item>
 							</a-form-item>
 						</a-col>
 						</a-col>
 						<a-col :span="8">
 						<a-col :span="8">
@@ -378,6 +383,8 @@
 	const dzTypeOptions = ref([])
 	const dzTypeOptions = ref([])
 	const hzqdOptions = ref([])
 	const hzqdOptions = ref([])
 	const tzOptions = ref([])
 	const tzOptions = ref([])
+	const bgdhOptions = ref([])
+	const jzxhOptions = ref([])
 	const statusOptions = ref([])
 	const statusOptions = ref([])
 	const userInfo = tool.data.get('USER_INFO')
 	const userInfo = tool.data.get('USER_INFO')
 	const showFileUpload = ref(true)
 	const showFileUpload = ref(true)
@@ -521,18 +528,31 @@
 						hzqdOptions.value = res.map(v => ({label: v, value: v}))
 						hzqdOptions.value = res.map(v => ({label: v, value: v}))
 					})
 					})
 				}
 				}
+				if (formData.value.hfdBgCode) {
+					qySecondlineHfdApi.qysecondlinehfdlistGetHfdBgInfoByBgCode({hfdBgCode: formData.value.hfdBgCode}).then(res => {
+						jzxhOptions.value = res.jzxList.map(v => {
+							v.value = v.jzxh
+							v.label = v.jzxh
+							return v
+						})
+					})
+				}
 				if (copy) {
 				if (copy) {
 					delete formData.value.id
 					delete formData.value.id
 				}
 				}
 			})
 			})
 		} else {
 		} else {
 			formData.value.sbqymc = userInfo.companyName
 			formData.value.sbqymc = userInfo.companyName
+			formData.value.sbqybh = userInfo.companyNumber
 			formData.value.sbqyshxydm = userInfo.companyNumber
 			formData.value.sbqyshxydm = userInfo.companyNumber
 			formData.value.sblx = type
 			formData.value.sblx = type
 		}
 		}
 		qySecondlineHzdTzApi.qySecondlineHzdTzTzCodeByCondition().then(res => {
 		qySecondlineHzdTzApi.qySecondlineHzdTzTzCodeByCondition().then(res => {
 			tzOptions.value = res.map(v => ({label: v, value: v}))
 			tzOptions.value = res.map(v => ({label: v, value: v}))
 		})
 		})
+		qySecondlineHfdApi.qysecondlinehfdlistGetBgCodeList().then(res => {
+			bgdhOptions.value = res.map(v => ({label: v, value: v}))
+		})
 		hfdLxOptions.value = tool.dictList('hfdlx')
 		hfdLxOptions.value = tool.dictList('hfdlx')
 		jcbzOptions.value = tool.dictList('jcbz')
 		jcbzOptions.value = tool.dictList('jcbz')
 		sblxOptions.value = tool.dictList('lgs_sblx')
 		sblxOptions.value = tool.dictList('lgs_sblx')
@@ -560,8 +580,10 @@
 		cjz: [required('请输入车架重')],
 		cjz: [required('请输入车架重')],
 		czz: [required('请输入车自重')],
 		czz: [required('请输入车自重')],
 		zzl: [required('请输入总重量(kg)')],
 		zzl: [required('请输入总重量(kg)')],
-		hwmzl: [required('货物毛净重(kg)')],
-		hwjzl: [required('货物总净重(kg)')],
+		hwmzl: [required('请输入货物毛净重(kg)')],
+		hwjzl: [required('请输入货物总净重(kg)')],
+		hfdBgCode: [required('请选择报关单号')],
+		jzxh: [required('请选择集装箱号')],
 	})
 	})
 	watch(() => formData.value.bdlx, (n) => {
 	watch(() => formData.value.bdlx, (n) => {
 		if (n == 1) {
 		if (n == 1) {
@@ -594,7 +616,7 @@
 			.then(() => {
 			.then(() => {
 				submitLoading.value = true
 				submitLoading.value = true
 				const params = {
 				const params = {
-					baseInfo: Object.assign(formData.value, {status: '2'}),
+					baseInfo: Object.assign(formData.value, {status: '3'}),
 					productList: bodyList.value,
 					productList: bodyList.value,
 					dzList: relationList.value,
 					dzList: relationList.value,
 					attachmentList: fileList.value,
 					attachmentList: fileList.value,
@@ -841,7 +863,7 @@
 		onBodyReset()
 		onBodyReset()
 		relationList.value = []
 		relationList.value = []
 		onRelationReset()
 		onRelationReset()
-		if (val == 1) {
+		if (val == 1 || val == 3) {
 			showGldz.value = false
 			showGldz.value = false
 			showHfdbt.value = true
 			showHfdbt.value = true
 		} else if (val == 2) {
 		} else if (val == 2) {
@@ -853,6 +875,48 @@
 			showHfdbt.value = false
 			showHfdbt.value = false
 		}
 		}
 	}
 	}
+	const onChangBgdh = (val) => {
+		if (val) {
+			qySecondlineHfdApi.qysecondlinehfdlistGetHfdBgInfoByBgCode({hfdBgCode: val}).then(res => {
+				formData.value.czz = res.cyc.czz
+				formData.value.cjz = res.cyc.cjz
+				formData.value.cjh = res.cyc.cjh
+				formData.value.ickh = res.cyc.ickh
+				formData.value.cyccph = res.cyc.cyccph
+				jzxhOptions.value = res.jzxList.map(v => {
+					v.value = v.jzxh
+					v.label = v.jzxh
+					return v
+				})
+			})
+		} else {
+			formData.value.hwjzl = ''
+			formData.value.hwmzl = ''
+			formData.value.zzl = ''
+			formData.value.jzxlx = ''
+			formData.value.jzxh = ''
+			formData.value.czz = ''
+			formData.value.cjz = ''
+			formData.value.cjh = ''
+			formData.value.ickh = ''
+			formData.value.cyccph = ''
+			jzxhOptions.value = []
+		}
+	}
+	const onChangJzxh = (val) => {
+		if (val) {
+			const obj = jzxhOptions.value.filter(v => v.value === val)[0]
+			formData.value.hwjzl = obj.hwjzl
+			formData.value.hwmzl = obj.hwmzl
+			formData.value.zzl = obj.zzl
+			formData.value.jzxlx = obj.jzxlx
+		} else {
+			formData.value.hwjzl = ''
+			formData.value.hwmzl = ''
+			formData.value.zzl = ''
+			formData.value.jzxlx = ''
+		}
+	}
 	// 抛出函数
 	// 抛出函数
 	defineExpose({
 	defineExpose({
 		onOpen
 		onOpen

+ 1 - 1
snowy-admin-web/src/views/yqyc/zero/two/out-nuclear-release/index.vue

@@ -204,7 +204,7 @@
     }
     }
     // 重置
     // 重置
     const reset = () => {
     const reset = () => {
-        searchFormRef.value.resetFields()
+        searchFormRef.value?.resetFields()
         onSearch(true)
         onSearch(true)
     }
     }
 	// 删除
 	// 删除

+ 1 - 1
snowy-admin-web/src/views/yqyc/zero/two/out-nuclear-release/result.vue

@@ -60,7 +60,7 @@ const onOpen = (record, view = false) => {
 }
 }
 // 关闭抽屉
 // 关闭抽屉
 const onClose = () => {
 const onClose = () => {
-	formRef.value.resetFields()
+	formRef.value?.resetFields()
 	formData.value = {}
 	formData.value = {}
 	open.value = false
 	open.value = false
 }
 }

+ 7 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehfd/controller/QySecondlineHfdController.java

@@ -183,4 +183,11 @@ public class QySecondlineHfdController {
     public CommonResult<QySecondlineHfdBgInfoVo> getHfdBgInfoByBgCode(@Valid QySecondlineHfdIdParam qySecondlineHfdIdParam) {
     public CommonResult<QySecondlineHfdBgInfoVo> getHfdBgInfoByBgCode(@Valid QySecondlineHfdIdParam qySecondlineHfdIdParam) {
         return CommonResult.data(qySecondlineHfdService.getHfdBgInfoByBgCode(qySecondlineHfdIdParam.getHfdBgCode()));
         return CommonResult.data(qySecondlineHfdService.getHfdBgInfoByBgCode(qySecondlineHfdIdParam.getHfdBgCode()));
     }
     }
+
+    @Operation(summary = "获取所有的报关编号")
+//    @SaCheckPermission("/biz/qysecondlinehfd/getHfdBgInfoByBgCode")
+    @GetMapping("/biz/qysecondlinehfd/getBgCodeList")
+    public CommonResult<List<String>> getBgCodeList() {
+        return CommonResult.data(qySecondlineHfdService.getBgCodeList());
+    }
 }
 }

+ 2 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehfd/service/QySecondlineHfdService.java

@@ -78,4 +78,6 @@ public interface QySecondlineHfdService extends IService<QySecondlineHfd> {
     QySecondlineHfd queryEntity(String id);
     QySecondlineHfd queryEntity(String id);
 
 
     QySecondlineHfdBgInfoVo getHfdBgInfoByBgCode(String hfdBgCode);
     QySecondlineHfdBgInfoVo getHfdBgInfoByBgCode(String hfdBgCode);
+
+    List<String> getBgCodeList();
 }
 }

+ 7 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehfd/service/impl/QySecondlineHfdServiceImpl.java

@@ -270,4 +270,11 @@ public class QySecondlineHfdServiceImpl extends ServiceImpl<QySecondlineHfdMappe
         bgInfoVo.setJzxList(jzxList);
         bgInfoVo.setJzxList(jzxList);
         return bgInfoVo;
         return bgInfoVo;
     }
     }
+
+    @Override
+    public List<String> getBgCodeList(){
+        List<QySecondlineHfdCyc> cycList = qySecondlineHfdCycService.list();
+        List<String> list = cycList.stream().map(QySecondlineHfdCyc::getHfdBgCode).toList();
+        return list;
+    }
 }
 }

+ 174 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/controller/QySecondlineHzdQdController.java

@@ -0,0 +1,174 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.qysecondlinehzdqd.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.util.URLUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.entity.QySecondlineHzdQd;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.param.QySecondlineHzdQdAddParam;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.param.QySecondlineHzdQdEditParam;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.param.QySecondlineHzdQdIdParam;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.param.QySecondlineHzdQdPageParam;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.service.QySecondlineHzdQdService;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotEmpty;
+import java.util.List;
+import java.io.IOException;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.fastjson.JSON;
+import java.net.URLEncoder;
+import java.util.HashMap;
+
+/**
+ * 二线核注单清单信息控制器
+ *
+ * @author wenjinbiao
+ * @date  2024/07/12 17:21
+ */
+@Tag(name = "二线核注单清单信息控制器")
+@RestController
+@Validated
+public class QySecondlineHzdQdController {
+
+    @Resource
+    private QySecondlineHzdQdService qySecondlineHzdQdService;
+
+    /**
+     * 获取二线核注单清单信息分页
+     *
+     * @author wenjinbiao
+     * @date  2024/07/12 17:21
+     */
+    @Operation(summary = "获取二线核注单清单信息分页")
+    @SaCheckPermission("/biz/qysecondlinehzdqd/page")
+    @GetMapping("/biz/qysecondlinehzdqd/page")
+    public CommonResult<Page<QySecondlineHzdQd>> page(QySecondlineHzdQdPageParam qySecondlineHzdQdPageParam) {
+        return CommonResult.data(qySecondlineHzdQdService.page(qySecondlineHzdQdPageParam));
+    }
+
+    /**
+     * 添加二线核注单清单信息
+     *
+     * @author wenjinbiao
+     * @date  2024/07/12 17:21
+     */
+    @Operation(summary = "添加二线核注单清单信息")
+    @CommonLog("添加二线核注单清单信息")
+    @SaCheckPermission("/biz/qysecondlinehzdqd/add")
+    @PostMapping("/biz/qysecondlinehzdqd/add")
+    public CommonResult<String> add(@RequestBody @Valid QySecondlineHzdQdAddParam qySecondlineHzdQdAddParam) {
+        qySecondlineHzdQdService.add(qySecondlineHzdQdAddParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑二线核注单清单信息
+     *
+     * @author wenjinbiao
+     * @date  2024/07/12 17:21
+     */
+    @Operation(summary = "编辑二线核注单清单信息")
+    @CommonLog("编辑二线核注单清单信息")
+    @SaCheckPermission("/biz/qysecondlinehzdqd/edit")
+    @PostMapping("/biz/qysecondlinehzdqd/edit")
+    public CommonResult<String> edit(@RequestBody @Valid QySecondlineHzdQdEditParam qySecondlineHzdQdEditParam) {
+        qySecondlineHzdQdService.edit(qySecondlineHzdQdEditParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 导出二线核注单清单信息
+     *
+     * @author wenjinbiao
+     * @date  2024/07/12 17:21
+     */
+    @Operation(summary = "导出二线核注单清单信息")
+    @CommonLog("导出二线核注单清单信息")
+    @SaCheckPermission("/biz/qysecondlinehzdqd/export")
+    @PostMapping("/biz/qysecondlinehzdqd/export")
+    public void export(@RequestBody @Valid QySecondlineHzdQdPageParam qySecondlineHzdQdPageParam, HttpServletResponse response) {
+        Page<QySecondlineHzdQd> page =  qySecondlineHzdQdService.page(qySecondlineHzdQdPageParam);
+        List<QySecondlineHzdQd> records = page.getRecords();
+        exportExcel(response,QySecondlineHzdQd.class,records,"二线核注单清单信息");
+    }
+
+
+    /**
+     * 导出表格数据
+     * @param cl       表格字段实体类
+     * @param data     查询数据
+     * @param sheetName  表格名称
+     */
+    public void exportExcel(HttpServletResponse response, Class cl, List data, String sheetName){
+       HashMap<String, String> map = new HashMap<>();
+       try {
+           response.setHeader("Content-disposition", "attachment;filename=" + URLUtil.encode(sheetName) + ".xlsx");
+           response.setHeader("Access-Control-Allow-Origin", "*");
+           response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
+           response.setContentType("application/octet-stream;charset=UTF-8");
+           EasyExcel.write(response.getOutputStream(), cl).autoCloseStream(Boolean.FALSE).sheet(sheetName).doWrite(data);
+       } catch (IOException e) {
+           response.reset();
+           response.setContentType("application/json");
+           response.setCharacterEncoding("utf-8");
+           map.put("status", "failure");
+           map.put("message", "下载文件失败" + e.getMessage());
+           try {
+               response.getWriter().println(JSON.toJSONString(map));
+           } catch (IOException ex) {
+               ex.printStackTrace();
+           }
+       }
+    }
+
+    /**
+     * 删除二线核注单清单信息
+     *
+     * @author wenjinbiao
+     * @date  2024/07/12 17:21
+     */
+    @Operation(summary = "删除二线核注单清单信息")
+    @CommonLog("删除二线核注单清单信息")
+    @SaCheckPermission("/biz/qysecondlinehzdqd/delete")
+    @PostMapping("/biz/qysecondlinehzdqd/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   List<QySecondlineHzdQdIdParam> qySecondlineHzdQdIdParamList) {
+        qySecondlineHzdQdService.delete(qySecondlineHzdQdIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取二线核注单清单信息详情
+     *
+     * @author wenjinbiao
+     * @date  2024/07/12 17:21
+     */
+    @Operation(summary = "获取二线核注单清单信息详情")
+    @SaCheckPermission("/biz/qysecondlinehzdqd/detail")
+    @GetMapping("/biz/qysecondlinehzdqd/detail")
+    public CommonResult<QySecondlineHzdQd> detail(@Valid QySecondlineHzdQdIdParam qySecondlineHzdQdIdParam) {
+        return CommonResult.data(qySecondlineHzdQdService.detail(qySecondlineHzdQdIdParam));
+    }
+}

+ 58 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/entity/QySecondlineHzdQd.java

@@ -0,0 +1,58 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.qysecondlinehzdqd.entity;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 二线核注单清单信息实体
+ *
+ * @author wenjinbiao
+ * @date  2024/07/12 17:21
+ **/
+@Getter
+@Setter
+@TableName("qy_secondline_hzd_qd")
+public class QySecondlineHzdQd {
+
+    /** 主键 */
+    @TableId
+    @Schema(description = "主键")
+    @ColumnWidth(12)
+    @ExcelProperty(index = 0,value = "主键")
+    private String id;
+
+    /** 清单编号 */
+    @Schema(description = "清单编号")
+    @ColumnWidth(12)
+    @ExcelProperty(index = 1,value = "清单编号")
+    private String glqdCode;
+
+    /** 报关申报编号 */
+    @Schema(description = "报关申报编号")
+    @ColumnWidth(12)
+    @ExcelProperty(index = 2,value = "报关申报编号")
+    private String dybgCode;
+
+    /** 报关申报编号 */
+    @Schema(description = "对应报关单申报单位名称")
+    @ColumnWidth(12)
+    @ExcelProperty(index = 3,value = "对应报关单申报单位名称")
+    private String dybgDept;
+}

+ 34 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/enums/QySecondlineHzdQdEnum.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.qysecondlinehzdqd.enums;
+
+import lombok.Getter;
+
+/**
+ * 二线核注单清单信息枚举
+ *
+ * @author wenjinbiao
+ * @date  2024/07/12 17:21
+ **/
+@Getter
+public enum QySecondlineHzdQdEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    QySecondlineHzdQdEnum(String value) {
+        this.value = value;
+    }
+}

+ 25 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/mapper/QySecondlineHzdQdMapper.java

@@ -0,0 +1,25 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.qysecondlinehzdqd.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.entity.QySecondlineHzdQd;
+
+/**
+ * 二线核注单清单信息Mapper接口
+ *
+ * @author wenjinbiao
+ * @date  2024/07/12 17:21
+ **/
+public interface QySecondlineHzdQdMapper extends BaseMapper<QySecondlineHzdQd> {
+}

+ 5 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/mapper/mapping/QySecondlineHzdQdMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="vip.xiaonuo.biz.modular.qysecondlinehzdqd.mapper.QySecondlineHzdQdMapper">
+
+</mapper>

+ 42 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/param/QySecondlineHzdQdAddParam.java

@@ -0,0 +1,42 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.qysecondlinehzdqd.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 二线核注单清单信息添加参数
+ *
+ * @author wenjinbiao
+ * @date  2024/07/12 17:21
+ **/
+@Getter
+@Setter
+public class QySecondlineHzdQdAddParam {
+
+    /** 清单编号 */
+    @Schema(description = "清单编号")
+    private String qdCode;
+
+    /** 报关申报编号 */
+    @Schema(description = "报关申报编号")
+    private String bgsbCode;
+
+}

+ 47 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/param/QySecondlineHzdQdEditParam.java

@@ -0,0 +1,47 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.qysecondlinehzdqd.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 二线核注单清单信息编辑参数
+ *
+ * @author wenjinbiao
+ * @date  2024/07/12 17:21
+ **/
+@Getter
+@Setter
+public class QySecondlineHzdQdEditParam {
+
+    /** 主键 */
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "id不能为空")
+    private String id;
+
+    /** 清单编号 */
+    @Schema(description = "清单编号")
+    private String qdCode;
+
+    /** 报关申报编号 */
+    @Schema(description = "报关申报编号")
+    private String bgsbCode;
+
+}

+ 35 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/param/QySecondlineHzdQdIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.qysecondlinehzdqd.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+
+/**
+ * 二线核注单清单信息Id参数
+ *
+ * @author wenjinbiao
+ * @date  2024/07/12 17:21
+ **/
+@Getter
+@Setter
+public class QySecondlineHzdQdIdParam {
+
+    /** 主键 */
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "id不能为空")
+    private String id;
+}

+ 51 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/param/QySecondlineHzdQdPageParam.java

@@ -0,0 +1,51 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.qysecondlinehzdqd.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 二线核注单清单信息查询参数
+ *
+ * @author wenjinbiao
+ * @date  2024/07/12 17:21
+ **/
+@Getter
+@Setter
+public class QySecondlineHzdQdPageParam {
+
+    /** 当前页 */
+    @Schema(description = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @Schema(description = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @Schema(description = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @Schema(description = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @Schema(description = "关键词")
+    private String searchKey;
+
+}

+ 80 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/service/QySecondlineHzdQdService.java

@@ -0,0 +1,80 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.qysecondlinehzdqd.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.entity.QySecondlineHzdQd;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.param.QySecondlineHzdQdAddParam;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.param.QySecondlineHzdQdEditParam;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.param.QySecondlineHzdQdIdParam;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.param.QySecondlineHzdQdPageParam;
+
+import java.util.List;
+
+/**
+ * 二线核注单清单信息Service接口
+ *
+ * @author wenjinbiao
+ * @date  2024/07/12 17:21
+ **/
+public interface QySecondlineHzdQdService extends IService<QySecondlineHzdQd> {
+
+    /**
+     * 获取二线核注单清单信息分页
+     *
+     * @author wenjinbiao
+     * @date  2024/07/12 17:21
+     */
+    Page<QySecondlineHzdQd> page(QySecondlineHzdQdPageParam qySecondlineHzdQdPageParam);
+
+    /**
+     * 添加二线核注单清单信息
+     *
+     * @author wenjinbiao
+     * @date  2024/07/12 17:21
+     */
+    void add(QySecondlineHzdQdAddParam qySecondlineHzdQdAddParam);
+
+    /**
+     * 编辑二线核注单清单信息
+     *
+     * @author wenjinbiao
+     * @date  2024/07/12 17:21
+     */
+    void edit(QySecondlineHzdQdEditParam qySecondlineHzdQdEditParam);
+
+    /**
+     * 删除二线核注单清单信息
+     *
+     * @author wenjinbiao
+     * @date  2024/07/12 17:21
+     */
+    void delete(List<QySecondlineHzdQdIdParam> qySecondlineHzdQdIdParamList);
+
+    /**
+     * 获取二线核注单清单信息详情
+     *
+     * @author wenjinbiao
+     * @date  2024/07/12 17:21
+     */
+    QySecondlineHzdQd detail(QySecondlineHzdQdIdParam qySecondlineHzdQdIdParam);
+
+    /**
+     * 获取二线核注单清单信息详情
+     *
+     * @author wenjinbiao
+     * @date  2024/07/12 17:21
+     **/
+    QySecondlineHzdQd queryEntity(String id);
+}

+ 94 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdqd/service/impl/QySecondlineHzdQdServiceImpl.java

@@ -0,0 +1,94 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.qysecondlinehzdqd.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.entity.QySecondlineHzdQd;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.mapper.QySecondlineHzdQdMapper;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.param.QySecondlineHzdQdAddParam;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.param.QySecondlineHzdQdEditParam;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.param.QySecondlineHzdQdIdParam;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.param.QySecondlineHzdQdPageParam;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.service.QySecondlineHzdQdService;
+
+import java.util.List;
+
+/**
+ * 二线核注单清单信息Service接口实现类
+ *
+ * @author wenjinbiao
+ * @date  2024/07/12 17:21
+ **/
+@Service
+public class QySecondlineHzdQdServiceImpl extends ServiceImpl<QySecondlineHzdQdMapper, QySecondlineHzdQd> implements QySecondlineHzdQdService {
+
+    @Override
+    public Page<QySecondlineHzdQd> page(QySecondlineHzdQdPageParam qySecondlineHzdQdPageParam) {
+        QueryWrapper<QySecondlineHzdQd> queryWrapper = new QueryWrapper<QySecondlineHzdQd>().checkSqlInjection();
+        if(ObjectUtil.isAllNotEmpty(qySecondlineHzdQdPageParam.getSortField(), qySecondlineHzdQdPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(qySecondlineHzdQdPageParam.getSortOrder());
+            queryWrapper.orderBy(true, qySecondlineHzdQdPageParam.getSortOrder().equalsIgnoreCase(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(qySecondlineHzdQdPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(QySecondlineHzdQd::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(QySecondlineHzdQdAddParam qySecondlineHzdQdAddParam) {
+        QySecondlineHzdQd qySecondlineHzdQd = BeanUtil.toBean(qySecondlineHzdQdAddParam, QySecondlineHzdQd.class);
+        this.save(qySecondlineHzdQd);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(QySecondlineHzdQdEditParam qySecondlineHzdQdEditParam) {
+        QySecondlineHzdQd qySecondlineHzdQd = this.queryEntity(qySecondlineHzdQdEditParam.getId());
+        BeanUtil.copyProperties(qySecondlineHzdQdEditParam, qySecondlineHzdQd);
+        this.updateById(qySecondlineHzdQd);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<QySecondlineHzdQdIdParam> qySecondlineHzdQdIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(qySecondlineHzdQdIdParamList, QySecondlineHzdQdIdParam::getId));
+    }
+
+    @Override
+    public QySecondlineHzdQd detail(QySecondlineHzdQdIdParam qySecondlineHzdQdIdParam) {
+        return this.queryEntity(qySecondlineHzdQdIdParam.getId());
+    }
+
+    @Override
+    public QySecondlineHzdQd queryEntity(String id) {
+        QySecondlineHzdQd qySecondlineHzdQd = this.getById(id);
+        if(ObjectUtil.isEmpty(qySecondlineHzdQd)) {
+            throw new CommonException("二线核注单清单信息不存在,id值为:{}", id);
+        }
+        return qySecondlineHzdQd;
+    }
+}

+ 8 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdtz/controller/QySecondlineHzdTzController.java

@@ -28,6 +28,7 @@ import vip.xiaonuo.biz.modular.qyrecordinfo.entity.QyRecordInfo;
 import vip.xiaonuo.biz.modular.qyrecordproduct.entity.QyRecordProduct;
 import vip.xiaonuo.biz.modular.qyrecordproduct.entity.QyRecordProduct;
 import vip.xiaonuo.biz.modular.qysecondlinehzdlist.entity.QySecondlineHzdList;
 import vip.xiaonuo.biz.modular.qysecondlinehzdlist.entity.QySecondlineHzdList;
 import vip.xiaonuo.biz.modular.qysecondlinehzdproduct.entity.QySecondlineHzdProduct;
 import vip.xiaonuo.biz.modular.qysecondlinehzdproduct.entity.QySecondlineHzdProduct;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.entity.QySecondlineHzdQd;
 import vip.xiaonuo.biz.modular.qysecondlinehzdtz.param.*;
 import vip.xiaonuo.biz.modular.qysecondlinehzdtz.param.*;
 import vip.xiaonuo.biz.modular.qysecondlinehzdtz.vo.QySecondlineHzdDetailVo;
 import vip.xiaonuo.biz.modular.qysecondlinehzdtz.vo.QySecondlineHzdDetailVo;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.annotation.CommonLog;
@@ -218,4 +219,11 @@ public class QySecondlineHzdTzController {
     public CommonResult<List<QyRecordProduct>> qyProductById(@Valid QyRecardBodyIdParam qyRecardBodyIdParam) {
     public CommonResult<List<QyRecordProduct>> qyProductById(@Valid QyRecardBodyIdParam qyRecardBodyIdParam) {
         return CommonResult.data(qySecondlineHzdTzService.qyProductById(qyRecardBodyIdParam));
         return CommonResult.data(qySecondlineHzdTzService.qyProductById(qyRecardBodyIdParam));
     }
     }
+
+    @Operation(summary = "获取所有核注清单")
+//    @SaCheckPermission("/biz/qysecondlinehzdtz/detail")
+    @GetMapping("/biz/qysecondlinehzdtz/hzdQdList")
+    public CommonResult<List<QySecondlineHzdQd>> hzdQdList() {
+        return CommonResult.data(qySecondlineHzdTzService.hzdQdList());
+    }
 }
 }

+ 3 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdtz/service/QySecondlineHzdTzService.java

@@ -20,6 +20,7 @@ import vip.xiaonuo.biz.modular.qyrecordinfo.entity.QyRecordInfo;
 import vip.xiaonuo.biz.modular.qyrecordproduct.entity.QyRecordProduct;
 import vip.xiaonuo.biz.modular.qyrecordproduct.entity.QyRecordProduct;
 import vip.xiaonuo.biz.modular.qysecondlinehzdlist.entity.QySecondlineHzdList;
 import vip.xiaonuo.biz.modular.qysecondlinehzdlist.entity.QySecondlineHzdList;
 import vip.xiaonuo.biz.modular.qysecondlinehzdproduct.entity.QySecondlineHzdProduct;
 import vip.xiaonuo.biz.modular.qysecondlinehzdproduct.entity.QySecondlineHzdProduct;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.entity.QySecondlineHzdQd;
 import vip.xiaonuo.biz.modular.qysecondlinehzdtz.entity.QySecondlineHzdTz;
 import vip.xiaonuo.biz.modular.qysecondlinehzdtz.entity.QySecondlineHzdTz;
 import vip.xiaonuo.biz.modular.qysecondlinehzdtz.param.*;
 import vip.xiaonuo.biz.modular.qysecondlinehzdtz.param.*;
 import vip.xiaonuo.biz.modular.qysecondlinehzdtz.vo.QySecondlineHzdDetailVo;
 import vip.xiaonuo.biz.modular.qysecondlinehzdtz.vo.QySecondlineHzdDetailVo;
@@ -93,4 +94,6 @@ public interface QySecondlineHzdTzService extends IService<QySecondlineHzdTz> {
     List<QyRecordInfo> qyRecordInfo();
     List<QyRecordInfo> qyRecordInfo();
 
 
     List<QyRecordProduct> qyProductById(QyRecardBodyIdParam qyRecardBodyIdParam);
     List<QyRecordProduct> qyProductById(QyRecardBodyIdParam qyRecardBodyIdParam);
+
+    List<QySecondlineHzdQd> hzdQdList();
 }
 }

+ 12 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qysecondlinehzdtz/service/impl/QySecondlineHzdTzServiceImpl.java

@@ -43,6 +43,8 @@ import vip.xiaonuo.biz.modular.qysecondlinehzdlist.service.QySecondlineHzdListSe
 import vip.xiaonuo.biz.modular.qysecondlinehzdproduct.entity.QySecondlineHzdProduct;
 import vip.xiaonuo.biz.modular.qysecondlinehzdproduct.entity.QySecondlineHzdProduct;
 import vip.xiaonuo.biz.modular.qysecondlinehzdproduct.param.QySecondlineHzdProductAddParam;
 import vip.xiaonuo.biz.modular.qysecondlinehzdproduct.param.QySecondlineHzdProductAddParam;
 import vip.xiaonuo.biz.modular.qysecondlinehzdproduct.service.QySecondlineHzdProductService;
 import vip.xiaonuo.biz.modular.qysecondlinehzdproduct.service.QySecondlineHzdProductService;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.entity.QySecondlineHzdQd;
+import vip.xiaonuo.biz.modular.qysecondlinehzdqd.service.QySecondlineHzdQdService;
 import vip.xiaonuo.biz.modular.qysecondlinehzdtz.param.*;
 import vip.xiaonuo.biz.modular.qysecondlinehzdtz.param.*;
 import vip.xiaonuo.biz.modular.qysecondlinehzdtz.vo.QySecondlineHzdDetailVo;
 import vip.xiaonuo.biz.modular.qysecondlinehzdtz.vo.QySecondlineHzdDetailVo;
 import vip.xiaonuo.common.enums.CommonSortOrderEnum;
 import vip.xiaonuo.common.enums.CommonSortOrderEnum;
@@ -75,6 +77,8 @@ public class QySecondlineHzdTzServiceImpl extends ServiceImpl<QySecondlineHzdTzM
     private QyRecardBodyService qyRecardBodyService;
     private QyRecardBodyService qyRecardBodyService;
     @Autowired
     @Autowired
     private QyRecordProductService qyRecordProductService;
     private QyRecordProductService qyRecordProductService;
+    @Autowired
+    private QySecondlineHzdQdService qySecondlineHzdQdService;
     @Override
     @Override
     public Page<QySecondlineHzdTz> page(QySecondlineHzdTzPageParam qySecondlineHzdTzPageParam) {
     public Page<QySecondlineHzdTz> page(QySecondlineHzdTzPageParam qySecondlineHzdTzPageParam) {
         QueryWrapper<QySecondlineHzdTz> queryWrapper = new QueryWrapper<QySecondlineHzdTz>().checkSqlInjection();
         QueryWrapper<QySecondlineHzdTz> queryWrapper = new QueryWrapper<QySecondlineHzdTz>().checkSqlInjection();
@@ -127,6 +131,10 @@ public class QySecondlineHzdTzServiceImpl extends ServiceImpl<QySecondlineHzdTzM
             //默认备案
             //默认备案
             qySecondlineHzdTz.setSblx("basq");
             qySecondlineHzdTz.setSblx("basq");
         }
         }
+        //生成预录入单号
+
+        //生成核注单号(审核通过时)
+
         this.save(qySecondlineHzdTz);
         this.save(qySecondlineHzdTz);
     }
     }
 
 
@@ -290,4 +298,8 @@ public class QySecondlineHzdTzServiceImpl extends ServiceImpl<QySecondlineHzdTzM
         return list;
         return list;
     }
     }
 
 
+    @Override
+    public List<QySecondlineHzdQd> hzdQdList(){
+       return qySecondlineHzdQdService.list();
+    }
 }
 }