parent
db171ade9d
commit
c7dbc2f18b
@ -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 })
|
||||||
|
}
|
After Width: | Height: | Size: 6.7 KiB |
@ -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>
|
||||||
|
|
Loading…
Reference in new issue