经营管理主体修改

This commit is contained in:
13713575202 2025-04-27 15:50:37 +08:00
parent 30fdd2100c
commit b27bc1ba09
4 changed files with 153 additions and 238 deletions

View File

@ -48,13 +48,13 @@ export default [
path: '/sub-government-affairs-service/examineList',
component: () => import('@/views/productOperateMain/examine/list.vue'),
name: 'examineList',
meta: { title: '主体审核管理', icon: 'Document' },
meta: { title: '待审核', icon: 'Document' },
},
{
path: '/sub-government-affairs-service/examineRecord',
component: () => import('@/views/productOperateMain/examine/record.vue'),
name: 'examineRecord',
meta: { title: '主体审核历史', icon: 'Document' },
meta: { title: '审核历史', icon: 'Document' },
},
],
},

View File

@ -39,7 +39,7 @@
</template>
<template #status="{ row }">
<el-tag v-if="row.status == '0'" type="warning" size="small">待审核</el-tag>
<el-tag v-if="row.status == '0' || !row.status" type="warning" size="small">待审核</el-tag>
<el-tag v-if="row.status == '1'" type="success" size="small">通过</el-tag>
<el-tag v-if="row.status == '2'" type="danger" size="small">拒绝</el-tag>
</template>
@ -87,7 +87,6 @@ let businessType = reactive({
label: '主体类型',
prop: 'businessType',
type: 'radio',
className: 'el-col-md-24',
props: {
label: 'dictLabel',
value: 'dictValue',
@ -343,6 +342,7 @@ const state = reactive({
},
{
...businessType,
className: 'el-col-md-24',
change: (val) => bTypeChange(val.value),
},
{
@ -496,8 +496,8 @@ const state = reactive({
editDisabled: true,
viewDisabled: true,
dicData: [
{ label: '是', value: '1' },
{ label: '否', value: '0' },
{ label: '是', value: 1 },
{ label: '否', value: 0 },
],
},
{
@ -586,6 +586,9 @@ const loadData = (resetPage) => {
if (res.code === 200) {
const { current, size, total, records } = res.data;
state.data = records;
state.data = state.data.map((m) => {
return { ...m, addressCode: [m.provinceCode, m.cityCode, m.countyCode, m.townCode] };
});
pageData.value.total = res.data.total;
}
})

View File

@ -3,8 +3,8 @@
<avue-crud
ref="crudRef"
v-model="state.form"
v-model:search="state.query"
v-model:page="state.pageData"
v-model:search="searchCondition"
v-model:page="pageData"
:table-loading="state.loading"
:data="state.data"
:option="state.options"
@ -35,7 +35,7 @@
<Attrs v-model:attrs="permitUrl" :type="'view'" :limit="1" />
</template>
<template #status="{ row }">
<el-tag v-if="row.status == '0'" type="warning" size="small">待审核</el-tag>
<el-tag v-if="row.status == '0' || !row.status" type="warning" size="small">待审核</el-tag>
<el-tag v-if="row.status == '1'" type="success" size="small">通过</el-tag>
<el-tag v-if="row.status == '2'" type="danger" size="small">拒绝</el-tag>
</template>
@ -48,7 +48,7 @@
<script setup>
import { reactive, ref } from 'vue';
import { useApp } from '@/hooks';
import { CRUD_OPTIONS } from '@/config';
import { CRUD_OPTIONS, pageData } from '@/config';
import { isEmpty, downloadFile } from '@/utils';
import { useUserStore } from '@/store/modules/user';
import { getBuinesCheckList, doBusinessCheck, exportBusinessCheck } from '@/apis/productOperateMain';
@ -77,6 +77,16 @@ const auditStatusOptions = reactive([
{ label: '已拒绝', value: '2' },
]);
const searchCondition = ref({
businessType: null,
businessId: '',
productType: '', //
createStartTime: '',
createEndTime: '',
primaryProduct: '',
status: null,
});
const attrs = ref([]);
const permitUrl = ref([]);
@ -113,7 +123,6 @@ let businessType = reactive({
label: '主体类型',
prop: 'businessType',
type: 'radio',
className: 'el-col-md-24',
props: {
label: 'dictLabel',
value: 'dictValue',
@ -135,6 +144,12 @@ let businessType = reactive({
},
});
const searchDateChange = (val) => {
// console.info('searchDateChange', val);
searchCondition.value.createStartTime = val[0] || '';
searchCondition.value.createEndTime = val[1] || '';
};
const state = reactive({
loading: false,
query: {
@ -152,6 +167,7 @@ const state = reactive({
searchGutter: 100,
searchMenuPosition: 'center',
updateBtnText: '审核',
updateBtn: false,
column: [
{
...businessType,
@ -301,40 +317,20 @@ const state = reactive({
{ label: '创建时间', prop: 'createTime', ...columnHide, width: '160px', search: false },
],
searchColumn: [
{ label: '主体代码', prop: 'landName', search: true },
{ label: '主体名称', prop: 'crop', search: true },
{
...businessType,
button: true,
searchSpan: 24,
},
{ label: '主体代码', prop: 'id', search: true },
{ label: '主体名称', prop: 'businessName', search: true },
{
label: '审核状态',
prop: 'auditStatus',
prop: 'status',
type: 'select',
search: true,
dicData: auditStatusOptions,
},
{
label: '主体类型',
prop: 'operationType',
type: 'select',
search: true,
props: {
label: 'dictLabel',
value: 'dictValue',
},
dicUrl: `${VITE_APP_BASE_API}/system/dict/data/list`,
dicQuery: {
dictType: 'sys_business_type',
current: 1,
size: 10,
},
dicHeaders: {
authorization: UserStore.token,
},
dicFormatter: (res) => {
return (res.data.records ?? []).map((item) => ({
...item,
dictValue: Number(item.dictValue),
}));
},
},
{
label: '创建日期',
prop: 'operationDate',
@ -343,6 +339,7 @@ const state = reactive({
valueFormat: 'YYYY-MM-DD',
width: 200,
search: true,
change: (val) => searchDateChange(val.value),
},
],
group: [
@ -359,6 +356,7 @@ const state = reactive({
{
...businessType,
...groupDisabled,
className: 'el-col-md-24',
},
{
label: '经营产品种类',
@ -524,8 +522,8 @@ const state = reactive({
editDisplay: true,
addDisplay: false,
dicData: [
{ label: '是', value: '1' },
{ label: '否', value: '0' },
{ label: '是', value: 1 },
{ label: '否', value: 0 },
],
},
{
@ -559,18 +557,30 @@ const state = reactive({
});
//
const loadData = () => {
const loadData = (resetPage) => {
resetPage === 1 && (pageData.value.currentPage = 1);
state.loading = true;
getBuinesCheckList(state.query)
let searchParmer = {
...searchCondition.value,
};
delete searchParmer.operationDate;
let params = Object.assign(
{
current: pageData.value.currentPage,
size: pageData.value.size,
},
searchParmer
);
getBuinesCheckList(params)
.then((res) => {
if (res.code === 200) {
const { current, size, total, records } = res.data;
state.data = records;
state.pageData = {
currentPage: current || 1,
pageSize: size || 10,
total: total,
};
state.data = state.data.map((m) => {
return { ...m, addressCode: [m.provinceCode, m.cityCode, m.countyCode, m.townCode] };
});
pageData.value.total = res.data.total;
}
})
.catch((err) => {
@ -665,6 +675,9 @@ const doExam = (row) => {
attrs.value = [row.businessLicense] || [];
permitUrl.value = [row.businessPermitUrl] || [];
beforeOpen(row.businessType);
state.options.updateBtn = !row.status || row.status == 0 ? true : false;
// state.options.group[state.options.group.length - 1].column[0].disabled = !row.status || row.status == 0 ? false : true;
state.options.group[state.options.group.length - 1].column[1].disabled = !row.status || row.status == 0 ? false : true;
crudRef.value && crudRef.value.rowEdit(row);
};
@ -676,7 +689,7 @@ const rowUpdate = (row, index, done, loading) => {
reviewSuggestion: row.reviewSuggestion,
};
console.info('审核params', params);
// console.info('params', params);
doBusinessCheck(params)
.then((res) => {
if (res.code === 200) {

View File

@ -3,14 +3,23 @@
<avue-crud
ref="crudRef"
v-model="state.form"
v-model:search="state.query"
v-model:page="state.pageData"
v-model:search="searchCondition"
v-model:page="pageData"
:table-loading="state.loading"
:data="state.data"
:option="state.options"
@refresh-change="refreshChange"
@search-reset="searchChange"
@search-change="searchChange"
@refresh-change="loadData"
@search-reset="
() => {
loadData(1);
}
"
@search-change="
(form, done) => {
loadData(1);
done();
}
"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@ -19,7 +28,7 @@
<el-button type="success" icon="download" @click="onExport">导出</el-button>
</template>
<template #status="{ row }">
<el-tag v-if="row.status == '0'" type="warning" size="small">待审核</el-tag>
<el-tag v-if="row.status == '0' || !row.status" type="warning" size="small">待审核</el-tag>
<el-tag v-if="row.status == '1'" type="success" size="small">通过</el-tag>
<el-tag v-if="row.status == '2'" type="danger" size="small">拒绝</el-tag>
</template>
@ -32,7 +41,7 @@
<script setup>
import { reactive, ref } from 'vue';
import { useApp } from '@/hooks';
import { CRUD_OPTIONS } from '@/config';
import { CRUD_OPTIONS, pageData } from '@/config';
import { isEmpty, downloadFile } from '@/utils';
import { useUserStore } from '@/store/modules/user';
import { getBuinesCheckRecord, exportBusinessCheckRecord } from '@/apis/productOperateMain';
@ -42,23 +51,27 @@ const app = useApp();
const UserStore = useUserStore();
const crudRef = ref(null);
const bTypeOptions = reactive([
{ label: '个体', value: '0' },
{ label: '村集体', value: '1' },
{ label: '合作社', value: '2' },
{ label: '企业', value: '3' },
]);
const auditStatusOptions = reactive([
{ label: '待审核', value: '0' },
{ label: '已通过', value: '1' },
{ label: '已拒绝', value: '2' },
]);
const productTypeOptions = reactive([
{ label: '蔬菜', value: '0' },
{ label: '水果', value: '1' },
]);
const searchCondition = ref({
businessType: null,
businessId: '',
productType: '', //
createStartTime: '',
createEndTime: '',
primaryProduct: '',
status: null,
});
const searchDateChange = (val) => {
// console.info('searchDateChange', val);
searchCondition.value.createStartTime = val[0] || '';
searchCondition.value.createEndTime = val[1] || '';
};
const state = reactive({
loading: false,
@ -95,13 +108,17 @@ const state = reactive({
dicHeaders: {
authorization: UserStore.token,
},
dicFormatter: (res) => res.data.records ?? [],
dicFormatter: (res) => {
return (res.data.records ?? []).map((item) => ({
...item,
dictValue: Number(item.dictValue),
}));
},
rules: { required: true, message: '请选择', trigger: 'blur' },
},
{
label: '主体代码',
prop: 'id',
width: '120px',
ellipsis: true,
showOverflowTooltip: true,
addDisplay: false,
@ -214,7 +231,7 @@ const state = reactive({
},
{
label: '审核意见',
prop: 'remark',
prop: 'reviewSuggestion',
addDisplay: false,
editDisplay: false,
width: '200px',
@ -229,8 +246,15 @@ const state = reactive({
{ label: '创建时间', prop: 'createTime', width: '180px', addDisplay: false, editDisplay: false, search: false },
],
searchColumn: [
{ label: '主体代码', prop: 'landName', search: true },
{ label: '主体名称', prop: 'crop', search: true },
{ label: '主体代码', prop: 'id', search: true },
{ label: '主体名称', prop: 'businessName', search: true },
{
label: '审核状态',
prop: 'status',
type: 'select',
search: true,
dicData: auditStatusOptions,
},
{
label: '经营产品种类',
prop: 'productType',
@ -256,10 +280,27 @@ const state = reactive({
},
{
label: '主体类型',
prop: 'operationType',
type: 'select',
search: true,
dicData: bTypeOptions,
prop: 'businessType',
type: 'radio',
props: {
label: 'dictLabel',
value: 'dictValue',
},
dicUrl: `${VITE_APP_BASE_API}/system/dict/data/list`,
dicQuery: {
dictType: 'sys_business_type',
current: 1,
size: 10,
},
dicHeaders: {
authorization: UserStore.token,
},
dicFormatter: (res) => {
return (res.data.records ?? []).map((item) => ({
...item,
dictValue: Number(item.dictValue),
}));
},
},
{
label: '创建日期',
@ -269,161 +310,7 @@ const state = reactive({
valueFormat: 'YYYY-MM-DD',
width: 200,
search: true,
},
],
group: [
{
label: '基本信息>',
prop: 'caseInfo',
column: [
{
label: '主体代码',
prop: 'taskCode',
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '主体名称',
prop: 'taskCode',
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '主体类型',
prop: 'bType',
type: 'select',
dicData: bTypeOptions,
rules: { required: true, message: '请选择', trigger: 'blur' },
},
{
label: '经营产品种类',
type: 'select',
dicData: productTypeOptions,
rules: { required: true, message: '请选择', trigger: 'blur' },
},
{
label: '主要产品',
prop: 'product',
rules: { required: false, message: '请输入', trigger: 'blur' },
},
{
label: '合作社规模',
prop: 'inspectionType',
rules: { required: false, message: '请选择', trigger: 'blur' },
},
{
label: '负责人',
prop: 'inspectionTarget',
rules: { required: false, message: '请输入', trigger: 'blur' },
},
{
label: '负责人电话',
prop: 'inspectionTarget',
rules: { required: false, message: '请输入', trigger: 'blur' },
},
{
label: '联系地址',
prop: 'inspectionTarget',
rules: { required: true, message: '请输入', trigger: 'blur' },
type: 'select',
props: {
label: 'areaName',
value: 'areaCode',
children: 'areaChildVOS',
},
dicUrl: `${VITE_APP_BASE_API}/system/area/region?areaCode=530000`,
dicHeaders: {
authorization: UserStore.token,
},
dicFormatter: (res) => res.data ?? [],
},
{
label: '详细地址',
prop: 'notes',
rules: { required: true, message: '请输入', trigger: 'blur' },
},
],
},
{
label: '营业执照>',
prop: 'caseInfo',
column: [
{
label: '统一社会信用代码',
prop: 'notes',
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '营业执照',
prop: 'license',
},
{
label: '有效期至',
prop: 'operationDate',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
width: 200,
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '经营项目',
prop: 'inspectionSituation',
rules: { required: true, message: '请输入', trigger: 'blur' },
},
],
},
{
label: '经营许可证>',
prop: 'caseInfo',
column: [
{
label: '经营许可证编号',
prop: 'operationType',
rules: { required: false, message: '请输入', trigger: 'blur' },
},
{
label: '经营许可证',
prop: 'permit',
rules: { required: false, message: '请选择', trigger: 'blur' },
},
{
label: '有效期至',
prop: 'operationDate',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
width: 200,
rules: { required: true, message: '请输入', trigger: 'blur' },
},
],
},
{
label: '审核操作>',
prop: 'caseInfo',
column: [
{
label: '是否通过',
prop: 'status',
span: 24,
display: true,
type: 'radio',
editDisplay: true,
addDisplay: false,
dicData: [
{ label: '是', value: 1 },
{ label: '否', value: 0 },
],
},
{
label: '审核意见',
prop: 'reviewSuggestion',
type: 'textarea',
span: 24,
minRows: 3, //
maxRows: 5, //
overHidden: true,
width: 200,
},
],
change: (val) => searchDateChange(val.value),
},
],
},
@ -437,18 +324,30 @@ const state = reactive({
});
//
const loadData = () => {
const loadData = (resetPage) => {
resetPage === 1 && (pageData.value.currentPage = 1);
state.loading = true;
getBuinesCheckRecord(state.query)
let searchParmer = {
...searchCondition.value,
};
delete searchParmer.operationDate;
let params = Object.assign(
{
current: pageData.value.currentPage,
size: pageData.value.size,
},
searchParmer
);
getBuinesCheckRecord(params)
.then((res) => {
if (res.code === 200) {
const { current, size, total, records } = res.data;
state.data = records;
state.pageData = {
currentPage: current || 1,
pageSize: size || 10,
total: total,
};
state.data = state.data.map((m) => {
return { ...m, addressCode: [m.provinceCode, m.cityCode, m.countyCode, m.townCode] };
});
pageData.value.total = res.data.total;
}
})
.catch((err) => {