项目增删改查接口对接
This commit is contained in:
@@ -4,6 +4,10 @@ import {programRequest} from '@/utils/api'
|
|||||||
export const programAPI = {
|
export const programAPI = {
|
||||||
// 登录
|
// 登录
|
||||||
list: (params) => programRequest.get('/program/list', {params}),
|
list: (params) => programRequest.get('/program/list', {params}),
|
||||||
|
add: (data) => programRequest.post('/program', data),
|
||||||
|
update: (data) => programRequest.patch("/program", data),
|
||||||
|
delete: (id) => programRequest.delete(`/program/${id}`),
|
||||||
|
getOne: (id) => programRequest.get(`/program/${id}`),
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|||||||
@@ -47,33 +47,33 @@
|
|||||||
<!-- 筛选和操作 -->
|
<!-- 筛选和操作 -->
|
||||||
<el-card class="filter-card">
|
<el-card class="filter-card">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="4">
|
<!-- <el-col :span="4">-->
|
||||||
<el-select v-model="queryParams.status" placeholder="选择状态" clearable>
|
<!-- <el-select v-model="queryParams.status" placeholder="选择状态" clearable>-->
|
||||||
<el-option label="全部" value=""/>
|
<!-- <el-option label="全部" value=""/>-->
|
||||||
<el-option label="待确认" value="pending"/>
|
<!-- <el-option label="待确认" value="pending"/>-->
|
||||||
<el-option label="已确认" value="confirmed"/>
|
<!-- <el-option label="已确认" value="confirmed"/>-->
|
||||||
<el-option label="已拒绝" value="rejected"/>
|
<!-- <el-option label="已拒绝" value="rejected"/>-->
|
||||||
<el-option label="已取消" value="cancelled"/>
|
<!-- <el-option label="已取消" value="cancelled"/>-->
|
||||||
</el-select>
|
<!-- </el-select>-->
|
||||||
</el-col>
|
<!-- </el-col>-->
|
||||||
|
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-input v-model="queryParams.search" placeholder="搜索用户名或姓名" clearable/>
|
<el-input v-model="queryParams.keyword" placeholder="搜索项目名称、项目公司或地址" clearable/>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="4">
|
<!-- <el-col :span="4">-->
|
||||||
<el-date-picker
|
<!-- <el-date-picker-->
|
||||||
v-model="dateRange"
|
<!-- v-model="dateRange"-->
|
||||||
type="daterange"
|
<!-- type="daterange"-->
|
||||||
range-separator="至"
|
<!-- range-separator="至"-->
|
||||||
start-placeholder="开始日期"
|
<!-- start-placeholder="开始日期"-->
|
||||||
end-placeholder="结束日期"
|
<!-- end-placeholder="结束日期"-->
|
||||||
format="YYYY-MM-DD"
|
<!-- format="YYYY-MM-DD"-->
|
||||||
value-format="YYYY-MM-DD"
|
<!-- value-format="YYYY-MM-DD"-->
|
||||||
/>
|
<!-- />-->
|
||||||
</el-col>
|
<!-- </el-col>-->
|
||||||
|
|
||||||
<el-row style="margin-left: 150px;" :gutter="10">
|
<el-row style="margin-left: 50px;" :gutter="10">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-button type="primary" @click="getList">搜索</el-button>
|
<el-button type="primary" @click="getList">搜索</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -112,7 +112,7 @@
|
|||||||
type="danger"
|
type="danger"
|
||||||
plain
|
plain
|
||||||
icon="Delete"
|
icon="Delete"
|
||||||
:disabled="multiple"
|
:disabled="single"
|
||||||
@click="handleDelete"
|
@click="handleDelete"
|
||||||
>删除
|
>删除
|
||||||
</el-button>
|
</el-button>
|
||||||
@@ -122,12 +122,14 @@
|
|||||||
<el-table
|
<el-table
|
||||||
:data="dataList"
|
:data="dataList"
|
||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
stripe
|
stripe
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
>
|
>
|
||||||
<el-table-column type="selection" width="55" align="center"/>
|
<el-table-column type="selection" width="55" align="center"/>
|
||||||
<el-table-column prop="id" label="ID"/>
|
<!-- <el-table-column prop="id" label="ID"/>-->
|
||||||
<el-table-column prop="name" label="项目名称"/>
|
<el-table-column prop="name" label="项目名称"/>
|
||||||
|
<el-table-column prop="company" label="项目公司"/>
|
||||||
<el-table-column label="项目负责人">
|
<el-table-column label="项目负责人">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tag>{{ scope.row.user.username }}</el-tag>
|
<el-tag>{{ scope.row.user.username }}</el-tag>
|
||||||
@@ -142,7 +144,7 @@
|
|||||||
|
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="300">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="300">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" icon="Document" @click="handleDetail(scope.row)">详情</el-button>
|
<!-- <el-button link type="primary" icon="Document" @click="handleDetail(scope.row)">详情</el-button>-->
|
||||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button>
|
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button>
|
||||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button>
|
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
@@ -165,7 +167,7 @@
|
|||||||
|
|
||||||
<!-- 表单 -->
|
<!-- 表单 -->
|
||||||
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
|
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
|
||||||
<el-form ref="dictRef" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="formRef" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="项目名称" prop="name">
|
<el-form-item label="项目名称" prop="name">
|
||||||
<el-input v-model="form.name" placeholder="请输入项目名称"/>
|
<el-input v-model="form.name" placeholder="请输入项目名称"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -175,11 +177,26 @@
|
|||||||
<el-form-item label="项目地点" prop="address">
|
<el-form-item label="项目地点" prop="address">
|
||||||
<el-input v-model="form.address" placeholder="请输入项目地点"/>
|
<el-input v-model="form.address" placeholder="请输入项目地点"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="开始时间" prop="startDate">
|
<el-form-item label="结算方式" prop="paymentMethod">
|
||||||
<el-input v-model="form.startDate" placeholder="请选择开始时间"/>
|
<el-input v-model="form.paymentMethod" placeholder="请输入结算方式"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="结束时间" prop="endDate">
|
<el-form-item label="项目时间" prop="dataRange">
|
||||||
<el-input v-model="form.endDate" placeholder="请选择结束时间"/>
|
<el-date-picker
|
||||||
|
v-model="form.dataRange"
|
||||||
|
type="daterange"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始时间"
|
||||||
|
end-placeholder="结束时间"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="开始时间" prop="startDate">-->
|
||||||
|
<!-- <el-input v-model="form.startDate" placeholder="请选择开始时间"/>-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<!-- <el-form-item label="结束时间" prop="endDate">-->
|
||||||
|
<!-- <el-input v-model="form.endDate" placeholder="请选择结束时间"/>-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<el-form-item label="项目描述" prop="introduction">
|
||||||
|
<el-input v-model="form.introduction" placeholder="请输入项目简介"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
@@ -195,10 +212,14 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
|
||||||
import {reactive, ref, toRefs} from "vue";
|
import {getCurrentInstance, reactive, ref, toRefs} from "vue";
|
||||||
import {Check, Money, Wallet} from "@element-plus/icons-vue";
|
import {Check, Money, Wallet} from "@element-plus/icons-vue";
|
||||||
import {ElMessage} from "element-plus";
|
import {ElMessage, ElMessageBox} from "element-plus";
|
||||||
import {programAPI} from "@/api/program";
|
import {programAPI} from "@/api/program";
|
||||||
|
import {useUserStore} from "@/stores/user";
|
||||||
|
|
||||||
|
const {proxy} = getCurrentInstance();
|
||||||
|
const userStore = useUserStore()
|
||||||
|
|
||||||
// 统计
|
// 统计
|
||||||
const stats = ref({
|
const stats = ref({
|
||||||
@@ -211,7 +232,6 @@ const dateRange = ref([])
|
|||||||
const dataList = ref([])
|
const dataList = ref([])
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const single = ref(true);
|
const single = ref(true);
|
||||||
const multiple = ref(true);
|
|
||||||
// 分页
|
// 分页
|
||||||
const pagination = ref({
|
const pagination = ref({
|
||||||
page: 1,
|
page: 1,
|
||||||
@@ -226,19 +246,28 @@ const data = reactive({
|
|||||||
queryParams: {
|
queryParams: {
|
||||||
page: 1,
|
page: 1,
|
||||||
size: 10,
|
size: 10,
|
||||||
dictName: undefined,
|
name: undefined,
|
||||||
dictType: undefined,
|
|
||||||
status: undefined,
|
status: undefined,
|
||||||
search: undefined
|
keyword: undefined
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
dictName: [{required: true, message: "字典名称不能为空", trigger: "blur"}],
|
name: [{required: true, message: "项目名称不能为空", trigger: "blur"}],
|
||||||
dictType: [{required: true, message: "字典类型不能为空", trigger: "blur"}]
|
company: [{required: true, message: "公司不能为空", trigger: "blur"}],
|
||||||
|
address: [{required: true, message: "地址不能为空", trigger: "blur"}],
|
||||||
|
introduction: [{required: true, message: "简介不能为空", trigger: "blur"}],
|
||||||
|
paymentMethod: [{required: true, message: "结算方式不能为空", trigger: "blur"}],
|
||||||
|
dataRange: [{required: true, message: "时间不能为空", trigger: "blur"}],
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const {queryParams, form, rules} = toRefs(data);
|
const {queryParams, form, rules} = toRefs(data);
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
const getStats = () => {
|
||||||
|
// programAPI.getStats().then(res => {
|
||||||
|
// stats.value = res.data.data.stats
|
||||||
|
// })
|
||||||
|
}
|
||||||
|
|
||||||
// 加载数据
|
// 加载数据
|
||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
@@ -246,7 +275,6 @@ const getList = async () => {
|
|||||||
// api请求
|
// api请求
|
||||||
queryParams.value.page = pagination.value.page;
|
queryParams.value.page = pagination.value.page;
|
||||||
queryParams.value.size = pagination.value.size;
|
queryParams.value.size = pagination.value.size;
|
||||||
console.log(queryParams.value)
|
|
||||||
programAPI.list(queryParams.value).then(res => {
|
programAPI.list(queryParams.value).then(res => {
|
||||||
// console.log(res)
|
// console.log(res)
|
||||||
dataList.value = res.data.data.list
|
dataList.value = res.data.data.list
|
||||||
@@ -259,9 +287,14 @@ const getList = async () => {
|
|||||||
const resetFilters = () => {
|
const resetFilters = () => {
|
||||||
queryParams.value = {
|
queryParams.value = {
|
||||||
page: 1,
|
page: 1,
|
||||||
size: 10
|
keyword: undefined
|
||||||
}
|
}
|
||||||
dateRange.value = []
|
dateRange.value = []
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleSelectionChange = (selection) => {
|
||||||
|
single.value = selection.length != 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleAdd = () => {
|
const handleAdd = () => {
|
||||||
@@ -271,11 +304,27 @@ const handleAdd = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const handleUpdate = (row) => {
|
const handleUpdate = (row) => {
|
||||||
ElMessage.info('修改')
|
programAPI.getOne(row.id).then(res => {
|
||||||
|
form.value = res.data.data
|
||||||
|
form.value.dataRange = [form.value.startDate, form.value.endDate]
|
||||||
|
title.value = "修改项目"
|
||||||
|
open.value = true;
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleDelete = (row) => {
|
const handleDelete = (row) => {
|
||||||
ElMessage.info('删除')
|
ElMessageBox.confirm('确定要删除吗?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
programAPI.delete(row.id).then(res => {
|
||||||
|
ElMessage.success('删除成功')
|
||||||
|
getList()
|
||||||
|
})
|
||||||
|
}).catch(() => {
|
||||||
|
ElMessage.info('已取消删除')
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查看详情
|
// 查看详情
|
||||||
@@ -283,7 +332,38 @@ const handleDetail = (row) => {
|
|||||||
ElMessage.info('查看详情')
|
ElMessage.info('查看详情')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const submitForm = () => {
|
||||||
|
proxy.$refs["formRef"].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
form.value.linkmanId = userStore.user.id
|
||||||
|
form.value.startDate = form.value.dataRange[0]
|
||||||
|
form.value.endDate = form.value.dataRange[1]
|
||||||
|
if (form.value.id != undefined) {
|
||||||
|
delete form.value.user;
|
||||||
|
delete form.value.dataRange;
|
||||||
|
programAPI.update(form.value).then(res => {
|
||||||
|
ElMessage.success('修改成功')
|
||||||
|
open.value = false
|
||||||
|
getList()
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
programAPI.add(form.value).then(res => {
|
||||||
|
ElMessage.success('添加成功')
|
||||||
|
open.value = false
|
||||||
|
getList()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const cancel = () => {
|
||||||
|
open.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取统计
|
||||||
|
getStats()
|
||||||
|
// 获取列表
|
||||||
getList();
|
getList();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user