Browse Source

增加成本提交判重

master
wang 2 months ago
parent
commit
050c18be31
  1. BIN
      dist.zip
  2. 22
      src/constants/system/review-const.js
  3. 1
      src/views/business/erp/cost/firm-reports-form.vue
  4. 6
      src/views/business/erp/letter/letter-list.vue
  5. 68
      src/views/business/erp/service/service-applications-list.vue
  6. 50
      src/views/business/erp/service/service-applications-report-list.vue

BIN
dist.zip

Binary file not shown.

22
src/constants/system/review-const.js

@ -1,5 +1,5 @@
/* /*
* 审核状态 * 服务列表状态
*/ */
export const REVIEW_ENUM = { export const REVIEW_ENUM = {
NOSUBMIT: { NOSUBMIT: {
@ -39,7 +39,27 @@ export const QUARTER_ENUM = {
desc: '第四季度', desc: '第四季度',
}, },
}; };
/*
* 服务审核状态
*/
export const SERVICEC_REVIEW_ENUM = {
APPROVAL: {
value: 1,
desc: '待审核',
},
PASS: {
value: 3,
desc: '已通过',
},
REFUSE: {
value: 4,
desc: '拒绝',
},
};
export default { export default {
REVIEW_ENUM, REVIEW_ENUM,
QUARTER_ENUM, QUARTER_ENUM,
SERVICEC_REVIEW_ENUM,
} }

1
src/views/business/erp/cost/firm-reports-form.vue

@ -321,7 +321,6 @@
await formRef.value.validateFields(['declareQuarter', 'declareYear', 'revenue', 'publicWelfareCost']); await formRef.value.validateFields(['declareQuarter', 'declareYear', 'revenue', 'publicWelfareCost']);
form.approvalStatus = '0'; // 稿 form.approvalStatus = '0'; // 稿
await save(); await save();
message.success('保存草稿成功');
} catch (err) { } catch (err) {
message.error('请填写必填字段后再保存草稿!'); message.error('请填写必填字段后再保存草稿!');
} }

6
src/views/business/erp/letter/letter-list.vue

@ -167,8 +167,8 @@
<div v-if="proofFileList.length > 0" style="margin-top: 8px; color: #52c41a; font-size: 12px;"> <div v-if="proofFileList.length > 0" style="margin-top: 8px; color: #52c41a; font-size: 12px;">
已选择文件: {{ proofFileList[0].name }} 已选择文件: {{ proofFileList[0].name }}
</div> </div>
<div style="margin-top: 8px; color: #999; font-size: 12px;"> <div style="margin-top: 8px; color: #ff0000; font-size: 12px;">
支持格式图片JPG/PNG文件大小不超过10MB 支持格式图片JPG/PNG/jepg文件大小不超过10MB
</div> </div>
</a-form-item> </a-form-item>
</a-form> </a-form>
@ -281,7 +281,7 @@ import AgreementModal from '/@/views/system/home/components/agreement.vue';
const isImage = file.type === 'image/jpeg' || file.type === 'image/jpg' || file.type === 'image/png'; const isImage = file.type === 'image/jpeg' || file.type === 'image/jpg' || file.type === 'image/png';
if (!isImage) { if (!isImage) {
message.error('只能上传PDF、Word文档或图片文件!'); message.error('只能上传图片文件!');
return false; return false;
} }

68
src/views/business/erp/service/service-applications-list.vue

@ -14,44 +14,51 @@
<a-form-item label="执业机构" v-if="isAssociationRole || isCeo" class="smart-query-form-item"> <a-form-item label="执业机构" v-if="isAssociationRole || isCeo" class="smart-query-form-item">
<DepartmentTreeSelect style="width: 250px" v-model:value="queryForm.firmId" placeholder="请选择执业机构" /> <DepartmentTreeSelect style="width: 250px" v-model:value="queryForm.firmId" placeholder="请选择执业机构" />
</a-form-item> </a-form-item>
<a-form-item label="律师名称" v-if="isAssociationRole || isFirmRole || isCeo" class="smart-query-form-item"> <a-form-item label="律师名称" v-if="isCtoRole || isCeo" class="smart-query-form-item">
<a-select <a-select
v-model:value="queryForm.userId" v-model:value="queryForm.userId"
style="width: 150px" style="width: 200px"
placeholder="请选择律师" placeholder="请选择律师"
:showSearch="true" :showSearch="true"
:allowClear="true" :allowClear="true"
:filterOption="filterLawyerOption"
optionFilterProp="children"
@focus="loadAllEmployees" @focus="loadAllEmployees"
> >
<a-select-option v-for="item in employeeList" :key="item.employeeId" :value="item.employeeId"> <a-select-option v-for="item in employeeList" :key="item.employeeId" :value="item.employeeId">
{{ item.actualName }} {{ item.actualName }}
<template v-if="item.departmentName"> {{ item.departmentName }} </template> <template v-if="item.departmentName">{{ item.departmentName }}</template>
<template v-if="item.positionName"> - {{ item.positionName }}</template>
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item label="服务开始时间" class="smart-query-form-item"> <a-form-item label="职务" v-if="isCtoRole || isCeo" class="smart-query-form-item">
<a-date-picker style="width: 150px" v-model:value="queryForm.serviceStart" placeholder="开始时间" /> <PositionSelect
</a-form-item> v-model:value="queryForm.positionId"
<a-form-item label="服务结束时间" class="smart-query-form-item"> placeholder="请选择职务"
<a-date-picker style="width: 150px" v-model:value="queryForm.serviceEnd" placeholder="结束时间" /> style="width: 250px"
</a-form-item> />
<a-form-item label="组织单位名称" class="smart-query-form-item">
<a-input style="width: 150px" v-model:value="queryForm.organizerName" placeholder="组织单位名称" />
</a-form-item> </a-form-item>
<a-form-item label="执业机构审核状态" v-if="isCtoRole" class="smart-query-form-item"> <a-form-item label="执业机构审核状态" v-if="isCtoRole || isFirmRole" class="smart-query-form-item">
<a-select style="width: 150px" v-model:value="queryForm.firmAuditStatus" placeholder="请选择审核状态"> <a-select style="width: 160px" v-model:value="queryForm.firmAuditStatus" placeholder="请选择审核状态">
<a-select-option v-for="status in Object.values(REVIEW_ENUM)" :key="status.value" :value="status.value"> <a-select-option value="">全部</a-select-option>
{{ status.desc }} <a-select-option value="3">已审核</a-select-option>
</a-select-option> <a-select-option value="1">未审核</a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item label="协会审核状态" v-if="isCeo" class="smart-query-form-item">
<a-select style="width: 150px" v-model:value="queryForm.associationAuditStatus" placeholder="请选择审核状态"> <a-form-item label="协会审核状态" class="smart-query-form-item">
<a-select-option v-for="status in Object.values(REVIEW_ENUM)" :key="status.value" :value="status.value"> <a-select style="width: 160px" v-model:value="queryForm.associationAuditStatus" placeholder="请选择审核状态">
{{ status.desc }} <a-select-option value="">全部</a-select-option>
</a-select-option> <a-select-option value="3">已审核</a-select-option>
<a-select-option value="1">未审核</a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item label="执业机构审核时间" v-if="isCtoRole || isFirmRole" class="smart-query-form-item">
<a-range-picker style="width: 240px" v-model:value="queryForm.firmAuditTimeRange" placeholder="" />
</a-form-item>
<a-form-item class="smart-query-form-item smart-margin-left10"> <a-form-item class="smart-query-form-item smart-margin-left10">
<a-button v-privilege="'serviceApplications:query'" type="primary" @click="onSearch"> <a-button v-privilege="'serviceApplications:query'" type="primary" @click="onSearch">
<template #icon> <template #icon>
@ -301,8 +308,9 @@ import { smartSentry } from '/@/lib/smart-sentry';
import TableOperator from '/@/components/support/table-operator/index.vue'; import TableOperator from '/@/components/support/table-operator/index.vue';
import ServiceApplicationsForm from './service-applications-form.vue'; import ServiceApplicationsForm from './service-applications-form.vue';
import DepartmentTreeSelect from '/@/components/system/department-tree-select/index.vue'; import DepartmentTreeSelect from '/@/components/system/department-tree-select/index.vue';
import PositionSelect from '/@/components/system/position-select/index.vue';
import { employeeApi } from '/@/api/system/employee-api'; import { employeeApi } from '/@/api/system/employee-api';
import { REVIEW_ENUM } from '/@/constants/system/review-const'; import { REVIEW_ENUM, SERVICEC_REVIEW_ENUM} from '/@/constants/system/review-const';
import { PlusOutlined, DeleteOutlined, SendOutlined, ImportOutlined, ExportOutlined, DownloadOutlined, UploadOutlined, CheckCircleOutlined } from '@ant-design/icons-vue'; import { PlusOutlined, DeleteOutlined, SendOutlined, ImportOutlined, ExportOutlined, DownloadOutlined, UploadOutlined, CheckCircleOutlined } from '@ant-design/icons-vue';
import { loginApi } from '/@/api/system/login-api'; import { loginApi } from '/@/api/system/login-api';
import AgreementModal from '/@/views/system/home/components/agreement-modal.vue'; import AgreementModal from '/@/views/system/home/components/agreement-modal.vue';
@ -369,7 +377,7 @@ import AgreementModal from '/@/views/system/home/components/agreement-modal.vue'
dataIndex: 'firmAuditStatus', dataIndex: 'firmAuditStatus',
ellipsis: true, ellipsis: true,
customRender: ({ text }) => { customRender: ({ text }) => {
const status = Object.values(REVIEW_ENUM).find(item => item.value === text); const status = Object.values(SERVICEC_REVIEW_ENUM).find(item => item.value === text);
return status ? status.desc : text; return status ? status.desc : text;
}, },
}, },
@ -388,7 +396,7 @@ import AgreementModal from '/@/views/system/home/components/agreement-modal.vue'
dataIndex: 'associationAuditStatus', dataIndex: 'associationAuditStatus',
ellipsis: true, ellipsis: true,
customRender: ({ text }) => { customRender: ({ text }) => {
const status = Object.values(REVIEW_ENUM).find(item => item.value === text); const status = Object.values(SERVICEC_REVIEW_ENUM).find(item => item.value === text);
return status ? status.desc : text; return status ? status.desc : text;
}, },
}, },
@ -418,11 +426,11 @@ import AgreementModal from '/@/views/system/home/components/agreement-modal.vue'
pageSize: 10, pageSize: 10,
firmId: undefined, // ID firmId: undefined, // ID
userId: undefined, // ID userId: undefined, // ID
serviceStart: undefined, // positionId: undefined, // ID
serviceEnd: undefined, //
organizerName: undefined, // organizerName: undefined, //
managerName: undefined, // managerName: undefined, //
firmAuditStatus: undefined, // firmAuditStatus: undefined, //
firmAuditTimeRange: undefined, //
associationAuditStatus: undefined, // associationAuditStatus: undefined, //
selfFirmFilter: undefined, // selfFirmFilter: undefined, //
}; };
@ -569,6 +577,14 @@ import AgreementModal from '/@/views/system/home/components/agreement-modal.vue'
return false; return false;
} }
//
function filterLawyerOption(input, option) {
const optionText = option.children.join('').toLowerCase();
return optionText.includes(input.toLowerCase());
}
// //
async function handleBatchAudit() { async function handleBatchAudit() {
if (!batchAuditForm.auditResult) { if (!batchAuditForm.auditResult) {

50
src/views/business/erp/service/service-applications-report-list.vue

@ -14,44 +14,26 @@
<a-form-item label="执业机构" v-if="isAssociationRole || isCeo" class="smart-query-form-item"> <a-form-item label="执业机构" v-if="isAssociationRole || isCeo" class="smart-query-form-item">
<DepartmentTreeSelect style="width: 250px" v-model:value="queryForm.firmId" placeholder="请选择执业机构" /> <DepartmentTreeSelect style="width: 250px" v-model:value="queryForm.firmId" placeholder="请选择执业机构" />
</a-form-item> </a-form-item>
<a-form-item label="律师名称" v-if="isAssociationRole || isFirmRole || isCeo" class="smart-query-form-item">
<a-select <a-form-item label="执业机构审核状态" v-if="!isCeo" class="smart-query-form-item">
v-model:value="queryForm.userId" <a-select style="width: 160px" v-model:value="queryForm.firmAuditStatus" placeholder="请选择审核状态">
style="width: 150px" <a-select-option value="">全部</a-select-option>
placeholder="请选择律师" <a-select-option value="3">已审核</a-select-option>
:showSearch="true" <a-select-option value="1">未审核</a-select-option>
:allowClear="true"
@focus="loadAllEmployees"
>
<a-select-option v-for="item in employeeList" :key="item.employeeId" :value="item.employeeId">
{{ item.actualName }}
<template v-if="item.departmentName"> {{ item.departmentName }} </template>
</a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item label="服务开始时间" class="smart-query-form-item"> <a-form-item label="协会审核状态" class="smart-query-form-item">
<a-date-picker style="width: 150px" v-model:value="queryForm.serviceStart" placeholder="开始时间" /> <a-select style="width: 160px" v-model:value="queryForm.associationAuditStatus" placeholder="请选择审核状态">
</a-form-item> <a-select-option value="">全部</a-select-option>
<a-form-item label="服务结束时间" class="smart-query-form-item"> <a-select-option value="3">已审核</a-select-option>
<a-date-picker style="width: 150px" v-model:value="queryForm.serviceEnd" placeholder="结束时间" /> <a-select-option value="1">未审核</a-select-option>
</a-form-item>
<a-form-item label="组织单位名称" class="smart-query-form-item">
<a-input style="width: 150px" v-model:value="queryForm.organizerName" placeholder="组织单位名称" />
</a-form-item>
<a-form-item label="执业机构审核状态" v-if="isCtoRole" class="smart-query-form-item">
<a-select style="width: 150px" v-model:value="queryForm.firmAuditStatus" placeholder="请选择审核状态">
<a-select-option v-for="status in Object.values(REVIEW_ENUM)" :key="status.value" :value="status.value">
{{ status.desc }}
</a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item label="协会审核状态" v-if="isCeo" class="smart-query-form-item"> <a-form-item label="执业机构审核时间" v-if="isCtoRole || isFirmRole" class="smart-query-form-item">
<a-select style="width: 150px" v-model:value="queryForm.associationAuditStatus" placeholder="请选择审核状态"> <a-range-picker style="width: 240px" v-model:value="queryForm.firmAuditTimeRange" placeholder="" />
<a-select-option v-for="status in Object.values(REVIEW_ENUM)" :key="status.value" :value="status.value">
{{ status.desc }}
</a-select-option>
</a-select>
</a-form-item> </a-form-item>
<a-form-item class="smart-query-form-item smart-margin-left10"> <a-form-item class="smart-query-form-item smart-margin-left10">
<a-button type="primary" @click="onSearch"> <a-button type="primary" @click="onSearch">
@ -269,7 +251,7 @@ import TableOperator from '/@/components/support/table-operator/index.vue';
import ServiceApplicationsForm from './service-applications-form.vue'; import ServiceApplicationsForm from './service-applications-form.vue';
import DepartmentTreeSelect from '/@/components/system/department-tree-select/index.vue'; import DepartmentTreeSelect from '/@/components/system/department-tree-select/index.vue';
import { employeeApi } from '/@/api/system/employee-api'; import { employeeApi } from '/@/api/system/employee-api';
import { REVIEW_ENUM } from '/@/constants/system/review-const'; import { REVIEW_ENUM,SERVICEC_REVIEW_ENUM } from '/@/constants/system/review-const';
import { PlusOutlined, DeleteOutlined, SendOutlined, ImportOutlined, ExportOutlined, DownloadOutlined, UploadOutlined, CheckCircleOutlined } from '@ant-design/icons-vue'; import { PlusOutlined, DeleteOutlined, SendOutlined, ImportOutlined, ExportOutlined, DownloadOutlined, UploadOutlined, CheckCircleOutlined } from '@ant-design/icons-vue';
import { loginApi } from '/@/api/system/login-api'; import { loginApi } from '/@/api/system/login-api';
import AgreementModal from '/@/views/system/home/components/agreement-modal.vue'; import AgreementModal from '/@/views/system/home/components/agreement-modal.vue';

Loading…
Cancel
Save