Merge remote-tracking branch 'origin/dev' into dev

dev
wanghao 1 month ago
commit ba4a11e49f

@ -261,6 +261,16 @@ export interface ProjectInfoForm extends BaseEntity {
chargeName?: string; chargeName?: string;
deputyName?: string; deputyName?: string;
/**
*
*/
contractCode?: string;
/**
*
*/
contractName?: string;
} }
export interface ProjectInfoQuery extends PageQuery { export interface ProjectInfoQuery extends PageQuery {
@ -371,4 +381,14 @@ export interface ProjectInfoQuery extends PageQuery {
chargeName?: string; chargeName?: string;
deputyName?: string; deputyName?: string;
/**
*
*/
contractCode?: string;
/**
*
*/
contractName?: string;
} }

@ -46,9 +46,9 @@
<!-- <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />--> <!-- <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />-->
<!-- </el-tooltip>--> <!-- </el-tooltip>-->
<el-tooltip :content="proxy.$t('navbar.document')" effect="dark" placement="bottom"> <!-- <el-tooltip :content="proxy.$t('navbar.document')" effect="dark" placement="bottom">-->
<ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" /> <!-- <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />-->
</el-tooltip> <!-- </el-tooltip>-->
<el-tooltip :content="proxy.$t('navbar.full')" effect="dark" placement="bottom"> <el-tooltip :content="proxy.$t('navbar.full')" effect="dark" placement="bottom">
<screenfull id="screenfull" class="right-menu-item hover-effect" /> <screenfull id="screenfull" class="right-menu-item hover-effect" />

@ -96,8 +96,8 @@ const { t } = useI18n();
const loginForm = ref<LoginData>({ const loginForm = ref<LoginData>({
tenantId: '000000', tenantId: '000000',
username: 'admin', username: '',
password: 'admin123', password: '',
rememberMe: false, rememberMe: false,
code: '', code: '',
uuid: '' uuid: ''

@ -23,7 +23,7 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="出差类型" prop="tripType"> <el-form-item label="出差类型" prop="tripType">
<el-select v-model="form.tripType" placeholder="请选择出差类型" :disabled="isFormDisabled || !!form.tripId"> <el-select v-model="form.tripType" placeholder="请选择出差类型" disabled>
<el-option v-for="dict in trip_type" :key="dict.value" :label="dict.label" :value="dict.value" /> <el-option v-for="dict in trip_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -33,6 +33,16 @@
<el-input v-model="form.applyCode" placeholder="自动生成" disabled /> <el-input v-model="form.applyCode" placeholder="自动生成" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="申请人姓名" prop="applicantName">
<el-input v-model="form.applicantName" placeholder="自动填充" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="申请人部门" prop="deptName">
<el-input v-model="form.deptName" placeholder="自动填充" disabled />
</el-form-item>
</el-col>
<!-- 动态字段安装调试 (Type 1) --> <!-- 动态字段安装调试 (Type 1) -->
<template v-if="form.tripType === '1'"> <template v-if="form.tripType === '1'">

@ -25,12 +25,12 @@
<el-form-item label="出差地点" prop="tripLocation"> <el-form-item label="出差地点" prop="tripLocation">
<el-input v-model="queryParams.tripLocation" placeholder="请输入出差地点" clearable @keyup.enter="handleQuery" /> <el-input v-model="queryParams.tripLocation" placeholder="请输入出差地点" clearable @keyup.enter="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="开始日期" prop="startTime"> <!-- <el-form-item label="开始日期" prop="startTime">-->
<el-date-picker clearable v-model="queryParams.startTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择开始日期" /> <!-- <el-date-picker clearable v-model="queryParams.startTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择开始日期" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="结束日期" prop="endTime"> <!-- <el-form-item label="结束日期" prop="endTime">-->
<el-date-picker clearable v-model="queryParams.endTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择结束日期" /> <!-- <el-date-picker clearable v-model="queryParams.endTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择结束日期" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="业务方向" prop="businessDirection"> <el-form-item label="业务方向" prop="businessDirection">
<el-select v-model="queryParams.businessDirection" placeholder="请选择业务方向" clearable filterable style="width: 200px"> <el-select v-model="queryParams.businessDirection" placeholder="请选择业务方向" clearable filterable style="width: 200px">
<el-option v-for="dict in business_direction" :key="dict.value" :label="dict.label" :value="dict.value" /> <el-option v-for="dict in business_direction" :key="dict.value" :label="dict.label" :value="dict.value" />
@ -86,18 +86,18 @@
<el-table v-loading="loading" border :data="businessTripApplyList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" border :data="businessTripApplyList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="申请ID" align="center" prop="tripId" v-if="columns[0].visible" /> <el-table-column label="申请ID" align="center" prop="tripId" width="80" v-if="columns[0].visible" />
<el-table-column label="申请单号" align="center" prop="applyCode" v-if="columns[2].visible" /> <el-table-column label="申请单号" align="center" prop="applyCode" width="130" v-if="columns[2].visible" />
<el-table-column label="出差类型" align="center" prop="tripType" v-if="columns[3].visible"> <el-table-column label="出差类型" align="center" prop="tripType" width="100" v-if="columns[3].visible">
<template #default="scope"> <template #default="scope">
<dict-tag :options="trip_type" :value="scope.row.tripType" /> <dict-tag :options="trip_type" :value="scope.row.tripType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="申请人ID" align="center" prop="applicantId" v-if="columns[4].visible" /> <el-table-column label="申请人ID" align="center" prop="applicantId" width="80" v-if="columns[4].visible" />
<el-table-column label="申请人" align="center" prop="applicantName" v-if="columns[5].visible" /> <el-table-column label="申请人" align="center" prop="applicantName" width="100" v-if="columns[5].visible" />
<el-table-column label="申请人部门ID" align="center" prop="deptId" v-if="columns[6].visible" /> <el-table-column label="申请人部门ID" align="center" prop="deptId" width="100" v-if="columns[6].visible" />
<el-table-column label="申请人部门" align="center" prop="deptName" v-if="columns[7].visible" width="120" /> <el-table-column label="申请人部门" align="center" prop="deptName" v-if="columns[7].visible" width="120" />
<el-table-column label="出差地点" align="center" prop="tripLocation" v-if="columns[8].visible" /> <el-table-column label="出差地点" align="center" prop="tripLocation" width="150" v-if="columns[8].visible" />
<el-table-column label="开始日期" align="center" prop="startTime" width="100" v-if="columns[9].visible"> <el-table-column label="开始日期" align="center" prop="startTime" width="100" v-if="columns[9].visible">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span>
@ -108,27 +108,27 @@
<span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="时长(天)" align="center" prop="durationDays" v-if="columns[11].visible" /> <el-table-column label="时长(天)" align="center" prop="durationDays" width="80" v-if="columns[11].visible" />
<el-table-column label="出差事由" align="center" prop="tripReason" v-if="columns[12].visible" /> <el-table-column label="出差事由" align="center" prop="tripReason" width="200" show-overflow-tooltip v-if="columns[12].visible" />
<el-table-column label="项目ID" align="center" prop="projectId" v-if="columns[13].visible" /> <el-table-column label="项目ID" align="center" prop="projectId" width="80" v-if="columns[13].visible" />
<!-- <el-table-column label="客户ID" align="center" prop="customerId" v-if="columns[14].visible" /> --> <!-- <el-table-column label="客户ID" align="center" prop="customerId" v-if="columns[14].visible" /> -->
<el-table-column label="交流对象" align="center" prop="exchangeObject" v-if="columns[15].visible" /> <el-table-column label="交流对象" align="center" prop="exchangeObject" width="150" show-overflow-tooltip v-if="columns[15].visible" />
<el-table-column label="业务方向" align="center" prop="businessDirection" v-if="columns[16].visible"> <el-table-column label="业务方向" align="center" prop="businessDirection" width="120" v-if="columns[16].visible">
<template #default="scope"> <template #default="scope">
<dict-tag :options="business_direction" :value="scope.row.businessDirection" /> <dict-tag :options="business_direction" :value="scope.row.businessDirection" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="交流目的" align="center" prop="exchangePurpose" v-if="columns[17].visible" /> <el-table-column label="交流目的" align="center" prop="exchangePurpose" width="150" show-overflow-tooltip v-if="columns[17].visible" />
<el-table-column label="交流过程简述" align="center" prop="exchangeProcess" v-if="columns[18].visible" /> <el-table-column label="交流过程简述" align="center" prop="exchangeProcess" width="200" show-overflow-tooltip v-if="columns[18].visible" />
<el-table-column label="会议/展会名称" align="center" prop="meetingName" v-if="columns[19].visible" /> <el-table-column label="会议/展会名称" align="center" prop="meetingName" width="150" show-overflow-tooltip v-if="columns[19].visible" />
<el-table-column label="结果反馈" align="center" prop="feedback" v-if="columns[20].visible" /> <el-table-column label="结果反馈" align="center" prop="feedback" width="200" show-overflow-tooltip v-if="columns[20].visible" />
<el-table-column label="申请状态" align="center" prop="tripStatus" v-if="columns[21].visible"> <el-table-column label="申请状态" align="center" prop="tripStatus" width="100" v-if="columns[21].visible">
<template #default="scope"> <template #default="scope">
<dict-tag :options="trip_status" :value="scope.row.tripStatus" /> <dict-tag :options="trip_status" :value="scope.row.tripStatus" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="流程状态" align="center" prop="flowStatus" v-if="columns[22].visible" /> <el-table-column label="流程状态" align="center" prop="flowStatus" width="100" v-if="columns[22].visible" />
<el-table-column label="备注" align="center" prop="remark" v-if="columns[23].visible" /> <el-table-column label="备注" align="center" prop="remark" width="150" show-overflow-tooltip v-if="columns[23].visible" />
<!-- <el-table-column label="附件ID" align="center" prop="ossId" v-if="columns[24].visible" /> --> <!-- <el-table-column label="附件ID" align="center" prop="ossId" v-if="columns[24].visible" /> -->
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" width="160"> <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" width="160">
<template #default="scope"> <template #default="scope">
@ -155,15 +155,15 @@
v-hasPermi="['oa/crm:businessTripApply:edit']" v-hasPermi="['oa/crm:businessTripApply:edit']"
></el-button> ></el-button>
</el-tooltip> </el-tooltip>
<el-tooltip content="删除" placement="top"> <!-- <el-tooltip content="删除" placement="top">-->
<el-button <!-- <el-button-->
link <!-- link-->
type="primary" <!-- type="primary"-->
icon="Delete" <!-- icon="Delete"-->
@click="handleDelete(scope.row)" <!-- @click="handleDelete(scope.row)"-->
v-hasPermi="['oa/crm:businessTripApply:remove']" <!-- v-hasPermi="['oa/crm:businessTripApply:remove']"-->
></el-button> <!-- ></el-button>-->
</el-tooltip> <!-- </el-tooltip>-->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -198,8 +198,8 @@
<script setup name="BusinessTripApply" lang="ts"> <script setup name="BusinessTripApply" lang="ts">
import { listBusinessTripApply, delBusinessTripApply, updateBusinessTripApply } from '@/api/oa/crm/businessTripApply'; import { listBusinessTripApply, delBusinessTripApply, updateBusinessTripApply } from '@/api/oa/crm/businessTripApply';
import { BusinessTripApplyVO, BusinessTripApplyQuery } from '@/api/oa/crm/businessTripApply/types'; import { BusinessTripApplyVO, BusinessTripApplyQuery } from '@/api/oa/crm/businessTripApply/types';
import { listUser } from '@/api/system/user'; import { getUserList, listUser } from '@/api/system/user';
import { UserVO } from '@/api/system/user/types'; import { UserQuery, UserVO } from '@/api/system/user/types';
import { listDept } from '@/api/system/dept'; import { listDept } from '@/api/system/dept';
import { DeptVO } from '@/api/system/dept/types'; import { DeptVO } from '@/api/system/dept/types';
@ -243,7 +243,7 @@ const columns = ref<FieldOption[]>([
{ key: 19, label: `会议/展会名称`, visible: true }, { key: 19, label: `会议/展会名称`, visible: true },
{ key: 20, label: `结果反馈`, visible: true }, { key: 20, label: `结果反馈`, visible: true },
{ key: 21, label: `申请状态`, visible: true }, { key: 21, label: `申请状态`, visible: true },
{ key: 22, label: `流程状态`, visible: true }, { key: 22, label: `流程状态`, visible: false },
{ key: 23, label: `备注`, visible: true }, { key: 23, label: `备注`, visible: true },
{ key: 24, label: `附件ID`, visible: false }, { key: 24, label: `附件ID`, visible: false },
{ key: 25, label: `删除标志`, visible: true }, { key: 25, label: `删除标志`, visible: true },
@ -353,8 +353,9 @@ const handleExport = () => {
onMounted(async () => { onMounted(async () => {
// //
const userRes = await listUser({ pageNum: 1, pageSize: 1000 }); const userQuery = ref<UserQuery>();
userList.value = userRes.rows; const userRes = await getUserList(userQuery.value);
userList.value = userRes.data;
// //
const deptRes = await listDept(); const deptRes = await listDept();
deptList.value = deptRes.data; deptList.value = deptRes.data;

@ -19,10 +19,10 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="报价单编号" prop="quoteCode"> <el-form-item label="报价单编号" prop="quoteCode">
<el-input v-model="form.quoteCode" placeholder="自动生成"> <el-input v-model="form.quoteCode" placeholder="自动生成" disabled>
<template #append> <!-- <template #append>-->
<el-button type="primary" @click="generateQuoteCode" :disabled="isView || isCodeGenerated">生成报价单编号</el-button> <!-- <el-button type="primary" @click="generateQuoteCode" :disabled="isView || isCodeGenerated">生成报价单编号</el-button>-->
</template> <!-- </template>-->
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -433,7 +433,6 @@
<ApprovalRecord ref="approvalRecordRef" /> <ApprovalRecord ref="approvalRecordRef" />
<SubmitVerify ref="submitVerifyRef" :task-variables="taskVariables" @submit-callback="submitCallback" /> <SubmitVerify ref="submitVerifyRef" :task-variables="taskVariables" @submit-callback="submitCallback" />
</div> </div>

</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -766,18 +765,18 @@ const onSupplierChanged = (supplierId: any) => {
} }
}; };
// codeRuleCode=1004 // codeRuleCode=1004
const generateQuoteCode = async () => { // const generateQuoteCode = async () => {
if (isCodeGenerated.value) return; // if (isCodeGenerated.value) return;
try { // try {
const params = { codeRuleCode: '1004' } as any; // const params = { codeRuleCode: '1004' } as any;
const res = await getRuleGenerateCode(params); // const res = await getRuleGenerateCode(params);
form.quoteCode = res.msg; // form.quoteCode = res.msg;
isCodeGenerated.value = true; // isCodeGenerated.value = true;
proxy?.$modal.msgSuccess('报价单编号生成成功'); // proxy?.$modal.msgSuccess('');
} catch (error) { // } catch (error) {
proxy?.$modal.msgError('报价单编号生成失败'); // proxy?.$modal.msgError('');
} // }
}; // };
// IDFileUpload // IDFileUpload
const ossIdString = computed({ const ossIdString = computed({

@ -180,83 +180,83 @@
<el-table v-loading="loading" border :data="crmQuoteInfoList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" border :data="crmQuoteInfoList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" type="index" width="50" v-if="columns[0].visible" /> <el-table-column label="序号" align="center" type="index" width="60" v-if="columns[0].visible" />
<el-table-column label="报价单号" align="center" prop="quoteCode" v-if="columns[1].visible" /> <el-table-column label="报价单号" align="center" prop="quoteCode" width="160" v-if="columns[1].visible" show-overflow-tooltip />
<el-table-column label="报价单名称" align="center" prop="quoteName" v-if="columns[2].visible" /> <el-table-column label="报价单名称" align="center" prop="quoteName" width="200" v-if="columns[2].visible" show-overflow-tooltip />
<el-table-column label="报价轮次" align="center" prop="quoteRound" v-if="columns[3].visible" /> <el-table-column label="报价轮次" align="center" prop="quoteRound" width="100" v-if="columns[3].visible" />
<el-table-column label="报价大类" align="center" prop="quoteCategory" v-if="columns[4].visible"> <el-table-column label="报价大类" align="center" prop="quoteCategory" width="120" v-if="columns[4].visible">
<template #default="scope"> <template #default="scope">
<dict-tag :options="quote_category" :value="scope.row.quoteCategory" /> <dict-tag :options="quote_category" :value="scope.row.quoteCategory" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="报价类型" align="center" prop="quoteType" v-if="columns[5].visible"> <el-table-column label="报价类型" align="center" prop="quoteType" width="120" v-if="columns[5].visible">
<template #default="scope"> <template #default="scope">
<dict-tag :options="contract_type" :value="scope.row.quoteType" /> <dict-tag :options="contract_type" :value="scope.row.quoteType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="业务方向" align="center" prop="businessDirection" v-if="columns[6].visible"> <el-table-column label="业务方向" align="center" prop="businessDirection" width="120" v-if="columns[6].visible">
<template #default="scope"> <template #default="scope">
<dict-tag :options="business_direction" :value="scope.row.businessDirection" /> <dict-tag :options="business_direction" :value="scope.row.businessDirection" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="部门" align="center" prop="deptName" v-if="columns[7].visible" /> <el-table-column label="部门" align="center" prop="deptName" width="120" v-if="columns[7].visible" show-overflow-tooltip />
<el-table-column label="报价日期" align="center" prop="quoteDate" width="180" v-if="columns[8].visible"> <el-table-column label="报价日期" align="center" prop="quoteDate" width="180" v-if="columns[8].visible">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.quoteDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{ parseTime(scope.row.quoteDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="客户名称" align="center" prop="customerName" width="180" v-if="columns[22].visible" show-overflow-tooltip />
<el-table-column label="报价有效期起" align="center" prop="validFrom" width="180" v-if="columns[9].visible"> <el-table-column label="报价有效期起" align="center" prop="validFrom" width="180" v-if="columns[9].visible">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.validFrom, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{ parseTime(scope.row.validFrom, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="报价有效期" align="center" prop="validDays" v-if="columns[10].visible" /> <el-table-column label="报价有效期" align="center" prop="validDays" width="100" v-if="columns[10].visible" />
<el-table-column label="报价有效期止" align="center" prop="validTo" width="180" v-if="columns[11].visible"> <el-table-column label="报价有效期止" align="center" prop="validTo" width="180" v-if="columns[11].visible">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.validTo, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{ parseTime(scope.row.validTo, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="交货期" align="center" prop="deliveryPeriod" v-if="columns[12].visible" /> <el-table-column label="交货期" align="center" prop="deliveryPeriod" width="100" v-if="columns[12].visible" />
<el-table-column label="交付/交货方式" align="center" prop="deliveryMethod" v-if="columns[13].visible" /> <el-table-column label="交付/交货方式" align="center" prop="deliveryMethod" width="140" v-if="columns[13].visible" show-overflow-tooltip />
<el-table-column label="付款方式" align="center" prop="paymentMethod" v-if="columns[14].visible"> <el-table-column label="付款方式" align="center" prop="paymentMethod" width="120" v-if="columns[14].visible">
<template #default="scope"> <template #default="scope">
<dict-tag :options="payment_method" :value="scope.row.paymentMethod" /> <dict-tag :options="payment_method" :value="scope.row.paymentMethod" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="币种" align="center" prop="currencyType" v-if="columns[15].visible"> <el-table-column label="币种" align="center" prop="currencyType" width="80" v-if="columns[15].visible">
<template #default="scope"> <template #default="scope">
<dict-tag :options="currency_type" :value="scope.row.currencyType" /> <dict-tag :options="currency_type" :value="scope.row.currencyType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="含税信息" align="center" prop="taxIncludedInfo" v-if="columns[16].visible" /> <el-table-column label="含税信息" align="center" prop="taxIncludedInfo" width="100" v-if="columns[16].visible" show-overflow-tooltip />
<el-table-column label="税率(默认按明细可覆盖)" align="center" prop="taxRate" v-if="columns[17].visible" /> <el-table-column label="税率(默认按明细可覆盖)" align="center" prop="taxRate" width="180" v-if="columns[17].visible" />
<el-table-column label="总报价" align="center" prop="totalPrice" v-if="columns[18].visible" /> <el-table-column label="总报价" align="center" prop="totalPrice" width="130" v-if="columns[18].visible" />
<el-table-column label="未税总价" align="center" prop="totalBeforeTax" v-if="columns[19].visible" /> <el-table-column label="未税总价" align="center" prop="totalBeforeTax" width="130" v-if="columns[19].visible" />
<el-table-column label="税额" align="center" prop="totalTax" v-if="columns[20].visible" /> <el-table-column label="税额" align="center" prop="totalTax" width="130" v-if="columns[20].visible" />
<el-table-column label="含税总价" align="center" prop="totalIncludingTax" v-if="columns[21].visible" /> <el-table-column label="含税总价" align="center" prop="totalIncludingTax" width="130" v-if="columns[21].visible" />
<el-table-column label="客户名称" align="center" prop="customerName" v-if="columns[22].visible" /> <el-table-column label="客户方联系人" align="center" prop="customerContactName" width="130" v-if="columns[23].visible" show-overflow-tooltip />
<el-table-column label="客户方联系人" align="center" prop="customerContactName" v-if="columns[23].visible" /> <el-table-column label="客户方联系电话" align="center" prop="customerContactPhone" width="140" v-if="columns[24].visible" />
<el-table-column label="客户方联系电话" align="center" prop="customerContactPhone" v-if="columns[24].visible" /> <el-table-column label="客户方电子邮箱" align="center" prop="customerContactEmail" width="180" v-if="columns[25].visible" show-overflow-tooltip />
<el-table-column label="客户方电子邮箱" align="center" prop="customerContactEmail" v-if="columns[25].visible" /> <el-table-column label="供应商名称" align="center" prop="supplierName" width="180" v-if="columns[26].visible" show-overflow-tooltip />
<el-table-column label="供应商名称" align="center" prop="supplierName" v-if="columns[26].visible" /> <el-table-column label="供货方联系人" align="center" prop="supplierContactName" width="130" v-if="columns[27].visible" show-overflow-tooltip />
<el-table-column label="供货方联系人" align="center" prop="supplierContactName" v-if="columns[27].visible" /> <el-table-column label="供货方联系电话" align="center" prop="supplierContactPhone" width="140" v-if="columns[28].visible" />
<el-table-column label="供货方联系电话" align="center" prop="supplierContactPhone" v-if="columns[28].visible" /> <el-table-column label="供货方电子邮箱" align="center" prop="supplierContactEmail" width="180" v-if="columns[29].visible" show-overflow-tooltip />
<el-table-column label="供货方电子邮箱" align="center" prop="supplierContactEmail" v-if="columns[29].visible" /> <el-table-column label="项目ID(可选)" align="center" prop="projectId" width="120" v-if="columns[30].visible" />
<el-table-column label="项目ID(可选)" align="center" prop="projectId" v-if="columns[30].visible" /> <el-table-column label="打印模板ID(可选)" align="center" prop="templateId" width="140" v-if="columns[31].visible" />
<el-table-column label="打印模板ID(可选)" align="center" prop="templateId" v-if="columns[31].visible" /> <el-table-column label="附件ID" align="center" prop="ossId" width="120" v-if="columns[32].visible" />
<el-table-column label="附件ID" align="center" prop="ossId" v-if="columns[32].visible" /> <el-table-column label="报价单状态" align="center" prop="quoteStatus" width="120" v-if="columns[33].visible">
<el-table-column label="报价单状态" align="center" prop="quoteStatus" v-if="columns[33].visible">
<template #default="scope"> <template #default="scope">
<dict-tag :options="quote_status" :value="scope.row.quoteStatus" /> <dict-tag :options="quote_status" :value="scope.row.quoteStatus" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="流程状态" align="center" prop="flowStatus" v-if="columns[34].visible"> <el-table-column label="流程状态" align="center" prop="flowStatus" width="120" v-if="columns[34].visible">
<template #default="scope"> <template #default="scope">
<dict-tag :options="wf_business_status" :value="scope.row.flowStatus" /> <dict-tag :options="wf_business_status" :value="scope.row.flowStatus" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" align="center" prop="remark" v-if="columns[35].visible" /> <el-table-column label="备注" align="center" prop="remark" width="200" v-if="columns[35].visible" show-overflow-tooltip />
<el-table-column label="创建人" align="center" prop="createName" v-if="columns[36].visible" /> <el-table-column label="创建人" align="center" prop="createName" width="100" v-if="columns[36].visible" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180" v-if="columns[37].visible"> <el-table-column label="创建时间" align="center" prop="createTime" width="180" v-if="columns[37].visible">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
@ -272,10 +272,10 @@
<el-tooltip content="查看详情" placement="top" v-if="scope.row.flowStatus && scope.row.flowStatus !== 'draft'"> <el-tooltip content="查看详情" placement="top" v-if="scope.row.flowStatus && scope.row.flowStatus !== 'draft'">
<el-button link type="info" icon="DocumentChecked" @click="handleView(scope.row)"></el-button> <el-button link type="info" icon="DocumentChecked" @click="handleView(scope.row)"></el-button>
</el-tooltip> </el-tooltip>
<!-- 审批记录非草稿状态可查看 --> <!-- &lt;!&ndash; 审批记录非草稿状态可查看 &ndash;&gt;-->
<el-tooltip content="审批记录" placement="top" v-if="scope.row.flowStatus && scope.row.flowStatus !== 'draft'"> <!-- <el-tooltip content="审批记录" placement="top" v-if="scope.row.flowStatus && scope.row.flowStatus !== 'draft'">-->
<el-button link type="warning" icon="Tickets" @click="handleApprovalRecord(scope.row)"></el-button> <!-- <el-button link type="warning" icon="Tickets" @click="handleApprovalRecord(scope.row)"></el-button>-->
</el-tooltip> <!-- </el-tooltip>-->
<!-- 删除仅草稿状态可删除 --> <!-- 删除仅草稿状态可删除 -->
<el-tooltip content="删除" placement="top" v-if="!scope.row.flowStatus || scope.row.flowStatus === 'draft'"> <el-tooltip content="删除" placement="top" v-if="!scope.row.flowStatus || scope.row.flowStatus === 'draft'">
<el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['oa/crm:crmQuoteInfo:remove']"></el-button> <el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['oa/crm:crmQuoteInfo:remove']"></el-button>
@ -516,7 +516,7 @@ const dialog = reactive<DialogOption>({
// //
const columns = ref<FieldOption[]>([ const columns = ref<FieldOption[]>([
{ key: 0, label: `序号`, visible: true }, { key: 0, label: `序号`, visible: false },
{ key: 1, label: `报价单号`, visible: true }, { key: 1, label: `报价单号`, visible: true },
{ key: 2, label: `报价单名称`, visible: true }, { key: 2, label: `报价单名称`, visible: true },
{ key: 3, label: `报价轮次`, visible: false }, { key: 3, label: `报价轮次`, visible: false },
@ -689,7 +689,7 @@ const handleSelectionChange = (selection: CrmQuoteInfoVO[]) => {
const handleAdd = () => { const handleAdd = () => {
proxy.$tab.closePage(route); proxy.$tab.closePage(route);
router.push({ router.push({
path: '/oa/crm/crmQuoteInfo/edit', path: '/quote/crmQuoteInfo/edit',
query: { type: 'add' } query: { type: 'add' }
}); });
}; };
@ -699,7 +699,7 @@ const handleUpdate = (row?: CrmQuoteInfoVO) => {
const _quoteId = row?.quoteId || ids.value[0]; const _quoteId = row?.quoteId || ids.value[0];
proxy.$tab.closePage(route); proxy.$tab.closePage(route);
router.push({ router.push({
path: '/oa/crm/crmQuoteInfo/edit', path: '/quote/crmQuoteInfo/edit',
query: { id: _quoteId, type: 'update' } query: { id: _quoteId, type: 'update' }
}); });
}; };
@ -709,7 +709,7 @@ const handleView = (row?: CrmQuoteInfoVO) => {
const _quoteId = row?.quoteId; const _quoteId = row?.quoteId;
proxy.$tab.closePage(route); proxy.$tab.closePage(route);
router.push({ router.push({
path: '/oa/crm/crmQuoteInfo/edit', path: '/quote/crmQuoteInfo/edit',
query: { id: _quoteId, type: 'view' } query: { id: _quoteId, type: 'view' }
}); });
}; };

@ -10,6 +10,12 @@
<el-form-item label="订单名称" prop="projectName"> <el-form-item label="订单名称" prop="projectName">
<el-input v-model="queryParams.projectName" placeholder="请输入订单名称" clearable @keyup.enter="handleQuery" /> <el-input v-model="queryParams.projectName" placeholder="请输入订单名称" clearable @keyup.enter="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="合同编号" prop="contractCode">
<el-input v-model="queryParams.contractCode" placeholder="请输入合同编号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="合同名称" prop="contractName">
<el-input v-model="queryParams.contractName" placeholder="请输入合同名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<!-- <el-form-item label="业务方向" prop="businessDirection">--> <!-- <el-form-item label="业务方向" prop="businessDirection">-->
<!-- <el-select v-model="queryParams.businessDirection" placeholder="请选择业务方向" clearable>--> <!-- <el-select v-model="queryParams.businessDirection" placeholder="请选择业务方向" clearable>-->
<!-- <el-option v-for="dict in business_direction" :key="dict.value" :label="dict.label" :value="dict.value" />--> <!-- <el-option v-for="dict in business_direction" :key="dict.value" :label="dict.label" :value="dict.value" />-->
@ -45,41 +51,41 @@
</transition> </transition>
<el-card shadow="never"> <el-card shadow="never">
<template #header> <!-- <template #header>-->
<el-row :gutter="10" class="mb8"> <!-- <el-row :gutter="10" class="mb8">-->
<el-col :span="1.5"> <!-- <el-col :span="1.5">-->
<el-dropdown trigger="click" @command="handleAdd"> <!-- <el-dropdown trigger="click" @command="handleAdd">-->
<el-button type="primary" plain icon="Plus" v-hasPermi="['oa/erp:projectInfo:add']"> <!-- <el-button type="primary" plain icon="Plus" v-hasPermi="['oa/erp:projectInfo:add']">-->
新增 <!-- 新增-->
<el-icon class="el-icon--right"> <!-- <el-icon class="el-icon&#45;&#45;right">-->
<arrow-down /> <!-- <arrow-down />-->
</el-icon> <!-- </el-icon>-->
</el-button> <!-- </el-button>-->
<template #dropdown> <!-- <template #dropdown>-->
<el-dropdown-menu> <!-- <el-dropdown-menu>-->
<el-dropdown-item v-for="dict in project_category" :key="dict.value" :command="dict.value"> <!-- <el-dropdown-item v-for="dict in project_category" :key="dict.value" :command="dict.value">-->
{{ dict.label }} <!-- {{ dict.label }}-->
</el-dropdown-item> <!-- </el-dropdown-item>-->
</el-dropdown-menu> <!-- </el-dropdown-menu>-->
</template> <!-- </template>-->
</el-dropdown> <!-- </el-dropdown>-->
</el-col> <!-- </el-col>-->
<el-col :span="1.5"> <!-- <el-col :span="1.5">-->
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['oa/erp:projectInfo:edit']" <!-- <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['oa/erp:projectInfo:edit']"-->
>修改 <!-- >修改-->
</el-button> <!-- </el-button>-->
</el-col> <!-- </el-col>-->
<el-col :span="1.5"> <!-- <el-col :span="1.5">-->
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['oa/erp:projectInfo:remove']" <!-- <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['oa/erp:projectInfo:remove']"-->
>删除 <!-- >删除-->
</el-button> <!-- </el-button>-->
</el-col> <!-- </el-col>-->
<el-col :span="1.5"> <!-- <el-col :span="1.5">-->
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['oa/erp:projectInfo:export']"> </el-button> <!-- <el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['oa/erp:projectInfo:export']"> </el-button>-->
</el-col> <!-- </el-col>-->
<right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true" @queryTable="getList"></right-toolbar> <!-- <right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true" @queryTable="getList"></right-toolbar>-->
</el-row> <!-- </el-row>-->
</template> <!-- </template>-->
<el-table v-loading="loading" border :data="projectInfoList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" border :data="projectInfoList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
@ -90,11 +96,11 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="订单编号" align="center" prop="projectCode" width="140" v-if="columns[3].visible"> <el-table-column label="订单编号" align="center" prop="projectCode" width="140" v-if="columns[3].visible">
<template #default="scope"> <!-- <template #default="scope">-->
<el-link type="primary" underline @click="handleLedger(scope.row)"> <!-- <el-link type="primary" underline @click="handleLedger(scope.row)">-->
{{ scope.row.projectCode }} <!-- {{ scope.row.projectCode }}-->
</el-link> <!-- </el-link>-->
</template> <!-- </template>-->
</el-table-column> </el-table-column>
<el-table-column label="订单名称" align="center" prop="projectName" width="200" v-if="columns[4].visible" /> <el-table-column label="订单名称" align="center" prop="projectName" width="200" v-if="columns[4].visible" />
<el-table-column label="合同编号" align="center" prop="contractCode" width="140" v-if="columns[28].visible" /> <el-table-column label="合同编号" align="center" prop="contractCode" width="140" v-if="columns[28].visible" />
@ -250,6 +256,8 @@ const data = reactive<{ queryParams: ProjectInfoQuery }>({
sortOrder: undefined, sortOrder: undefined,
contractId: undefined, contractId: undefined,
activeFlag: undefined, activeFlag: undefined,
contractCode: undefined,
contractName: undefined,
params: {} params: {}
} }
}); });

@ -455,7 +455,7 @@ const approvalRecordRef = ref<InstanceType<typeof ApprovalRecord>>();
// //
const submitFormData = ref<StartProcessBo>({ const submitFormData = ref<StartProcessBo>({
businessId: '', businessId: '',
flowCode: 'OAC', flowCode: '',
variables: {}, variables: {},
bizExt: {} bizExt: {}
}); });
@ -701,6 +701,7 @@ const submitForm = (status: string, mode: boolean) => {
contractName: form.value.contractName, contractName: form.value.contractName,
totalPrice: form.value.totalPrice, totalPrice: form.value.totalPrice,
businessDirection: form.value.businessDirection, businessDirection: form.value.businessDirection,
contractDeptId: form.value.contractDeptId,
contractCode: form.value.contractCode contractCode: form.value.contractCode
}; };
// //
@ -739,7 +740,7 @@ const submitForm = (status: string, mode: boolean) => {
// //
const handleStartWorkFlow = async (data: ContractInfoForm) => { const handleStartWorkFlow = async (data: ContractInfoForm) => {
try { try {
submitFormData.value.flowCode = 'OAC'; submitFormData.value.flowCode = FlowCodeEnum.CONTRACT_CODE;
submitFormData.value.businessId = data.contractId; submitFormData.value.businessId = data.contractId;
// //
@ -748,6 +749,7 @@ const handleStartWorkFlow = async (data: ContractInfoForm) => {
contractName: data.contractName, contractName: data.contractName,
totalPrice: data.totalPrice, totalPrice: data.totalPrice,
businessDirection: data.businessDirection, businessDirection: data.businessDirection,
contractDeptId: data.contractDeptId,
contractCode: data.contractCode contractCode: data.contractCode
}; };

@ -321,7 +321,7 @@ const columns = ref<FieldOption[]>([
{ key: 15, label: `乙方授权代表`, visible: true }, { key: 15, label: `乙方授权代表`, visible: true },
{ key: 16, label: `乙方签字日期`, visible: true }, { key: 16, label: `乙方签字日期`, visible: true },
{ key: 17, label: `合同状态`, visible: true }, { key: 17, label: `合同状态`, visible: true },
{ key: 18, label: `流程状态`, visible: true }, { key: 18, label: `流程状态`, visible: false },
{ key: 19, label: `合同模板ID`, visible: false }, { key: 19, label: `合同模板ID`, visible: false },
{ key: 20, label: `附件ID`, visible: false }, { key: 20, label: `附件ID`, visible: false },
{ key: 21, label: `付款方式`, visible: true }, { key: 21, label: `付款方式`, visible: true },

@ -568,7 +568,7 @@ onMounted(async () => {
form.value.deptId = userVO.deptId; form.value.deptId = userVO.deptId;
form.value.managerId = userVO.userId; form.value.managerId = userVO.userId;
form.value.chargeId = userVO.chargeId; form.value.chargeId = userVO.chargeId;
form.value.deputyId = userVO.deputyId; // form.value.deputyId = userVO.deputyId;
} }
} catch (error) { } catch (error) {
console.error('获取用户信息失败:', error); console.error('获取用户信息失败:', error);

@ -55,9 +55,9 @@
<el-tab-pane label="修改密码" name="resetPwd"> <el-tab-pane label="修改密码" name="resetPwd">
<resetPwd /> <resetPwd />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="第三方应用" name="thirdParty"> <!-- <el-tab-pane label="第三方应用" name="thirdParty">-->
<thirdParty :auths="state.auths" /> <!-- <thirdParty :auths="state.auths" />-->
</el-tab-pane> <!-- </el-tab-pane>-->
<el-tab-pane label="在线设备" name="onlineDevice"> <el-tab-pane label="在线设备" name="onlineDevice">
<onlineDevice :devices="state.devices" /> <onlineDevice :devices="state.devices" />
</el-tab-pane> </el-tab-pane>

Loading…
Cancel
Save