CzRger преди 9 месеца
родител
ревизия
488965d2a2

snowy-admin-web/src/api/biz/qyRecardBodyApi.js → snowy-admin-web/src/api/yqyc/qyRecardBodyApi.js


snowy-admin-web/src/api/biz/qyRecordAttachmentApi.js → snowy-admin-web/src/api/yqyc/qyRecordAttachmentApi.js


snowy-admin-web/src/api/biz/qyRecordInfoApi.js → snowy-admin-web/src/api/yqyc/qyRecordInfoApi.js


snowy-admin-web/src/api/biz/qyRecordInfoCheckListApi.js → snowy-admin-web/src/api/yqyc/qyRecordInfoCheckListApi.js


+ 2 - 2
snowy-admin-web/src/views/biz/qyrecardbody/detail.vue

@@ -206,7 +206,7 @@
 <script setup name="qyRecardBodyDetail">
 	import { cloneDeep } from 'lodash-es'
 	import { required } from '@/utils/formRules'
-	import qyRecardBodyApi from '@/api/biz/qyRecardBodyApi'
+	import qyRecardBodyApi from '@/api/yqyc/qyRecardBodyApi'
 	// 抽屉状态
 	const emit = defineEmits({ successful: null })
 	const formRef = ref()
@@ -271,4 +271,4 @@
 </script>
 
 <style lang="less" scoped>
-</style>
+</style>

+ 2 - 2
snowy-admin-web/src/views/biz/qyrecardbody/index.vue

@@ -50,7 +50,7 @@
 <script setup name="qyrecardbody">
 	import { cloneDeep } from 'lodash-es'
 	import Detail from './detail.vue'
-	import qyRecardBodyApi from '@/api/biz/qyRecardBodyApi'
+	import qyRecardBodyApi from '@/api/yqyc/qyRecardBodyApi'
 	import downloadUtil from "@/utils/downloadUtil";
     const { proxy } = getCurrentInstance()
 	const tableRef = ref()
@@ -295,4 +295,4 @@
 </script>
 
 <style lang="less" scoped>
-</style>
+</style>

+ 2 - 2
snowy-admin-web/src/views/biz/qyrecordattachment/detail.vue

@@ -46,7 +46,7 @@
 <script setup name="qyRecordAttachmentDetail">
 	import { cloneDeep } from 'lodash-es'
 	import { required } from '@/utils/formRules'
-	import qyRecordAttachmentApi from '@/api/biz/qyRecordAttachmentApi'
+	import qyRecordAttachmentApi from '@/api/yqyc/qyRecordAttachmentApi'
 	// 抽屉状态
 	const emit = defineEmits({ successful: null })
 	const formRef = ref()
@@ -99,4 +99,4 @@
 </script>
 
 <style lang="less" scoped>
-</style>
+</style>

+ 2 - 2
snowy-admin-web/src/views/biz/qyrecordattachment/index.vue

@@ -50,7 +50,7 @@
 <script setup name="qyrecordattachment">
 	import { cloneDeep } from 'lodash-es'
 	import Detail from './detail.vue'
-	import qyRecordAttachmentApi from '@/api/biz/qyRecordAttachmentApi'
+	import qyRecordAttachmentApi from '@/api/yqyc/qyRecordAttachmentApi'
 	import downloadUtil from "@/utils/downloadUtil";
     const { proxy } = getCurrentInstance()
 	const tableRef = ref()
@@ -167,4 +167,4 @@
 </script>
 
 <style lang="less" scoped>
-</style>
+</style>

+ 1 - 1
snowy-admin-web/src/views/biz/qyrecordinfo/detail.vue

@@ -87,7 +87,7 @@
 	import tool from '@/utils/tool'
 	import { cloneDeep } from 'lodash-es'
 	import { required } from '@/utils/formRules'
-	import qyRecordInfoApi from '@/api/biz/qyRecordInfoApi'
+	import qyRecordInfoApi from '@/api/yqyc/qyRecordInfoApi'
 	// 抽屉状态
 	const emit = defineEmits({ successful: null })
 	const formRef = ref()

+ 2 - 2
snowy-admin-web/src/views/biz/qyrecordinfo/index.vue

@@ -92,7 +92,7 @@
 	import tool from '@/utils/tool'
 	import { cloneDeep } from 'lodash-es'
 	import Detail from './detail.vue'
-	import qyRecordInfoApi from '@/api/biz/qyRecordInfoApi'
+	import qyRecordInfoApi from '@/api/yqyc/qyRecordInfoApi'
 	import downloadUtil from "@/utils/downloadUtil";
     const { proxy } = getCurrentInstance()
 	const searchFormState = ref({})
@@ -255,4 +255,4 @@
 </script>
 
 <style lang="less" scoped>
-</style>
+</style>

+ 2 - 2
snowy-admin-web/src/views/biz/qyrecordinfochecklist/detail.vue

@@ -52,7 +52,7 @@
 	import tool from '@/utils/tool'
 	import { cloneDeep } from 'lodash-es'
 	import { required } from '@/utils/formRules'
-	import qyRecordInfoCheckListApi from '@/api/biz/qyRecordInfoCheckListApi'
+	import qyRecordInfoCheckListApi from '@/api/yqyc/qyRecordInfoCheckListApi'
 	// 抽屉状态
 	const emit = defineEmits({ successful: null })
 	const formRef = ref()
@@ -109,4 +109,4 @@
 </script>
 
 <style lang="less" scoped>
-</style>
+</style>

+ 2 - 2
snowy-admin-web/src/views/biz/qyrecordinfochecklist/index.vue

@@ -56,7 +56,7 @@
 <script setup name="qyrecordinfochecklist">
 	import { cloneDeep } from 'lodash-es'
 	import Detail from './detail.vue'
-	import qyRecordInfoCheckListApi from '@/api/biz/qyRecordInfoCheckListApi'
+	import qyRecordInfoCheckListApi from '@/api/yqyc/qyRecordInfoCheckListApi'
 	import downloadUtil from "@/utils/downloadUtil";
     const { proxy } = getCurrentInstance()
 	const tableRef = ref()
@@ -177,4 +177,4 @@
 </script>
 
 <style lang="less" scoped>
-</style>
+</style>

+ 54 - 26
snowy-admin-web/src/views/yqyc/zero/enterprise-ledger/detail.vue

@@ -94,7 +94,7 @@
 				</a-form>
 			</a-collapse-panel>
 			<a-collapse-panel key="2" header="表体信息">
-				<a-button type="primary" @click="onBodyReset">重置</a-button>
+				<a-button type="primary" @click="onBodyReset" v-if="!isView">重置</a-button>
 				<a-form ref="bodyFormRef" :model="bodyData" :rules="bodyRules" layout="inline" style="margin-bottom: 20px;">
 					<a-row :gutter="[0, 16]">
 						<a-col :span="8">
@@ -274,12 +274,14 @@
 						</a-col>
 					</a-row>
 				</a-form>
-				<a-button type="primary" style="margin-right: 8px;" v-if="!(bodyData.id || bodyData.__index)" @click="onBodyAdd">插入</a-button>
-				<a-button type="primary" style="margin-right: 8px;" v-else @click="onBodyEdit">保存</a-button>
-				<xn-batch-delete
-					:selectedRowKeys="bodySelectedRowKeys"
-					@batchDelete="deleteBatchBody"
-				/>
+				<template v-if="!isView">
+					<a-button type="primary" style="margin-right: 8px;" v-if="!(bodyData.id || bodyData.__index)" @click="onBodyAdd">插入</a-button>
+					<a-button type="primary" style="margin-right: 8px;" v-else @click="onBodyEdit">保存</a-button>
+					<xn-batch-delete
+						:selectedRowKeys="bodySelectedRowKeys"
+						@batchDelete="deleteBatchBody"
+					/>
+				</template>
 				<a-table
 					style="margin-top: 10px"
 					bordered
@@ -303,15 +305,21 @@
 				</a-table>
 			</a-collapse-panel>
 			<a-collapse-panel key="3" header="附件信息">
-				<div>
-					友情提示<br/>
-					1、附件大小要求不超过4M,如果文件过大,建议拆分多个上传;<br/>
-					2、附件格式要求:PDF文件;<br/>
-					3、同一附件类型可以上传多个附件;<br/>
-					4、附件传输过程中会出现传输失败的情况,请随时关注附件传输状态;<br/>
-					5、要求上传复印件的可上传原件的扫描件。
-				</div>
-				<xn-upload ref="ref_upload" v-model:value="fileData.fileUrl" @onChange="fileChange" accept=".pdf" v-if="showFileUpload"/>
+				<template v-if="!isView">
+					<div>
+						友情提示<br/>
+						1、附件大小要求不超过4M,如果文件过大,建议拆分多个上传;<br/>
+						2、附件格式要求:PDF文件;<br/>
+						3、同一附件类型可以上传多个附件;<br/>
+						4、附件传输过程中会出现传输失败的情况,请随时关注附件传输状态;<br/>
+						5、要求上传复印件的可上传原件的扫描件。
+					</div>
+					<xn-upload ref="ref_upload" v-model:value="fileData.fileUrl" @onChange="fileChange" accept=".pdf" v-if="showFileUpload"/>
+					<xn-batch-delete
+						:selectedRowKeys="fileSelectedRowKeys"
+						@batchDelete="deleteBatchFile"
+					/>
+				</template>
 				<a-table
 					style="margin-top: 10px"
 					bordered
@@ -335,11 +343,9 @@
 						</template>
 						<template v-if="column.dataIndex === 'action'">
 							<template v-if="isView">
-								<a-button type="link" primary size="small" @click="onBodyReset(), bodyData = cloneDeep(record)">查看</a-button>
 							</template>
 							<template v-else>
-								<a-button type="link" primary size="small" @click="onBodyReset(), bodyData = cloneDeep(record)">编辑</a-button>
-								<a-button type="link" danger size="small" @click="onFileDel(index)">删除</a-button>
+								<a-button type="link" danger size="small" @click="onFileDel(index)" v-if="!isView">删除</a-button>
 							</template>
 						</template>
 					</template>
@@ -353,7 +359,7 @@
 import tool from '@/utils/tool'
 import {cloneDeep} from 'lodash-es'
 import {required} from '@/utils/formRules'
-import qyRecordInfoApi from '@/api/biz/qyRecordInfoApi'
+import qyRecordInfoApi from '@/api/yqyc/qyRecordInfoApi'
 import {message, Modal} from "ant-design-vue";
 import {createVNode} from "vue";
 import {ExclamationCircleOutlined} from "@ant-design/icons-vue";
@@ -398,11 +404,17 @@ const fileOptions = {
 	}
 }
 // 打开抽屉
-const onOpen = (record, view = false) => {
+const onOpen = (record, view = false, type) => {
 	isView.value = view
 	if (record) {
-		let recordData = cloneDeep(record)
-		formData.value = Object.assign({}, recordData)
+		qyRecordInfoApi.qyRecordInfoDetail({id: record.id}).then(res => {
+			formData.value = res
+			bodyList.value = res.qyRecardBodyAddParams
+			fileList.value = res.qyRecordAttachmentAddParams
+			if (type) {
+				formData.value.applyType = type
+			}
+		})
 	} else {
 		formData.value.companyCode = userInfo.companyNumber
 		formData.value.companyName = userInfo.companyName
@@ -665,12 +677,14 @@ const onSubmit = () => {
 	.then(() => {
 		submitLoading.value = true
 		const formDataParam = cloneDeep(formData.value)
-		if (formDataParam.id) {
+		if (!formDataParam.id) {
 			formDataParam.qyRecardBodyAddParams = bodyList.value
 			formDataParam.qyRecordAttachmentAddParams = fileList.value
 		} else {
 			formDataParam.qyRecardBodyEditParams = bodyList.value
 			formDataParam.qyRecordAttachmentEditParams = fileList.value
+			delete formDataParam.qyRecardBodyAddParams
+			delete formDataParam.qyRecordAttachmentAddParams
 		}
 		formDataParam.status = '2'
 		qyRecordInfoApi
@@ -693,12 +707,14 @@ const onTemp = () => {
 	.then(() => {
 		submitLoading.value = true
 		const formDataParam = cloneDeep(formData.value)
-		if (formDataParam.id) {
+		if (!formDataParam.id) {
 			formDataParam.qyRecardBodyAddParams = bodyList.value
 			formDataParam.qyRecordAttachmentAddParams = fileList.value
 		} else {
 			formDataParam.qyRecardBodyEditParams = bodyList.value
 			formDataParam.qyRecordAttachmentEditParams = fileList.value
+			delete formDataParam.qyRecardBodyAddParams
+			delete formDataParam.qyRecordAttachmentAddParams
 		}
 		formDataParam.status = '1'
 		qyRecordInfoApi
@@ -722,7 +738,7 @@ const onBodyAdd = () => {
 	bodyFormRef.value
 	.validate()
 	.then(() => {
-		bodyList.value.push(Object.assign({__index: bodyList.value.length + 1}, bodyData.value))
+		bodyList.value.push(Object.assign({__index: new Date().getTime()}, bodyData.value))
 		onBodyReset()
 		message.success('插入表体信息成功!')
 	})
@@ -792,6 +808,7 @@ const fileChange = (file) => {
 	if (file) {
 		const f = ref_upload.value.uploadFileList()[0]
 		fileList.value.push({
+			__index: new Date().getTime(),
 			attachmentUrl: f.url,
 			attachmentName: f.name,
 			attachmentFormat: getFileExtension(f.name),
@@ -818,6 +835,17 @@ const onFileDel = (recode, index) => {
 		},
 	});
 }
+const deleteBatchFile = () => {
+	fileList.value = fileList.value.filter(v => {
+		let flag = true
+		bodySelectedRowKeys.value.forEach(s => {
+			if ((v.id && (v.id === s.id)) || (v.__index && (v.__index === s.__index))) {
+				flag = false
+			}
+		})
+		return flag
+	})
+}
 // 抛出函数
 defineExpose({
 	onOpen

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

@@ -48,11 +48,11 @@
 						<template #icon><plus-outlined /></template>
 						新增
 					</a-button>
-					<xn-batch-delete
-						v-if="hasPerm('qyRecordInfoDelete')"
-						:selectedRowKeys="selectedRowKeys"
-						@batchDelete="deleteBatchQyRecordInfo"
-					/>
+<!--					<xn-batch-delete-->
+<!--						v-if="hasPerm('qyRecordInfoDelete')"-->
+<!--						:selectedRowKeys="selectedRowKeys"-->
+<!--						@batchDelete="deleteBatchQyRecordInfo"-->
+<!--					/>-->
 					<a-button @click="onExport" v-if="hasPerm('qyRecordInfoBatchExport')">
                         <template #icon><export-outlined /></template>
                         批量导出
@@ -69,12 +69,18 @@
 				<template v-if="column.dataIndex === 'companyType'">
 					{{ $TOOL.dictTypeData('qylx', record.companyType) }}
 				</template>
+				<template v-if="column.dataIndex === 'status'">
+					{{ $TOOL.dictTypeData('djzt', record.status) }}
+				</template>
 				<template v-if="column.dataIndex === 'action'">
 					<a-space>
 					    <a @click="onDetail(record, true)" v-if="hasPerm('qyRecordInfoView')">查看</a>
-						<a @click="onDetail(record)" v-if="hasPerm('qyRecordInfoEdit')">编辑</a>
+					    <a @click="onBack(record)" v-if="record.status == 2">撤回</a>
+						<a @click="onDetail(record)" v-if="hasPerm('qyRecordInfoEdit') && record.status == 1">编辑</a>
+						<a @click="resultDetailRef.onOpen(record)" v-if="record.status == 3 || record.status == 4">查看回执</a>
+						<a @click="onDetail.onOpen(record, false, 'bgsq')" v-if="record.status == 3">变更</a>
 						<a-popconfirm title="确定要删除吗?" @confirm="deleteQyRecordInfo(record)">
-							<a-button type="link" danger size="small" v-if="hasPerm('qyRecordInfoDelete')">删除</a-button>
+							<a-button type="link" danger size="small" v-if="hasPerm('qyRecordInfoDelete') && (record.status == 1 || record.status == 4)">删除</a-button>
 						</a-popconfirm>
 					</a-space>
 				</template>
@@ -82,18 +88,24 @@
 		</s-table>
 	</a-card>
 	<Detail v-else ref="detailRef" @onClose="indexShow = true" @successful="onSearch()" />
+	<ResultDetail ref="resultDetailRef"/>
 </template>
 
 <script setup name="qyrecordinfo">
 	import tool from '@/utils/tool'
 	import { cloneDeep } from 'lodash-es'
 	import Detail from './detail.vue'
-	import qyRecordInfoApi from '@/api/biz/qyRecordInfoApi'
+	import qyRecordInfoApi from '@/api/yqyc/qyRecordInfoApi'
 	import downloadUtil from "@/utils/downloadUtil";
+	import ResultDetail from "./result.vue";
+	import {Modal} from "ant-design-vue";
+	import {createVNode} from "vue";
+	import {ExclamationCircleOutlined} from "@ant-design/icons-vue";
     const { proxy } = getCurrentInstance()
 	const searchFormState = ref({})
 	const searchFormStateReal = ref(searchFormState.value) // 点击搜索后备份的查询参数
 	const searchFormRef = ref()
+	const resultDetailRef = ref()
 	const tableRef = ref()
 	const filterParam = ref({})
 	const detailRef = ref()
@@ -241,12 +253,35 @@
         })
     }
 	// 切换至表单
-    const onDetail = (record = null, view) => {
+    const onDetail = (record = null, view, type) => {
     	indexShow.value = false
     	nextTick(() => {
-            detailRef.value.onOpen(record, view)
+            detailRef.value.onOpen(record, view, type)
     	})
     }
+	const onBack = (record) => {
+		Modal.confirm({
+			title: '提示',
+			icon: createVNode(ExclamationCircleOutlined),
+			content: '确定要对该企业台账进行撤回操作?',
+			centered: true,
+			onOk() {
+				qyRecordInfoApi.qyRecordInfoDetail({id: record.id}).then(res => {
+					const formDataParam = res
+					formDataParam.status = '1'
+					formDataParam.qyRecardBodyEditParams = res.qyRecardBodyAddParams
+					formDataParam.qyRecordAttachmentEditParams = res.qyRecordAttachmentAddParams
+					delete formDataParam.qyRecardBodyAddParams
+					delete formDataParam.qyRecordAttachmentAddParams
+					qyRecordInfoApi.qyRecordInfoSubmitForm(formDataParam, formDataParam.id).then(() => {
+						onSearch()
+					})
+				})
+			},
+			onCancel() {
+			},
+		});
+	}
 	const tzTypeOptions = tool.dictList('tzlx')
 	const companyTypeOptions = tool.dictList('qylx')
 </script>

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

@@ -0,0 +1,79 @@
+<template>
+	<a-modal
+		v-model:open="open"
+		title="查看回执"
+		centered
+		width="90%"
+	>
+		<div class="result-detail">
+			<a-page-header
+				:title="formData.companyName"
+				:avatar="{ src: qyImg }"
+			>
+				<template #tags>
+					<a-tag :color="formData.status == 3 ? 'green' : 'red'">{{ $TOOL.dictTypeData('djzt', formData.status) }}</a-tag>
+					<a-tooltip :title="resultList[resultList.length - 1]?.result">
+						<InfoCircleOutlined />
+					</a-tooltip>
+				</template>
+			</a-page-header>
+			<a-table
+				style="margin-top: 10px"
+				bordered
+				:dataSource="resultList"
+				:columns="[
+				  {title: '单据类型',dataIndex: 'applyType',key: 'applyType'},
+				  {title: '审核状态',dataIndex: 'status',key: 'status'},
+				  {title: '申请人',dataIndex: 'companyName',key: 'companyName'},
+				  {title: '审核人',dataIndex: 'applyMan',key: 'applyMan'},
+				  {title: '审核时间',dataIndex: 'checkTime',key: 'checkTime'},
+				  {title: '审核结果回执',dataIndex: 'result',key: 'result'},
+				]"
+				:pagination="false"
+			>
+			</a-table>
+		</div>
+		<template #footer></template>
+	</a-modal>
+</template>
+
+<script setup name="enterpriseDetail">
+import tool from '@/utils/tool'
+import {cloneDeep} from 'lodash-es'
+// 抽屉状态
+const open = ref(false)
+const emit = defineEmits({successful: null})
+const formRef = ref()
+// 表单数据
+const formData = ref({})
+const resultList = ref([])
+import qyImg from '@/views/yqyc/zero/enterprise-qualification/qy.png'
+import qyRecordInfoCheckListApi from "@/api/yqyc/qyRecordInfoCheckListApi";
+
+// 打开抽屉
+const onOpen = (record, view = false) => {
+	open.value = true
+	if (record) {
+		formData.value = Object.assign({}, record)
+		qyRecordInfoCheckListApi.qyRecordInfoCheckListPage({current: 1, size: 100, ylTzCode: record.ylTzCode}).then(res => {
+			resultList.value = res.records
+		})
+	}
+}
+// 关闭抽屉
+const onClose = () => {
+	formRef.value.resetFields()
+	formData.value = {}
+	open.value = false
+}
+// 抛出函数
+defineExpose({
+	onOpen
+})
+</script>
+<style lang="less" scoped>
+.goods-detail {
+	max-height: 800px;
+	overflow-y: auto;
+}
+</style>

+ 1 - 1
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/qyrecordinfochecklist/controller/QyRecordInfoCheckListController.java

@@ -62,7 +62,7 @@ public class QyRecordInfoCheckListController {
      * @date  2024/07/06 15:05
      */
     @Operation(summary = "获取企业备案信息回执单列表分页")
-    @SaCheckPermission("/biz/qyrecordinfochecklist/page")
+//    @SaCheckPermission("/biz/qyrecordinfochecklist/page")
     @GetMapping("/biz/qyrecordinfochecklist/page")
     public CommonResult<Page<QyRecordInfoCheckList>> page(QyRecordInfoCheckListPageParam qyRecordInfoCheckListPageParam) {
         return CommonResult.data(qyRecordInfoCheckListService.page(qyRecordInfoCheckListPageParam));