项目流程全管理开发

xuhongjie
项洋 4 days ago
parent 6b63160278
commit 0f06e5480f

@ -821,7 +821,7 @@ export function getSmartReminderPage(param) {
return request({
url: '/gysl/jSmartReminders',
method: 'get',
param
params: param
});
}
//新增智能提醒规则
@ -829,14 +829,39 @@ export function addSmartReminder(param) {
return request({
url: '/gysl/jSmartReminders/add',
method: 'post',
param
data: param
});
}
//删除智能提醒规则
export function deleteSmartReminder(id) {
return request({
url: `/gysl/jSmartReminders/delete/{id}`,
url: `/gysl/jSmartReminders/delete/${id}`,
method: 'post'
});
}
//通过主键查询单条智能提醒规则数据
export function getSmartReminderDetail(id) {
return request({
url: `/gysl/jSmartReminders/${id}`,
method: 'get'
});
}
//修改定期提醒数据和不定期提醒数据
export function updateSmartReminder(param) {
return request({
url: '/gysl/jSmartReminders/updateDq',
method: 'post',
data: param
});
}
//定时器更新不定期提醒数据
export function updateSmartReminderUntimer(param) {
return request({
url: '/gysl/jSmartReminders/updateNoRegularReminders',
method: 'post',
data: param
});
}

@ -111,20 +111,16 @@ export default {
//
getList() {
this.loading = true;
console.log('Sending Query Params:', JSON.parse(JSON.stringify(this.queryParams))); //
getProjectEvaluationPage(this.queryParams).then(response => {
console.log('API Response:', response); //
if (response && response.data && response.data.records !== undefined && response.data.total !== undefined) {
this.postList = response.data.records; // 使 records
this.total = response.data.total; // 使 total
this.postList = response.data.records;
this.total = response.data.total;
} else {
console.error('API Response is missing records or total:', response); //
this.postList = [];
this.total = 0;
}
this.loading = false;
}).catch(error => {
console.error('API Request Error:', error); //
this.loading = false;
});
},

@ -5,17 +5,21 @@
<el-form :model="searchForm" inline>
<el-form-item label="提醒名称">
<el-input
v-model="searchForm.name"
v-model="searchForm.rulesName"
placeholder="请输入项目名称"
clearable
/>
</el-form-item>
<el-form-item label="提醒类型">
<el-select v-model="searchForm.type" placeholder="全部" clearable>
<el-select
v-model="searchForm.alertType"
placeholder="全部"
clearable
>
<el-option label="全部" value="" />
<el-option label="申报任务即将结束" value="1" />
<el-option label="申报任务即将结束" value="3" />
<el-option label="项目即将建设完成" value="2" />
<el-option label="全局自定义通知" value="3" />
<el-option label="全局自定义通知" value="1" />
<el-option label="项目自定义通知" value="4" />
</el-select>
</el-form-item>
@ -40,43 +44,66 @@
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" align="center" />
<el-table-column prop="id" label="序号" width="80" align="center" />
<el-table-column label="序号" width="80" align="center">
<template slot-scope="scope">
{{ scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column
prop="name"
prop="rulesName"
label="提醒名称"
min-width="200"
align="center"
/>
<el-table-column
prop="type"
prop="alertType"
label="提醒类型"
min-width="150"
align="center"
/>
>
<template slot-scope="scope">
<span v-if="scope.row.alertType === 1"></span>
<span v-if="scope.row.alertType === 2">()</span>
<span v-if="scope.row.alertType === 3">()</span>
<span v-if="scope.row.alertType === 4"></span>
</template>
</el-table-column>
<el-table-column
prop="target"
prop="alertRecipients"
label="提醒对象"
min-width="120"
align="center"
/>
>
<template slot-scope="scope">
<span v-if="scope.row.alertRecipients === 2"></span>
<span v-if="scope.row.alertRecipients === 1"></span>
</template>
</el-table-column>
<el-table-column
prop="mode"
prop="alertManner"
label="提醒方式"
min-width="120"
align="center"
/>
>
<template slot-scope="scope">
<span v-if="scope.row.alertManner == 1"></span>
<span v-if="scope.row.alertManner == 2"></span>
</template>
</el-table-column>
<el-table-column
prop="time"
prop="alertTime"
label="提醒时间"
min-width="180"
align="center"
/>
<el-table-column
prop="user"
label="提醒用户"
<!-- <el-table-column
prop="createBy"
label="创建人"
min-width="120"
align="center"
/>
/> -->
<el-table-column label="操作" width="200" fixed="right" align="center">
<template slot-scope="scope">
<el-button type="text" @click="handleDetail(scope.row)"
@ -113,8 +140,7 @@
:title="dialogTitle"
:visible.sync="dialogVisible"
width="600px"
:close-on-click-modal="false"
:close-on-press-escape="false"
:before-close="handleClose"
>
<el-form
ref="ruleForm"
@ -123,47 +149,90 @@
label-width="120px"
size="small"
>
<el-form-item label="提醒规则名称" prop="name">
<el-input v-model="ruleForm.name" placeholder="请输入提醒名称" />
<el-form-item label="提醒规则标题" prop="rulesName">
<el-input
v-model="ruleForm.rulesName"
placeholder="请输入提醒规则标题"
:disabled="isView"
/>
</el-form-item>
<el-form-item label="提醒对象" prop="target">
<el-radio-group v-model="ruleForm.target">
<el-radio label="政务用户">政务用户</el-radio>
<el-radio label="企业用户">企业用户</el-radio>
<el-form-item label="提醒对象" prop="alertRecipients">
<el-radio-group v-model="ruleForm.alertRecipients" :disabled="isView">
<el-radio label="2">政务用户</el-radio>
<el-radio label="1">企业用户</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="提醒方式" prop="mode">
<el-radio-group v-model="ruleForm.mode">
<el-radio label="定期提醒">定期提醒</el-radio>
<el-radio label="不定期提醒">不定期提醒</el-radio>
<el-form-item label="提醒方式" prop="alertManner">
<el-radio-group v-model="ruleForm.alertManner" disabled>
<el-radio label="1">定期提醒</el-radio>
<el-radio label="2">不定期提醒</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="提醒方法" prop="method">
<el-radio-group v-model="ruleForm.method">
<el-radio-group v-model="ruleForm.method" disabled>
<el-radio label="邮件提醒">邮件提醒</el-radio>
<el-radio label="即时提醒">即时提醒</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="提醒时间" prop="time">
</el-form-item >
<el-form-item label="提醒时间" prop="alertTime" v-if="isReminder==1">
<el-date-picker
v-model="ruleForm.time"
v-model="ruleForm.alertTime"
type="datetime"
placeholder="选择日期时间"
placeholder="请选择提醒时间"
value-format="yyyy-MM-dd HH:mm:ss"
:disabled="isView"
/>
</el-form-item>
<el-form-item label="提醒内容" prop="content">
<el-form-item
label="提醒内容"
prop="alertType"
required
v-else
>
<el-radio-group v-model="ruleForm.alertType" :disabled="isView">
<el-radio label="2"
>申报任务即将结束企业</el-radio
>
<el-radio label="3"
>项目即将建设完成政府</el-radio
>
</el-radio-group>
<el-form-item
prop="reminderDays"
class="reminder-days-item"
:rules="[
{ required: true, message: '请输入提醒天数', trigger: 'blur' },
]"
>
<div style="display: flex; align-items: center">
<span style="color: #f56c6c; margin-right: 4px">*</span>
<span>提前</span>
<el-input
v-model="ruleForm.daysAdvance"
type="number"
:min="1"
:max="30"
size="small"
style="width: 80px; margin: 0 8px"
:disabled="isView"
/>
<span>天提醒</span>
</div>
</el-form-item>
</el-form-item>
<el-form-item label="提醒内容" prop="alertContent">
<el-input
v-model="ruleForm.content"
v-model="ruleForm.alertContent"
type="textarea"
:rows="4"
placeholder="请输入提醒内容"
:disabled="isView"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancelAdd"> </el-button>
<el-button type="primary" @click="submitForm('ruleForm')"
<el-button v-if="!isView" type="primary" @click="submitForm('ruleForm')"
> </el-button
>
</div>
@ -172,6 +241,13 @@
</template>
<script>
import {
getSmartReminderPage,
deleteSmartReminder,
addSmartReminder,
getSmartReminderDetail,
updateSmartReminder,
} from "@/api/ManageApi/index";
export default {
name: "Supervision",
components: {
@ -180,8 +256,8 @@ export default {
data() {
return {
searchForm: {
name: "",
type: "",
rulesName: "",
alertType: "",
},
tableData: [],
pagination: {
@ -189,40 +265,41 @@ export default {
currentPage: 1,
pageSize: 10,
},
//
selectedRows: [],
//
dialogVisible: false,
//
ruleForm: {
name: "",
target: "政务用户",
mode: "定期提醒",
rulesName: "",
alertRecipients: "政务用户",
alertManner: "1",
method: "邮件提醒",
time: "",
content: "",
alertTime: "",
alertContent: "",
alertType: "1",
},
dialogTitle: "",
rules: {
name: [
{ required: true, message: "请输入提醒规则名称", trigger: "blur" },
rulesName: [
{ required: true, message: "请输入提醒规则标题", trigger: "blur" },
],
target: [
alertRecipients: [
{ required: true, message: "请选择提醒对象", trigger: "change" },
],
mode: [
alertManner: [
{ required: true, message: "请选择提醒方式", trigger: "change" },
],
method: [
{ required: true, message: "请选择提醒方法", trigger: "change" },
],
time: [
alertTime: [
{ required: true, message: "请选择提醒时间", trigger: "change" },
],
content: [
alertContent: [
{ required: true, message: "请输入提醒内容", trigger: "blur" },
],
},
isView: false,
editData: {},
isReminder: 1,
};
},
created() {
@ -230,45 +307,150 @@ export default {
},
methods: {
initData() {
getSmartReminderPage(this.searchForm).then((res) => {
console.log(res);
const params = {
pageNum: this.pagination.currentPage,
pageSize: this.pagination.pageSize,
};
getSmartReminderPage(params).then((res) => {
if (res.code === 200) {
this.tableData = res.data.records;
this.pagination.total = res.data.total;
}
});
},
//
handleClose(done) {
this.dialogVisible = false;
this.$nextTick(() => {
this.$refs.ruleForm.clearValidate();
this.ruleForm = {
rulesName: "",
alertRecipients: "2",
alertManner: "1",
method: "邮件提醒",
alertTime: "",
alertContent: "",
alertType: "1",
};
this.isView = false;
this.isReminder = "";
if (typeof done === "function") {
done();
}
});
},
//
handleSearch() {
// TODO:
console.log("搜索条件:", this.searchForm);
const params = {
pageNum: this.pagination.currentPage,
pageSize: this.pagination.pageSize,
rulesName: this.searchForm.rulesName || '',
alertType: this.searchForm.alertType || '',
};
//
Object.keys(params).forEach(key => {
if (params[key] === '') {
delete params[key];
}
});
getSmartReminderPage({ params }).then((res) => {
if (res.code === 200) {
this.tableData = res.data.records;
this.pagination.total = res.data.total;
}
});
},
//
handleReset() {
this.searchForm.name = "";
this.searchForm.type = "";
this.handleSearch();
this.searchForm.rulesName = "";
this.searchForm.alertType = "";
this.initData();
},
//
handleDetail(row) {
getSmartReminderDetail(row.id).then((res) => {
if (res.code === 200) {
this.isReminder = res.data.alertManner;
this.ruleForm = {
rulesName: res.data.rulesName,
alertRecipients: res.data.alertRecipients.toString(),
alertManner: res.data.alertManner.toString(),
method: "邮件提醒",
alertTime: res.data.alertTime,
alertContent: res.data.alertContent,
alertType: res.data.alertType.toString(),
daysAdvance: res.data.daysAdvance,
};
this.isView = true;
this.dialogVisible = true;
this.dialogTitle = "查看智能提醒规则";
//
this.$nextTick(() => {
this.$refs.ruleForm.clearValidate();
});
}
});
},
//
handleAdd() {
this.isView = false;
this.dialogVisible = true;
this.ruleForm = {
name: "",
target: "政务用户",
mode: "定期提醒",
rulesName: "",
alertRecipients: "2",
alertManner: "1",
method: "邮件提醒",
time: "",
content: "",
alertTime: "",
alertContent: "",
alertType: "1",
};
this.dialogTitle = "新增智能提醒规则";
this.$nextTick(() => {
this.$refs.ruleForm.clearValidate();
});
},
//
handleSelectionChange(val) {
this.selectedRows = val;
},
//
handleDetail(row) {
console.log("查看详情:", row);
},
//
handleEdit(row) {
this.dialogVisible = true;
this.dialogTitle = "修改智能提醒规则";
this.isView = false;
this.ruleForm = {
rulesName: "",
alertRecipients: "2",
alertManner: "1",
method: "邮件提醒",
alertTime: "",
alertContent: "",
alertType: "1",
};
this.$nextTick(() => {
if (this.$refs.ruleForm) {
this.$refs.ruleForm.clearValidate();
}
});
getSmartReminderDetail(row.id).then((res) => {
if (res.code === 200) {
this.isReminder = res.data.alertManner;
this.ruleForm = {
rulesName: res.data.rulesName,
alertRecipients: res.data.alertRecipients.toString(),
alertManner: res.data.alertManner.toString(),
method: "邮件提醒",
alertTime: res.data.alertTime,
alertContent: res.data.alertContent,
alertType: res.data.alertType.toString(),
daysAdvance: res.data.daysAdvance,
};
this.editData = res.data;
}
});
},
//
handleDelete(row) {
@ -278,26 +460,72 @@ export default {
type: "warning",
})
.then(() => {
// TODO:
this.$message.success("删除成功");
deleteSmartReminder(row.id).then((res) => {
if (res.code === 200) {
this.$message.success("删除成功");
this.initData();
}
});
})
.catch(() => {});
},
//
//
cancelAdd() {
this.dialogVisible = false;
this.$refs.ruleForm.resetFields();
this.$nextTick(() => {
this.$refs.ruleForm.clearValidate();
this.ruleForm = {
rulesName: "",
alertRecipients: "2",
mode: "定期提醒",
method: "邮件提醒",
alertTime: "",
alertContent: "",
alertType: "1",
};
this.isView = false;
});
},
//
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
// TODO:
console.log("提交的表单数据:", this.ruleForm);
this.$message.success("添加成功");
this.dialogVisible = false;
this.$refs.ruleForm.resetFields();
this.handleSearch(); //
let param = {};
if (this.dialogTitle == "新增智能提醒规则") {
param = {
rulesName: this.ruleForm.rulesName,
alertRecipients: Number(this.ruleForm.alertRecipients),
alertTime: this.ruleForm.alertTime,
alertContent: this.ruleForm.alertContent,
alertType: 1,
};
addSmartReminder(param).then((res) => {
if (res.code === 200) {
this.$message.success("添加成功");
this.dialogVisible = false;
this.$refs.ruleForm.resetFields();
this.initData();
}
});
} else if (this.dialogTitle == "修改智能提醒规则") {
param = {
...this.editData,
};
(param.rulesName = this.ruleForm.rulesName),
(param.alertRecipients = Number(this.ruleForm.alertRecipients)),
(param.alertTime = this.ruleForm.alertTime),
(param.alertContent = this.ruleForm.alertContent),
(param.alertType = 1),
Reflect.deleteProperty(param, "daysAdvance");
updateSmartReminder(param).then((res) => {
if (res.code === 200) {
this.$message.success("修改成功");
this.dialogVisible = false;
this.$refs.ruleForm.resetFields();
this.initData();
}
});
}
}
});
},
@ -339,6 +567,20 @@ export default {
}
}
}
.reminder-days-item {
margin-bottom: 0;
// label
:deep(.el-form-item__label) {
display: none;
}
//
:deep(.el-form-item__content) {
margin-left: 0 !important;
}
}
}
.el-dialog {

Loading…
Cancel
Save