合同中心模块开发v1: 合同管理-列表页开发

pull/1/head
ccongli 1 year ago
parent db171ade9d
commit c7dbc2f18b

@ -33,6 +33,10 @@ public class ContractBaseVO {
@NotNull(message = "合同名称不能为空")
private String contractName;
@Schema(description = "合同简称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
@NotNull(message = "合同简称不能为空")
private String contractShortName;
@Schema(description = "供应商/客户名称id")
private Long subject;

@ -37,7 +37,10 @@ public class ContractExcelVO {
@ExcelProperty("合同名称")
private String contractName;
@ExcelProperty("供应商/客户名称id")
@ExcelProperty("合同简称")
private String contractShortName;
@ExcelProperty("供应商/客户名称")
private Long subject;
@ExcelProperty("部门id")

@ -27,7 +27,10 @@ public class ContractExportReqVO {
@Schema(description = "合同名称", example = "王五")
private String contractName;
@Schema(description = "供应商/客户名称id")
@Schema(description = "合同简称")
private String contractShortName;
@Schema(description = "供应商/客户名称")
private Long subject;
@Schema(description = "部门id", example = "10183")

@ -29,7 +29,11 @@ public class ContractPageReqVO extends PageParam {
@Schema(description = "合同名称", example = "王五")
private String contractName;
@Schema(description = "供应商/客户名称id")
@Schema(description = "合同简称")
private String contractShortName;
@Schema(description = "供应商/客户名称")
private Long subject;
@Schema(description = "部门id", example = "10183")

@ -51,6 +51,10 @@ public class ContractDO extends BaseDO {
*
*/
private String contractName;
/**
*
*/
private String contractShortName;
/**
* /id
*/

@ -160,6 +160,7 @@ logging:
com.yunxi.scm.module.trade.dal.mysql: debug
com.yunxi.scm.module.promotion.dal.mysql: debug
com.yunxi.scm.module.demo.dal.mysql: debug # demo模块 MyBatis 操作日志
com.yunxi.scm.module.xxjj.dal.mysql: debug
debug: false

@ -0,0 +1,48 @@
import request from '@/config/axios'
export interface ContractVO {
id: number
contractStatus: string
contractType: string
contractTemplateId: number
contractNumber: number
contractName: string
subject: number
deptId: number
contractNo: string
contractSigned: string
contractSignedTime: Date
businessId: number
businessType: string
declarationTime: Date
}
// 查询合同信息列表
export const getContractPage = async (params) => {
return await request.get({ url: `/xxjj/contract/page`, params })
}
// 查询合同信息详情
export const getContract = async (id: number) => {
return await request.get({ url: `/xxjj/contract/get?id=` + id })
}
// 新增合同信息
export const createContract = async (data: ContractVO) => {
return await request.post({ url: `/xxjj/contract/create`, data })
}
// 修改合同信息
export const updateContract = async (data: ContractVO) => {
return await request.put({ url: `/xxjj/contract/update`, data })
}
// 删除合同信息
export const deleteContract = async (id: number) => {
return await request.delete({ url: `/xxjj/contract/delete?id=` + id })
}
// 导出合同信息 Excel
export const exportContract = async (params) => {
return await request.download({ url: `/xxjj/contract/export-excel`, params })
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

@ -226,4 +226,20 @@ export enum DICT_TYPE {
OUTPUT_TAX_RATE = 'output_tax_rate', //商品进销税率
// ============= CONTRACT 模块=================
CONTRACT_STATUS = 'contract_status', // 合同状态
CONTRACT_TYPE = 'contract_type', // 合同类型
CONTRACT_BUSINESS_TYPE = 'contract_business_type', // 合同业务类型
CONTRACT_CURRENCY = 'contract_currency', // 合同交易币种
CONTRACT_PROCUREMENT_MODEL = 'contract_procurement_model', //合同采购模式
CONTRACT_PRICING_MODEL = 'contract_pricing_model', //合同定价模式
CONTRACT_DELIVERY_MODEL = 'contract_delivery_model', // 合同交货方式
CONTRACT_DELIVERY_METHOD = 'contract_delivery_method', // 合同配送方式
CONTRACT_MODE_TRANSPORT = 'contract_mode_transport', // 合同运输方式
CONTRACT_COST_MAIN = 'contract_cost_main', // 合同费用承担主体
CONTRACT_BIDDING_STATUS = 'contract_bidding_status', // 合同招投标状态
CONTRACT_LONGTERM_STATUS = 'contract_longterm_status', // 合同长协
}

@ -0,0 +1,166 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="100px" v-loading="formLoading">
<el-form-item label="合同状态" prop="contractStatus">
<el-select v-model="formData.contractStatus" placeholder="请选择合同状态">
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.CONTRACT_STATUS)" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="合同类型" prop="contractType">
<el-select v-model="formData.contractType" placeholder="请选择合同类型">
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.CONTRACT_TYPE)" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="合同模板" prop="contractTemplateId">
<el-input v-model="formData.contractTemplateId" placeholder="请输入合同模板" />
</el-form-item>
<el-form-item label="合同编号" prop="contractNumber">
<el-input v-model="formData.contractNumber" placeholder="请输入合同编号" />
</el-form-item>
<el-form-item label="合同名称" prop="contractName">
<el-input v-model="formData.contractName" placeholder="请输入合同名称" />
</el-form-item>
<el-form-item label="供应商/客户名称id" prop="subject">
<el-input v-model="formData.subject" placeholder="请输入供应商/客户名称id" />
</el-form-item>
<el-form-item label="部门id" prop="deptId">
<el-input v-model="formData.deptId" placeholder="请输入部门id" />
</el-form-item>
<el-form-item label="对方合同编号" prop="contractNo">
<el-input v-model="formData.contractNo" placeholder="请输入对方合同编号" />
</el-form-item>
<el-form-item label="签订地点" prop="contractSigned">
<el-input v-model="formData.contractSigned" placeholder="请输入签订地点" />
</el-form-item>
<el-form-item label="签订时间" prop="contractSignedTime">
<el-date-picker v-model="formData.contractSignedTime" type="date" value-format="x" placeholder="选择签订时间" />
</el-form-item>
<el-form-item label="关联业务线" prop="businessId">
<el-input v-model="formData.businessId" placeholder="请输入关联业务线" />
</el-form-item>
<el-form-item label="业务类型" prop="businessType">
<el-select v-model="formData.businessType" placeholder="请选择业务类型">
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.CONTRACT_BUSINESS_TYPE)" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="申报时间" prop="declarationTime">
<el-date-picker v-model="formData.declarationTime" type="date" value-format="x" placeholder="选择申报时间" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import * as ContractApi from '@/api/xxjj/contract'
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
contractStatus: undefined,
contractType: undefined,
contractTemplateId: undefined,
contractNumber: undefined,
contractName: undefined,
subject: undefined,
deptId: undefined,
contractNo: undefined,
contractSigned: undefined,
contractSignedTime: undefined,
businessId: undefined,
businessType: undefined,
declarationTime: undefined
})
const formRules = reactive({
contractNumber: [{ required: true, message: '合同编号不能为空', trigger: 'blur' }],
contractName: [{ required: true, message: '合同名称不能为空', trigger: 'blur' }],
contractSigned: [{ required: true, message: '签订地点不能为空', trigger: 'blur' }],
contractSignedTime: [{ required: true, message: '签订时间不能为空', trigger: 'blur' }],
businessId: [{ required: true, message: '关联业务线不能为空', trigger: 'blur' }],
businessType: [{ required: true, message: '业务类型不能为空', trigger: 'change' }],
declarationTime: [{ required: true, message: '申报时间不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
//
if (id) {
formLoading.value = true
try {
formData.value = await ContractApi.getContract(id)
} finally {
formLoading.value = false
}
}
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
if (!formRef) return
const valid = await formRef.value.validate()
if (!valid) return
//
formLoading.value = true
try {
const data = formData.value as unknown as ContractApi.ContractVO
if (formType.value === 'create') {
await ContractApi.createContract(data)
message.success(t('common.createSuccess'))
} else {
await ContractApi.updateContract(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
contractStatus: undefined,
contractType: undefined,
contractTemplateId: undefined,
contractNumber: undefined,
contractName: undefined,
subject: undefined,
deptId: undefined,
contractNo: undefined,
contractSigned: undefined,
contractSignedTime: undefined,
businessId: undefined,
businessType: undefined,
declarationTime: undefined
}
formRef.value?.resetFields()
}
onMounted(() => {
getStrDictOptions(DICT_TYPE.CONTRACT_STATUS)
});
</script>

@ -0,0 +1,54 @@
<template>
<div class="date-range">
<el-space :size="10" spacer="|">
<div v-for="(item, index) in ranges" :key="index">
<el-button type="primary" link @click="changeRange(item.day)">{{ item.text }}</el-button>
</div>
</el-space>
</div>
</template>
<script setup lang="ts" name="DateRange">
import dayjs from 'dayjs'
const emits = defineEmits(['changeRange']);
const props = defineProps<{
name: string
}>();
const ranges = reactive([
{
day: 0,
text: '今天'
},
{
day: 1,
text: '昨天'
},
{
day: 7,
text: '最近7天'
},
{
day: 30,
text: '最近30天'
}
]);
//
const changeRange = (days : number) => {
let now = Date.now();
let end = dayjs(now).format('YYYY-MM-DD 23:59:59') ;
let begin = dayjs(now).subtract(days,'days').format('YYYY-MM-DD 00:00:00');
let obj = {
key: props.name,
range: [begin, end]
}
emits('changeRange', obj);
}
</script>
<style lang="scss">
.date-range {
width: 100%;
}
</style>

@ -0,0 +1,221 @@
<template>
<el-drawer :model-value="props.isShow" :with-header="true" :show-close="false" class="xy-drawer" @closed="doClose"
size="40%">
<template #header>
<div class="xy-header-l">
<el-icon>
<Filter />
</el-icon>
</div>
<div class="xy-header-r">
<el-button link :icon="ArrowRightBold" @click="doClose"></el-button>
</div>
</template>
<template #default>
<el-form :model="queryParams" ref="queryFormRef" label-width="120px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="合同名称/编号" prop="content">
<el-input v-model="queryParams.content" placeholder="合同名称/编号" clearable
@keyup.enter="handleQuery" style="width: 100%;" />
</el-form-item>
<!-- <el-form-item label="合同状态" prop="contractStatus">
<el-select v-model="queryParams.contractStatus" placeholder="请选择合同状态" clearable
class="!w-240px">
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.CONTRACT_STATUS)" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item> -->
</el-col>
<el-col :span="12">
<el-form-item label="合同简称" prop="contractShortname">
<el-input v-model="queryParams.contractShortname" placeholder="合同简称/英文名" clearable
@keyup.enter="handleQuery" style="width: 100%;" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="合同状态" prop="contractStatus">
<el-select v-model="queryParams.contractStatus" placeholder="请选择合同状态" clearable
class="!w-240px">
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.CONTRACT_STATUS)" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="合同类型" prop="contractType">
<el-select v-model="queryParams.contractType" placeholder="合同状态" clearable style="width: 100%;">
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.CONTRACT_TYPE)" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="合同分类" prop="contractType">
<el-select v-model="queryParams.contractType" placeholder="合同分类" clearable style="width: 100%;">
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.CONTRACT_TYPE)" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col> -->
<!-- 合同分类合同来源添加人员归属人员生效时间 存在歧义 todo -->
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="供应商/客户" prop="subject">
<el-input v-model="queryParams.subject" placeholder="供应商/客户" clearable
@keyup.enter="handleQuery" style="width: 100%;" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="对方合同编号" prop="contractNo">
<el-input v-model="queryParams.contractNo" placeholder="对方合同编号" clearable
@keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="配送方式" prop="deliveryMethod">
<el-select v-model="queryParams.deliveryMethod" placeholder="配送方式" style="width: 100%;">
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.CONTRACT_DELIVERY_METHOD)"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="运输方式" prop="modeTransport">
<el-select v-model="queryParams.modeTransport" placeholder="运输方式" style="width: 100%;">
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.CONTRACT_MODE_TRANSPORT)"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="更新时间" prop="updateTime">
<el-date-picker v-model="queryParams.updateTime" value-format="YYYY-MM-DD HH:mm:ss"
type="daterange" start-placeholder="开始日期" end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px" />
</el-form-item>
</el-col>
<el-col :span="12">
<DateRange name="updateTime" @change-range="changeDateRange" />
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="申报时间" prop="declarationTime">
<el-date-picker v-model="queryParams.declarationTime" value-format="YYYY-MM-DD HH:mm:ss"
type="daterange" start-placeholder="开始日期" end-placeholder="结束日期" class="!w-240px" />
</el-form-item>
</el-col>
<el-col :span="12">
<DateRange name="declarationTime" @change-range="changeDateRange" />
</el-col>
</el-row>
</el-form>
</template>
<template #footer>
<div class="xy-footer">
<el-button type="primary" :icon="Search" @click="handleQuery"></el-button>
<el-button :icon="RefreshLeft" @click="resetQuery"></el-button>
</div>
</template>
</el-drawer>
</template>
<script setup lang="ts" name="DrawerFilter">
import { Filter, ArrowRightBold, Search, RefreshLeft } from '@element-plus/icons-vue'
import { DICT_TYPE, getIntDictOptions, getStrDictOptions } from '@/utils/dict'
import DateRange from './DateRange.vue'
const props = defineProps({
isShow: Boolean
})
const emit = defineEmits(['doClose','doSearch'])
const queryFormRef = ref()
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
content: null,
contractStatus: null,
contractType: null,
contractNumber: null,
contractName: null,
contractShortName: null,
subject: null,
contractNo: null,
updateTime: [],
declarationTime: [],
//
deptId: null,
contractTemplateId: null,
contractSigned: null,
contractSignedTime: [],
businessId: null,
businessType: null,
// info
deliveryMethod: null,
modeTransport: null,
})
//
const changeDateRange = (obj) => {
console.log(obj);
queryParams[obj.key] = obj.range;
console.log(queryParams);
}
/** 搜索按钮操作 */
const handleQuery = () => {
console.log(queryParams);
// emit('doSearch', queryParams)
}
//
const resetQuery = () => {
console.log(queryFormRef)
queryFormRef.value.resetFields()
}
//
const doClose = () => {
emit('doClose', false)
}
</script>
<style lang="scss" scoped>
.xy-drawer {
.el-drawer__header {
margin: 0px;
border-bottom: solid 1px #D9D9D9;
padding: 10px 0px;
height: 50px;
.xy-header-l {
padding: 0px 10px;
}
.xy-header-r {
padding: 0px 10px;
}
}
.el-drawer__footer {
border-top: solid 1px #D9D9D9;
padding: 0px;
.xy-footer {
padding: 10px;
}
}
}
</style>

@ -0,0 +1,295 @@
<template>
<ContentWrap title="客户列表">
<!-- 筛选项 -->
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="120px">
<el-row>
<el-form-item label="合同名称/编号" prop="content">
<el-input v-model="queryParams.content" placeholder="合同名称/编号" clearable @keyup.enter="handleQuery"
class="!w-240px" />
</el-form-item>
<el-form-item label="合同状态" prop="contractStatus">
<el-select v-model="queryParams.contractStatus" placeholder="合同状态" clearable class="!w-240px">
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.CONTRACT_STATUS)" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="合同类型" prop="contractType">
<el-select v-model="queryParams.contractType" placeholder="合同类型" clearable class="!w-240px">
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.CONTRACT_TYPE)" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="更新时间" prop="updateTime">
<el-date-picker v-model="queryParams.updateTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
start-placeholder="开始日期" end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-240px" />
</el-form-item>
</el-row>
<el-row justify="end">
<el-col :span="12" style="text-align: right;">
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" /> 搜索
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" /> 重置
</el-button>
<el-button type="primary" link :icon="Filter" @click="toggleShowDrawerFilter(true)"></el-button>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item>
<el-button type="primary" plain @click="bulidContract" v-hasPermi="['xxjj:contract:create']">
<Icon icon="ep:plus" class="mr-5px" /> 生成合同
</el-button>
<el-button type="success" plain @click="handleExport" :loading="exportLoading"
v-hasPermi="['xxjj:contract:export']">
<Icon icon="ep:download" class="mr-5px" /> 导出合同
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<!-- 数据列表 -->
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" size="large" height="550px"
style="margin-top: 10px;" @selection-change="handleSelectionChange">
<!-- <el-table-column label="序号" type="index" width="60px" /> -->
<el-table-column type="selection" width="55px" />
<el-table-column label="合同名称" align="center" prop="contractName" width="240px" fixed>
<template #default="scope">
<!-- <dict-tag :type="DICT_TYPE.CONTRACT_TYPE" :value="scope.row.contractType" /> -->
<div class="content">
<div class="thumb">
<el-image style="height: 100%; width: 100%;" :src="tempImg" fit="fill" />
</div>
<div class="name" @click="toContractInfo(scope.row.id)">
<div class="name-1">
<el-button type="primary" link>{{ scope.row.contractShortName || 'unknow' }}</el-button>
</div>
<div class="name-2">
<el-button type="primary" link>{{ scope.row.id }}</el-button>
</div>
</div>
</div>
</template>
</el-table-column>
<!-- <el-table-column label="编号" align="center" prop="id" width="150px" /> -->
<el-table-column label="合同状态" align="center" prop="contractStatus" width="120px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.CONTRACT_STATUS" :value="scope.row.contractStatus" />
</template>
</el-table-column>
<el-table-column label="合同类型" align="center" prop="contractType" width="120px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.CONTRACT_TYPE" :value="scope.row.contractType" />
</template>
</el-table-column>
<el-table-column label="业务类型" align="center" prop="businessType" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.CONTRACT_BUSINESS_TYPE" :value="scope.row.businessType" />
</template>
</el-table-column>
<!-- <el-table-column label="合同模板" align="center" prop="contractTemplateId" width="150px" /> -->
<el-table-column label="供应商/客户名称" align="center" prop="subject" width="180px">
<template #default="scope">
<div class="content">
<div class="subject">
<div class="subject-1">
{{ scope.row.contractShortName || 'unknow' }}
</div>
<div class="subject-2">
<el-button type="primary" link @click="() => { }">对方合同编号: {{ scope.row.contractNo }}</el-button>
</div>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="部门" align="center" prop="deptId" width="150px" />
<!-- <el-table-column label="签订地点" align="center" prop="contractSigned" width="150px" /> -->
<el-table-column label="签订时间" align="center" prop="contractSignedTime" :formatter="dateFormatter" width="180px" />
<!-- <el-table-column label="关联业务线" align="center" prop="businessId" width="150px" /> -->
<el-table-column label="申报时间" align="center" prop="declarationTime" :formatter="dateFormatter" width="180px" />
<el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" width="180px" />
<!-- <el-table-column label="更新时间" align="center" prop="updateTime" :formatter="dateFormatter" width="150px" /> -->
<el-table-column label="操作" align="center" width="150px" fixed="right">
<template #default="scope">
<el-button link type="primary" @click="editContract(scope.row.id)" v-hasPermi="['xxjj:contract:update']">
编辑
</el-button>
<el-button link type="danger" @click="handleDelete(scope.row.id)" v-hasPermi="['xxjj:contract:delete']">
删除
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
@pagination="getList" />
</ContentWrap>
<!-- 高级搜索功能 -->
<DrawerFilter :isShow="showFilterDrawer" @do-close="toggleShowDrawerFilter" @do-search="doDrawerFilterSearch" />
<!-- 表单弹窗添加/修改 -->
<!-- <ContractForm ref="formRef" @success="getList" /> -->
</template>
<script setup lang="ts" name="Contract">
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import * as ContractApi from '@/api/xxjj/contract'
import DrawerFilter from './components/DrawerFilter.vue'
// import ContractForm from './ContractForm.vue'
import tempImg from '@/assets/imgs/contract.png';
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
content: null,
contractStatus: null,
contractType: null,
updateTime: []
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await ContractApi.getContractPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
// /** / */
// const formRef = ref()
// const openForm = (type: string, id?: number) => {
// formRef.value.open(type, id)
// }
const bulidContract = () => {
console.log(123456);
}
const editContract = (id) => {
console.log(id);
}
const toContractInfo = (id) => {
console.log(id);
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await ContractApi.deleteContract(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch { }
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await ContractApi.exportContract(queryParams)
download.excel(data, '合同信息.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 初始化 **/
onMounted(() => {
getList()
})
//
let showFilterDrawer = ref(false);
const toggleShowDrawerFilter = (isshow: boolean) => {
showFilterDrawer.value = isshow;
}
const doDrawerFilterSearch = (params: Object) => {
queryParams = params;
getList()
}
//
const handleSelectionChange = (selection) => {
console.log(selection); //
}
</script>
<style lang="scss" scoped>
.content {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
.thumb {
height: 35px;
width: 35px;
background-color: #fff;
}
.name {
width: 150px;
font-size: 20px;
line-height: 20px;
text-align: left;
margin-left: 10px;
//
overflow: hidden;
// display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
text-overflow: ellipsis;
}
.subject {
font-size: 16px;
line-height: 16px;
}
}
</style>
Loading…
Cancel
Save