This commit is contained in:
z9130 2024-09-23 20:27:14 +08:00
parent 2ae6e8e0f6
commit 0149f4b10b
31 changed files with 2046 additions and 886 deletions

View File

@ -221,5 +221,6 @@
"commentTranslate.multiLineMerge": true,
"vue.server.hybridMode": true,
"typescript.tsdk": "node_modules/typescript/lib",
"svn.ignoreMissingSvnWarning": true
"svn.ignoreMissingSvnWarning": true,
"vue3snippets.enable-compile-vue-file-on-did-save-code": true
}

View File

@ -0,0 +1,4 @@
```shell
generate-api --swagger_url=http://127.0.0.1:4523/export/openapi/2?version=3.0 --template ./resource/apiDefinitions.ejs --output_dir ./resource --type path --prefix_to_filter /
```

View File

@ -1,4 +1,3 @@
//
import type { BodyOptions, QueryOptions } from './global.d';
import { http } from './request/index';
@ -19,6 +18,9 @@ export default {
get_export: (data?: QueryOptions) =>
http.get('/app/meeting/list/export', data),
},
/** 协同办公/会议管理 门户获取会议数据 */
get_getFundingSource: (data?: QueryOptions) =>
http.get('/app/meeting/getFundingSource', data),
},
tysq: {
zzjg: {
@ -37,11 +39,11 @@ export default {
/** 协同办公/字典表 字典类型保存 */
post_save: (data?: BodyOptions) => http.post('/app/dictType/save', data),
/** 协同办公/字典表 字典类型删除 */
post_delete: (data?: BodyOptions) =>
post_deletes: (data?: BodyOptions) =>
http.post('/app/dictType/deletes', data),
},
uaa: {
/** 用户中心 用户登陆 Copy */
/** 用户中心 用户登陆 */
post_validateAccount: (data?: BodyOptions) =>
http.post('/uc/uaa/validateAccount', data),
},
@ -147,23 +149,24 @@ export default {
post_save: (data?: BodyOptions) => http.post('/app/ccsq/save', data),
/** 协同办公/出差申请 申请单删除 */
post_deletes: (data?: BodyOptions) => http.post('/app/ccsq/deletes', data),
/** 协同办公/出差申请 出差送审、审核 */
post_audit: (data?: BodyOptions) => http.post('/app/ccsq/audit', data),
/** 协同办公/出差申请 退回 */
post_turnTask: (data?: BodyOptions) =>
http.post('/app/ccsq/turnTask', data),
post_rollback: (data?: BodyOptions) =>
http.post('/app/ccsq/rollback', data),
/** 协同办公/出差申请 启动流程 */
post_startWorkFlow: (data?: BodyOptions) =>
http.post('/app/ccsq/startWorkFlow', data),
/** 协同办公/出差申请 审 */
/** 协同办公/出差申请 */
post_submit: (data?: BodyOptions) => http.post('/app/ccsq/submit', data),
/** 协同办公/出差申请 待办 */
get_toDoPage: (data?: QueryOptions) => http.get('/app/ccsq/toDoPage', data),
/** 协同办公/出差申请 已办 */
get_donePage: (data?: QueryOptions) => http.get('/app/ccsq/donePage', data),
/** 协同办公/出差申请 获取可退回节点信息 */
get_getBackNode: (data?: QueryOptions) =>
http.get('/app/ccsq/getBackNode', data),
/** 协同办公/出差申请 查询流程节点 */
get_getFlowNodeUserConfig: (data?: QueryOptions) =>
http.get('/app/ccsq/getFlowNodeUserConfig', data),
/** 协同办公/出差申请 下一审核节点 */
post_getNextNodeUserConfig: (data?: BodyOptions) =>
http.post('/app/ccsq/getNextNodeUserConfig', data),
},
orderfood: {
/** 协同办公/订餐管理/订餐 订餐加载接口 */
@ -179,7 +182,7 @@ export default {
http.post('/app/orderfood/assistCancel', data),
},
orderfoods: {
/** 协同办公/订餐管理/汇总 部门结算汇总 */
/** 协同办公/订餐管理/汇总 单位订餐汇总 */
get_departmentSummary: (data?: QueryOptions) =>
http.get('/app/orderfoods/departmentSummary', data),
/** 协同办公/订餐管理/汇总 订餐汇总 */
@ -199,7 +202,7 @@ export default {
http.get('/app/orderfoods/personalSummary/export', data),
},
departmentSummary: {
/** 协同办公/订餐管理/汇总 部门结算汇总导出 */
/** 协同办公/订餐管理/汇总 单位订餐汇总导出 */
get_export: (data?: QueryOptions) =>
http.get('/app/orderfoods/departmentSummary/export', data),
},
@ -288,6 +291,7 @@ export default {
http.post('/app/addressor/saveBatch', data),
/** 协同办公/会议管理/发言人 发言人保存 */
post_save: (data?: BodyOptions) => http.post('/app/addressor/save', data),
/** 协同办公/会议管理/发言人 删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/addressor/deletes', data),
},
@ -298,6 +302,7 @@ export default {
/** 协同办公/办公用品/办公用品清单 批量保存 */
post_saveBatch: (data?: BodyOptions) =>
http.post('/app/officeSuppliesList/saveBatch', data),
/** 协同办公/办公用品/办公用品清单 删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/officeSuppliesList/deletes', data),
},
@ -305,6 +310,20 @@ export default {
/** 协同办公/办公用品 采购汇总 */
get_list: (data?: QueryOptions) =>
http.get('/app/officeSuppliesApplySum/list', data),
/** 协同办公/办公用品 结算清单 */
get_finalStatement: (data?: QueryOptions) =>
http.get('/app/officeSuppliesApplySum/finalStatement', data),
/** 协同办公/办公用品 单位结算清单 */
get_unitFinalStatement: (data?: QueryOptions) =>
http.get('/app/officeSuppliesApplySum/unitFinalStatement', data),
finalStatement: {
/** 协同办公/办公用品 结算清单导出 */
get_export: (data?: QueryOptions) =>
http.get('/app/officeSuppliesApplySum/finalStatement/export', data),
},
/** 协同办公/办公用品 结算清单结算操作 */
post_balance: (data?: BodyOptions) =>
http.post('/app/officeSuppliesApplySum/balance', data),
},
autoOrderfoodPeoples: {
/** 协同办公/订餐管理/自动订餐人员管理 分页查询 */
@ -313,6 +332,7 @@ export default {
/** 协同办公/订餐管理/自动订餐人员管理 批量保存 */
post_saveBatch: (data?: BodyOptions) =>
http.post('/app/autoOrderfoodPeoples/saveBatch', data),
/** 协同办公/订餐管理/自动订餐人员管理 删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/autoOrderfoodPeoples/deletes', data),
},
@ -350,11 +370,17 @@ export default {
/** 合同系统/申报 合同申报基本信息保存 */
post_save: (data?: BodyOptions) => http.post('/app/sbCtrBasePt/save', data),
/** 合同系统/申报 合同申报基本信息删除 */
get_deletes: (data?: QueryOptions) =>
http.get('/app/sbCtrBasePt/deletes', data),
post_deletes: (data?: BodyOptions) =>
http.post('/app/sbCtrBasePt/deletes', data),
/** 合同系统/申报 获取资金渠道 */
get_getFundingSource: (data?: QueryOptions) =>
http.get('/app/sbCtrBasePt/getFundingSource', data),
/** 合同系统/申报 提交 */
post_submit: (data?: BodyOptions) =>
http.post('/app/sbCtrBasePt/submit', data),
/** 合同系统/申报 退回 */
post_rollback: (data?: BodyOptions) =>
http.post('/app/sbCtrBasePt/rollback', data),
},
contractBaseInfo: {
/** 合同系统/立项 合同立项保存 */
@ -447,6 +473,24 @@ export default {
/** 合同系统/履行/履行提示/合同付款 保存付款申请 */
post_save: (data?: BodyOptions) =>
http.post('/app/contractPayment/save', data),
/** 合同系统/履行/履行提示/合同付款 查询流程未配置人员节点 */
get_getFlowNodeUserConfig: (data?: QueryOptions) =>
http.get('/app/contractPayment/getFlowNodeUserConfig', data),
/** 合同系统/履行/履行提示/合同付款 送审 */
post_startWorkFlow: (data?: BodyOptions) =>
http.post('/app/contractPayment/startWorkFlow', data),
/** 合同系统/履行/履行提示/合同付款 审核通过 */
post_submit: (data?: BodyOptions) =>
http.post('/app/contractPayment/submit', data),
/** 合同系统/履行/履行提示/合同付款 退回 */
post_rollback: (data?: BodyOptions) =>
http.post('/app/contractPayment/rollback', data),
/** 合同系统/履行/履行提示/合同付款 待审核 */
get_toDoPage: (data?: QueryOptions) =>
http.get('/app/contractPayment/toDoPage', data),
/** 合同系统/履行/履行提示/合同付款 已审核 */
get_donePage: (data?: QueryOptions) =>
http.get('/app/contractPayment/donePage', data),
},
selectMerchantsBasicInfo: {
/** 合同系统/选商 分页查询 */
@ -467,6 +511,18 @@ export default {
/** 合同系统/选商 退回 */
post_rollback: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/rollback', data),
/** 合同系统/选商废除 选商废除(弃用) */
post_abolish: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/abolish', data),
/** 合同系统/选商废除 选商废除(开始节点提交,非待办提交) */
post_abolishFlowStart: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/abolishFlowStart', data),
/** 合同系统/选商废除 提交 */
post_abolishSubmit: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/abolishSubmit', data),
/** 合同系统/选商废除 退回 */
post_abolishRollback: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/abolishRollback', data),
},
lvxChange: {
/** 合同系统/履行/履行提示/合同变更 保存合同变更申请 */
@ -476,10 +532,10 @@ export default {
http.get('/app/lvxChange/getContractChangeInfo', data),
},
contractRelieve: {
/** 合同系统/履行/履行提示/合同终止(解除) 获取合同终止(解除信息 */
/** 合同系统/履行/履行提示/合同解除 获取合同解除信息 */
get_getContractRelieveInfo: (data?: QueryOptions) =>
http.get('/app/contractRelieve/getContractRelieveInfo', data),
/** 合同系统/履行/履行提示/合同终止(解除) 保存合同终止信息 */
/** 合同系统/履行/履行提示/合同解除 保存合同解除信息 */
post_save: (data?: BodyOptions) =>
http.post('/app/contractRelieve/save', data),
},
@ -490,6 +546,18 @@ export default {
/** 合同系统/履行/履行提示/合同违约情况 获取合同违约信息 */
get_getContractBreachInfo: (data?: QueryOptions) =>
http.get('/app/contractBreach/getContractBreachInfo', data),
/** 合同系统/履行/履行提示/合同违约情况 查询流程未配置人员节点 */
get_getFlowNodeUserConfig: (data?: QueryOptions) =>
http.get('/app/contractBreach/getFlowNodeUserConfig', data),
/** 合同系统/履行/履行提示/合同违约情况 启动流程 */
post_startWorkFlow: (data?: BodyOptions) =>
http.post('/app/contractBreach/startWorkFlow', data),
/** 合同系统/履行/履行提示/合同违约情况 审核 */
post_submit: (data?: BodyOptions) =>
http.post('/app/contractBreach/submit', data),
/** 合同系统/履行/履行提示/合同违约情况 退回 */
post_rollback: (data?: BodyOptions) =>
http.post('/app/contractBreach/rollback', data),
},
lvxResult: {
/** 合同系统/履行/履行结果 履行结果保存 */
@ -611,6 +679,12 @@ export default {
/** 流程中心 获取流程节点人员配置信息 */
post_getFlowNodeUserConfig: (data?: BodyOptions) =>
http.post('/app/flowCenter/getFlowNodeUserConfig', data),
/** 流程中心 获取流程变量配置 */
get_getFlowVariablesConfig: (data?: QueryOptions) =>
http.get('/app/flowCenter/getFlowVariablesConfig', data),
/** 流程中心 获取流程所有人员配置信息 */
get_getFlowUserConfig: (data?: QueryOptions) =>
http.get('/app/flowCenter/getFlowUserConfig', data),
},
rl: {
moduleParameter: {
@ -627,6 +701,11 @@ export default {
get_getNextNodeUser: (data?: QueryOptions) =>
http.get('/app/rl/moduleParameter/getNextNodeUser', data),
},
workFlow: {
/** 合同系统 流程待办 */
get_queryMyTodoTask: (data?: QueryOptions) =>
http.get('/app/rl/workFlow/queryMyTodoTask', data),
},
},
dutyCount: {
/** 协同办公/订餐管理/值班天数 分页查询 */
@ -672,4 +751,30 @@ export default {
post_deletes: (data?: BodyOptions) =>
http.post('/app/lxBasisSale/deletes', data),
},
workFlow: {
/** 合同系统 查询下一节点id */
get_getNextNodeUserConfig: (data?: QueryOptions) =>
http.get('/app/workFlow/getNextNodeUserConfig', data),
/** 合同系统 获取可退回节点 */
get_getBackNode: (data?: QueryOptions) =>
http.get('/app/workFlow/getBackNode', data),
/** 合同系统 审核记录 */
get_history: (data?: QueryOptions) =>
http.get('/app/workFlow/history', data),
/** 合同系统 流程已办 */
get_getDoneTaskByUserID: (data?: QueryOptions) =>
http.get('/app/workFlow/getDoneTaskByUserID', data),
},
biddingResult: {
/** 合同系统/选商/选商结果 分页查询 */
get_page: (data?: QueryOptions) =>
http.get('/app/biddingResult/page', data),
/** 合同系统/选商/选商结果 保存 */
post_save: (data?: BodyOptions) =>
http.post('/app/biddingResult/save', data),
},
home: {
/** 合同系统/首页待办/已办 待办 */
get_todo: (data?: QueryOptions) => http.get('/app/home/todo', data),
},
};

View File

@ -1,7 +0,0 @@
export {};
declare interface PageVo {
code: number;
data: any;
message: string;
}

View File

@ -93,9 +93,9 @@ function mockLogin(username: string, password: string, isSkip: boolean = true) {
<a-button @click="mockLogin('Admin.itl', 'ABC123')">超级管理员</a-button>
<a-button @click="mockLogin('zhangxs.itl', 'Rlgs!6243910')">zxs</a-button>
<a-button @click="mockLogin('zengp.itl', 'Rlgs!6243910')">zp</a-button>
<a-button @click="mockLogin('rlqym', 'Rlgs!6243910', false)"
>rlqym</a-button
>
<a-button @click="mockLogin('rlqym', 'Rlgs!6243910', false)">
rlqym
</a-button>
</a-space>
</div>
</template>

View File

@ -177,9 +177,6 @@ export function getFormSchema(params: any = {}) {
valueChange: {
immediate: true, // 是否立即执行一次
handle({ form }) {
debugger;
console.log(form);
form.fundAllocationName = getDictObj(
DICT_TYPE.contract_fund_flow,
form.fundAllocation,

View File

@ -116,8 +116,14 @@ function handleOpenSignBasisChooseModal() {
const tableFullData = xGridRef.value?.getTableData().fullData;
if (tableFullData && tableFullData.length > 0) {
chooseSigningBasisModalApi.setData({
title: '选择签约依据',
guids: tableFullData.map((item) => item.guid) || [],
});
} else {
chooseSigningBasisModalApi.setData({
title: '选择签约依据',
guids: [],
});
}
chooseSigningBasisModalApi.open();
@ -204,8 +210,6 @@ async function handleSave() {
isLoading.value = true;
try {
const form = formRef.value.form;
await formRef.value.submit();
let newForm: any = {};
@ -264,7 +268,7 @@ async function handleSave() {
result = await Apis.contractBaseInfo.post_apply({ data: newForm });
currData.value.taskId = result.taskId;
id.value = result.value;
message.success('保存成功');
Modal.confirm({
@ -368,19 +372,11 @@ onMounted(async () => {
<template>
<Page ref="pageRef" content-class="h-full flex flex-col">
<ChooseUserModal
class="w-[950px]"
multiple
@confirm="handleChooseUserConfirm"
/>
<ChooseUserModal class="w-[950px]" multiple @confirm="handleChooseUserConfirm" />
<ChooseSigningBasisModal class="w-[950px]" @confirm="handleChooseConfirm" />
<a-affix
:offset-top="0"
:style="{ zIndex: 50 }"
:target="() => pageRef.bodyRef"
>
<a-affix :offset-top="0" :style="{ zIndex: 50 }" :target="() => pageRef.bodyRef">
<div class="flex w-full flex-row bg-white pl-1 pt-1">
<a-space class="flex-1">
<vben-button
@ -415,13 +411,11 @@ onMounted(async () => {
>
删除
</vben-button>
<vben-button variant="secondary" @click="handleBack()">
返回
</vben-button>
<vben-button variant="secondary" @click="handleBack()"> 返回 </vben-button>
</a-space>
<vben-button variant="secondary" @click="handleFold()">
一键{{ isFold ? '展开' : '收起' }}
一键{{ isFold ? "展开" : "收起" }}
</vben-button>
</div>
</a-affix>

View File

@ -8,13 +8,13 @@ export function getBidColumns(_params?: any): VxeGridPropTypes.Columns {
},
{
type: 'expand',
width: 60,
width: '0px',
slots: { content: 'expand-content-slot' },
},
{
field: 'bidName',
title: '标段名称',
width: 200,
width: 180,
slots: { default: 'bidname-slot' },
},
{
@ -32,7 +32,7 @@ export function getBidColumns(_params?: any): VxeGridPropTypes.Columns {
{
field: 'operate',
title: '操作',
width: 80,
width: 120,
slots: { default: 'operate-slot' },
fixed: 'right',
},

View File

@ -32,7 +32,7 @@ export function getFormSchema(_params: any = {}) {
isCurrent: false,
keyField: 'id',
},
expandAll: {
expandConfig: {
expandAll: true,
reserve: true,
showIcon: false,
@ -124,7 +124,7 @@ export function getFormSchema(_params: any = {}) {
component: {
name: 'a-textarea',
vModel: 'value',
autosize: { minRows: 4, maxRows: 6 },
autoSize: { minRows: 4, maxRows: 6 },
},
rules: [{ required: true, message: '请输入备注' }],
},
@ -147,7 +147,7 @@ export function getFormSchema(_params: any = {}) {
component: {
name: 'a-textarea',
vModel: 'value',
autosize: { minRows: 4, maxRows: 6 },
autoSize: { minRows: 4, maxRows: 6 },
},
},
qualificReq: {
@ -157,7 +157,7 @@ export function getFormSchema(_params: any = {}) {
component: {
name: 'a-textarea',
vModel: 'value',
autosize: { minRows: 4, maxRows: 6 },
autoSize: { minRows: 4, maxRows: 6 },
},
},
isBid: {
@ -184,7 +184,10 @@ export function getFormSchema(_params: any = {}) {
console.log(e);
console.log(id);
const xGridRef = gridRefs.value.get(id); // Assuming you have a main grid ref
xGridRef && xGridRef.value.insertAt(e, -1);
console.log(gridRefs.value);
console.log(xGridRef);
xGridRef && xGridRef.insertAt(e, -1);
}}
></ChooseCompanyModal>
<div class="flex items-center">
@ -222,6 +225,7 @@ export function getFormSchema(_params: any = {}) {
}));
xGridRef.value.insertAt(rowsToAdd, -1);
}
xGridRef.value.setAllRowExpand(true);
}}
options={options2}
v-model:value={form.budgetSum2}
@ -266,6 +270,21 @@ export function getFormSchema(_params: any = {}) {
<a-button
onClick={() => {
id = row.id;
const tableFullData =
xGridRef.value?.getTableData().fullData;
if (tableFullData && tableFullData.length > 0) {
chooseCompanyModalApi.setData({
title: '选择签约依据',
guids:
tableFullData.map((item) => item.guid) || [],
});
} else {
chooseCompanyModalApi.setData({
title: '选择签约依据',
guids: [],
});
}
chooseCompanyModalApi.open();
// row.providerList.push({
// providerName: '供应商11',
@ -296,7 +315,7 @@ export function getFormSchema(_params: any = {}) {
component: {
name: 'a-textarea',
vModel: 'value',
autosize: { minRows: 4, maxRows: 6 },
autoSize: { minRows: 4, maxRows: 6 },
},
},
projectContent: {
@ -306,7 +325,7 @@ export function getFormSchema(_params: any = {}) {
component: {
name: 'a-textarea',
vModel: 'value',
autosize: { minRows: 4, maxRows: 6 },
autoSize: { minRows: 4, maxRows: 6 },
},
},
quality: {
@ -317,7 +336,7 @@ export function getFormSchema(_params: any = {}) {
component: {
name: 'a-textarea',
vModel: 'value',
autosize: { minRows: 4, maxRows: 6 },
autoSize: { minRows: 4, maxRows: 6 },
},
},
stockNums: {
@ -328,7 +347,7 @@ export function getFormSchema(_params: any = {}) {
component: {
name: 'a-textarea',
vModel: 'value',
autosize: { minRows: 4, maxRows: 6 },
autoSize: { minRows: 4, maxRows: 6 },
},
},
stockPlanMx: {
@ -339,7 +358,7 @@ export function getFormSchema(_params: any = {}) {
component: {
name: 'a-textarea',
vModel: 'value',
autosize: { minRows: 4, maxRows: 6 },
autoSize: { minRows: 4, maxRows: 6 },
},
},
},

View File

@ -37,7 +37,7 @@ const formRefByBaseInfo = ref();
const isLoading = ref(false);
const contractTypeData = ref(['1']);
const contractTypeData = ref<any[]>([]);
const currData = ref<any>({});
const formBindingByBaseInfo = ref({
@ -365,28 +365,16 @@ onMounted(async () => {
<template>
<Page ref="pageRef" content-class="h-full flex flex-col">
<a-affix
:offset-top="0"
:style="{ zIndex: 50 }"
:target="() => pageRef.bodyRef"
>
<a-affix :offset-top="0" :style="{ zIndex: 50 }" :target="() => pageRef.bodyRef">
<div class="flex w-full flex-row bg-white pl-1 pt-1">
<a-space class="flex-1">
<vben-button variant="primary" @click="handleSave()">
保存
</vben-button>
<vben-button variant="primary" @click="handleSubmit()">
提交
</vben-button>
<vben-button variant="destructive" @click="handleDelete()">
废除
</vben-button>
<vben-button variant="secondary" @click="handleBack()">
返回
</vben-button>
<vben-button variant="primary" @click="handleSave()"> 保存 </vben-button>
<vben-button variant="primary" @click="handleSubmit()"> 提交 </vben-button>
<vben-button variant="destructive" @click="handleDelete()"> 废除 </vben-button>
<vben-button variant="secondary" @click="handleBack()"> 返回 </vben-button>
</a-space>
<vben-button variant="secondary" @click="handleFold()">
一键{{ isFold ? '展开' : '收起' }}
一键{{ isFold ? "展开" : "收起" }}
</vben-button>
</div>
</a-affix>

View File

@ -1,6 +1,6 @@
import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict';
import { dict } from '@fast-crud/fast-crud';
import { render } from 'vue';
import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict';
/**
*
@ -75,7 +75,7 @@ export function getFormSchema(params: any = {}) {
return true;
},
render({ form }) {
let data = filterContractTypes(contractTypeData,"-1")
const data = filterContractTypes(contractTypeData, '-1');
for (const item of data) {
if (item.value === form.ctrType) {
return <span>{item.label}</span>;
@ -107,7 +107,7 @@ export function getFormSchema(params: any = {}) {
return true;
},
render({ form }) {
let data = filterContractTypes(contractTypeData,form.ctrType)
const data = filterContractTypes(contractTypeData, form.ctrType);
for (const item of data) {
if (item.value === form.ctrTwoType) {
return <span>{item.label}</span>;
@ -164,7 +164,14 @@ export function getFormSchema(params: any = {}) {
return true;
},
render({ form }) {
return <span class="mr-2">{getDictObj(DICT_TYPE.contract_currency_unit,form.priceType)?.label}</span>;
return (
<span class="mr-2">
{
getDictObj(DICT_TYPE.contract_currency_unit, form.priceType)
?.label
}
</span>
);
},
},
},
@ -186,7 +193,14 @@ export function getFormSchema(params: any = {}) {
return true;
},
render({ form }) {
return <span class="mr-2">{getDictObj(DICT_TYPE.contract_fund_flow,form.fundAllocation)?.label}</span>;
return (
<span class="mr-2">
{
getDictObj(DICT_TYPE.contract_fund_flow, form.fundAllocation)
?.label
}
</span>
);
},
},
},
@ -208,7 +222,14 @@ export function getFormSchema(params: any = {}) {
return true;
},
render({ form }) {
return <span class="mr-2">{getDictObj(DICT_TYPE.contract_funding_source,form.fundDitch)?.label}</span>;
return (
<span class="mr-2">
{
getDictObj(DICT_TYPE.contract_funding_source, form.fundDitch)
?.label
}
</span>
);
},
},
},
@ -229,7 +250,11 @@ export function getFormSchema(params: any = {}) {
return true;
},
render({ form }) {
return <span class="mr-2">{getDictObj(DICT_TYPE.common_whether,form.frameProtocol)?.label}</span>;
return (
<span class="mr-2">
{getDictObj(DICT_TYPE.common_whether, form.frameProtocol)?.label}
</span>
);
},
},
},
@ -250,7 +275,14 @@ export function getFormSchema(params: any = {}) {
return true;
},
render({ form }) {
return <span class="mr-2">{getDictObj(DICT_TYPE.common_whether,form.frameProtocolCtr)?.label}</span>;
return (
<span class="mr-2">
{
getDictObj(DICT_TYPE.common_whether, form.frameProtocolCtr)
?.label
}
</span>
);
},
},
},
@ -272,7 +304,14 @@ export function getFormSchema(params: any = {}) {
return true;
},
render({ form }) {
return <span class="mr-2">{getDictObj(DICT_TYPE.contract_organization_form,form.organiza)?.label}</span>;
return (
<span class="mr-2">
{
getDictObj(DICT_TYPE.contract_organization_form, form.organiza)
?.label
}
</span>
);
},
},
},

View File

@ -1,6 +1,7 @@
import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict';
import { dict } from '@fast-crud/fast-crud';
import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict';
export function getFormSchema(_params: any = {}) {
return {
initialForm: {
@ -113,7 +114,7 @@ export function getFormSchema(_params: any = {}) {
},
render({ form }) {
// 注意此处的v-model写法
let options1 = getDictOptions(
const options1 = getDictOptions(
DICT_TYPE.deadlineForPerformance,
'string',
);
@ -122,13 +123,13 @@ export function getFormSchema(_params: any = {}) {
<div class="flex">
<a-form-item class="!mb-0 inline-block">
<a-radio-group
v-model:value={form.isBid}
options={options1}
v-model:value={form.isBid}
/>
</a-form-item>
<div class="w-2"></div>
{form.isBid === 1 && (
<a-form-item label="相关约定" class="!mb-0 inline-block">
<a-form-item class="!mb-0 inline-block" label="相关约定">
<a-input v-model:value={form.xxxx} />
</a-form-item>
)}

View File

@ -1,9 +1,17 @@
import type { VxeGridPropTypes } from 'vxe-table';
import { ref } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { dict } from '@fast-crud/fast-crud';
import { VxeGrid, type VxeGridPropTypes } from 'vxe-table';
import { unitComponentProps } from '#/common/unit';
import { DICT_TYPE, getDictOptions } from '#/utils/dict';
import chooseUserModal from '#/views/system/user/choose-user-modal.vue';
const [ChooseUserModal, chooseUserModalApi] = useVbenModal({
connectedComponent: chooseUserModal,
});
export function getUserColumns(_params?: any): VxeGridPropTypes.Columns {
return [
@ -15,6 +23,25 @@ export function getUserColumns(_params?: any): VxeGridPropTypes.Columns {
}
export function getFormSchema(_params?: any) {
const xGridRef = ref();
/** Hooks - 表格 */
const gridOptions = {
columns: [
{ field: 'userCode', title: '用户编号', width: 120 },
{ field: 'userName', title: '姓名', width: 100 },
{ field: 'organization', title: '单位', width: 200 },
{ field: 'idNumber', title: '身份证号', width: 180 },
],
data: [],
toolbarConfig: {
enabled: false,
},
pagerConfig: {
enabled: false,
},
};
return {
col: { span: 24 },
initialForm: {
@ -71,18 +98,43 @@ export function getFormSchema(_params?: any) {
name: 'fs-dict-select',
vModel: 'value',
allowClear: false,
class: 'w-[200px]',
},
},
projectNum5: {
title: '受托人',
key: 'projectNum5',
col: { span: 24 },
col: { span: 16 },
conditionalRender: {
match(_context) {
return true;
},
render(_context) {
return <a-button type="primary"></a-button>;
return (
<div>
<ChooseUserModal
class="w-[950px]"
onConfirm={(e) => {
console.log(e);
console.log(id);
xGridRef && xGridRef.value.insertAt(e, -1);
}}
></ChooseUserModal>
<a-button
onClick={() => {
chooseUserModalApi.setData({
userIds: [],
});
chooseUserModalApi.open();
}}
type="primary"
>
</a-button>
<VxeGrid ref={xGridRef} {...gridOptions}></VxeGrid>
</div>
);
},
},
},

View File

@ -24,7 +24,8 @@ const fileUploader = new FileUploader({});
const router = useRouter();
const route = useRoute();
const id = route.params.id;
const id = ref(route.params.id);
const pageRef = ref();
const formRef = ref();

View File

@ -86,7 +86,7 @@ export default defineConfig(async () => {
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api\/zzz\/app/, '/'),
// target: `http://192.168.0.193:8083/rl`,
target: `http://192.168.147.164:8089/rl`,
target: `http://192.168.148.88:8089/rl`,
ws: true,
},
'/api/zzz/uc': {

View File

@ -1,5 +1,6 @@
import type { BodyOptions, QueryOptions } from './global.d';
import { http } from './request/index';
import type { QueryOptions, BodyOptions } from './global.d';
export default {
meeting: {
@ -17,6 +18,9 @@ export default {
get_export: (data?: QueryOptions) =>
http.get('/app/meeting/list/export', data),
},
/** 协同办公/会议管理 门户获取会议数据 */
get_getFundingSource: (data?: QueryOptions) =>
http.get('/app/meeting/getFundingSource', data),
},
tysq: {
zzjg: {
@ -35,11 +39,11 @@ export default {
/** 协同办公/字典表 字典类型保存 */
post_save: (data?: BodyOptions) => http.post('/app/dictType/save', data),
/** 协同办公/字典表 字典类型删除 */
post_delete: (data?: BodyOptions) =>
post_deletes: (data?: BodyOptions) =>
http.post('/app/dictType/deletes', data),
},
uaa: {
/** 用户中心 用户登陆 Copy */
/** 用户中心 用户登陆 */
post_validateAccount: (data?: BodyOptions) =>
http.post('/uc/uaa/validateAccount', data),
},
@ -145,23 +149,24 @@ export default {
post_save: (data?: BodyOptions) => http.post('/app/ccsq/save', data),
/** 协同办公/出差申请 申请单删除 */
post_deletes: (data?: BodyOptions) => http.post('/app/ccsq/deletes', data),
/** 协同办公/出差申请 出差送审、审核 */
post_audit: (data?: BodyOptions) => http.post('/app/ccsq/audit', data),
/** 协同办公/出差申请 退回 */
post_turnTask: (data?: BodyOptions) =>
http.post('/app/ccsq/turnTask', data),
post_rollback: (data?: BodyOptions) =>
http.post('/app/ccsq/rollback', data),
/** 协同办公/出差申请 启动流程 */
post_startWorkFlow: (data?: BodyOptions) =>
http.post('/app/ccsq/startWorkFlow', data),
/** 协同办公/出差申请 审 */
/** 协同办公/出差申请 */
post_submit: (data?: BodyOptions) => http.post('/app/ccsq/submit', data),
/** 协同办公/出差申请 待办 */
get_toDoPage: (data?: QueryOptions) => http.get('/app/ccsq/toDoPage', data),
/** 协同办公/出差申请 已办 */
get_donePage: (data?: QueryOptions) => http.get('/app/ccsq/donePage', data),
/** 协同办公/出差申请 获取可退回节点信息 */
get_getBackNode: (data?: QueryOptions) =>
http.get('/app/ccsq/getBackNode', data),
/** 协同办公/出差申请 查询流程节点 */
get_getFlowNodeUserConfig: (data?: QueryOptions) =>
http.get('/app/ccsq/getFlowNodeUserConfig', data),
/** 协同办公/出差申请 下一审核节点 */
post_getNextNodeUserConfig: (data?: BodyOptions) =>
http.post('/app/ccsq/getNextNodeUserConfig', data),
},
orderfood: {
/** 协同办公/订餐管理/订餐 订餐加载接口 */
@ -177,7 +182,7 @@ export default {
http.post('/app/orderfood/assistCancel', data),
},
orderfoods: {
/** 协同办公/订餐管理/汇总 部门结算汇总 */
/** 协同办公/订餐管理/汇总 单位订餐汇总 */
get_departmentSummary: (data?: QueryOptions) =>
http.get('/app/orderfoods/departmentSummary', data),
/** 协同办公/订餐管理/汇总 订餐汇总 */
@ -197,7 +202,7 @@ export default {
http.get('/app/orderfoods/personalSummary/export', data),
},
departmentSummary: {
/** 协同办公/订餐管理/汇总 部门结算汇总导出 */
/** 协同办公/订餐管理/汇总 单位订餐汇总导出 */
get_export: (data?: QueryOptions) =>
http.get('/app/orderfoods/departmentSummary/export', data),
},
@ -286,6 +291,7 @@ export default {
http.post('/app/addressor/saveBatch', data),
/** 协同办公/会议管理/发言人 发言人保存 */
post_save: (data?: BodyOptions) => http.post('/app/addressor/save', data),
/** 协同办公/会议管理/发言人 删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/addressor/deletes', data),
},
@ -296,6 +302,7 @@ export default {
/** 协同办公/办公用品/办公用品清单 批量保存 */
post_saveBatch: (data?: BodyOptions) =>
http.post('/app/officeSuppliesList/saveBatch', data),
/** 协同办公/办公用品/办公用品清单 删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/officeSuppliesList/deletes', data),
},
@ -325,6 +332,7 @@ export default {
/** 协同办公/订餐管理/自动订餐人员管理 批量保存 */
post_saveBatch: (data?: BodyOptions) =>
http.post('/app/autoOrderfoodPeoples/saveBatch', data),
/** 协同办公/订餐管理/自动订餐人员管理 删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/autoOrderfoodPeoples/deletes', data),
},
@ -362,11 +370,17 @@ export default {
/** 合同系统/申报 合同申报基本信息保存 */
post_save: (data?: BodyOptions) => http.post('/app/sbCtrBasePt/save', data),
/** 合同系统/申报 合同申报基本信息删除 */
get_deletes: (data?: QueryOptions) =>
http.get('/app/sbCtrBasePt/deletes', data),
post_deletes: (data?: BodyOptions) =>
http.post('/app/sbCtrBasePt/deletes', data),
/** 合同系统/申报 获取资金渠道 */
get_getFundingSource: (data?: QueryOptions) =>
http.get('/app/sbCtrBasePt/getFundingSource', data),
/** 合同系统/申报 提交 */
post_submit: (data?: BodyOptions) =>
http.post('/app/sbCtrBasePt/submit', data),
/** 合同系统/申报 退回 */
post_rollback: (data?: BodyOptions) =>
http.post('/app/sbCtrBasePt/rollback', data),
},
contractBaseInfo: {
/** 合同系统/立项 合同立项保存 */
@ -384,9 +398,21 @@ export default {
/** 合同系统/立项 提交 */
post_submit: (data?: BodyOptions) =>
http.post('/app/contractBaseInfo/submit', data),
/** 合同系统/立项 退回 */
/** 合同系统/立项废除 退回 */
post_rollback: (data?: BodyOptions) =>
http.post('/app/contractBaseInfo/rollback', data),
/** 合同系统/立项废除 合同立项废除 */
post_abolish: (data?: BodyOptions) =>
http.post('/app/contractBaseInfo/abolish', data),
/** 合同系统/立项废除 提交 */
post_abolishSubmit: (data?: BodyOptions) =>
http.post('/app/contractBaseInfo/abolishSubmit', data),
/** 合同系统/立项 流程启动(非待办提交) */
post_applyFlowStart: (data?: BodyOptions) =>
http.post('/app/contractBaseInfo/applyFlowStart', data),
/** 合同系统/立项废除 流程启动(非待办提交) */
post_abolishFlowStart: (data?: BodyOptions) =>
http.post('/app/contractBaseInfo/abolishFlowStart', data),
},
proProviderInfo: {
/** 合同系统/相对人管理 合同相对人查询 */
@ -447,6 +473,24 @@ export default {
/** 合同系统/履行/履行提示/合同付款 保存付款申请 */
post_save: (data?: BodyOptions) =>
http.post('/app/contractPayment/save', data),
/** 合同系统/履行/履行提示/合同付款 查询流程未配置人员节点 */
get_getFlowNodeUserConfig: (data?: QueryOptions) =>
http.get('/app/contractPayment/getFlowNodeUserConfig', data),
/** 合同系统/履行/履行提示/合同付款 送审 */
post_startWorkFlow: (data?: BodyOptions) =>
http.post('/app/contractPayment/startWorkFlow', data),
/** 合同系统/履行/履行提示/合同付款 审核通过 */
post_submit: (data?: BodyOptions) =>
http.post('/app/contractPayment/submit', data),
/** 合同系统/履行/履行提示/合同付款 退回 */
post_rollback: (data?: BodyOptions) =>
http.post('/app/contractPayment/rollback', data),
/** 合同系统/履行/履行提示/合同付款 待审核 */
get_toDoPage: (data?: QueryOptions) =>
http.get('/app/contractPayment/toDoPage', data),
/** 合同系统/履行/履行提示/合同付款 已审核 */
get_donePage: (data?: QueryOptions) =>
http.get('/app/contractPayment/donePage', data),
},
selectMerchantsBasicInfo: {
/** 合同系统/选商 分页查询 */
@ -467,6 +511,18 @@ export default {
/** 合同系统/选商 退回 */
post_rollback: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/rollback', data),
/** 合同系统/选商废除 选商废除(弃用) */
post_abolish: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/abolish', data),
/** 合同系统/选商废除 选商废除(开始节点提交,非待办提交) */
post_abolishFlowStart: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/abolishFlowStart', data),
/** 合同系统/选商废除 提交 */
post_abolishSubmit: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/abolishSubmit', data),
/** 合同系统/选商废除 退回 */
post_abolishRollback: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/abolishRollback', data),
},
lvxChange: {
/** 合同系统/履行/履行提示/合同变更 保存合同变更申请 */
@ -476,10 +532,10 @@ export default {
http.get('/app/lvxChange/getContractChangeInfo', data),
},
contractRelieve: {
/** 合同系统/履行/履行提示/合同终止(解除) 获取合同终止(解除信息 */
/** 合同系统/履行/履行提示/合同解除 获取合同解除信息 */
get_getContractRelieveInfo: (data?: QueryOptions) =>
http.get('/app/contractRelieve/getContractRelieveInfo', data),
/** 合同系统/履行/履行提示/合同终止(解除) 保存合同终止信息 */
/** 合同系统/履行/履行提示/合同解除 保存合同解除信息 */
post_save: (data?: BodyOptions) =>
http.post('/app/contractRelieve/save', data),
},
@ -490,6 +546,18 @@ export default {
/** 合同系统/履行/履行提示/合同违约情况 获取合同违约信息 */
get_getContractBreachInfo: (data?: QueryOptions) =>
http.get('/app/contractBreach/getContractBreachInfo', data),
/** 合同系统/履行/履行提示/合同违约情况 查询流程未配置人员节点 */
get_getFlowNodeUserConfig: (data?: QueryOptions) =>
http.get('/app/contractBreach/getFlowNodeUserConfig', data),
/** 合同系统/履行/履行提示/合同违约情况 启动流程 */
post_startWorkFlow: (data?: BodyOptions) =>
http.post('/app/contractBreach/startWorkFlow', data),
/** 合同系统/履行/履行提示/合同违约情况 审核 */
post_submit: (data?: BodyOptions) =>
http.post('/app/contractBreach/submit', data),
/** 合同系统/履行/履行提示/合同违约情况 退回 */
post_rollback: (data?: BodyOptions) =>
http.post('/app/contractBreach/rollback', data),
},
lvxResult: {
/** 合同系统/履行/履行结果 履行结果保存 */
@ -499,6 +567,15 @@ export default {
/** 合同系统/履行/履行提示/临时归档 保存临时归档信息 */
post_save: (data?: BodyOptions) =>
http.post('/app/contractFiling/save', data),
/** 合同系统/履行/履行提示/临时归档 分页查询 */
get_pageFillingList: (data?: QueryOptions) =>
http.get('/app/contractFiling/pageFillingList', data),
/** 合同系统/履行/履行提示/临时归档 回档 */
post_update: (data?: BodyOptions) =>
http.post('/app/contractFiling/update', data),
/** 合同系统/履行/履行提示/临时归档 获取临时归档信息 */
get_getLsgd: (data?: QueryOptions) =>
http.get('/app/contractFiling/getLsgd', data),
},
biddingExpert: {
/** 合同系统/选商/选商招标专家 招标专家查询 */
@ -602,6 +679,12 @@ export default {
/** 流程中心 获取流程节点人员配置信息 */
post_getFlowNodeUserConfig: (data?: BodyOptions) =>
http.post('/app/flowCenter/getFlowNodeUserConfig', data),
/** 流程中心 获取流程变量配置 */
get_getFlowVariablesConfig: (data?: QueryOptions) =>
http.get('/app/flowCenter/getFlowVariablesConfig', data),
/** 流程中心 获取流程所有人员配置信息 */
get_getFlowUserConfig: (data?: QueryOptions) =>
http.get('/app/flowCenter/getFlowUserConfig', data),
},
rl: {
moduleParameter: {
@ -618,6 +701,11 @@ export default {
get_getNextNodeUser: (data?: QueryOptions) =>
http.get('/app/rl/moduleParameter/getNextNodeUser', data),
},
workFlow: {
/** 合同系统 流程待办 */
get_queryMyTodoTask: (data?: QueryOptions) =>
http.get('/app/rl/workFlow/queryMyTodoTask', data),
},
},
dutyCount: {
/** 协同办公/订餐管理/值班天数 分页查询 */
@ -663,4 +751,30 @@ export default {
post_deletes: (data?: BodyOptions) =>
http.post('/app/lxBasisSale/deletes', data),
},
workFlow: {
/** 合同系统 查询下一节点id */
get_getNextNodeUserConfig: (data?: QueryOptions) =>
http.get('/app/workFlow/getNextNodeUserConfig', data),
/** 合同系统 获取可退回节点 */
get_getBackNode: (data?: QueryOptions) =>
http.get('/app/workFlow/getBackNode', data),
/** 合同系统 审核记录 */
get_history: (data?: QueryOptions) =>
http.get('/app/workFlow/history', data),
/** 合同系统 流程已办 */
get_getDoneTaskByUserID: (data?: QueryOptions) =>
http.get('/app/workFlow/getDoneTaskByUserID', data),
},
biddingResult: {
/** 合同系统/选商/选商结果 分页查询 */
get_page: (data?: QueryOptions) =>
http.get('/app/biddingResult/page', data),
/** 合同系统/选商/选商结果 保存 */
post_save: (data?: BodyOptions) =>
http.post('/app/biddingResult/save', data),
},
home: {
/** 合同系统/首页待办/已办 待办 */
get_todo: (data?: QueryOptions) => http.get('/app/home/todo', data),
},
};

View File

@ -43,7 +43,7 @@ export function transferResponse(response: any) {
code = 0;
}
if (code == 'failure' || (msg && msg.includes('token无效'))) {
if (code == 'failure' && msg && msg.includes('token无效')) {
code = 401;
}

View File

@ -1,21 +1,24 @@
<script lang="ts" setup>
import { computed } from "vue";
import { computed } from 'vue';
import { useAntdDesignTokens } from "@vben/hooks";
import { preferences, usePreferences } from "@vben/preferences";
import { useAntdDesignTokens } from '@vben/hooks';
import { preferences, usePreferences } from '@vben/preferences';
import { App, ConfigProvider, theme } from "ant-design-vue";
import { App, ConfigProvider, theme } from 'ant-design-vue';
import { antdLocale } from "#/locales";
import { useDictStore } from "./store/dict";
import { antdLocale } from '#/locales';
defineOptions({ name: "App" });
import { useDictStore } from './store/dict';
defineOptions({ name: 'App' });
const { isDark } = usePreferences();
const { tokens } = useAntdDesignTokens();
const tokenTheme = computed(() => {
const algorithm = isDark.value ? [theme.darkAlgorithm] : [theme.defaultAlgorithm];
const algorithm = isDark.value
? [theme.darkAlgorithm]
: [theme.defaultAlgorithm];
// antd
if (preferences.app.compact) {
@ -59,8 +62,6 @@ if (dictStore.initDict) {
}
.ant-btn__warning {
@apply bg-warning text-warning-foreground shadow hover:bg-warning/90;
@apply bg-warning text-warning-foreground hover:bg-warning/90 shadow;
}
</style>

View File

@ -18,16 +18,16 @@ const routes: RouteRecordRaw[] = [
path: '/supervise/edit/:id?',
beforeEnter: (e) => {
if (e.params.id && e.params.id === ':id') {
e.params.id = ''
e.fullPath = '/supervise/edit'
e.params.id = '';
e.fullPath = '/supervise/edit';
}
},
component: () => import('#/views/supervise/edit/index.vue'),
meta: {
hideInMenu: true,
hideInTab: true,
icon: 'lucide:area-chart',
title: '立项填报',
activePath: '/contract/approval/edit/:id?',
},
},
{
@ -74,8 +74,8 @@ const routes: RouteRecordRaw[] = [
path: '/meeting/edit/:id?',
beforeEnter: (e) => {
if (e.params.id && e.params.id === ':id') {
e.params.id = ''
e.fullPath = '/meeting/edit'
e.params.id = '';
e.fullPath = '/meeting/edit';
}
},
component: () => import('#/views/meeting/edit/index.vue'),
@ -112,8 +112,8 @@ const routes: RouteRecordRaw[] = [
path: '/bussiness-trip/edit/:id?',
beforeEnter: (e) => {
if (e.params.id && e.params.id === ':id') {
e.params.id = ''
e.fullPath = '/bussiness-trip/edit'
e.params.id = '';
e.fullPath = '/bussiness-trip/edit';
}
},
component: () => import('#/views/bussiness-trip/edit/index.vue'),
@ -122,6 +122,7 @@ const routes: RouteRecordRaw[] = [
hideInTab: true,
icon: 'lucide:area-chart',
title: '出差填报',
activePath: '/bussiness-trip/list',
},
},
{
@ -212,7 +213,7 @@ const routes: RouteRecordRaw[] = [
title: '值班管理',
},
},
]
],
},
{
component: BasicLayout,

View File

@ -93,9 +93,9 @@ function mockLogin(username: string, password: string, isSkip: boolean = true) {
<a-button @click="mockLogin('Admin.itl', 'ABC123')">超级管理员</a-button>
<a-button @click="mockLogin('zhangxs.itl', 'Rlgs!6243910')">zxs</a-button>
<a-button @click="mockLogin('zengp.itl', 'Rlgs!6243910')">zp</a-button>
<a-button @click="mockLogin('rlqym', 'Rlgs!6243910', false)"
>rlqym</a-button
>
<a-button @click="mockLogin('rlqym', 'Rlgs!6243910', false)">
rlqym
</a-button>
</a-space>
</div>
</template>

View File

@ -1,36 +1,39 @@
<script setup lang="ts">
import { defineComponent, ref, computed, reactive, onMounted, nextTick } from "vue";
import { nextTick, onMounted, ref } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { Page, useVbenModal } from "@vben/common-ui";
import { type FormScopeContext } from "@fast-crud/fast-crud";
import { MdiUpload } from "@vben/icons";
import { useRouter } from 'vue-router'
import dayjs, { Dayjs } from "dayjs";
import Apis from "#/api";
import { message, Modal, type UploadChangeParam, type UploadProps } from 'ant-design-vue';
import { useUserStore } from "@vben/stores";
import { useRoute } from "vue-router";
import { Page, useVbenModal } from '@vben/common-ui';
import { MdiUpload } from '@vben/icons';
import { useUserStore } from '@vben/stores';
import chooseUserModal from "#/views/system/user/choose-user-modal.vue";
import { FileUploader } from "#/utils/file";
import {
message,
Modal,
type UploadChangeParam,
type UploadProps,
} from 'ant-design-vue';
import { logger } from 'common-utils';
import dayjs, { Dayjs } from 'dayjs';
import Apis from '#/api';
import { FileUploader } from '#/utils/file';
import chooseUserModal from '#/views/system/user/choose-user-modal.vue';
const fileUploader = new FileUploader({})
const fileUploader = new FileUploader({});
const [ChooseUserModal, chooseUserModalApi] = useVbenModal({
connectedComponent: chooseUserModal,
});
const router = useRouter();
const route = useRoute();
let id = ref(route.params.id);
const id = ref(route.params.id);
const containerRef = ref();
const formRef = ref();
const form2Ref = ref();
let isLoading = ref(false)
const isLoading = ref(false);
function calculateDaysBetweenTimestamps(timestamp1, timestamp2) {
const date1 = new Date(timestamp1);
@ -47,116 +50,119 @@ function handleUpdateFormattedValue() {
if (starttime && endtime) {
const startTimestamp = new Date(starttime).getTime();
const endTimestamp = new Date(endtime).getTime();
const daysBetween = calculateDaysBetweenTimestamps(startTimestamp, endTimestamp);
const daysBetween = calculateDaysBetweenTimestamps(
startTimestamp,
endTimestamp,
);
formRef.value.setFormData({
days: daysBetween
days: daysBetween,
});
if (endtime <= starttime) {
message.error('结束时间不能早于开始时间')
message.error('结束时间不能早于开始时间');
nextTick(() => {
formRef.value.setFormData({
starttime: "",
days: "",
})
})
starttime: '',
days: '',
});
});
}
}
}
const disabledDate = (current: Dayjs) => {
// Can not select days before today and today
let form = formRef.value.form;
const form = formRef.value.form;
return current < dayjs(form.starttime);
}
};
const formBinding = ref({
col: { span: 24 },
initialForm: {},
labelCol: { style: { width: "120px" } },
labelCol: { style: { width: '120px' } },
columns: {
starttime: {
title: "出发时间",
key: "starttime",
title: '出发时间',
key: 'starttime',
component: {
name: "a-date-picker",
vModel: "value",
name: 'a-date-picker',
vModel: 'value',
allowClear: false,
showTime: { format: "HH:mm" },
showTime: { format: 'HH:mm' },
// disabledDate: (current) => current && current < dayjs().endOf("day"),
format: "YYYY-MM-DD HH:mm",
valueFormat: "YYYY-MM-DD HH:mm",
format: 'YYYY-MM-DD HH:mm',
valueFormat: 'YYYY-MM-DD HH:mm',
onChange: (e) => {
handleUpdateFormattedValue()
}
handleUpdateFormattedValue();
},
rules: [{ required: true, message: "请选择出发时间" }],
},
rules: [{ required: true, message: '请选择出发时间' }],
},
endtime: {
title: "结束时间",
key: "endtime",
title: '结束时间',
key: 'endtime',
component: {
name: "a-date-picker",
vModel: "value",
name: 'a-date-picker',
vModel: 'value',
allowClear: false,
showTime: { format: "HH:mm" },
disabledDate: disabledDate,
showTime: { format: 'HH:mm' },
disabledDate,
onChange: (e) => {
handleUpdateFormattedValue()
handleUpdateFormattedValue();
},
format: "YYYY-MM-DD HH:mm",
valueFormat: "YYYY-MM-DD HH:mm",
format: 'YYYY-MM-DD HH:mm',
valueFormat: 'YYYY-MM-DD HH:mm',
},
rules: [{ required: true, message: "请选择结束时间" }],
rules: [{ required: true, message: '请选择结束时间' }],
},
days: {
title: "出差天数",
key: "days",
title: '出差天数',
key: 'days',
col: { span: 24 },
component: {
name: "a-input-number",
vModel: "value",
name: 'a-input-number',
vModel: 'value',
min: 0,
},
},
place: {
title: "出差地点",
key: "place",
title: '出差地点',
key: 'place',
col: { span: 24 },
component: {
name: "a-textarea",
vModel: "value",
name: 'a-textarea',
vModel: 'value',
props: {},
},
rules: [{ required: true, message: "请输入出差地点" }],
rules: [{ required: true, message: '请输入出差地点' }],
},
reasons: {
title: "出差事项",
key: "reasons",
title: '出差事项',
key: 'reasons',
col: { span: 24 },
component: {
name: "a-textarea",
vModel: "value",
name: 'a-textarea',
vModel: 'value',
props: {},
},
},
phone: {
title: "联系方式",
key: "phone",
title: '联系方式',
key: 'phone',
col: { span: 24 },
component: {
name: "a-input",
vModel: "value",
name: 'a-input',
vModel: 'value',
props: {},
},
},
remarks: {
title: "备注",
key: "remarks",
title: '备注',
key: 'remarks',
col: { span: 24 },
component: {
name: "a-textarea",
vModel: "value",
name: 'a-textarea',
vModel: 'value',
props: {},
},
},
@ -165,24 +171,23 @@ const formBinding = ref({
const form2Binding = ref({
col: { span: 24 },
initialForm: {
},
labelCol: { style: { width: "120px" } },
initialForm: {},
labelCol: { style: { width: '120px' } },
columns: {
fileList: {
title: "附件上传",
key: "fileList",
title: '附件上传',
key: 'fileList',
},
},
}
});
const beforeUpload: UploadProps["beforeUpload"] = (file) => {
const beforeUpload: UploadProps['beforeUpload'] = (file) => {
return false;
};
function handleBack() {
Modal.confirm({
title: "提示",
title: '提示',
content: `是否确认返回上一页面?`,
onOk: async () => {
back();
@ -194,154 +199,167 @@ function handleBack() {
* 页面返回并关闭tab
*/
function back() {
router.replace('/bussiness-trip/list')
router.replace('/bussiness-trip/list');
}
const handleChange = (info: UploadChangeParam) => {
form2Ref.value.setFormData({
fileList: info.fileList.length ? info.fileList : [],
fileList: info.fileList.length > 0 ? info.fileList : [],
});
};
const chooseUserIds = ref([]);
async function handleChooseUserConfirm(e) {
console.log(e);
chooseUserModalApi.close();
isLoading.value = true
isLoading.value = true;
try {
await Apis.ccsq.post_startWorkFlow({data:{
//
// const nodeInfo = await getNodeInfo(nodeId);
chooseUserIds.value = e.map((item) => item.ACCOUNT_ID);
await Apis.ccsq.post_startWorkFlow({
data: {
guid: id.value,
assigneeList: e.map(item=>item.ACCOUNT_ID)
}})
message.success("提交成功")
back()
assigneeList: chooseUserIds.value,
},
});
message.success('提交成功');
back();
} catch (error) {
console.log(error)
message.error("提交失败,请稍候再试")
logger.error('合同立项提交失败', error);
message.error('提交失败,请稍候再试');
} finally {
isLoading.value = false
isLoading.value = false;
}
}
async function handleSave() {
isLoading.value = true
isLoading.value = true;
try {
let form = formRef.value.form;
const form = formRef.value.form;
// await formRef.value.submit()
console.log(formRef.value)
const userStore = useUserStore()
console.log(formRef.value);
const userStore = useUserStore();
form.applyName = userStore.userInfo.gwmc;
form.applyId = userStore.userInfo.userId;
form.applyTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
form.applyTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
console.log(form2Ref.value.form)
let fileList = form2Ref.value.form.fileList
let files: any = []
if (fileList && fileList.length) {
files = await fileUploader.upload(fileList, { source: 'erp' })
console.log(form2Ref.value.form);
const fileList = form2Ref.value.form.fileList;
let files: any = [];
if (fileList && fileList.length > 0) {
files = await fileUploader.upload(fileList, { source: 'erp' });
}
console.log(files)
console.log(files);
if (files) {
form.fileUuid = (files.map((item) => item.fileUuid) || []).join(',')
form.fileUuid = (files.map((item) => item.fileUuid) || []).join(',');
}
await Apis.ccsq.post_save({ data: form }).then((data) => {
id.value = data.guid
message.success("保存成功");
const data = await Apis.ccsq.post_save({ data: form });
id.value = data.guid;
message.success('保存成功');
Modal.confirm({
title: "提示",
content: "保存成功!是否选择审批人进行提交?",
title: '提示',
content: '保存成功!是否选择审批人进行提交?',
onOk: () => {
handleSubmit()
handleSubmit();
},
onCancel: () => {
back();
},
});
});
} catch (error) {
message.error("提交失败,请稍候再试");
console.log(error)
message.error('提交失败,请稍候再试');
console.log(error);
} finally {
isLoading.value = false
isLoading.value = false;
}
}
function handleSubmit() {
// isLoading.value = true
chooseUserModalApi.setData({
title: "选择审批人",
})
chooseUserModalApi.open()
title: '选择审批人',
userIds: chooseUserIds.value || [],
});
chooseUserModalApi.open();
}
onMounted(async () => {
isLoading.value = true
console.log(id.value)
isLoading.value = true;
console.log(id.value);
try {
if (id.value) {
let data = await Apis.ccsq.get_page({ params: { guid: id } })
data = data.rows[0]
formRef.value.setFormData(data)
let data = await Apis.ccsq.get_page({ params: { guid: id.value } });
data = data.rows[0];
formRef.value.setFormData(data);
if (data.fileUuid) {
let files = await fileUploader.select(data.fileUuid)
console.log(files)
form2Ref.value.setFormData({
fileList: files
}, 50)
const files = await fileUploader.select(data.fileUuid);
console.log(files);
form2Ref.value.setFormData(
{
fileList: files,
},
50,
);
}
}
} catch (error) {
console.log(error);
Modal.error({
title: "提示",
content: "当前出差申请不存在",
title: '提示',
content: '当前出差申请不存在',
onOk() {
back();
},
});
} finally {
isLoading.value = false
isLoading.value = false;
}
})
});
</script>
<template>
<Page
id="components-affix-demo-target"
ref="containerRef"
contentClass="h-full flex flex-col overflow-y-scroll"
content-class="h-full flex flex-col overflow-y-scroll"
>
<ChooseUserModal class="w-[950px]" multiple @confirm="handleChooseUserConfirm" />
<ChooseUserModal
class="w-[950px]"
multiple
@confirm="handleChooseUserConfirm"
/>
<a-spin :spinning="isLoading">
<a-space>
<vben-button variant="primary" @click="handleSave()">保存</vben-button>
<vben-button variant="primary" @click="handleSubmit()">提交</vben-button>
<vben-button variant="secondary" @click="handleBack()">返回</vben-button>
<vben-button variant="primary" @click="handleSubmit()">
提交
</vben-button>
<vben-button variant="secondary" @click="handleBack()">
返回
</vben-button>
</a-space>
<div class="mx-auto w-[60%] min-w-[600px] h-[75vh] overflow-auto">
<div class="mx-auto h-[75vh] w-[60%] min-w-[600px] overflow-auto">
<a-space direction="vertical">
<a-card title="基本信息" size="small">
<fs-form ref="formRef" v-bind="formBinding"> </fs-form>
<a-card size="small" title="基本信息">
<fs-form ref="formRef" v-bind="formBinding" />
</a-card>
<a-card title="相关附件" size="small">
<a-card size="small" title="相关附件">
<fs-form ref="form2Ref" v-bind="form2Binding">
<template #form_fileList="scope">
<a-upload
v-model:fileList="scope.form.fileList"
accept=".pdf"
:max-count="3"
name="file"
v-model:file-list="scope.form.fileList"
:before-upload="beforeUpload"
:max-count="3"
accept=".pdf"
name="file"
@change="handleChange"
>
<vben-button variant="secondary">

View File

@ -1,64 +1,5 @@
<template>
<Page contentClass="h-full flex flex-col">
<SubmitModal class="w-[600px]" title="选择送审人" :loading="isConfirmLoading" :confirmLoading="isConfirmLoading">
<a-radio-group v-model:value="checkedValue">
<a-radio :style="radioStyle" value="all">导出全部</a-radio>
<a-radio :style="radioStyle" value="daterange">
导出时间范围
<div class="ml-2">
<a-range-picker v-model:value="exportSearchParams.daterange" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" />
</div>
</a-radio>
</a-radio-group>
</SubmitModal>
<fs-search ref="searchRef" v-bind="searchForm"> </fs-search>
<div class="flex-1 min-h-300px">
<vxe-grid ref="xGridRef" v-bind="gridOptions" @cell-click="handleCellClick">
<template #toolbar_buttons>
<a-space>
<vben-button variant="primary" @click="handleAdd()">
<MdiAdd class="text-lg mr-0.5" />
新增
</vben-button>
<vben-button variant="warning" :disabled="!selectRow || !selectRow['guid']"
@click="handleUpdate(selectRow)">
<MdiUpdate class="text-lg mr-0.5" />
修改
</vben-button>
<vben-button variant="primary" @click="handleExport()">
<MdiExport class="text-lg mr-0.5" />
导出
</vben-button>
<vben-button variant="destructive" :disabled="!selectRow || !selectRow['guid']"
@click="handleDelete(selectRow)">
<MdiDelete class="text-lg mr-0.5" />
删除
</vben-button>
</a-space>
</template>
<template #radio_cell="{ row, checked }">
<span class="text-base" @click.stop="setSelectRow(row)">
<MdiRadioChecked v-if="checked" />
<MdiRadioUnchecked v-else />
</span>
</template>
<template #baseSlot="{ row }">
<p>开始时间{{ row.starttime }}</p>
<p>结束时间{{ row.endtime }}</p>
</template>
</vxe-grid>
</div>
</Page>
</template>
<script setup lang="ts">
import { defineComponent, ref, computed, reactive, onMounted } from 'vue';
import { FsCrud } from '@fast-crud/fast-crud';
import { type VxeGridProps } from 'vxe-table'
import { Page, useVbenModal } from '@vben/common-ui';
import { useVxeTable } from '#/hooks/vxeTable';
import {
@ -68,20 +9,27 @@ import {
useFs,
utils,
} from '@fast-crud/fast-crud';
import { MdiAdd, MdiUpdate, MdiDelete, MdiImport, MdiExport, MdiRadioUnchecked, MdiRadioChecked } from '@vben/icons';
import {
MdiAdd,
MdiUpdate,
MdiDelete,
MdiExport,
MdiRadioUnchecked,
MdiRadioChecked,
} from '@vben/icons';
import { getColumns } from './crud.tsx';
import { dict } from "@fast-crud/fast-crud";
import { getMonthStartAndEnd } from '#/utils/time'
import Apis from '#/api'
import { dict } from '@fast-crud/fast-crud';
import { getMonthStartAndEnd } from '#/utils/time';
import Apis from '#/api';
import dayjs from 'dayjs';
import { message } from "ant-design-vue";
import { message } from 'ant-design-vue';
import { Modal } from 'ant-design-vue';
import { useRouter } from 'vue-router'
import { useRouter } from 'vue-router';
const router = useRouter();
const checkedValue = ref('all')
const checkedValue = ref('all');
const exportSearchParams = ref<any>({
daterange: getMonthStartAndEnd(),
});
@ -91,91 +39,56 @@ const radioStyle = reactive({
lineHeight: '30px',
});
const searchRef = ref()
let isConfirmLoading = ref(false)
const [SubmitModal, submitModalApi] = useVbenModal({
async onConfirm() {
isConfirmLoading.value = true
try {
let params = {};
if (checkedValue.value == "daterange") {
params = {
startDate: exportSearchParams.value.daterange[0],
endDate: exportSearchParams.value.daterange[1],
};
}
let res = await Apis.zbgl.post_export({
params: params, config: {
meta: {
responseType: 'blob'
}
}
}).send();
message.success("导出成功");
modalApi.close()
showExportModal.value = false;
} catch (error) {
console.error(error);
} finally {
isConfirmLoading.value = false
}
console.info("onConfirm");
},
});
const searchRef = ref();
let isConfirmLoading = ref(false);
const { xGridRef, triggerProxy, gridProps } = useVxeTable({ ref: 'xGridRef' });
const treeData = ref([]);
/** Hooks - 表格 */
const gridOptions = reactive(gridProps({
const gridOptions = reactive(
gridProps({
columns: getColumns(),
proxyConfig: {
autoLoad: false,
ajax: {
query: ({ page }) => {
return Apis.ccsq.get_page({ params: { pageNum: page.currentPage, pageSize: page.pageSize, ...searchRef.value?.formData } })
}
query: async ({ page }) => {
const data = await Apis.ccsq.get_page({
params: {
pageNum: page.currentPage,
pageSize: page.pageSize,
...searchRef.value?.formData,
},
});
return data;
},
},
},
pagerConfig: {
enabled: true
enabled: true,
},
toolbarConfig: {
enabled: true
enabled: true,
},
}));
}),
);
function handleAdd() {
router.push('/bussiness-trip/edit')
router.push('/bussiness-trip/edit');
}
function handleUpdate(row) {
router.push('/bussiness-trip/edit/' + row['guid'])
}
function handleUpload() {
// modalApi.setData({
// content: ' content',
// payload: ' payload',
// });
uploadModalApi.open();
router.push('/bussiness-trip/edit/' + row['guid']);
}
function handleDelete(row) {
Modal.confirm({
title: '提示',
content: "是否确认删除该条记录?",
content: '是否确认删除该条记录?',
okType: 'danger',
onOk: async () => {
await Apis.zbgl.get_deletes({ params: { ids: row['guid'] } })
message.success("删除成功");
triggerProxy("reload");
await Apis.ccsq.post_deletes({ params: { ids: row['guid'] } });
message.success('删除成功');
triggerProxy('reload');
},
onCancel() {
console.log('Cancel');
@ -187,19 +100,19 @@ function handleExport() {
const $grid = xGridRef.value;
if ($grid) {
$grid.exportData({
type: "xlsx",
type: 'xlsx',
});
message.success("导出成功");
message.success('导出成功');
}
}
/** 选中数据 */
const selectRow: Recordable = computed(() => {
const selectRow: ant = computed(() => {
return xGridRef.value?.getRadioRecord() || null;
});
/** 单选框选中事件 */
const setSelectRow = (row: Recordable) => {
const setSelectRow = (row: ant) => {
if (selectRow.value && selectRow.value['guid'] === row['guid']) {
xGridRef.value?.clearRadioRow();
} else {
@ -213,13 +126,11 @@ function handleCellClick({ row }) {
}
onMounted(() => {
triggerProxy('reload')
})
triggerProxy('reload');
});
let searchParams = reactive({})
const searchForm = ref({
initialForm: {
},
initialForm: {},
columns: {
startDate: {
title: '开始日期',
@ -252,15 +163,82 @@ const searchForm = ref({
show: true,
},
},
onSearch(context: any) {
console.log(searchRef.value)
triggerProxy('reload')
},
onReset(context: any) {
searchParams = context.form
onSearch(_context: any) {
triggerProxy('reload');
},
});
//
</script>
<template>
<Page contentClass="h-full flex flex-col">
<SubmitModal
class="w-[600px]"
title="选择送审人"
:loading="isConfirmLoading"
:confirmLoading="isConfirmLoading"
>
<a-radio-group v-model:value="checkedValue">
<a-radio :style="radioStyle" value="all">导出全部</a-radio>
<a-radio :style="radioStyle" value="daterange">
导出时间范围
<div class="ml-2">
<a-range-picker
v-model:value="exportSearchParams.daterange"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
/>
</div>
</a-radio>
</a-radio-group>
</SubmitModal>
<fs-search ref="searchRef" v-bind="searchForm"> </fs-search>
<div class="min-h-300px flex-1">
<vxe-grid ref="xGridRef" v-bind="gridOptions" @cell-click="handleCellClick">
<template #toolbar_buttons>
<a-space>
<vben-button variant="primary" @click="handleAdd()">
<MdiAdd class="mr-0.5 text-lg" />
新增
</vben-button>
<vben-button
variant="warning"
:disabled="!selectRow || !selectRow['guid']"
@click="handleUpdate(selectRow)"
>
<MdiUpdate class="mr-0.5 text-lg" />
修改
</vben-button>
<vben-button variant="primary" @click="handleExport()">
<MdiExport class="mr-0.5 text-lg" />
导出
</vben-button>
<vben-button
variant="destructive"
:disabled="!selectRow || !selectRow['guid']"
@click="handleDelete(selectRow)"
>
<MdiDelete class="mr-0.5 text-lg" />
删除
</vben-button>
</a-space>
</template>
<template #radio_cell="{ row, checked }">
<span class="text-base" @click.stop="setSelectRow(row)">
<MdiRadioChecked v-if="checked" />
<MdiRadioUnchecked v-else />
</span>
</template>
<template #baseSlot="{ row }">
<p>开始时间{{ row.starttime }}</p>
<p>结束时间{{ row.endtime }}</p>
</template>
</vxe-grid>
</div>
</Page>
</template>
<style></style>

View File

@ -1,25 +1,29 @@
<script setup lang="ts">
import { ref, computed, reactive, onMounted, nextTick, onUnmounted } from "vue";
import { nextTick, onMounted, ref } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { Page, useVbenModal } from "@vben/common-ui";
import { dict, type FormScopeContext } from "@fast-crud/fast-crud";
import { MdiUpload } from "@vben/icons";
import { useRouter } from 'vue-router'
import dayjs, { Dayjs } from "dayjs";
import Apis from "#/api";
import { MdiAdd, MdiUpdate, MdiDelete, MdiImport, MdiExport, MdiRadioUnchecked, MdiRadioChecked } from '@vben/icons';
import { Page, useVbenModal } from '@vben/common-ui';
import { MdiUpload } from '@vben/icons';
import { useUserStore } from '@vben/stores';
import { message, Modal, type UploadChangeParam, type UploadProps } from 'ant-design-vue';
import { useUserStore } from "@vben/stores";
import { useRoute } from "vue-router";
import chooseUserModal from "#/views/system/user/choose-user-modal.vue";
import { FileUploader } from "#/utils/file";
import { DICT_TYPE, getDictOptions } from "#/utils/dict";
import { useVxeTable } from "#/hooks/vxeTable";
import { dict } from '@fast-crud/fast-crud';
import {
message,
Modal,
type UploadChangeParam,
type UploadProps,
} from 'ant-design-vue';
import dayjs, { Dayjs } from 'dayjs';
const { xGridRef, gridProps, triggerProxy } = useVxeTable({ ref: "xGridRef" });
import Apis from '#/api';
import { useVxeTable } from '#/hooks/vxeTable';
import { DICT_TYPE, getDictOptions } from '#/utils/dict';
import { FileUploader } from '#/utils/file';
import chooseUserModal from '#/views/system/user/choose-user-modal.vue';
const fileUploader = new FileUploader({})
const { xGridRef, gridProps, triggerProxy } = useVxeTable({ ref: 'xGridRef' });
const fileUploader = new FileUploader({});
const [ChooseUserModal, chooseUserModalApi] = useVbenModal({
connectedComponent: chooseUserModal,
@ -29,163 +33,161 @@ const router = useRouter();
const route = useRoute();
const id = route.params.id;
let showHelpTip = ref(false);
const showHelpTip = ref(false);
const containerRef = ref();
const formRef = ref();
const form2Ref = ref();
let isLoading = ref(false)
const isLoading = ref(false);
function handleUpdateFormattedValue() {
const { starttime, endtime } = formRef.value.form;
if (starttime && endtime) {
if (endtime <= starttime) {
message.error('截止时间不能早于开始时间')
if (starttime && endtime && endtime <= starttime) {
message.error('截止时间不能早于开始时间');
nextTick(() => {
formRef.value.setFormData({
starttime: "",
})
})
}
starttime: '',
});
});
}
}
const disabledDate = (current: Dayjs) => {
// Can not select days before today and today
let form = formRef.value.form;
const form = formRef.value.form;
return current < dayjs(form.starttime);
}
};
const formBinding = ref({
col: { span: 24 },
initialForm: {},
labelCol: { style: { width: "120px" } },
labelCol: { style: { width: '120px' } },
columns: {
taskName: {
title: "任务标题",
key: "taskName",
title: '任务标题',
key: 'taskName',
col: { span: 24 },
component: {
name: "a-input",
vModel: "value",
name: 'a-input',
vModel: 'value',
},
rules: [{ required: true, message: "请输入任务标题" }],
rules: [{ required: true, message: '请输入任务标题' }],
},
taskType: {
title: "任务类别",
key: "taskType",
title: '任务类别',
key: 'taskType',
col: { span: 12 },
component: {
name: "fs-dict-select",
vModel: "value",
name: 'fs-dict-select',
vModel: 'value',
dict: dict({
data: getDictOptions(DICT_TYPE.supervise_task_type)
data: getDictOptions(DICT_TYPE.supervise_task_type),
}),
},
rules: [{ required: true, message: "请选择任务类别" }],
rules: [{ required: true, message: '请选择任务类别' }],
},
urgentDegree: {
title: "紧急程度",
key: "urgentDegree",
title: '紧急程度',
key: 'urgentDegree',
col: { span: 12 },
component: {
name: "fs-dict-select",
vModel: "value",
name: 'fs-dict-select',
vModel: 'value',
dict: dict({
data: getDictOptions(DICT_TYPE.supervise_emergency_level)
data: getDictOptions(DICT_TYPE.supervise_emergency_level),
}),
},
},
starttime: {
title: "开始时间",
key: "starttime",
title: '开始时间',
key: 'starttime',
col: { span: 12 },
component: {
name: "a-date-picker",
vModel: "value",
name: 'a-date-picker',
vModel: 'value',
allowClear: false,
showTime: { format: "HH:mm" },
showTime: { format: 'HH:mm' },
// disabledDate: (current) => current && current < dayjs().endOf("day"),
format: "YYYY-MM-DD HH:mm",
valueFormat: "YYYY-MM-DD HH:mm",
format: 'YYYY-MM-DD HH:mm',
valueFormat: 'YYYY-MM-DD HH:mm',
onChange: (e) => {
handleUpdateFormattedValue()
}
handleUpdateFormattedValue();
},
rules: [{ required: true, message: "请选择开始时间" }],
},
rules: [{ required: true, message: '请选择开始时间' }],
},
endtime: {
title: "截止时间",
key: "endtime",
title: '截止时间',
key: 'endtime',
col: { span: 12 },
component: {
name: "a-date-picker",
vModel: "value",
name: 'a-date-picker',
vModel: 'value',
allowClear: false,
showTime: { format: "HH:mm" },
disabledDate: disabledDate,
showTime: { format: 'HH:mm' },
disabledDate,
onChange: (e) => {
handleUpdateFormattedValue()
handleUpdateFormattedValue();
},
format: "YYYY-MM-DD HH:mm",
valueFormat: "YYYY-MM-DD HH:mm",
format: 'YYYY-MM-DD HH:mm',
valueFormat: 'YYYY-MM-DD HH:mm',
},
rules: [{ required: true, message: "请选择截止时间" }],
rules: [{ required: true, message: '请选择截止时间' }],
},
planFinishTime: {
title: "预计完成时间",
key: "endtime",
title: '预计完成时间',
key: 'endtime',
component: {
name: "a-date-picker",
vModel: "value",
name: 'a-date-picker',
vModel: 'value',
allowClear: false,
showTime: { format: "HH:mm" },
disabledDate: disabledDate,
showTime: { format: 'HH:mm' },
disabledDate,
onChange: (e) => {
handleUpdateFormattedValue()
handleUpdateFormattedValue();
},
format: "YYYY-MM-DD HH:mm",
valueFormat: "YYYY-MM-DD HH:mm",
format: 'YYYY-MM-DD HH:mm',
valueFormat: 'YYYY-MM-DD HH:mm',
},
rules: [{ required: true, message: "请选择预计完成时间" }],
rules: [{ required: true, message: '请选择预计完成时间' }],
},
taskContent: {
title: "任务内容",
key: "taskContent",
title: '任务内容',
key: 'taskContent',
col: { span: 24 },
component: {
name: "a-textarea",
vModel: "value",
name: 'a-textarea',
vModel: 'value',
},
rules: [{ required: true, message: "请输入任务内容" }],
rules: [{ required: true, message: '请输入任务内容' }],
},
taskProgress: {
title: "任务进度",
key: "taskProgress",
title: '任务进度',
key: 'taskProgress',
col: { span: 24 },
component: {
name: "a-textarea",
vModel: "value",
name: 'a-textarea',
vModel: 'value',
},
rules: [{ required: true, message: "请输入任务进度" }],
rules: [{ required: true, message: '请输入任务进度' }],
},
fileList: {
title: "相关附件",
key: "fileList",
title: '相关附件',
key: 'fileList',
},
},
});
const beforeUpload: UploadProps["beforeUpload"] = (file) => {
const beforeUpload: UploadProps['beforeUpload'] = (file) => {
return false;
};
function handleBack() {
Modal.confirm({
title: "提示",
title: '提示',
content: `是否确认返回上一页面?`,
onOk: async () => {
back();
@ -197,24 +199,26 @@ function handleBack() {
* 页面返回并关闭tab
*/
function back() {
router.replace('/supervise/list')
router.replace('/supervise/list');
}
const handleChange = (info: UploadChangeParam) => {
formRef.value.setFormData({
fileList: info.fileList.length ? info.fileList : [],
fileList: info.fileList.length > 0 ? info.fileList : [],
});
};
function handleDelete() {
Modal.confirm({
title: '提示',
content: "是否确认删除该条记录?",
content: '是否确认删除该条记录?',
okType: 'danger',
onOk: async () => {
await Apis.meeting.post_deletes({ params: { ids: currData.value['guid'] } })
message.success("删除成功");
back()
await Apis.meeting.post_deletes({
params: { ids: currData.value.guid },
});
message.success('删除成功');
back();
},
});
}
@ -224,128 +228,137 @@ function handleDelete() {
* @param rows
*/
function handleChooseUserConfirm(rows) {
console.log("[ rows ] >", rows);
rows.forEach((element) => {
});
console.log('[ rows ] >', rows);
rows.forEach((element) => {});
const $grid = xGridRef.value;
//
if ($grid) {
$grid.remove();
$grid.insert(rows).then(({ row }) => {});
} else {
console.error("xGridRef不存在");
console.error('xGridRef不存在');
}
}
async function handleSubmit() {
isLoading.value = true
isLoading.value = true;
try {
let form = formRef.value.form;
const form = formRef.value.form;
// await formRef.value.submit()
console.log(formRef.value)
const userStore = useUserStore()
console.log(formRef.value);
const userStore = useUserStore();
let newForm = {}
let newForm = {};
//
let fileList = formRef.value.form.fileList
let files: any = []
if (fileList && fileList.length) {
files = await fileUploader.upload(fileList, { source: 'erp' })
const fileList = formRef.value.form.fileList;
let files: any = [];
if (fileList && fileList.length > 0) {
files = await fileUploader.upload(fileList, { source: 'erp' });
}
console.log(files)
console.log(files);
if (files) {
newForm.fileUuid = (files.map((item) => item.fileUuid) || []).join(',')
newForm.fileUuid = (files.map((item) => item.fileUuid) || []).join(',');
}
newForm = Object.assign({}, formRef.value.form, newForm)
newForm = Object.assign({}, formRef.value.form, newForm);
delete newForm.fileList
delete newForm.fileList;
console.log(newForm)
console.log(newForm);
await Apis.supervise.post_save({ data: newForm }).then((data) => {
message.success("提交成功");
message.success('提交成功');
back();
});
} catch (error) {
message.error("提交失败,请稍候再试");
console.log(error)
message.error('提交失败,请稍候再试');
console.log(error);
} finally {
isLoading.value = false
isLoading.value = false;
}
}
}
const currData = ref({})
const currData = ref({});
onMounted(async () => {
isLoading.value = true
console.log(id)
isLoading.value = true;
console.log(id);
try {
if (id) {
let data = await Apis.supervise.get_page({ params: { guid: id } })
data = data.rows[0]
let data = await Apis.supervise.get_page({ params: { guid: id } });
data = data.rows[0];
console.log(data)
console.log(data);
currData.value = data;
nextTick(() => {
formRef.value.setFormData(data)
})
formRef.value.setFormData(data);
});
if (data.fileUuid) {
let files = await fileUploader.select(data.fileUuid)
console.log(files)
const files = await fileUploader.select(data.fileUuid);
console.log(files);
nextTick(() => {
formRef.value.setFormData({
fileList: files
})
})
fileList: files,
});
});
}
}
} catch (error) {
console.log(error);
Modal.error({
title: "提示",
content: "当前立项信息不存在",
title: '提示',
content: '当前立项信息不存在',
onOk() {
back();
},
});
} finally {
isLoading.value = false
isLoading.value = false;
}
})
});
</script>
<template>
<Page id="components-affix-demo-target" ref="containerRef" contentClass="h-full flex flex-col overflow-y-scroll">
<ChooseUserModal class="w-[950px]" multiple @confirm="handleChooseUserConfirm" />
<Page
id="components-affix-demo-target"
ref="containerRef"
content-class="h-full flex flex-col overflow-y-scroll"
>
<ChooseUserModal
class="w-[950px]"
multiple
@confirm="handleChooseUserConfirm"
/>
<a-spin :spinning="isLoading">
<a-space>
<vben-button variant="primary" @click="handleSubmit()">提交</vben-button>
<vben-button variant="destructive"
@click="handleDelete()">
<vben-button variant="primary" @click="handleSubmit()">
提交
</vben-button>
<vben-button variant="destructive" @click="handleDelete()">
删除
</vben-button>
<vben-button variant="secondary" @click="handleBack()">返回</vben-button>
<vben-button variant="secondary" @click="handleBack()">
返回
</vben-button>
</a-space>
<div class="mx-auto w-[800px] h-[75vh] overflow-auto">
<div class="mx-auto h-[75vh] w-[800px] overflow-auto">
<a-space direction="vertical">
<a-card title="基本信息" size="small" class="w-full">
<a-card class="w-full" size="small" title="基本信息">
<fs-form ref="formRef" class="w-full" v-bind="formBinding">
<template #form_fileList="scope">
<a-upload v-model:fileList="scope.form.fileList" accept=".pdf,.ppt,.pptx" :max-count="3" name="file"
:before-upload="beforeUpload" @change="handleChange">
<a-upload
v-model:file-list="scope.form.fileList"
:before-upload="beforeUpload"
:max-count="3"
accept=".pdf,.ppt,.pptx"
name="file"
@change="handleChange"
>
<a-button>
<MdiUpload />
点击上传
@ -357,7 +370,6 @@ onMounted(async () => {
</a-space>
</div>
</a-spin>
</Page>
</template>

View File

@ -1,9 +1,8 @@
import type { VxeGridPropTypes } from 'vxe-table';
import { useRender } from '#/hooks/useRender';
import dayjs from 'dayjs';
import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict';
import { dict } from '@fast-crud/fast-crud';
import { unitComponentProps } from '#/common/unit';
import { DICT_TYPE, getDictOptions } from '#/utils/dict';
export const PrimaryKey = 'guid';
@ -25,8 +24,7 @@ export function getColumns(_params: any = {}): VxeGridPropTypes.Columns {
export function getFormSchema(_params: any = {}) {
return {
initialForm: {
},
initialForm: {},
columns: {
taskName: {
title: '任务名称',
@ -51,21 +49,21 @@ export function getFormSchema(_params: any = {}) {
data: [
{
value: '1',
label: '未开始'
label: '未开始',
},
{
value: '2',
label: '进行中'
label: '进行中',
},
{
value: '3',
label: '已完成'
label: '已完成',
},
{
value: '4',
label: '已超时'
}
]
label: '已超时',
},
],
}),
},
autoSearchTrigger: 'enter',
@ -80,7 +78,7 @@ export function getFormSchema(_params: any = {}) {
class: 'min-w-[180px]',
allowClear: true,
dict: dict({
data: getDictOptions(DICT_TYPE.supervise_task_type)
data: getDictOptions(DICT_TYPE.supervise_task_type),
}),
},
autoSearchTrigger: 'enter',
@ -94,6 +92,5 @@ export function getFormSchema(_params: any = {}) {
// show: true,
// },
},
};
}
}

View File

@ -1,34 +1,134 @@
<script setup lang="ts">
import { computed, onMounted, reactive, ref } from 'vue';
import { Page } from '@vben/common-ui';
import {
MdiAdd,
MdiDelete,
MdiExport,
MdiRadioChecked,
MdiRadioUnchecked,
MdiUpdate,
} from '@vben/icons';
import { message } from 'ant-design-vue';
import Apis from '#/api';
import { useVxeTable } from '#/hooks/vxeTable';
import { getColumns, getFormSchema } from './crud.tsx';
const searchRef = ref();
const { xGridRef, triggerProxy, gridProps } = useVxeTable({ ref: 'xGridRef' });
/** Hooks - 表格 */
const gridOptions = reactive(
gridProps({
columns: getColumns(),
proxyConfig: {
autoLoad: false,
ajax: {
query: async ({ page }) => {
const data = await Apis.feedback.get_page({
params: {
pageNum: page.currentPage,
pageSize: page.pageSize,
...searchRef.value?.formData,
},
});
return data;
},
},
},
pagerConfig: {
enabled: true,
},
toolbarConfig: {
enabled: true,
},
}),
);
function handleExport() {
const $grid = xGridRef.value;
if ($grid) {
$grid.exportData({
type: 'xlsx',
});
message.success('导出成功');
}
}
/** 选中数据 */
const selectRow: Recordable = computed(() => {
return xGridRef.value?.getRadioRecord() || null;
});
/** 单选框选中事件 */
const setSelectRow = (row: Recordable) => {
if (selectRow.value && selectRow.value.guid === row.guid) {
xGridRef.value?.clearRadioRow();
} else {
xGridRef.value?.setRadioRow(row);
}
};
/** 表格单元格单击事件 */
function handleCellClick({ row }) {
setSelectRow(row);
}
onMounted(() => {
triggerProxy('reload');
});
let searchParams = reactive({});
const searchForm = ref({
...getFormSchema(),
onSearch(context: any) {
console.log(searchRef.value);
triggerProxy('reload');
},
onReset(context: any) {
searchParams = context.form;
},
});
</script>
<template>
<Page contentClass="h-full flex flex-col">
<fs-search ref="searchRef" v-bind="searchForm"> </fs-search>
<div class="flex-1 min-h-300px">
<vxe-grid ref="xGridRef" v-bind="gridOptions" @cell-click="handleCellClick">
<Page content-class="h-full flex flex-col">
<fs-search ref="searchRef" v-bind="searchForm" />
<div class="min-h-300px flex-1">
<vxe-grid
ref="xGridRef"
v-bind="gridOptions"
@cell-click="handleCellClick"
>
<template #toolbar_buttons>
<a-space>
<a-button type="primary" @click="handleAdd()">
<MdiAdd class="text-lg mr-0.5" />
<MdiAdd class="mr-0.5 text-lg" />
新增
</a-button>
<a-button
:disabled="!selectRow || !selectRow.guid"
type="primary"
:disabled="!selectRow || !selectRow['guid']"
@click="handleUpdate(selectRow)"
>
<MdiUpdate class="text-lg mr-0.5" />
<MdiUpdate class="mr-0.5 text-lg" />
修改
</a-button>
<a-button
:disabled="!selectRow || !selectRow.guid"
type="primary"
:disabled="!selectRow || !selectRow['guid']"
@click="handleDelete(selectRow)"
>
<MdiDelete class="text-lg mr-0.5" />
<MdiDelete class="mr-0.5 text-lg" />
删除
</a-button>
<a-button type="primary" @click="handleExport()">
<MdiExport class="text-lg mr-0.5" />
<MdiExport class="mr-0.5 text-lg" />
导出
</a-button>
</a-space>
@ -46,111 +146,11 @@
</template>
<template #statusSlot="{ row }">
<a-tag>{{ row.status || "待提交" }}</a-tag>
<a-tag>{{ row.status || '待提交' }}</a-tag>
</template>
</vxe-grid>
</div>
</Page>
</template>
<script setup lang="ts">
import { defineComponent, ref, computed, reactive, onMounted } from 'vue';
import { FsCrud } from '@fast-crud/fast-crud';
import { type VxeGridProps } from 'vxe-table'
import { Page, useVbenModal } from '@vben/common-ui';
import { useVxeTable } from '#/hooks/vxeTable';
import { MdiAdd, MdiUpdate, MdiDelete, MdiImport, MdiExport, MdiRadioUnchecked, MdiRadioChecked } from '@vben/icons';
import { getFormSchema, getColumns } from './crud.tsx';
import { dict } from "@fast-crud/fast-crud";
import { getMonthStartAndEnd } from '#/utils/time'
import Apis from '#/api'
import dayjs from 'dayjs';
import { message } from "ant-design-vue";
import { Modal } from 'ant-design-vue';
import { unitComponentProps } from '#/common/unit'
import { DICT_TYPE, getDictOptions } from '#/utils/dict';
import { useRouter } from 'vue-router'
const router = useRouter();
let isOneDay = ref("");
const searchRef = ref()
const { xGridRef, triggerProxy, gridProps } = useVxeTable({ ref: 'xGridRef' });
/** Hooks - 表格 */
const gridOptions = reactive(gridProps({
columns: getColumns(),
proxyConfig: {
autoLoad: false,
ajax: {
query: ({ page }) => {
let form = searchRef.value?.formData
if (form.startDate == form.endDate) {
isOneDay.value = form.startDate;
} else {
isOneDay.value = "";
}
return Apis.supervise.get_huizong({ params: { pageNum: page.currentPage, pageSize: page.pageSize, ...form } })
}
},
},
pagerConfig: {
enabled: true
},
toolbarConfig: {
enabled: true
},
}));
function handleExport() {
const $grid = xGridRef.value;
if ($grid) {
$grid.exportData({
type: "xlsx",
});
message.success("导出成功");
}
}
/** 选中数据 */
const selectRow: Recordable = computed(() => {
return xGridRef.value?.getRadioRecord() || null;
});
/** 单选框选中事件 */
const setSelectRow = (row: Recordable) => {
if (selectRow.value && selectRow.value['guid'] === row['guid']) {
xGridRef.value?.clearRadioRow();
} else {
xGridRef.value?.setRadioRow(row);
}
};
/** 表格单元格单击事件 */
function handleCellClick({ row }) {
setSelectRow(row);
}
onMounted(() => {
triggerProxy('reload')
})
let searchParams = reactive({})
const searchForm = ref({
...getFormSchema(),
onSearch(context: any) {
console.log(searchRef.value)
triggerProxy('reload')
},
onReset(context: any) {
searchParams = context.form
},
});
</script>
<style></style>

View File

@ -1,24 +1,36 @@
import type { VxeGridPropTypes } from 'vxe-table';
import { useRender } from '#/hooks/useRender';
import dayjs from 'dayjs';
import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict';
import { dict } from '@fast-crud/fast-crud';
import { unitComponentProps } from '#/common/unit';
import { useRender } from '#/hooks/useRender';
import { DICT_TYPE, getDictOptions } from '#/utils/dict';
export const PrimaryKey = 'guid';
export function getColumns(params: any = {}): VxeGridPropTypes.Columns {
return [
{ type: 'radio', width: 40, slots: { radio: 'radio_cell' }, align: 'center', fixed: 'left' },
{
type: 'radio',
width: 40,
slots: { radio: 'radio_cell' },
align: 'center',
fixed: 'left',
},
// { type: 'expand', width: 60, slots: { content: 'expand_content' } },
{
field: 'taskName', title: '任务标题', width: 200, slots: {
default: "task-name-slot"
field: 'taskName',
title: '任务标题',
width: 200,
slots: {
default: 'task-name-slot',
},
},
{
field: 'status', title: '任务状态', width: 120, slots: {
default: "statusSlot"
field: 'status',
title: '任务状态',
width: 120,
slots: {
default: 'statusSlot',
},
},
{
@ -27,22 +39,31 @@ export function getColumns(params: any = {}): VxeGridPropTypes.Columns {
width: 100,
slots: {
default: ({ row }) => {
return useRender.renderDict(row.taskType, DICT_TYPE.supervise_task_type);
}
}
return useRender.renderDict(
row.taskType,
DICT_TYPE.supervise_task_type,
);
},
},
},
{
field: 'taskContent', title: '任务内容', width: 300, slots: {
field: 'taskContent',
title: '任务内容',
width: 300,
slots: {
default: ({ row }) => {
return useRender.renderMultiLineText(row.taskContent, {});
}
},
},
},
{
field: 'taskProgress', title: '任务进度', minWidth: 200, slots: {
field: 'taskProgress',
title: '任务进度',
minWidth: 200,
slots: {
default: ({ row }) => {
return useRender.renderMultiLineText(row.taskProgress, {});
}
},
},
},
{
@ -51,33 +72,42 @@ export function getColumns(params: any = {}): VxeGridPropTypes.Columns {
width: 100,
slots: {
default: ({ row }) => {
return useRender.renderDict(row.urgentDegree, DICT_TYPE.supervise_emergency_level);
}
}
return useRender.renderDict(
row.urgentDegree,
DICT_TYPE.supervise_emergency_level,
);
},
},
},
{
field: 'starttime', title: '开始日期', width: 120,
field: 'starttime',
title: '开始日期',
width: 120,
slots: {
default: ({ row }) => {
return useRender.renderDate(row.starttime, 'YYYY-MM-DD');
}
}
},
},
},
{
field: 'endtime', title: '截止日期', width: 120,
field: 'endtime',
title: '截止日期',
width: 120,
slots: {
default: ({ row }) => {
return useRender.renderDate(row.endtime, 'YYYY-MM-DD');
}
}
},
},
},
{
field: 'planFinishTime', title: '预计完成日期', width: 120,
field: 'planFinishTime',
title: '预计完成日期',
width: 120,
slots: {
default: ({ row }) => {
return useRender.renderDate(row.planFinishTime, 'YYYY-MM-DD');
}
}
},
},
},
{ field: 'remarks', title: '备注', minWidth: 200 },
// { title: '操作', width: 120, fixed: 'right', slots: { default: 'operate' } }
@ -86,8 +116,7 @@ export function getColumns(params: any = {}): VxeGridPropTypes.Columns {
export function getFormSchema(_params: any = {}) {
return {
initialForm: {
},
initialForm: {},
columns: {
taskName: {
title: '任务名称',
@ -112,21 +141,21 @@ export function getFormSchema(_params: any = {}) {
data: [
{
value: '1',
label: '未开始'
label: '未开始',
},
{
value: '2',
label: '进行中'
label: '进行中',
},
{
value: '3',
label: '已完成'
label: '已完成',
},
{
value: '4',
label: '已超时'
}
]
label: '已超时',
},
],
}),
},
autoSearchTrigger: 'enter',
@ -141,7 +170,7 @@ export function getFormSchema(_params: any = {}) {
class: 'min-w-[180px]',
allowClear: true,
dict: dict({
data: getDictOptions(DICT_TYPE.supervise_task_type)
data: getDictOptions(DICT_TYPE.supervise_task_type),
}),
},
autoSearchTrigger: 'enter',
@ -155,6 +184,5 @@ export function getFormSchema(_params: any = {}) {
// show: true,
// },
},
};
}
}

View File

@ -1,124 +1,81 @@
<template>
<Page contentClass="h-full flex flex-col">
<fs-search ref="searchRef" v-bind="searchForm"> </fs-search>
<div class="flex-1 min-h-300px">
<vxe-grid ref="xGridRef" v-bind="gridOptions" @cell-click="handleCellClick">
<template #toolbar_buttons>
<a-space>
<vben-button variant="primary" @click="handleAdd()">
<MdiAdd class="text-lg mr-0.5" />
新增
</vben-button>
<vben-button variant="warning" :disabled="!selectRow || !selectRow['guid']"
@click="handleUpdate(selectRow)">
<MdiUpdate class="text-lg mr-0.5" />
修改
</vben-button>
<vben-button variant="destructive" :disabled="!selectRow || !selectRow['guid']"
@click="handleDelete(selectRow)">
<MdiDelete class="text-lg mr-0.5" />
删除
</vben-button>
<vben-button variant="primary" @click="handleExport()">
<MdiExport class="text-lg mr-0.5" />
导出
</vben-button>
</a-space>
</template>
<template #radio_cell="{ row, checked }">
<span class="text-base" @click.stop="setSelectRow(row)">
<MdiRadioChecked v-if="checked" />
<MdiRadioUnchecked v-else />
</span>
</template>
<template #task-name-slot="{ row }">
<span class=""> {{ row.taskName }}</span>
</template>
<template #statusSlot="{ row }">
<a-tag>{{ row.status || "待提交" }}</a-tag>
</template>
</vxe-grid>
</div>
</Page>
</template>
<script setup lang="ts">
import { defineComponent, ref, computed, reactive, onMounted } from 'vue';
import { FsCrud } from '@fast-crud/fast-crud';
import { type VxeGridProps } from 'vxe-table'
import { Page, useVbenModal } from '@vben/common-ui';
import { useVxeTable } from '#/hooks/vxeTable';
import { MdiAdd, MdiUpdate, MdiDelete, MdiImport, MdiExport, MdiRadioUnchecked, MdiRadioChecked } from '@vben/icons';
import { getFormSchema, getColumns } from './crud.tsx';
import { dict } from "@fast-crud/fast-crud";
import { getMonthStartAndEnd } from '#/utils/time'
import Apis from '#/api'
import dayjs from 'dayjs';
import { message } from "ant-design-vue";
import { Modal } from 'ant-design-vue';
import { unitComponentProps } from '#/common/unit'
import { DICT_TYPE, getDictOptions } from '#/utils/dict';
import { computed, onMounted, reactive, ref } from 'vue';
import { useRouter } from 'vue-router';
import { useRouter } from 'vue-router'
import { Page } from '@vben/common-ui';
import {
MdiAdd,
MdiDelete,
MdiExport,
MdiRadioChecked,
MdiRadioUnchecked,
MdiUpdate,
} from '@vben/icons';
import { message, Modal } from 'ant-design-vue';
import Apis from '#/api';
import { useVxeTable } from '#/hooks/vxeTable';
import { getColumns, getFormSchema } from './crud.tsx';
const router = useRouter();
let isOneDay = ref("");
const isOneDay = ref('');
const searchRef = ref()
const searchRef = ref();
const { xGridRef, triggerProxy, gridProps } = useVxeTable({ ref: 'xGridRef' });
/** Hooks - 表格 */
const gridOptions = reactive(gridProps({
const gridOptions = reactive(
gridProps({
columns: getColumns(),
proxyConfig: {
autoLoad: false,
ajax: {
query: ({ page }) => {
let form = searchRef.value?.formData
if (form.startDate == form.endDate) {
isOneDay.value = form.startDate;
} else {
isOneDay.value = "";
}
return Apis.supervise.get_page({ params: { pageNum: page.currentPage, pageSize: page.pageSize, ...form } })
}
query: async ({ page }) => {
const form = searchRef.value?.formData;
isOneDay.value =
form.startDate === form.endDate ? form.startDate : '';
const data = await Apis.supervise.get_page({
params: {
pageNum: page.currentPage,
pageSize: page.pageSize,
...form,
},
});
return data;
},
},
},
pagerConfig: {
enabled: true
enabled: true,
},
toolbarConfig: {
enabled: true
enabled: true,
},
}));
}),
);
function handleExport() {
const $grid = xGridRef.value;
if ($grid) {
$grid.exportData({
type: "xlsx",
type: 'xlsx',
});
message.success("导出成功");
message.success('导出成功');
}
}
/** 选中数据 */
const selectRow: Recordable = computed(() => {
const selectRow: any = computed(() => {
return xGridRef.value?.getRadioRecord() || null;
});
/** 单选框选中事件 */
const setSelectRow = (row: Recordable) => {
if (selectRow.value && selectRow.value['guid'] === row['guid']) {
const setSelectRow = (row: any) => {
if (selectRow.value && selectRow.value.guid === row.guid) {
xGridRef.value?.clearRadioRow();
} else {
xGridRef.value?.setRadioRow(row);
@ -131,45 +88,93 @@ function handleCellClick({ row }) {
}
onMounted(() => {
triggerProxy('reload')
})
triggerProxy('reload');
});
let searchParams = reactive({})
const searchForm = ref({
...getFormSchema(),
onSearch(context: any) {
console.log(searchRef.value)
triggerProxy('reload')
},
onReset(context: any) {
searchParams = context.form
onSearch(_context: any) {
triggerProxy('reload');
},
});
function handleAdd() {
router.push('/supervise/edit')
router.push('/supervise/edit');
}
function handleUpdate(row) {
router.push('/supervise/edit/' + row['guid'])
router.push(`/supervise/edit/${row.guid}`);
}
function handleDelete(row) {
Modal.confirm({
title: '提示',
content: "是否确认删除该条记录?",
content: '是否确认删除该条记录?',
okType: 'danger',
onOk: async () => {
await Apis.supervise.post_deletes({ params: { ids: row['guid'] } })
message.success("删除成功");
triggerProxy("reload");
},
onCancel() {
console.log('Cancel');
await Apis.supervise.post_deletes({ params: { ids: row.guid } });
message.success('删除成功');
triggerProxy('reload');
},
});
}
</script>
<template>
<Page content-class="h-full flex flex-col">
<fs-search ref="searchRef" v-bind="searchForm" />
<div class="min-h-300px flex-1">
<vxe-grid
ref="xGridRef"
v-bind="gridOptions"
@cell-click="handleCellClick"
>
<template #toolbar_buttons>
<a-space>
<vben-button variant="primary" @click="handleAdd()">
<MdiAdd class="mr-0.5 text-lg" />
新增
</vben-button>
<vben-button
:disabled="!selectRow || !selectRow.guid"
variant="warning"
@click="handleUpdate(selectRow)"
>
<MdiUpdate class="mr-0.5 text-lg" />
修改
</vben-button>
<vben-button
:disabled="!selectRow || !selectRow.guid"
variant="destructive"
@click="handleDelete(selectRow)"
>
<MdiDelete class="mr-0.5 text-lg" />
删除
</vben-button>
<vben-button variant="primary" @click="handleExport()">
<MdiExport class="mr-0.5 text-lg" />
导出
</vben-button>
</a-space>
</template>
<template #radio_cell="{ row, checked }">
<span class="text-base" @click.stop="setSelectRow(row)">
<MdiRadioChecked v-if="checked" />
<MdiRadioUnchecked v-else />
</span>
</template>
<template #task-name-slot="{ row }">
<span class=""> {{ row.taskName }}</span>
</template>
<template #statusSlot="{ row }">
<a-tag>{{ row.status || '待提交' }}</a-tag>
</template>
</vxe-grid>
</div>
</Page>
</template>
<style></style>

View File

@ -0,0 +1,29 @@
import { http } from "./request/index"
import type { QueryOptions, BodyOptions } from "./global.d"
export default {
<%
function renderObject(obj, indentLevel = 1) {
let result = '';
const indent = ' '.repeat(indentLevel * 4); // 根据层级计算缩进
for (let key in obj) {
// 将 key 转换为小驼峰格式
const camelKey = key;
let typeInterface = "BodyOptions"
if(obj[key].method&&["get","delete"].includes(obj[key].method.toLowerCase())){
typeInterface = "QueryOptions"
}
if (obj[key].method && obj[key].path) {
result += `${indent}/** ${obj[key].tags} ${obj[key].summary} */\n`;
result += `${indent}${camelKey}:(data?:${typeInterface})=> http.${obj[key].method.toLowerCase()}("${obj[key].path}",data),\n`;
} else {
result += `${indent}${camelKey}: {\n`;
result += renderObject(obj[key], indentLevel + 1); // 递归调用时增加缩进级别
result += `${indent}},\n`;
}
}
return result;
}
%>
<%- renderObject(functions) %>
}

783
resource/apiDefinitions.ts Normal file
View File

@ -0,0 +1,783 @@
import type { BodyOptions, QueryOptions } from './global.d';
import { http } from './request/index';
export default {
meeting: {
/** 协同办公/会议管理 分页查询 */
get_page: (data?: QueryOptions) => http.get('/app/meeting/page', data),
/** 协同办公/会议管理 删除会议 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/meeting/deletes', data),
/** 协同办公/会议管理 会议保存 */
post_save: (data?: BodyOptions) => http.post('/app/meeting/save', data),
/** 协同办公/会议管理 查看会议台账 */
get_list: (data?: QueryOptions) => http.get('/app/meeting/list', data),
list: {
/** 协同办公/会议管理 会议台账导出 */
get_export: (data?: QueryOptions) =>
http.get('/app/meeting/list/export', data),
},
/** 协同办公/会议管理 门户获取会议数据 */
get_getFundingSource: (data?: QueryOptions) =>
http.get('/app/meeting/getFundingSource', data),
},
tysq: {
zzjg: {
yhjbda: {
YhjbdaController: {
/** 统一授权 未命名接口 */
get_yhjbdaGrid: (data?: QueryOptions) =>
http.get('/app/tysq/zzjg/yhjbda/YhjbdaController/yhjbdaGrid', data),
},
},
},
},
dictType: {
/** 协同办公/字典表 字典类型查询 */
get_list: (data?: QueryOptions) => http.get('/app/dictType/list', data),
/** 协同办公/字典表 字典类型保存 */
post_save: (data?: BodyOptions) => http.post('/app/dictType/save', data),
/** 协同办公/字典表 字典类型删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/dictType/deletes', data),
},
uaa: {
/** 用户中心 用户登陆 */
post_validateAccount: (data?: BodyOptions) =>
http.post('/app/uaa/validateAccount', data),
},
api: {
core: {
orgemplbc: {
employee: {
/** 用户中心 获取用户信息(分页) */
post_paging: (data?: BodyOptions) =>
http.post('/app/api/core/orgemplbc/employee/paging', data),
},
organization: {
RL: {
/** 用户中心 根据组织机构id获取员工信息 */
get_employee: (data?: QueryOptions) =>
http.get(
'/app/api/core/orgemplbc/organization/RL/employee',
data,
),
},
/** 用户中心 获取组织结构信息 */
post_paging: (data?: BodyOptions) =>
http.post('/app/api/core/orgemplbc/organization/paging', data),
},
/** 用户中心 根据组织机构id和用户信息查询 */
post_employee: (data?: BodyOptions) =>
http.post('/app/api/core/orgemplbc/employee', data),
},
},
},
sys: {
user: {
/** 用户中心 根据token获取用户信息 */
post_checkToken: (data?: BodyOptions) =>
http.post('/app/sys/user/checkToken', data),
functiontree: {
/** 用户中心 获取菜单接口 */
get_XTBGXT: (data?: QueryOptions) =>
http.get('/app/sys/user/functiontree/XTBGXT', data),
/** 统一授权 未命名接口 */
get_PLRL: (data?: QueryOptions) =>
http.get('/app/sys/user/functiontree/PLRL', data),
},
},
},
zbgl: {
/** 协同办公/值班管理 值班查询 */
get_queryZbInfo: (data?: QueryOptions) =>
http.get('/app/zbgl/queryZbInfo', data),
/** 协同办公/值班管理 保存值班信息 */
post_save: (data?: BodyOptions) => http.post('/app/zbgl/save', data),
/** 协同办公/值班管理 删除值班信息 */
get_deletes: (data?: QueryOptions) => http.get('/app/zbgl/deletes', data),
/** 协同办公/值班管理 导入值班人员信息 */
post_importZbry: (data?: BodyOptions) =>
http.post('/app/zbgl/importZbry', data),
/** 协同办公/值班管理 门户值班信息查询 */
get_getDutyInfo: (data?: QueryOptions) =>
http.get('/app/zbgl/getDutyInfo', data),
/** 协同办公/值班管理 导出 */
post_export: (data?: BodyOptions) => http.post('/app/zbgl/export', data),
},
dictData: {
/** 协同办公/字典表 字典数据保存 */
post_save: (data?: BodyOptions) => http.post('/app/dictData/save', data),
/** 合同系统/项目管理 保存 */
get_save: (data?: QueryOptions) => http.get('/app/dictData/save', data),
/** 合同系统/项目名称管理 查询 */
get_page: (data?: QueryOptions) => http.get('/app/dictData/page', data),
/** 协同办公/字典表 字典数据删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/dictData/deletes', data),
/** 合同系统/项目管理 删除 */
get_deletes: (data?: QueryOptions) =>
http.get('/app/dictData/deletes', data),
},
user: {
/** 统一授权 获取用户列表 */
get_page: (data?: QueryOptions) => http.get('/app/user/page', data),
},
dish: {
/** 协同办公/订餐管理/菜谱管理 菜谱查询 */
get_page: (data?: QueryOptions) => http.get('/app/dish/page', data),
/** 协同办公/订餐管理/菜谱管理 菜谱保存 */
post_save: (data?: BodyOptions) => http.post('/app/dish/save', data),
/** 协同办公/订餐管理/食谱管理 菜谱删除 */
post_deletes: (data?: BodyOptions) => http.post('/app/dish/deletes', data),
},
recipe: {
/** 协同办公/订餐管理/食谱管理 食谱查询 */
get_page: (data?: QueryOptions) => http.get('/app/recipe/page', data),
/** 协同办公/订餐管理/食谱管理 食谱保存 */
post_save: (data?: BodyOptions) => http.post('/app/recipe/save', data),
/** 协同办公/订餐管理/食谱管理 食谱导出 */
get_export: (data?: QueryOptions) => http.get('/app/recipe/export', data),
/** 协同办公/订餐管理/食谱管理 批量保存 */
post_saveBatch: (data?: BodyOptions) =>
http.post('/app/recipe/saveBatch', data),
/** 协同办公/订餐管理/食谱管理 食谱编辑 */
post_edit: (data?: BodyOptions) => http.post('/app/recipe/edit', data),
},
ccsq: {
/** 协同办公/出差申请 出差申请查询 */
get_page: (data?: QueryOptions) => http.get('/app/ccsq/page', data),
/** 协同办公/出差申请 申请单保存 */
post_save: (data?: BodyOptions) => http.post('/app/ccsq/save', data),
/** 协同办公/出差申请 申请单删除 */
post_deletes: (data?: BodyOptions) => http.post('/app/ccsq/deletes', data),
/** 协同办公/出差申请 退回 */
post_rollback: (data?: BodyOptions) =>
http.post('/app/ccsq/rollback', data),
/** 协同办公/出差申请 启动流程 */
post_startWorkFlow: (data?: BodyOptions) =>
http.post('/app/ccsq/startWorkFlow', data),
/** 协同办公/出差申请 审核 */
post_submit: (data?: BodyOptions) => http.post('/app/ccsq/submit', data),
/** 协同办公/出差申请 待办 */
get_toDoPage: (data?: QueryOptions) => http.get('/app/ccsq/toDoPage', data),
/** 协同办公/出差申请 已办 */
get_donePage: (data?: QueryOptions) => http.get('/app/ccsq/donePage', data),
/** 协同办公/出差申请 查询流程节点 */
get_getFlowNodeUserConfig: (data?: QueryOptions) =>
http.get('/app/ccsq/getFlowNodeUserConfig', data),
/** 协同办公/出差申请 下一审核节点 */
post_getNextNodeUserConfig: (data?: BodyOptions) =>
http.post('/app/ccsq/getNextNodeUserConfig', data),
},
orderfood: {
/** 协同办公/订餐管理/订餐 订餐加载接口 */
get_getOne: (data?: QueryOptions) =>
http.get('/app/orderfood/getOne', data),
/** 协同办公/订餐管理/订餐 订餐保存 */
post_save: (data?: BodyOptions) => http.post('/app/orderfood/save', data),
/** 协同办公/订餐管理/订餐 取消订餐 */
post_cancel: (data?: BodyOptions) =>
http.post('/app/orderfood/cancel', data),
/** 协同办公/订餐管理/订餐 协助取消他人订餐 */
post_assistCancel: (data?: BodyOptions) =>
http.post('/app/orderfood/assistCancel', data),
},
orderfoods: {
/** 协同办公/订餐管理/汇总 单位订餐汇总 */
get_departmentSummary: (data?: QueryOptions) =>
http.get('/app/orderfoods/departmentSummary', data),
/** 协同办公/订餐管理/汇总 订餐汇总 */
get_infoList: (data?: QueryOptions) =>
http.get('/app/orderfoods/infoList', data),
/** 协同办公/订餐管理/汇总 个人结算汇总 */
get_personalSummary: (data?: QueryOptions) =>
http.get('/app/orderfoods/personalSummary', data),
infoList: {
/** 协同办公/订餐管理/汇总 订餐汇总导出 */
get_export: (data?: QueryOptions) =>
http.get('/app/orderfoods/infoList/export', data),
},
personalSummary: {
/** 协同办公/订餐管理/汇总 个人结算汇总导出 */
get_export: (data?: QueryOptions) =>
http.get('/app/orderfoods/personalSummary/export', data),
},
departmentSummary: {
/** 协同办公/订餐管理/汇总 单位订餐汇总导出 */
get_export: (data?: QueryOptions) =>
http.get('/app/orderfoods/departmentSummary/export', data),
},
/** 协同办公/订餐管理/汇总 结算单 */
get_finalStatement: (data?: QueryOptions) =>
http.get('/app/orderfoods/finalStatement', data),
finalStatement: {
/** 协同办公/订餐管理/汇总 结算表导出 */
get_export: (data?: QueryOptions) =>
http.get('/app/orderfoods/finalStatement/export', data),
},
/** 协同办公/订餐管理/汇总 结算操作 */
post_balance: (data?: BodyOptions) =>
http.post('/app/orderfoods/balance', data),
},
officeSuppliesApply: {
/** 协同办公/办公用品/办公用品申请 申请页面查询 */
get_page: (data?: QueryOptions) =>
http.get('/app/officeSuppliesApply/page', data),
/** 协同办公/办公用品/办公用品申请 申请保存 */
post_save: (data?: BodyOptions) =>
http.post('/app/officeSuppliesApply/save', data),
/** 协同办公/办公用品/办公用品申请 批量审核 */
post_audit: (data?: BodyOptions) =>
http.post('/app/officeSuppliesApply/audit', data),
/** 协同办公/办公用品/办公用品申请 批量申请 */
post_saveBatch: (data?: BodyOptions) =>
http.post('/app/officeSuppliesApply/saveBatch', data),
/** 协同办公/办公用品/办公用品申请 撤销申请 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/officeSuppliesApply/deletes', data),
},
warehousing: {
/** 协同办公/办公用品/入库/出库 入库查询 */
get_page: (data?: QueryOptions) => http.get('/app/warehousing/page', data),
},
inOrOut: {
/** 协同办公/办公用品/入库/出库 入库/保存 */
post_saveBatch: (data?: BodyOptions) =>
http.post('/app/inOrOut/saveBatch', data),
},
supervise: {
/** 协同办公/督查督办/立项发起 立项分页查询 */
get_page: (data?: QueryOptions) => http.get('/app/supervise/page', data),
/** 协同办公/督查督办/立项发起 立项保存 */
post_save: (data?: BodyOptions) => http.post('/app/supervise/save', data),
/** 协同办公/督查督办/立项发起 立项删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/supervise/deletes', data),
/** 协同办公/督查督办/立项发起 立项提交 */
post_audit: (data?: BodyOptions) => http.post('/app/supervise/audit', data),
/** 协同办公/督查督办/执行反馈 执行反馈提交 */
post_auditFankui: (data?: BodyOptions) =>
http.post('/app/supervise/auditFankui', data),
/** 协同办公/督查督办/报表汇总 统计 */
get_huizong: (data?: QueryOptions) =>
http.get('/app/supervise/huizong', data),
/** 协同办公/督查督办/立项发起 更新状态 */
post_updateStatus: (data?: BodyOptions) =>
http.post('/app/supervise/updateStatus', data),
},
feedback: {
/** 协同办公/督查督办/执行反馈 执行反馈待办查询 */
get_page: (data?: QueryOptions) => http.get('/app/feedback/page', data),
/** 协同办公/督查督办/执行反馈 执行反馈保存,实际修改操作,保存反馈时间,反馈内容,进度 */
post_saveUpdate: (data?: BodyOptions) =>
http.post('/app/feedback/saveUpdate', data),
/** 协同办公/督查督办/执行反馈 查询负责部门列表,返回所有的反馈信息 */
get_getDepartment: (data?: QueryOptions) =>
http.get('/app/feedback/getDepartment', data),
/** 协同办公/督查督办/执行反馈 分发立项任务 */
post_save: (data?: BodyOptions) => http.post('/app/feedback/save', data),
/** 协同办公/督查督办/执行反馈 执行反馈已办查询 */
get_pageDone: (data?: QueryOptions) =>
http.get('/app/feedback/pageDone', data),
},
file: {
/** 协同办公/文件上传/下载 多文件上传 */
post_uploads: (data?: BodyOptions) => http.post('/app/file/uploads', data),
},
addressor: {
/** 协同办公/会议管理/发言人 发言人查询 */
get_list: (data?: QueryOptions) => http.get('/app/addressor/list', data),
/** 协同办公/会议管理/发言人 发言人批量保存 */
post_saveBatch: (data?: BodyOptions) =>
http.post('/app/addressor/saveBatch', data),
/** 协同办公/会议管理/发言人 发言人保存 */
post_save: (data?: BodyOptions) => http.post('/app/addressor/save', data),
/** 协同办公/会议管理/发言人 删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/addressor/deletes', data),
},
officeSuppliesList: {
/** 协同办公/办公用品/办公用品清单 分页查询 */
get_page: (data?: QueryOptions) =>
http.get('/app/officeSuppliesList/page', data),
/** 协同办公/办公用品/办公用品清单 批量保存 */
post_saveBatch: (data?: BodyOptions) =>
http.post('/app/officeSuppliesList/saveBatch', data),
/** 协同办公/办公用品/办公用品清单 删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/officeSuppliesList/deletes', data),
},
officeSuppliesApplySum: {
/** 协同办公/办公用品 采购汇总 */
get_list: (data?: QueryOptions) =>
http.get('/app/officeSuppliesApplySum/list', data),
/** 协同办公/办公用品 结算清单 */
get_finalStatement: (data?: QueryOptions) =>
http.get('/app/officeSuppliesApplySum/finalStatement', data),
/** 协同办公/办公用品 单位结算清单 */
get_unitFinalStatement: (data?: QueryOptions) =>
http.get('/app/officeSuppliesApplySum/unitFinalStatement', data),
finalStatement: {
/** 协同办公/办公用品 结算清单导出 */
get_export: (data?: QueryOptions) =>
http.get('/app/officeSuppliesApplySum/finalStatement/export', data),
},
/** 协同办公/办公用品 结算清单结算操作 */
post_balance: (data?: BodyOptions) =>
http.post('/app/officeSuppliesApplySum/balance', data),
},
autoOrderfoodPeoples: {
/** 协同办公/订餐管理/自动订餐人员管理 分页查询 */
get_page: (data?: QueryOptions) =>
http.get('/app/autoOrderfoodPeoples/page', data),
/** 协同办公/订餐管理/自动订餐人员管理 批量保存 */
post_saveBatch: (data?: BodyOptions) =>
http.post('/app/autoOrderfoodPeoples/saveBatch', data),
/** 协同办公/订餐管理/自动订餐人员管理 删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/autoOrderfoodPeoples/deletes', data),
},
usercenter: {
/** 协同办公 获取菜单 */
get_menus: (data?: QueryOptions) => http.get('/app/usercenter/menus', data),
},
workflow: {
/** 协同办公/工作流 待办 */
post_queryMyTodoTask: (data?: BodyOptions) =>
http.post('/app/workflow/queryMyTodoTask', data),
/** 协同办公/工作流 已办 */
post_getHistoricTaskByUserID: (data?: BodyOptions) =>
http.post('/app/workflow/getHistoricTaskByUserID', data),
},
personTask: {
/** 合同系统/签订 待办查询 */
get_page: (data?: QueryOptions) => http.get('/app/personTask/page', data),
/** 合同系统/签订 已办查询 */
get_pagePersonTaskOver: (data?: QueryOptions) =>
http.get('/app/personTask/pagePersonTaskOver', data),
/** 合同系统/履行/履行查询 分页合同履行审批查询 */
get_pagePerformanceAudit: (data?: QueryOptions) =>
http.get('/app/personTask/pagePerformanceAudit', data),
/** 合同系统/履行/履行提示/申请归档 归档保存 */
post_applicationFiling: (data?: BodyOptions) =>
http.post('/app/personTask/applicationFiling', data),
},
sbCtrBasePt: {
/** 合同系统/申报 合同申报数据查询 */
get_QuerySbCtrBase: (data?: QueryOptions) =>
http.get('/app/sbCtrBasePt/QuerySbCtrBase', data),
/** 合同系统/申报 合同申报基本信息加载 */
post_page: (data?: BodyOptions) => http.post('/app/sbCtrBasePt/page', data),
/** 合同系统/申报 合同申报基本信息保存 */
post_save: (data?: BodyOptions) => http.post('/app/sbCtrBasePt/save', data),
/** 合同系统/申报 合同申报基本信息删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/sbCtrBasePt/deletes', data),
/** 合同系统/申报 获取资金渠道 */
get_getFundingSource: (data?: QueryOptions) =>
http.get('/app/sbCtrBasePt/getFundingSource', data),
/** 合同系统/申报 提交 */
post_submit: (data?: BodyOptions) =>
http.post('/app/sbCtrBasePt/submit', data),
/** 合同系统/申报 退回 */
post_rollback: (data?: BodyOptions) =>
http.post('/app/sbCtrBasePt/rollback', data),
},
contractBaseInfo: {
/** 合同系统/立项 合同立项保存 */
post_apply: (data?: BodyOptions) =>
http.post('/app/contractBaseInfo/apply', data),
/** 合同系统/立项 合同立项查询 */
get_page: (data?: QueryOptions) =>
http.get('/app/contractBaseInfo/page', data),
/** 合同系统/立项 删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/contractBaseInfo/deletes', data),
/** 合同系统/立项 单条查询 */
get_getOne: (data?: QueryOptions) =>
http.get('/app/contractBaseInfo/getOne', data),
/** 合同系统/立项 提交 */
post_submit: (data?: BodyOptions) =>
http.post('/app/contractBaseInfo/submit', data),
/** 合同系统/立项废除 退回 */
post_rollback: (data?: BodyOptions) =>
http.post('/app/contractBaseInfo/rollback', data),
/** 合同系统/立项废除 合同立项废除 */
post_abolish: (data?: BodyOptions) =>
http.post('/app/contractBaseInfo/abolish', data),
/** 合同系统/立项废除 提交 */
post_abolishSubmit: (data?: BodyOptions) =>
http.post('/app/contractBaseInfo/abolishSubmit', data),
/** 合同系统/立项 流程启动(非待办提交) */
post_applyFlowStart: (data?: BodyOptions) =>
http.post('/app/contractBaseInfo/applyFlowStart', data),
/** 合同系统/立项废除 流程启动(非待办提交) */
post_abolishFlowStart: (data?: BodyOptions) =>
http.post('/app/contractBaseInfo/abolishFlowStart', data),
},
proProviderInfo: {
/** 合同系统/相对人管理 合同相对人查询 */
get_Query: (data?: QueryOptions) =>
http.get('/app/proProviderInfo/Query', data),
/** 合同系统/相对人管理 获取币种 */
get_getBz: (data?: QueryOptions) =>
http.get('/app/proProviderInfo/getBz', data),
/** 合同系统/相对人管理 保存 */
post_save: (data?: BodyOptions) =>
http.post('/app/proProviderInfo/save', data),
/** 合同系统/相对人管理 删除 */
get_deletes: (data?: QueryOptions) =>
http.get('/app/proProviderInfo/deletes', data),
/** 合同系统/相对人管理 加载 */
post_page: (data?: BodyOptions) =>
http.post('/app/proProviderInfo/page', data),
},
contractModelInfo: {
/** 合同系统/模板管理 保存 */
post_save: (data?: BodyOptions) =>
http.post('/app/contractModelInfo/save', data),
/** 合同系统/模板管理 删除 */
get_deletes: (data?: QueryOptions) =>
http.get('/app/contractModelInfo/deletes', data),
/** 合同系统/模板管理 加载 */
post_page: (data?: BodyOptions) =>
http.post('/app/contractModelInfo/page', data),
},
contractReferType: {
/** 合同系统/合同类型参照 查询 */
get_list: (data?: QueryOptions) =>
http.get('/app/contractReferType/list', data),
/** 合同系统/合同类型参照 保存 */
post_save: (data?: BodyOptions) =>
http.post('/app/contractReferType/save', data),
/** 合同系统/合同类型参照 删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/contractReferType/deletes', data),
},
attachment: {
/** 文件上传/下载(新) 附件加载 */
get_list: (data?: QueryOptions) => http.get('/app/attachment/list', data),
/** 文件上传/下载(新) 文件下载 */
get_download: (data?: QueryOptions) =>
http.get('/app/attachment/download/{fileUuid}', data),
/** 文件上传/下载(新) 多文件上传 */
post_uploads: (data?: BodyOptions) =>
http.post('/app/attachment/uploads', data),
},
contractPayment: {
/** 合同系统/履行/履行提示/合同付款 获取合同付款信息 */
get_queryPaymentInfo: (data?: QueryOptions) =>
http.get('/app/contractPayment/queryPaymentInfo', data),
/** 合同系统/归档/合同归档 历史记录 */
get_historyPaymentInfo: (data?: QueryOptions) =>
http.get('/app/contractPayment/historyPaymentInfo', data),
/** 合同系统/履行/履行提示/合同付款 保存付款申请 */
post_save: (data?: BodyOptions) =>
http.post('/app/contractPayment/save', data),
/** 合同系统/履行/履行提示/合同付款 查询流程未配置人员节点 */
get_getFlowNodeUserConfig: (data?: QueryOptions) =>
http.get('/app/contractPayment/getFlowNodeUserConfig', data),
/** 合同系统/履行/履行提示/合同付款 送审 */
post_startWorkFlow: (data?: BodyOptions) =>
http.post('/app/contractPayment/startWorkFlow', data),
/** 合同系统/履行/履行提示/合同付款 审核通过 */
post_submit: (data?: BodyOptions) =>
http.post('/app/contractPayment/submit', data),
/** 合同系统/履行/履行提示/合同付款 退回 */
post_rollback: (data?: BodyOptions) =>
http.post('/app/contractPayment/rollback', data),
/** 合同系统/履行/履行提示/合同付款 待审核 */
get_toDoPage: (data?: QueryOptions) =>
http.get('/app/contractPayment/toDoPage', data),
/** 合同系统/履行/履行提示/合同付款 已审核 */
get_donePage: (data?: QueryOptions) =>
http.get('/app/contractPayment/donePage', data),
},
selectMerchantsBasicInfo: {
/** 合同系统/选商 分页查询 */
get_page: (data?: QueryOptions) =>
http.get('/app/selectMerchantsBasicInfo/page', data),
/** 合同系统/选商 选商信息查询(单条) */
get_getOne: (data?: QueryOptions) =>
http.get('/app/selectMerchantsBasicInfo/getOne', data),
/** 合同系统/选商 选商信息保存 */
post_save: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/save', data),
/** 合同系统/选商 合同选商保存操作(多个对象) */
post_saveMultiEntity: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/saveMultiEntity', data),
/** 合同系统/选商 提交 */
post_submit: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/submit', data),
/** 合同系统/选商 退回 */
post_rollback: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/rollback', data),
/** 合同系统/选商废除 选商废除(弃用) */
post_abolish: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/abolish', data),
/** 合同系统/选商废除 选商废除(开始节点提交,非待办提交) */
post_abolishFlowStart: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/abolishFlowStart', data),
/** 合同系统/选商废除 提交 */
post_abolishSubmit: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/abolishSubmit', data),
/** 合同系统/选商废除 退回 */
post_abolishRollback: (data?: BodyOptions) =>
http.post('/app/selectMerchantsBasicInfo/abolishRollback', data),
},
lvxChange: {
/** 合同系统/履行/履行提示/合同变更 保存合同变更申请 */
post_save: (data?: BodyOptions) => http.post('/app/lvxChange/save', data),
/** 合同系统/履行/履行提示/合同变更 获取合同变更信息 */
get_getContractChangeInfo: (data?: QueryOptions) =>
http.get('/app/lvxChange/getContractChangeInfo', data),
},
contractRelieve: {
/** 合同系统/履行/履行提示/合同解除 获取合同解除信息 */
get_getContractRelieveInfo: (data?: QueryOptions) =>
http.get('/app/contractRelieve/getContractRelieveInfo', data),
/** 合同系统/履行/履行提示/合同解除 保存合同解除信息 */
post_save: (data?: BodyOptions) =>
http.post('/app/contractRelieve/save', data),
},
contractBreach: {
/** 合同系统/履行/履行提示/合同违约情况 保存合同违约信息 */
post_save: (data?: BodyOptions) =>
http.post('/app/contractBreach/save', data),
/** 合同系统/履行/履行提示/合同违约情况 获取合同违约信息 */
get_getContractBreachInfo: (data?: QueryOptions) =>
http.get('/app/contractBreach/getContractBreachInfo', data),
/** 合同系统/履行/履行提示/合同违约情况 查询流程未配置人员节点 */
get_getFlowNodeUserConfig: (data?: QueryOptions) =>
http.get('/app/contractBreach/getFlowNodeUserConfig', data),
/** 合同系统/履行/履行提示/合同违约情况 启动流程 */
post_startWorkFlow: (data?: BodyOptions) =>
http.post('/app/contractBreach/startWorkFlow', data),
/** 合同系统/履行/履行提示/合同违约情况 审核 */
post_submit: (data?: BodyOptions) =>
http.post('/app/contractBreach/submit', data),
/** 合同系统/履行/履行提示/合同违约情况 退回 */
post_rollback: (data?: BodyOptions) =>
http.post('/app/contractBreach/rollback', data),
},
lvxResult: {
/** 合同系统/履行/履行结果 履行结果保存 */
post_save: (data?: BodyOptions) => http.post('/app/lvxResult/save', data),
},
contractFiling: {
/** 合同系统/履行/履行提示/临时归档 保存临时归档信息 */
post_save: (data?: BodyOptions) =>
http.post('/app/contractFiling/save', data),
/** 合同系统/履行/履行提示/临时归档 分页查询 */
get_pageFillingList: (data?: QueryOptions) =>
http.get('/app/contractFiling/pageFillingList', data),
/** 合同系统/履行/履行提示/临时归档 回档 */
post_update: (data?: BodyOptions) =>
http.post('/app/contractFiling/update', data),
/** 合同系统/履行/履行提示/临时归档 获取临时归档信息 */
get_getLsgd: (data?: QueryOptions) =>
http.get('/app/contractFiling/getLsgd', data),
},
biddingExpert: {
/** 合同系统/选商/选商招标专家 招标专家查询 */
get_list: (data?: QueryOptions) =>
http.get('/app/biddingExpert/list', data),
/** 合同系统/选商/选商招标专家 选商招标专家保存 */
post_saveBatch: (data?: BodyOptions) =>
http.post('/app/biddingExpert/saveBatch', data),
/** 合同系统/选商/选商招标专家 选商招标专家删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/biddingExpert/deletes', data),
},
contractFilingFormal: {
/** 合同系统/归档/合同归档 分页查询归档信息 */
get_queryContractFiling: (data?: QueryOptions) =>
http.get('/app/contractFilingFormal/queryContractFiling', data),
/** 合同系统/归档/合同归档 获取合同招标选商申请信息 */
get_getContractSupplier: (data?: QueryOptions) =>
http.get('/app/contractFilingFormal/getContractSupplier', data),
/** 合同系统/归档/合同归档 保存合同归档 */
post_save: (data?: BodyOptions) =>
http.post('/app/contractFilingFormal/save', data),
/** 合同系统/归档/合同回档 分页查询 */
get_pageArchivedContract: (data?: QueryOptions) =>
http.get('/app/contractFilingFormal/pageArchivedContract', data),
/** 合同系统/归档/合同回档 回档 */
post_saveFilingBack: (data?: BodyOptions) =>
http.post('/app/contractFilingFormal/saveFilingBack', data),
},
lvxProduct: {
/** 合同系统/履行/履行提示/产品或服务 获取合同产品信息 */
get_getContractProductInfo: (data?: QueryOptions) =>
http.get('/app/lvxProduct/getContractProductInfo', data),
/** 合同系统/履行/履行提示/产品或服务 累计收款金额 */
get_getSumFromProduct: (data?: QueryOptions) =>
http.get('/app/lvxProduct/getSumFromProduct', data),
/** 合同系统/履行/履行提示/产品或服务 历史记录 */
get_getListFromHistoryRecord: (data?: QueryOptions) =>
http.get('/app/lvxProduct/getListFromHistoryRecord', data),
/** 合同系统/履行/履行提示/产品或服务 保存合同产品服务 */
post_save: (data?: BodyOptions) => http.post('/app/lvxProduct/save', data),
},
qdSign: {
/** 合同系统/签订 签订查询 */
get_page: (data?: QueryOptions) => http.get('/app/qdSign/page', data),
/** 合同系统/签订 获取合同签订信息 */
get_getContractSignInfo: (data?: QueryOptions) =>
http.get('/app/qdSign/getContractSignInfo', data),
/** 合同系统/签订 打印签订审批表 */
get_createUserListWord: (data?: QueryOptions) =>
http.get('/app/qdSign/createUserListWord', data),
/** 合同系统/签订 打印文本 */
get_textPrint: (data?: QueryOptions) =>
http.get('/app/qdSign/textPrint', data),
/** 合同系统/签订 保存送审 */
post_save: (data?: BodyOptions) => http.post('/app/qdSign/save', data),
/** 合同系统/签订 废除 */
post_abolish: (data?: BodyOptions) =>
http.post('/app/qdSign/abolish', data),
},
flowCenter: {
/** 流程中心 启动流程 */
post_start: (data?: BodyOptions) =>
http.post('/app/flowCenter/start', data),
/** 流程中心 审核通过 */
post_agree: (data?: BodyOptions) =>
http.post('/app/flowCenter/agree', data),
/** 流程中心 审核退回 */
post_rollback: (data?: BodyOptions) =>
http.post('/app/flowCenter/rollback', data),
/** 流程中心 获取待办 */
post_getTodoList: (data?: BodyOptions) =>
http.post('/app/flowCenter/getTodoList', data),
/** 流程中心 获取已办 */
post_doneList: (data?: BodyOptions) =>
http.post('/app/flowCenter/doneList', data),
/** 流程中心 审核撤回 */
get_revoke: (data?: QueryOptions) =>
http.get('/app/flowCenter/revoke', data),
/** 流程中心 审核记录 */
get_history: (data?: QueryOptions) =>
http.get('/app/flowCenter/history', data),
/** 流程中心 查看流程图 */
get_getFlowImg: (data?: QueryOptions) =>
http.get('/app/flowCenter/getFlowImg', data),
/** 流程中心 获取可退回节点 */
get_getReturnNode: (data?: QueryOptions) =>
http.get('/app/flowCenter/getReturnNode', data),
/** 流程中心 获取流程节点人员配置信息 */
get_getNextNodeUserConfig: (data?: QueryOptions) =>
http.get('/app/flowCenter/getNextNodeUserConfig', data),
/** 流程中心 获取待办数量 */
get_getTodoListSize: (data?: QueryOptions) =>
http.get('/app/flowCenter/getTodoListSize', data),
/** 流程中心 获取当前审核节点配置信息 */
get_getNodeConfigInfo: (data?: QueryOptions) =>
http.get('/app/flowCenter/getNodeConfigInfo', data),
/** 流程中心 获取下一节点配置信息 */
get_getNextNodeConfig: (data?: QueryOptions) =>
http.get('/app/flowCenter/getNextNodeConfig', data),
/** 流程中心 获取流程节点人员配置信息 */
post_getFlowNodeUserConfig: (data?: BodyOptions) =>
http.post('/app/flowCenter/getFlowNodeUserConfig', data),
/** 流程中心 获取流程变量配置 */
get_getFlowVariablesConfig: (data?: QueryOptions) =>
http.get('/app/flowCenter/getFlowVariablesConfig', data),
/** 流程中心 获取流程所有人员配置信息 */
get_getFlowUserConfig: (data?: QueryOptions) =>
http.get('/app/flowCenter/getFlowUserConfig', data),
},
rl: {
moduleParameter: {
/** 流程中心/流程规划 保存 */
post_save: (data?: BodyOptions) =>
http.post('/app/rl/moduleParameter/save', data),
/** 流程中心/流程规划 查询 */
post_page: (data?: BodyOptions) =>
http.post('/app/rl/moduleParameter/page', data),
/** 流程中心/流程规划 删除 */
get_deletes: (data?: QueryOptions) =>
http.get('/app/rl/moduleParameter/deletes', data),
/** 流程中心/流程规划 获取节点审核人 */
get_getNextNodeUser: (data?: QueryOptions) =>
http.get('/app/rl/moduleParameter/getNextNodeUser', data),
},
workFlow: {
/** 合同系统 流程待办 */
get_queryMyTodoTask: (data?: QueryOptions) =>
http.get('/app/rl/workFlow/queryMyTodoTask', data),
},
},
dutyCount: {
/** 协同办公/订餐管理/值班天数 分页查询 */
get_page: (data?: QueryOptions) => http.get('/app/dutyCount/page', data),
/** 协同办公/订餐管理/值班天数 批量保存 */
post_saveBatch: (data?: BodyOptions) =>
http.post('/app/dutyCount/saveBatch', data),
/** 协同办公/订餐管理/值班天数 删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/dutyCount/deletes', data),
},
common: {
/** 公共 获取请求ip */
get_getClientIp: (data?: QueryOptions) =>
http.get('/app/common/getClientIp', data),
},
address: {
/** 协同办公/订餐管理/订餐地址 查询(分页) */
get_page: (data?: QueryOptions) => http.get('/app/address/page', data),
/** 协同办公/订餐管理/订餐地址 保存 */
post_save: (data?: BodyOptions) => http.post('/app/address/save', data),
/** 协同办公/订餐管理/订餐地址 删除 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/address/deletes', data),
},
superviseFeedbackRecord: {
/** 协同办公/督查督办/反馈记录 保存反馈记录 */
post_save: (data?: BodyOptions) =>
http.post('/app/superviseFeedbackRecord/save', data),
/** 协同办公/督查督办/反馈记录 查询反馈记录 */
get_page: (data?: QueryOptions) =>
http.get('/app/superviseFeedbackRecord/page', data),
/** 协同办公/督查督办/反馈记录 删除反馈记录 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/superviseFeedbackRecord/deletes', data),
},
lxBasisSale: {
/** 合同系统/签约依据 分页保存/修改 */
post_save: (data?: BodyOptions) => http.post('/app/lxBasisSale/save', data),
/** 合同系统/签约依据 查询 */
get_page: (data?: QueryOptions) => http.get('/app/lxBasisSale/page', data),
/** 合同系统/签约依据 删除测试 */
post_deletes: (data?: BodyOptions) =>
http.post('/app/lxBasisSale/deletes', data),
},
workFlow: {
/** 合同系统 查询下一节点id */
get_getNextNodeUserConfig: (data?: QueryOptions) =>
http.get('/app/workFlow/getNextNodeUserConfig', data),
/** 合同系统 获取可退回节点 */
get_getBackNode: (data?: QueryOptions) =>
http.get('/app/workFlow/getBackNode', data),
/** 合同系统 审核记录 */
get_history: (data?: QueryOptions) =>
http.get('/app/workFlow/history', data),
/** 合同系统 流程已办 */
get_getDoneTaskByUserID: (data?: QueryOptions) =>
http.get('/app/workFlow/getDoneTaskByUserID', data),
},
biddingResult: {
/** 合同系统/选商/选商结果 分页查询 */
get_page: (data?: QueryOptions) =>
http.get('/app/biddingResult/page', data),
/** 合同系统/选商/选商结果 保存 */
post_save: (data?: BodyOptions) =>
http.post('/app/biddingResult/save', data),
},
home: {
/** 合同系统/首页待办/已办 待办 */
get_todo: (data?: QueryOptions) => http.get('/app/home/todo', data),
},
};

0
resource/readme.md Normal file
View File