留言管理
This commit is contained in:
@ -1,11 +1,11 @@
|
|||||||
import request from "@/utils/request";
|
import request from "@/utils/request";
|
||||||
|
|
||||||
// 留言列表
|
// 留言列表
|
||||||
export function listMessage(data) {
|
export function listMessage(params) {
|
||||||
return request({
|
return request({
|
||||||
url: "/business/websiteMessage/list",
|
url: "/business/websiteMessage/list",
|
||||||
method: "get",
|
method: "get",
|
||||||
data,
|
params,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { parseTime } from '@/ruoyi'
|
import { parseTime } from '@/utils/ruoyi'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 表格时间格式化
|
* 表格时间格式化
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<!-- <h1>八大领域设置</h1> -->
|
|
||||||
<el-table
|
<el-table
|
||||||
:data="sysIndustryList"
|
:data="sysIndustryList"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
@ -21,7 +21,6 @@
|
|||||||
row-key="id"
|
row-key="id"
|
||||||
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
|
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
|
||||||
>
|
>
|
||||||
<!-- <el-table-column type="expand"></el-table-column> -->
|
|
||||||
<el-table-column prop="name" label="领域名称" />
|
<el-table-column prop="name" label="领域名称" />
|
||||||
<el-table-column label="操作" align="center">
|
<el-table-column label="操作" align="center">
|
||||||
<template #default="props">
|
<template #default="props">
|
||||||
@ -81,7 +80,7 @@
|
|||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup name="Industry">
|
||||||
import {
|
import {
|
||||||
listSysIndustry,
|
listSysIndustry,
|
||||||
sysIndustryAdd,
|
sysIndustryAdd,
|
||||||
@ -138,6 +137,7 @@ const getTreeselect = (options) => {
|
|||||||
menuOptions.value.push(menu);
|
menuOptions.value.push(menu);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 为每一个对象添加级别属性
|
||||||
const setTreeLevel = (node, index = 1) => {
|
const setTreeLevel = (node, index = 1) => {
|
||||||
node.forEach((item) => {
|
node.forEach((item) => {
|
||||||
item["level"] = index;
|
item["level"] = index;
|
||||||
@ -148,6 +148,7 @@ const setTreeLevel = (node, index = 1) => {
|
|||||||
return node;
|
return node;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 查询领域下拉树结构限制级别
|
||||||
const setThreeLevelTree = (node) => {
|
const setThreeLevelTree = (node) => {
|
||||||
return node.map((item) => {
|
return node.map((item) => {
|
||||||
const result = { ...item };
|
const result = { ...item };
|
||||||
@ -160,21 +161,24 @@ const setThreeLevelTree = (node) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 重置表单
|
||||||
const reset = () => {
|
const reset = () => {
|
||||||
form.value = {
|
form.value = {
|
||||||
parentId: undefined,
|
parentId: undefined,
|
||||||
name: undefined,
|
name: undefined,
|
||||||
};
|
};
|
||||||
// resetForm("formRef");
|
|
||||||
if (formRef.value) {
|
if (formRef.value) {
|
||||||
formRef.value.resetFields();
|
formRef.value.resetFields();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 点击弹框取消按钮操作
|
||||||
const cancel = () => {
|
const cancel = () => {
|
||||||
showEditDialog.value = false;
|
showEditDialog.value = false;
|
||||||
reset();
|
reset();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 添加按钮操作
|
||||||
const handleAdd = (row) => {
|
const handleAdd = (row) => {
|
||||||
reset();
|
reset();
|
||||||
if (row != null && row.parentId != undefined && row.id !== undefined) {
|
if (row != null && row.parentId != undefined && row.id !== undefined) {
|
||||||
@ -185,50 +189,29 @@ const handleAdd = (row) => {
|
|||||||
showEditDialog.value = true;
|
showEditDialog.value = true;
|
||||||
dialogTitle.value = "添加领域";
|
dialogTitle.value = "添加领域";
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 修改按钮操作 */
|
/** 修改按钮操作 */
|
||||||
const handleUpdate = (row) => {
|
const handleUpdate = (row) => {
|
||||||
reset();
|
reset();
|
||||||
form.value = cloneDeep(row);
|
form.value = cloneDeep(row);
|
||||||
|
|
||||||
showEditDialog.value = true;
|
showEditDialog.value = true;
|
||||||
dialogTitle.value = "修改领域";
|
dialogTitle.value = "修改领域";
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
const submitForm = async () => {
|
const submitForm = async () => {
|
||||||
await formRef.value.validate();
|
await formRef.value.validate();
|
||||||
|
|
||||||
if (form.value.id) {
|
if (form.value.id) {
|
||||||
sysIndustryEdit(form.value).then((response) => {
|
await sysIndustryEdit(form.value);
|
||||||
ElMessage.success("修改成功");
|
ElMessage.success("修改成功");
|
||||||
showEditDialog.value = false;
|
showEditDialog.value = false;
|
||||||
getSysIndustryList();
|
getSysIndustryList();
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
sysIndustryAdd(form.value).then((response) => {
|
sysIndustryAdd(form.value);
|
||||||
ElMessage.success("新增成功");
|
ElMessage.success("新增成功");
|
||||||
showEditDialog.value = false;
|
showEditDialog.value = false;
|
||||||
getSysIndustryList();
|
getSysIndustryList();
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// formRef.value.validate((valid) => {
|
|
||||||
// if (valid) {
|
|
||||||
// if (form.value.id) {
|
|
||||||
// console.log(valid);
|
|
||||||
// industryEdit(form.value).then((response) => {
|
|
||||||
// ElMessage.success("修改成功");
|
|
||||||
// showEditDialog.value = false;
|
|
||||||
// getSysIndustryList();
|
|
||||||
// });
|
|
||||||
// } else {
|
|
||||||
// industryAdd(form.value).then((response) => {
|
|
||||||
// ElMessage.success("新增成功");
|
|
||||||
// showEditDialog.value = false;
|
|
||||||
// getSysIndustryList();
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
|
@ -1,5 +1,71 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
|
<el-form
|
||||||
|
:model="queryParams"
|
||||||
|
ref="queryFormRef"
|
||||||
|
v-show="showSearch"
|
||||||
|
:inline="true"
|
||||||
|
>
|
||||||
|
<el-form-item label="姓名" prop="name">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.name"
|
||||||
|
placeholder="请输入姓名"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
style="width: 240px"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="处理状态" prop="status">
|
||||||
|
<el-select
|
||||||
|
v-model="queryParams.status"
|
||||||
|
placeholder="用户状态"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
style="width: 240px"
|
||||||
|
@clear="delete queryParams.status"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in statusOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="需求内容" prop="content">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.content"
|
||||||
|
placeholder="请输入需求内容"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
style="width: 240px"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="search"
|
||||||
|
size="small"
|
||||||
|
@click="handleQuery"
|
||||||
|
>搜索</el-button
|
||||||
|
>
|
||||||
|
<el-button icon="refresh" size="small" @click="resetQuery"
|
||||||
|
>重置</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-row justify="end" style="margin-bottom: 10px">
|
||||||
|
<right-toolbar
|
||||||
|
v-model:showSearch="showSearch"
|
||||||
|
@queryTable="getList"
|
||||||
|
></right-toolbar>
|
||||||
|
</el-row>
|
||||||
|
<!-- <RightToolBar
|
||||||
|
v-model:showSearch="showSearch"
|
||||||
|
@queryTable="getList"
|
||||||
|
></RightToolBar> -->
|
||||||
<el-table v-loading="loading" :data="dataList">
|
<el-table v-loading="loading" :data="dataList">
|
||||||
<el-table-column label="数据编号" prop="id" align="center" />
|
<el-table-column label="数据编号" prop="id" align="center" />
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@ -14,9 +80,9 @@
|
|||||||
<el-table-column label="邮箱" prop="email" align="center" />
|
<el-table-column label="邮箱" prop="email" align="center" />
|
||||||
<el-table-column label="提交网页地址" prop="area_domain" align="center" />
|
<el-table-column label="提交网页地址" prop="area_domain" align="center" />
|
||||||
<el-table-column label="处理状态" prop="status" align="center">
|
<el-table-column label="处理状态" prop="status" align="center">
|
||||||
<template slot-scope="scope">
|
<template #default="props">
|
||||||
{{
|
{{
|
||||||
statusOptions.find((item) => item.value == scope.row.status).label
|
statusOptions.find((item) => item.value == props.row.status).label
|
||||||
}}
|
}}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -26,56 +92,81 @@
|
|||||||
align="center"
|
align="center"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
/>
|
/>
|
||||||
<el-table-column label="处理时间" prop="handle_created_at" align="center">
|
<el-table-column label="处理时间" prop="createTime" align="center">
|
||||||
<template slot-scope="scope">
|
<!-- <template #default="props">
|
||||||
<span>{{ formatTime(scope.row.handle_created_at) }}</span>
|
<span>{{ formatTime(props.row.createTime) }}</span>
|
||||||
</template>
|
</template> -->
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="操作"
|
label="操作"
|
||||||
align="center"
|
align="center"
|
||||||
class-name="small-padding fixed-width"
|
class-name="small-padding fixed-width"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope" v-if="scope.row.roleId !== 1">
|
<template #default="props">
|
||||||
|
<template v-if="props.row.roleId !== 1">
|
||||||
<el-button
|
<el-button
|
||||||
size="mini"
|
size="small"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="(form = scope.row), (open = true)"
|
@click="(form = props.row), (open = true)"
|
||||||
>查看</el-button
|
>查看</el-button
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
size="mini"
|
size="small"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
@click="handleDelete(scope.row)"
|
@click="handleDelete(props.row)"
|
||||||
>删除</el-button
|
>删除</el-button
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="scope.row.status != 2"
|
v-if="props.row.status != 2"
|
||||||
size="mini"
|
size="small"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-edit"
|
icon="el-icon-edit"
|
||||||
@click="handleUpdate(scope.row)"
|
@click="handleUpdate(props.row)"
|
||||||
>处理</el-button
|
>处理</el-button
|
||||||
>
|
>
|
||||||
</template>
|
</template>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
|
<pagination
|
||||||
|
v-show="total > 0"
|
||||||
|
:total="total"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
v-model:limit="queryParams.pageSize"
|
||||||
|
@pagination="getList"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ElMessage, ElMessageBox } from "element-plus";
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
import { reactive, toRefs } from "vue";
|
import { reactive, toRefs } from "vue";
|
||||||
|
// import RightToolBar from "@/components/RightToolbar";
|
||||||
import {
|
import {
|
||||||
listMessage,
|
listMessage,
|
||||||
messageDelete,
|
messageDelete,
|
||||||
messageHandle,
|
messageHandle,
|
||||||
} from "@/api/website/message";
|
} from "@/api/website/message";
|
||||||
|
|
||||||
|
// import { formatTime } from "@/utils/index.js";
|
||||||
|
|
||||||
const queryFormRef = ref(null); // 搜索表单ref
|
const queryFormRef = ref(null); // 搜索表单ref
|
||||||
const loading = ref(true); // 是否正在加载
|
const loading = ref(true); // 是否正在加载
|
||||||
const dataList = ref([]); // 数据列表
|
const dataList = ref([]); // 数据列表
|
||||||
const total = ref(0); //总数
|
const total = ref(0); //总数
|
||||||
|
const showSearch = ref(true);
|
||||||
|
const statusOptions = ref([
|
||||||
|
{
|
||||||
|
label: "未处理",
|
||||||
|
value: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "已处理",
|
||||||
|
value: 2,
|
||||||
|
},
|
||||||
|
]);
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
queryParams: {},
|
queryParams: {},
|
||||||
});
|
});
|
||||||
@ -85,24 +176,23 @@ const { queryParams } = toRefs(data);
|
|||||||
// 重置搜索表单
|
// 重置搜索表单
|
||||||
const resetQuery = () => {
|
const resetQuery = () => {
|
||||||
if (queryFormRef.value) {
|
if (queryFormRef.value) {
|
||||||
queryFormRef.resetFields();
|
queryFormRef.value.resetFields();
|
||||||
}
|
}
|
||||||
handleQuery();
|
handleQuery();
|
||||||
};
|
};
|
||||||
|
|
||||||
// 处理搜索点击
|
// 处理搜索点击
|
||||||
const handleQuery = () => {
|
const handleQuery = () => {
|
||||||
queryParams.page_num = 1;
|
queryParams.value.pageNum = 1;
|
||||||
getList();
|
getList();
|
||||||
};
|
};
|
||||||
// 获取列表
|
// 获取列表
|
||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
listMessage(this.queryParams).then((res) => {
|
const resp = await listMessage(queryParams.value);
|
||||||
dataList.value = res.data.data;
|
dataList.value = resp.rows;
|
||||||
total.value = res.data.count;
|
total.value = resp.total;
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
});
|
|
||||||
};
|
};
|
||||||
// 处理修改
|
// 处理修改
|
||||||
const handleUpdate = (row) => {
|
const handleUpdate = (row) => {
|
||||||
@ -114,8 +204,8 @@ const handleUpdate = (row) => {
|
|||||||
})
|
})
|
||||||
.then(({ value }) => {
|
.then(({ value }) => {
|
||||||
messageHandle({ id: row.id, content: value }).then((response) => {
|
messageHandle({ id: row.id, content: value }).then((response) => {
|
||||||
this.getList();
|
getList();
|
||||||
this.$modal.msgSuccess("处理成功");
|
ElMessage.success("处理成功");
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
@ -124,7 +214,7 @@ const handleUpdate = (row) => {
|
|||||||
const handleDelete = (row) => {
|
const handleDelete = (row) => {
|
||||||
ElMessageBox.confirm(`是否确认删除编号为${row.id}的数据项?`)
|
ElMessageBox.confirm(`是否确认删除编号为${row.id}的数据项?`)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
return messageDelete({ id: row.id });
|
return messageDelete(row.id);
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
getList();
|
getList();
|
||||||
@ -132,4 +222,5 @@ const handleDelete = (row) => {
|
|||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
};
|
};
|
||||||
|
getList();
|
||||||
</script>
|
</script>
|
||||||
|
Reference in New Issue
Block a user