Commit caa30521 by zhaopanyu

zpy

parent 17740b25
...@@ -5,4 +5,4 @@ VUE_APP_TITLE = 投选活动 ...@@ -5,4 +5,4 @@ VUE_APP_TITLE = 投选活动
ENV = 'production' ENV = 'production'
# 投选活动/生产环境 # 投选活动/生产环境
VUE_APP_BASE_API = '/prod-api' VUE_APP_BASE_API = '/tp-api'
...@@ -3,7 +3,7 @@ import request from "@/utils/request"; ...@@ -3,7 +3,7 @@ import request from "@/utils/request";
//提交投票 //提交投票
export function addTp(data) { export function addTp(data) {
return request({ return request({
url: "/system/tpInfo/add", url: "/system/tpRyInfo/tp",
method: "post", method: "post",
data: data, data: data,
}); });
......
import request from '@/utils/request' import request from "@/utils/request";
// 查询投票单位列表 // 查询投票单位列表
export function listTpDept(query) { export function listTpDept(query) {
return request({ return request({
url: '/system/tpDept/list', url: "/system/tpDept/list",
method: 'get', method: "get",
params: query params: query,
}) });
} }
// 查询投票单位列表 // 查询投票单位列表
export function listTpDeptjg(query) { export function listTpDeptjg(query) {
return request({ return request({
url: '/system/tpDept/listjg', url: "/system/tpDept/listjg",
method: 'get', method: "get",
params: query params: query,
}) });
}
// 查询人员统计
export function listRytj(query) {
return request({
url: "/system/tpRyInfo/tplist",
method: "get",
params: query,
});
} }
// 查询投票单位详细 // 查询投票单位详细
export function getTpDept(id) { export function getTpDept(id) {
return request({ return request({
url: '/system/tpDept/' + id, url: "/system/tpDept/" + id,
method: 'get' method: "get",
}) });
} }
// 新增投票单位 // 新增投票单位
export function addTpDept(data) { export function addTpDept(data) {
return request({ return request({
url: '/system/tpDept', url: "/system/tpDept",
method: 'post', method: "post",
data: data data: data,
}) });
} }
// 修改投票单位 // 修改投票单位
export function updateTpDept(data) { export function updateTpDept(data) {
return request({ return request({
url: '/system/tpDept', url: "/system/tpDept",
method: 'put', method: "put",
data: data data: data,
}) });
} }
// 删除投票单位 // 删除投票单位
export function delTpDept(id) { export function delTpDept(id) {
return request({ return request({
url: '/system/tpDept/' + id, url: "/system/tpDept/" + id,
method: 'delete' method: "delete",
}) });
} }
import request from '@/utils/request' import request from "@/utils/request";
// 查询投票信息列表 // 查询投票信息列表
export function listTpInfo(query) { export function listTpInfo(query) {
return request({ return request({
url: '/system/tpInfo/list', url: "/system/tpInfo/list",
method: 'get', method: "get",
params: query params: query,
}) });
} }
// 查询投票信息列表 // 查询投票信息列表
export function listTpInfoJg(query) { export function listTpInfoJg(query) {
return request({ return request({
url: '/system/tpInfo/listjg', url: "/system/tpInfo/listjg",
method: 'get', method: "get",
params: query params: query,
}) });
}
export function listTpInfoJgs(query) {
return request({
url: "/system/tpRyInfo/list",
method: "get",
params: query,
});
} }
// 查询投票信息详细 // 查询投票信息详细
export function getTpInfo(id) { export function getTpInfo(id) {
return request({ return request({
url: '/system/tpInfo/' + id, url: "/system/tpInfo/" + id,
method: 'get' method: "get",
}) });
} }
// 新增投票信息 // 新增投票信息
export function addTpInfo(data) { export function addTpInfo(data) {
return request({ return request({
url: '/system/tpInfo', url: "/system/tpInfo",
method: 'post', method: "post",
data: data data: data,
}) });
} }
// 修改投票信息 // 修改投票信息
export function updateTpInfo(data) { export function updateTpInfo(data) {
return request({ return request({
url: '/system/tpInfo', url: "/system/tpInfo",
method: 'put', method: "put",
data: data data: data,
}) });
} }
// 删除投票信息 // 删除投票信息
export function delTpInfo(id) { export function delTpInfo(id) {
return request({ return request({
url: '/system/tpInfo/' + id, url: "/system/tpInfo/" + id,
method: 'delete' method: "delete",
}) });
} }
<template> <template>
<div class="navbar"> <div class="navbar">
<hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" /> <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container"
@toggleClick="toggleSideBar" />
<breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/> <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav" />
<top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/> <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav" />
<div class="right-menu"> <div class="right-menu">
<template v-if="device!=='mobile'"> <template v-if="device !== 'mobile'">
<search id="header-search" class="right-menu-item" /> <search id="header-search" class="right-menu-item" />
<el-tooltip content="源码地址" effect="dark" placement="bottom"> <el-tooltip content="源码地址" effect="dark" placement="bottom">
...@@ -102,9 +103,9 @@ export default { ...@@ -102,9 +103,9 @@ export default {
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.$store.dispatch('LogOut').then(() => { this.$store.dispatch('LogOut').then(() => {
location.href = '/index'; location.href = '/tp/index';
}) })
}).catch(() => {}); }).catch(() => { });
} }
} }
} }
...@@ -116,7 +117,7 @@ export default { ...@@ -116,7 +117,7 @@ export default {
overflow: hidden; overflow: hidden;
position: relative; position: relative;
background: #fff; background: #fff;
box-shadow: 0 1px 4px rgba(0,21,41,.08); box-shadow: 0 1px 4px rgba(0, 21, 41, .08);
.hamburger-container { .hamburger-container {
line-height: 46px; line-height: 46px;
...@@ -124,7 +125,7 @@ export default { ...@@ -124,7 +125,7 @@ export default {
float: left; float: left;
cursor: pointer; cursor: pointer;
transition: background .3s; transition: background .3s;
-webkit-tap-highlight-color:transparent; -webkit-tap-highlight-color: transparent;
&:hover { &:hover {
background: rgba(0, 0, 0, .025) background: rgba(0, 0, 0, .025)
......
...@@ -50,16 +50,17 @@ export const constantRoutes = [ ...@@ -50,16 +50,17 @@ export const constantRoutes = [
path: "/tp", path: "/tp",
component: () => import("@/views/benchmarkVoting"), component: () => import("@/views/benchmarkVoting"),
hidden: true, hidden: true,
}, { },
{
path: "/rytp", path: "/rytp",
component: () => import("@/views/rytp"), component: () => import("@/views/rytp"),
hidden: true, hidden: true,
}, },
{ {
path: '/info', path: "/info",
// component: (resolve) => require(['@/views/remotelogin'], resolve), // component: (resolve) => require(['@/views/remotelogin'], resolve),
component:() => import('@/views/info'), component: () => import("@/views/info"),
hidden: true hidden: true,
}, },
{ {
path: "/register", path: "/register",
...@@ -194,5 +195,6 @@ Router.prototype.replace = function push(location) { ...@@ -194,5 +195,6 @@ Router.prototype.replace = function push(location) {
export default new Router({ export default new Router({
mode: "history", // 去掉url中的# mode: "history", // 去掉url中的#
scrollBehavior: () => ({ y: 0 }), scrollBehavior: () => ({ y: 0 }),
base: "/tp",
routes: constantRoutes, routes: constantRoutes,
}); });
import axios from 'axios' import axios from "axios";
import { Notification, MessageBox, Message, Loading } from 'element-ui' import { Notification, MessageBox, Message, Loading } from "element-ui";
import store from '@/store' import store from "@/store";
import { getToken } from '@/utils/auth' import { getToken } from "@/utils/auth";
import errorCode from '@/utils/errorCode' import errorCode from "@/utils/errorCode";
import { tansParams, blobValidate } from "@/utils/ruoyi"; import { tansParams, blobValidate } from "@/utils/ruoyi";
import cache from '@/plugins/cache' import cache from "@/plugins/cache";
import { saveAs } from 'file-saver' import { saveAs } from "file-saver";
let downloadLoadingInstance; let downloadLoadingInstance;
// 是否显示重新登录 // 是否显示重新登录
export let isRelogin = { show: false }; export let isRelogin = { show: false };
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
// 创建axios实例 // 创建axios实例
const service = axios.create({ const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分 // axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL: process.env.VUE_APP_BASE_API, baseURL: process.env.VUE_APP_BASE_API,
// 超时 // 超时
timeout: 10000 timeout: 10000,
}) });
// request拦截器 // request拦截器
service.interceptors.request.use(config => { service.interceptors.request.use(
(config) => {
// 是否需要设置 token // 是否需要设置 token
const isToken = (config.headers || {}).isToken === false const isToken = (config.headers || {}).isToken === false;
// 是否需要防止数据重复提交 // 是否需要防止数据重复提交
const isRepeatSubmit = (config.headers || {}).repeatSubmit === false const isRepeatSubmit = (config.headers || {}).repeatSubmit === false;
if (getToken() && !isToken) { if (getToken() && !isToken) {
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 config.headers["Authorization"] = "Bearer " + getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改
} }
// get请求映射params参数 // get请求映射params参数
if (config.method === 'get' && config.params) { if (config.method === "get" && config.params) {
let url = config.url + '?' + tansParams(config.params); let url = config.url + "?" + tansParams(config.params);
url = url.slice(0, -1); url = url.slice(0, -1);
config.params = {}; config.params = {};
config.url = url; config.url = url;
} }
if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) { if (
!isRepeatSubmit &&
(config.method === "post" || config.method === "put")
) {
const requestObj = { const requestObj = {
url: config.url, url: config.url,
data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data, data:
time: new Date().getTime() typeof config.data === "object"
} ? JSON.stringify(config.data)
: config.data,
time: new Date().getTime(),
};
const requestSize = Object.keys(JSON.stringify(requestObj)).length; // 请求数据大小 const requestSize = Object.keys(JSON.stringify(requestObj)).length; // 请求数据大小
const limitSize = 5 * 1024 * 1024; // 限制存放数据5M const limitSize = 5 * 1024 * 1024; // 限制存放数据5M
if (requestSize >= limitSize) { if (requestSize >= limitSize) {
console.warn(`[${config.url}]: ` + '请求数据大小超出允许的5M限制,无法进行防重复提交验证。') console.warn(
`[${config.url}]: ` +
"请求数据大小超出允许的5M限制,无法进行防重复提交验证。"
);
return config; return config;
} }
const sessionObj = cache.session.getJSON('sessionObj') const sessionObj = cache.session.getJSON("sessionObj");
if (sessionObj === undefined || sessionObj === null || sessionObj === '') { if (
cache.session.setJSON('sessionObj', requestObj) sessionObj === undefined ||
sessionObj === null ||
sessionObj === ""
) {
cache.session.setJSON("sessionObj", requestObj);
} else { } else {
const s_url = sessionObj.url; // 请求地址 const s_url = sessionObj.url; // 请求地址
const s_data = sessionObj.data; // 请求数据 const s_data = sessionObj.data; // 请求数据
const s_time = sessionObj.time; // 请求时间 const s_time = sessionObj.time; // 请求时间
const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交 const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交
if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) { if (
const message = '数据正在处理,请勿重复提交'; s_data === requestObj.data &&
console.warn(`[${s_url}]: ` + message) requestObj.time - s_time < interval &&
return Promise.reject(new Error(message)) s_url === requestObj.url
) {
const message = "数据正在处理,请勿重复提交";
console.warn(`[${s_url}]: ` + message);
return Promise.reject(new Error(message));
} else { } else {
cache.session.setJSON('sessionObj', requestObj) cache.session.setJSON("sessionObj", requestObj);
}
} }
} }
return config;
},
(error) => {
console.log(error);
Promise.reject(error);
} }
return config );
}, error => {
console.log(error)
Promise.reject(error)
})
// 响应拦截器 // 响应拦截器
service.interceptors.response.use(res => { service.interceptors.response.use(
(res) => {
// 未设置状态码则默认成功状态 // 未设置状态码则默认成功状态
const code = res.data.code || 200; const code = res.data.code || 200;
// 获取错误信息 // 获取错误信息
const msg = errorCode[code] || res.data.msg || errorCode['default'] const msg = errorCode[code] || res.data.msg || errorCode["default"];
// 二进制数据则直接返回 // 二进制数据则直接返回
if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') { if (
return res.data res.request.responseType === "blob" ||
res.request.responseType === "arraybuffer"
) {
return res.data;
} }
if (code === 401) { if (code === 401) {
if (!isRelogin.show) { if (!isRelogin.show) {
isRelogin.show = true; isRelogin.show = true;
MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => { MessageBox.confirm(
"登录状态已过期,您可以继续留在该页面,或者重新登录",
"系统提示",
{
confirmButtonText: "重新登录",
cancelButtonText: "取消",
type: "warning",
}
)
.then(() => {
isRelogin.show = false; isRelogin.show = false;
store.dispatch('LogOut').then(() => { store.dispatch("LogOut").then(() => {
location.href = '/index'; location.href = "/tp/index";
});
}) })
}).catch(() => { .catch(() => {
isRelogin.show = false; isRelogin.show = false;
}); });
} }
return Promise.reject('无效的会话,或者会话已过期,请重新登录。') return Promise.reject("无效的会话,或者会话已过期,请重新登录。");
} else if (code === 500) { } else if (code === 500) {
Message({ message: msg, type: 'error' }) Message({ message: msg, type: "error" });
return Promise.reject(new Error(msg)) return Promise.reject(new Error(msg));
} else if (code === 601) { } else if (code === 601) {
Message({ message: msg, type: 'warning' }) Message({ message: msg, type: "warning" });
return Promise.reject('error') return Promise.reject("error");
} else if (code !== 200) { } else if (code !== 200) {
Notification.error({ title: msg }) Notification.error({ title: msg });
return Promise.reject('error') return Promise.reject("error");
} else { } else {
return res.data return res.data;
} }
}, },
error => { (error) => {
console.log('err' + error) console.log("err" + error);
let { message } = error; let { message } = error;
if (message == "Network Error") { if (message == "Network Error") {
message = "后端接口连接异常"; message = "后端接口连接异常";
...@@ -117,36 +151,48 @@ service.interceptors.response.use(res => { ...@@ -117,36 +151,48 @@ service.interceptors.response.use(res => {
} else if (message.includes("Request failed with status code")) { } else if (message.includes("Request failed with status code")) {
message = "系统接口" + message.substr(message.length - 3) + "异常"; message = "系统接口" + message.substr(message.length - 3) + "异常";
} }
Message({ message: message, type: 'error', duration: 5 * 1000 }) Message({ message: message, type: "error", duration: 5 * 1000 });
return Promise.reject(error) return Promise.reject(error);
} }
) );
// 通用下载方法 // 通用下载方法
export function download(url, params, filename, config) { export function download(url, params, filename, config) {
downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", }) downloadLoadingInstance = Loading.service({
return service.post(url, params, { text: "正在下载数据,请稍候",
transformRequest: [(params) => { return tansParams(params) }], spinner: "el-icon-loading",
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, background: "rgba(0, 0, 0, 0.7)",
responseType: 'blob', });
...config return service
}).then(async (data) => { .post(url, params, {
transformRequest: [
(params) => {
return tansParams(params);
},
],
headers: { "Content-Type": "application/x-www-form-urlencoded" },
responseType: "blob",
...config,
})
.then(async (data) => {
const isBlob = blobValidate(data); const isBlob = blobValidate(data);
if (isBlob) { if (isBlob) {
const blob = new Blob([data]) const blob = new Blob([data]);
saveAs(blob, filename) saveAs(blob, filename);
} else { } else {
const resText = await data.text(); const resText = await data.text();
const rspObj = JSON.parse(resText); const rspObj = JSON.parse(resText);
const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default'] const errMsg =
errorCode[rspObj.code] || rspObj.msg || errorCode["default"];
Message.error(errMsg); Message.error(errMsg);
} }
downloadLoadingInstance.close(); downloadLoadingInstance.close();
}).catch((r) => {
console.error(r)
Message.error('下载文件出现错误,请联系管理员!')
downloadLoadingInstance.close();
}) })
.catch((r) => {
console.error(r);
Message.error("下载文件出现错误,请联系管理员!");
downloadLoadingInstance.close();
});
} }
export default service export default service;
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="68px">
<el-form-item label="所属板块" prop="ssbk">
<el-select v-model="queryParams.ssbk" clearable>
<el-option v-for="dict in dict.type.ry_tp_ssbk" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="单位名称" prop="dwmc">
<el-input v-model="queryParams.dwmc" placeholder="请输入单位名称" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" border :data="tpDeptList" @selection-change="handleSelectionChange">
<el-table-column label="所属板块" min-width="180px" align="center" prop="ssbk" />
<el-table-column label="姓名" min-width="180px" align="center" prop="tprymc" />
<el-table-column label="投票数量" min-width="180px" align="center" prop="sl" />
</el-table>
<!-- <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" @pagination="getList" /> -->
</div>
</template>
<script>
import { listTpDept, listTpDeptjg, getTpDept, delTpDept, addTpDept, updateTpDept, listRytj } from "@/api/tp/tpDept";
export default {
name: "TpDept",
dicts: ['ry_tp_ssbk'],
data() {
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
// total: 0,
// 投票单位表格数据
tpDeptList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
ssbk: null,
dwmc: null,
yl1: null,
yl2: null,
yl3: null,
yl4: null,
yl5: null
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询投票单位列表 */
getList() {
this.loading = true;
listRytj(this.queryParams).then(response => {
this.tpDeptList = response.rows;
// this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: null,
ssbk: null,
dwmc: null,
remark: null,
yl1: null,
yl2: null,
yl3: null,
yl4: null,
yl5: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加投票单位";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getTpDept(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改投票单位";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateTpDept(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addTpDept(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除投票单位编号为"' + ids + '"的数据项?').then(function () {
return delTpDept(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => { });
},
/** 导出按钮操作 */
handleExport() {
this.download('system/tpDept/export', {
...this.queryParams
}, `tpDept_${new Date().getTime()}.xlsx`)
}
}
};
</script>
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="68px">
<el-form-item label="姓名" prop="name">
<el-input v-model="queryParams.name" placeholder="请输入姓名" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="AD账号" prop="ipdz">
<el-input v-model="queryParams.ipdz" placeholder="请输入AD账号" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" border :data="tpInfoList" @selection-change="handleSelectionChange">
<el-table-column label="姓名" align="center" width="100px" prop="name" />
<el-table-column label="二级单位名称" align="center" prop="ejdwmc" width="140px" />
<el-table-column label="单位名称" align="center" prop="dwmc" width="140px" />
<el-table-column label="AD账号" align="center" prop="adzh" width="140px" />
<el-table-column label="统一账号" align="center" prop="username" width="140px" />
<el-table-column label="投票时间" align="center" prop="createTime" width="155px" />
<el-table-column prop="tpry" label="投票人" align="left">
<!-- <template slot-scope="scope">-->
<!-- <el-tooltip popper-class="table-tooltip" :content="scope.row.dwmc" placement="top">-->
<!-- <div class="long_title">-->
<!-- <span>{{scope.row.dwmc}}</span>-->
<!-- </div>-->
<!-- </el-tooltip>-->
<!-- </template>-->
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" @pagination="getList" />
</div>
</template>
<script>
import { listTpInfo, listTpInfoJgs, getTpInfo, delTpInfo, addTpInfo, updateTpInfo } from "@/api/tp/tpInfo";
export default {
name: "TpInfo",
data() {
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 子表选中数据
checkedTpInfoCb: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 投票信息表格数据
tpInfoList: [],
// 投票信息从表格数据
tpInfoCbList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
name: null,
sfzh: null,
ipdz: null,
yl1: null,
yl2: null,
yl3: null,
yl4: null,
yl5: null
},
// 表单参数
form: {},
// 表单校验
rules: {
createTime: [
{ required: true, message: "录入时间不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
},
methods: {
/** 查询投票信息列表 */
getList() {
this.loading = true;
listTpInfoJgs(this.queryParams).then(response => {
this.tpInfoList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: null,
name: null,
sfzh: null,
ipdz: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
remark: null,
yl1: null,
yl2: null,
yl3: null,
yl4: null,
yl5: null
};
this.tpInfoCbList = [];
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加投票信息";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getTpInfo(id).then(response => {
this.form = response.data;
this.tpInfoCbList = response.data.tpInfoCbList;
this.open = true;
this.title = "修改投票信息";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.form.tpInfoCbList = this.tpInfoCbList;
if (this.form.id != null) {
updateTpInfo(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addTpInfo(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除投票信息编号为"' + ids + '"的数据项?').then(function () {
return delTpInfo(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => { });
},
/** 投票信息从序号 */
rowTpInfoCbIndex({ row, rowIndex }) {
row.index = rowIndex + 1;
},
/** 投票信息从添加按钮操作 */
handleAddTpInfoCb() {
let obj = {};
obj.ssbk = "";
obj.dwid = "";
obj.dwmc = "";
this.tpInfoCbList.push(obj);
},
/** 投票信息从删除按钮操作 */
handleDeleteTpInfoCb() {
if (this.checkedTpInfoCb.length == 0) {
this.$modal.msgError("请先选择要删除的投票信息从数据");
} else {
const tpInfoCbList = this.tpInfoCbList;
const checkedTpInfoCb = this.checkedTpInfoCb;
this.tpInfoCbList = tpInfoCbList.filter(function (item) {
return checkedTpInfoCb.indexOf(item.index) == -1
});
}
},
/** 复选框选中数据 */
handleTpInfoCbSelectionChange(selection) {
this.checkedTpInfoCb = selection.map(item => item.index)
},
/** 导出按钮操作 */
handleExport() {
this.download('system/tpInfo/export', {
...this.queryParams
}, `tpInfo_${new Date().getTime()}.xlsx`)
}
}
};
</script>
<style>
.table-tooltip {
max-width: 500px;
}
.long_title {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
</style>
...@@ -18,7 +18,7 @@ module.exports = { ...@@ -18,7 +18,7 @@ module.exports = {
// 部署生产环境和开发环境下的URL。 // 部署生产环境和开发环境下的URL。
// 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上 // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上
// 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。 // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
publicPath: process.env.NODE_ENV === "production" ? "/" : "/", publicPath: process.env.NODE_ENV === "production" ? "/tp" : "/tp",
// 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist) // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist)
outputDir: "dist", outputDir: "dist",
// 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下) // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
...@@ -36,7 +36,7 @@ module.exports = { ...@@ -36,7 +36,7 @@ module.exports = {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
// target: `http://localhost:8080`, // target: `http://localhost:8080`,
target: `http://192.168.31.108:8889`, target: `http://192.168.31.22:8889`,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
["^" + process.env.VUE_APP_BASE_API]: "", ["^" + process.env.VUE_APP_BASE_API]: "",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment