项目流程全管理开发

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

@ -821,7 +821,7 @@ export function getSmartReminderPage(param) {
return request({ return request({
url: '/gysl/jSmartReminders', url: '/gysl/jSmartReminders',
method: 'get', method: 'get',
param params: param
}); });
} }
//新增智能提醒规则 //新增智能提醒规则
@ -829,14 +829,39 @@ export function addSmartReminder(param) {
return request({ return request({
url: '/gysl/jSmartReminders/add', url: '/gysl/jSmartReminders/add',
method: 'post', method: 'post',
param data: param
}); });
} }
//删除智能提醒规则 //删除智能提醒规则
export function deleteSmartReminder(id) { export function deleteSmartReminder(id) {
return request({ 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' 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() { getList() {
this.loading = true; this.loading = true;
console.log('Sending Query Params:', JSON.parse(JSON.stringify(this.queryParams))); //
getProjectEvaluationPage(this.queryParams).then(response => { getProjectEvaluationPage(this.queryParams).then(response => {
console.log('API Response:', response); //
if (response && response.data && response.data.records !== undefined && response.data.total !== undefined) { if (response && response.data && response.data.records !== undefined && response.data.total !== undefined) {
this.postList = response.data.records; // 使 records this.postList = response.data.records;
this.total = response.data.total; // 使 total this.total = response.data.total;
} else { } else {
console.error('API Response is missing records or total:', response); //
this.postList = []; this.postList = [];
this.total = 0; this.total = 0;
} }
this.loading = false; this.loading = false;
}).catch(error => { }).catch(error => {
console.error('API Request Error:', error); //
this.loading = false; this.loading = false;
}); });
}, },

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

Loading…
Cancel
Save