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