Commit efaca4b9 authored by 廖旭伟's avatar 廖旭伟

Merge remote-tracking branch 'origin/master'

parents 6560ff65 0aace81a
export default { export default {
created() { created() {
// this.getData(); // this.getData();
}, },
beforeDestroy() { beforeDestroy() {
clearTimeout(this.loadingTimer); clearTimeout(this.loadingTimer);
...@@ -8,30 +8,30 @@ export default { ...@@ -8,30 +8,30 @@ export default {
methods: { methods: {
// 渲染前置处理 // 渲染前置处理
beforeRender(data) { beforeRender(data) {
return data console.log(data);
},
// 渲染后置处理
afterRender(data) {
return data;
}, },
// 渲染后置处理
afterRender(data) {},
// 提交表单的前置处理 // 提交表单的前置处理
beforeSubmit(data) { beforeSubmit(data) {
return data return data;
}, },
// 提交表单的后置处理, 会阻断默认的回退行为 // 提交表单的后置处理, 会阻断默认的回退行为
afterSubmit(data) { afterSubmit(data) {
this.$router.go(-1); this.$router.go(-1);
}, },
// 开启、关闭 // 开启、关闭
changePath(path) { changePath(path) {
this.pageInfo.list = path + "/list"; this.pageInfo.list = path + "/list";
this.pageInfo.del = path + "/delete"; this.pageInfo.del = path + "/delete";
this.pageInfo.add = path + "/add"; this.pageInfo.add = path + "/add";
this.pageInfo.edit = path + "/edit"; this.pageInfo.edit = path + "/edit";
this.pageInfo.view = path + "/view"; this.pageInfo.view = path + "/view";
}, },
// 默认拉取数据 // 默认拉取数据
getData() { getData() {
this.loading = true; this.loading = true;
...@@ -46,19 +46,19 @@ export default { ...@@ -46,19 +46,19 @@ export default {
res.entity = this.util_toDateStr(res.entity, this.toDate); res.entity = this.util_toDateStr(res.entity, this.toDate);
this.form = Object.assign({}, this.form, res.entity); this.form = Object.assign({}, this.form, res.entity);
this.dict = Object.assign({}, this.dict, res.dict); this.dict = Object.assign({}, this.dict, res.dict);
this.afterRender(res); this.afterRender(res);
}) })
.catch(error => { .catch((error) => {
this.$message.error(error.message) this.$message.error(error.message);
throw error throw error;
}) })
.then(data => { .then((data) => {
clearTimeout(this.loadingTimer); clearTimeout(this.loadingTimer);
this.loadingTimer = setTimeout(() => { this.loadingTimer = setTimeout(() => {
this.loading = false; this.loading = false;
}, 300); }, 300);
}) });
}, },
// 提交表单 // 提交表单
submitForm(ref) { submitForm(ref) {
...@@ -67,70 +67,83 @@ export default { ...@@ -67,70 +67,83 @@ export default {
el.validate((valid) => { el.validate((valid) => {
if (!valid) return; if (!valid) return;
this.loading = true; this.loading = true;
this.$post(this.urls.saveUrl || this.pageInfo.saveUrl, this.beforeSubmit(this.form)) this.$post(
.then(res => { this.urls.saveUrl || this.pageInfo.saveUrl,
this.beforeSubmit(this.form)
)
.then((res) => {
this.$message.success(res.msg); this.$message.success(res.msg);
this.afterSubmit(res); this.afterSubmit(res);
}) })
.catch(error => { .catch((error) => {
this.$message.error(error.message); this.$message.error(error.message);
}) })
.then(data => { .then((data) => {
clearTimeout(this.loadingTimer); clearTimeout(this.loadingTimer);
this.loadingTimer = setTimeout(() => { this.loadingTimer = setTimeout(() => {
this.loading = false; this.loading = false;
}, 200); }, 200);
}) });
}); });
}, },
// 复制一个数组或对象 // 复制一个数组或对象
util_copy(data) { util_copy(data) {
return JSON.parse(JSON.stringify(data)) return JSON.parse(JSON.stringify(data));
}, },
// 工具方法,把数字转化为字符串 // 工具方法,把数字转化为字符串
util_toString(data, array) { util_toString(data, array) {
//原始数据 //原始数据
const dataCopy = Object.assign({}, data); const dataCopy = Object.assign({}, data);
array.forEach(item => { array.forEach((item) => {
//如果相等做操作 //如果相等做操作
dataCopy[item] = dataCopy[item] === undefined ? '' : dataCopy[item] + ''; dataCopy[item] =
}) dataCopy[item] === undefined ? "" : dataCopy[item] + "";
});
return dataCopy; return dataCopy;
}, },
// 工具方法,把字符串转化为数组 // 工具方法,把字符串转化为数组
util_toArrays(data, array) { util_toArrays(data, array) {
const dataCopy = Object.assign({}, data); const dataCopy = Object.assign({}, data);
array.forEach(item => { array.forEach((item) => {
dataCopy[item] = dataCopy[item] === undefined ? [] : dataCopy[item].split(","); dataCopy[item] =
}) dataCopy[item] === undefined || dataCopy[item] === ""
? []
: dataCopy[item].split(",");
});
return dataCopy; return dataCopy;
}, },
// 工具方法,把字符串转化为格式化日期 // 工具方法,把字符串转化为格式化日期
util_toDateStr(data, array) { util_toDateStr(data, array) {
const dataCopy = Object.assign({}, data); const dataCopy = Object.assign({}, data);
array.forEach(item => { array.forEach((item) => {
dataCopy[item] = dataCopy[item] === undefined ? '' : this.util_formatterDate(dataCopy[item]); dataCopy[item] =
}) dataCopy[item] === undefined
? ""
: this.util_formatterDate(dataCopy[item]);
});
return dataCopy; return dataCopy;
}, },
util_formatterDate(time) { util_formatterDate(time) {
let date = new Date(Number(time)); let date = new Date(Number(time));
let Y = date.getFullYear() + '-'; let Y = date.getFullYear() + "-";
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; let M =
let D = this.panLeft(date.getDate()) + ' '; (date.getMonth() + 1 < 10
let h = this.panLeft(date.getHours()) + ':'; ? "0" + (date.getMonth() + 1)
let m = this.panLeft(date.getMinutes()) + ':'; : date.getMonth() + 1) + "-";
let D = this.panLeft(date.getDate()) + " ";
let h = this.panLeft(date.getHours()) + ":";
let m = this.panLeft(date.getMinutes()) + ":";
let s = this.panLeft(date.getSeconds()); let s = this.panLeft(date.getSeconds());
return Y + M + D + h + m + s; return Y + M + D + h + m + s;
}, },
panLeft(num) { panLeft(num) {
return num < 10 ? '0' + num : num; return num < 10 ? "0" + num : num;
}, },
// 从dict字段暴力取值,取不到则返回原值 // 从dict字段暴力取值,取不到则返回原值
util_formatter(key, val) { util_formatter(key, val) {
try { try {
return this.dict[key][val] return this.dict[key][val];
} catch (error) { } catch (error) {
return val; return val;
} }
...@@ -143,24 +156,24 @@ export default { ...@@ -143,24 +156,24 @@ export default {
} }
}); });
}, 0); }, 0);
} },
}, },
computed: { computed: {
pageInfo() { pageInfo() {
let currUrl = this.$route.path; let currUrl = this.$route.path;
let urlArray = currUrl.split('/'); let urlArray = currUrl.split("/");
let type = urlArray.pop(); let type = urlArray.pop();
urlArray.push('save'); urlArray.push("save");
let saveUrl = urlArray.join('/'); let saveUrl = urlArray.join("/");
urlArray.pop(); urlArray.pop();
urlArray.push('edit'); urlArray.push("edit");
let editUrl = urlArray.join('/'); let editUrl = urlArray.join("/");
urlArray.pop(); urlArray.pop();
urlArray.push('add'); urlArray.push("add");
let addUrl = urlArray.join('/'); let addUrl = urlArray.join("/");
urlArray.pop(); urlArray.pop();
urlArray.push('view'); urlArray.push("view");
let viewUrl = urlArray.join('/'); let viewUrl = urlArray.join("/");
return { return {
type, type,
currUrl, currUrl,
...@@ -184,9 +197,6 @@ export default { ...@@ -184,9 +197,6 @@ export default {
toString: [], // 需要把number转化为string的表单字段name数组 toString: [], // 需要把number转化为string的表单字段name数组
toArrays: [], // 需要把number转化为arrays的表单字段name数组 toArrays: [], // 需要把number转化为arrays的表单字段name数组
toDate: [], // 需要把number转化为date的表单字段name数组 toDate: [], // 需要把number转化为date的表单字段name数组
} };
} },
} };
import axios from 'axios'; import axios from "axios";
import { import {
formatter, formatterAmount, formatterDate, formatterDateOnly, find, formatter,
} from '@/assets/utils/table'; formatterAmount,
formatterDate,
formatterDateOnly,
find,
} from "@/assets/utils/table";
const tagsMap = { const tagsMap = {
1: 'danger', 1: "danger",
0: 'success' 0: "success",
}; };
export default { export default {
...@@ -13,21 +17,24 @@ export default { ...@@ -13,21 +17,24 @@ export default {
this.getData(); this.getData();
}, },
watch: { watch: {
'$route'(route) { $route(route) {
if(route.path=='/device/electron/list'||route.path=='/device/meet/list'){ if (
this.changePath("device") route.path == "/device/electron/list" ||
route.path == "/device/meet/list"
) {
this.changePath("device");
} }
this.query = Object.assign({}, this.query, route.query); this.query = Object.assign({}, this.query, route.query);
this.getData(); this.getData();
} },
}, },
beforeDestroy() { beforeDestroy() {
this.source.cancel('自动取消ajax操作'); this.source.cancel("自动取消ajax操作");
clearTimeout(this.loadingTimer); clearTimeout(this.loadingTimer);
}, },
methods: { methods: {
test() { test() {
console.log("test") console.log("test");
}, },
// 开启、关闭 // 开启、关闭
changePath(path) { changePath(path) {
...@@ -41,11 +48,13 @@ export default { ...@@ -41,11 +48,13 @@ export default {
return Promise.resolve(); return Promise.resolve();
}, },
// 表格接收数据前 // 表格接收数据前
beforeRender(data) { return data }, beforeRender(data) {
return data;
},
// 表格接收数据后 // 表格接收数据后
afterRender(data) { }, afterRender(data) {},
// 删除动作发生后 // 删除动作发生后
afterDel(data) { }, afterDel(data) {},
// 默认拉取数据 // 默认拉取数据
async getData() { async getData() {
try { try {
...@@ -55,7 +64,7 @@ export default { ...@@ -55,7 +64,7 @@ export default {
} }
this.tableData.loading = true; this.tableData.loading = true;
this.$post(this.pageInfo.list, this.query, { this.$post(this.pageInfo.list, this.query, {
cancelToken: this.source.token cancelToken: this.source.token,
}) })
.then(({ data }) => { .then(({ data }) => {
this.tableData = this.beforeRender( this.tableData = this.beforeRender(
...@@ -63,44 +72,52 @@ export default { ...@@ -63,44 +72,52 @@ export default {
); );
this.afterRender(this.tableData); this.afterRender(this.tableData);
}) })
.catch(error => { .catch((error) => {
if (error.message == '自动取消ajax操作') return if (error.message == "自动取消ajax操作") return;
this.$message.error(error.message); this.$message.error(error.message);
}) })
.then(data => { .then((data) => {
clearTimeout(this.loadingTimer); clearTimeout(this.loadingTimer);
this.loadingTimer = setTimeout(() => { this.loadingTimer = setTimeout(() => {
this.tableData.loading = false; this.tableData.loading = false;
}, 300); }, 300);
}) });
}, },
// 复制一个数组或对象 // 复制一个数组或对象
util_copy(data) { util_copy(data) {
if (typeof data !== 'object') return data; if (typeof data !== "object") return data;
return JSON.parse(JSON.stringify(data)) return JSON.parse(JSON.stringify(data));
}, },
_showAll(item) { _showAll(item) {
let data = this.util_copy(item); let data = this.util_copy(item);
data.isShowAll = true; data.isShowAll = true;
this.util_update(item.id, data) this.util_update(item.id, data);
}, },
// 超长文本展开收起 // 超长文本展开收起
util_short(key, size) { util_short(key, size) {
return row => { return (row) => {
let string = row[key] || ''; let string = row[key] || "";
if (string.length < size || row.isShowAll) return string; if (string.length < size || row.isShowAll) return string;
return ( return (
<span> <span>
{string.substr(0, 50) + '...'} {string.substr(0, 50) + "..."}
<el-button size='mini' type='text' onClick={() => { this._showAll(row) }}>更多</el-button> <el-button
size="mini"
type="text"
onClick={() => {
this._showAll(row);
}}
>
更多
</el-button>
</span> </span>
) );
} };
}, },
// 从dict字段暴力取值,取不到则返回原值 // 从dict字段暴力取值,取不到则返回原值
util_formatter(key, val) { util_formatter(key, val) {
try { try {
return this.tableData.dict[key][val] return this.tableData.dict[key][val];
} catch (error) { } catch (error) {
return val; return val;
} }
...@@ -108,20 +125,24 @@ export default { ...@@ -108,20 +125,24 @@ export default {
// 通过id修改某条记录 // 通过id修改某条记录
util_update(id, newData, idColumnName) { util_update(id, newData, idColumnName) {
let table = this.tableData.data; let table = this.tableData.data;
let { index, data } = find(table, !idColumnName ? 'id' : idColumnName, id); let { index, data } = find(
table,
!idColumnName ? "id" : idColumnName,
id
);
table.splice(index, 1, Object.assign({}, data, newData)); table.splice(index, 1, Object.assign({}, data, newData));
}, },
// 工具方法,把数字转化为字符串 // 工具方法,把数字转化为字符串
util_toString(data, array) { util_toString(data, array) {
const dataCopy = Object.assign({}, data); const dataCopy = Object.assign({}, data);
for (var item in data) { for (var item in data) {
dataCopy[item] = dataCopy[item] === undefined ? '' : dataCopy[item] + ''; dataCopy[item] =
dataCopy[item] === undefined ? "" : dataCopy[item] + "";
} }
return dataCopy; return dataCopy;
}, },
util_formatterDate(time, fmt) { util_formatterDate(time, fmt) {
if (!time) return ''; if (!time) return "";
let date = new Date(Number(time)); let date = new Date(Number(time));
var o = { var o = {
"M+": date.getMonth() + 1, //月份 "M+": date.getMonth() + 1, //月份
...@@ -130,11 +151,21 @@ export default { ...@@ -130,11 +151,21 @@ export default {
"m+": date.getMinutes(), //分 "m+": date.getMinutes(), //分
"s+": date.getSeconds(), //秒 "s+": date.getSeconds(), //秒
"q+": Math.floor((date.getMonth() + 3) / 3), //季度 "q+": Math.floor((date.getMonth() + 3) / 3), //季度
"S": date.getMilliseconds() //毫秒 S: date.getMilliseconds(), //毫秒
}; };
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); if (/(y+)/.test(fmt))
fmt = fmt.replace(
RegExp.$1,
(date.getFullYear() + "").substr(4 - RegExp.$1.length)
);
for (var k in o) for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt.replace(
RegExp.$1,
RegExp.$1.length == 1
? o[k]
: ("00" + o[k]).substr(("" + o[k]).length)
);
return fmt; return fmt;
}, },
util_getPrevMonthDate() { util_getPrevMonthDate() {
...@@ -142,141 +173,181 @@ export default { ...@@ -142,141 +173,181 @@ export default {
var year = date.getFullYear(); var year = date.getFullYear();
var month = date.getMonth(); var month = date.getMonth();
var day = date.getDate(); var day = date.getDate();
if (month == 0) {//年份为0代表,是本年的第一月,所以不能减 if (month == 0) {
month = 11;//月份为上年的最后月份 //年份为0代表,是本年的第一月,所以不能减
year--;//年份减1 month = 11; //月份为上年的最后月份
year--; //年份减1
return new Date(year, month, day); return new Date(year, month, day);
} }
month--;//否则,只减去月份 month--; //否则,只减去月份
return new Date(year, month, day); return new Date(year, month, day);
}, },
// 格式化单元格数据 // 格式化单元格数据
formatter(row, column, val) { formatter(row, column, val) {
const content = formatter(this.tableData, column, val); const content = formatter(this.tableData, column, val);
return content ? <el-tag type={'info'} size='mini'>{content}</el-tag> : val return content ? (
<el-tag type={"info"} size="mini">
{content}
</el-tag>
) : (
"--"
);
}, },
formatterYES(row, column, val) { formatterYES(row, column, val) {
const content = formatter(this.tableData, column, val); const content = formatter(this.tableData, column, val);
if (content) { if (content) {
if (val == '0') { if (val == "0") {
return <el-tag type={'danger'} size='mini'>{content}</el-tag> return (
} else if (val == '1') { <el-tag type={"danger"} size="mini">
return <el-tag type={'success'} size='mini'>{content}</el-tag> {content}
</el-tag>
);
} else if (val == "1") {
return (
<el-tag type={"success"} size="mini">
{content}
</el-tag>
);
} }
} else { } else {
return val return val;
} }
}, },
formatterStatus(row, column, val) { formatterStatus(row, column, val) {
const content = formatter(this.tableData, column, val); const content = formatter(this.tableData, column, val);
if (content) { if (content) {
if (val == '0') { if (val == "0") {
return <el-tag size='mini'>{content}</el-tag> return <el-tag size="mini">{content}</el-tag>;
} else if (val == '1') { } else if (val == "1") {
return <el-tag type={'danger'} size='mini'>{content}</el-tag> return (
} else if (val == '2') { <el-tag type={"danger"} size="mini">
return <el-tag type={'success'} size='mini'>{content}</el-tag> {content}
</el-tag>
);
} else if (val == "2") {
return (
<el-tag type={"success"} size="mini">
{content}
</el-tag>
);
} }
} else { } else {
return val return val;
} }
}, },
formatterDictLink(row, column, val) { formatterDictLink(row, column, val) {
const content = formatter(this.tableData, column, val); const content = formatter(this.tableData, column, val);
let underline = false; let underline = false;
let type = "primary" let type = "primary";
if (val === 3) { if (val === 3) {
type = 'danger' type = "danger";
} }
return content ? <el-link type={type} underline={underline} onClick={() => { this.toDrawerMsg(row) }} size='mini'>{content}</el-link> : val return content ? (
<el-link
type={type}
underline={underline}
onClick={() => {
this.toDrawerMsg(row);
}}
size="mini"
>
{content}
</el-link>
) : (
val
);
}, },
formatters(row, column, val) { formatters(row, column, val) {
if (val) { if (val) {
return ( return val
val.split(',').map(v => formatter(this.tableData, column, v) ).join(",") .split(",")
) .map((v) => formatter(this.tableData, column, v))
.join(",");
} }
return '--' return "--";
}, },
formatterLink(row, column, val) { formatterLink(row, column, val) {
//const content = formatter(this.tableData, column-2, val); //const content = formatter(this.tableData, column-2, val);
return <el-link type="primary" href={val} target="_blank">{row.fileName}</el-link> return (
<el-link type="primary" href={val} target="_blank">
{row.fileName}
</el-link>
);
//return content; //return content;
// return content ? <el-tag type={'info'} size='mini'>{content}</el-tag> : val // return content ? <el-tag type={'info'} size='mini'>{content}</el-tag> : val
}, },
formatterString(row, column, val) { formatterString(row, column, val) {
return formatter(this.tableData, column, val) return formatter(this.tableData, column, val);
}, },
// 格式化单元格数据 0显示 0.00 // 格式化单元格数据 0显示 0.00
formatterAmount(row, column) { formatterAmount(row, column) {
return formatterAmount(row, column) return formatterAmount(row, column);
}, },
// 格式化单元格数据钱单位里换算成元 // 格式化单元格数据钱单位里换算成元
formatterMoney(row, column, val) { formatterMoney(row, column, val) {
return ((val || 0) / 1000).toFixed(2) return ((val || 0) / 1000).toFixed(2);
}, },
// 格式化单元格数据 // 格式化单元格数据
formatterDate(row, column) { formatterDate(row, column) {
//console.log("date:",row,column) //console.log("date:",row,column)
if(formatterDate(row, column)){ if (formatterDate(row, column)) {
return formatterDate(row, column) return formatterDate(row, column);
}else{ } else {
return '--' return "--";
} }
}, },
// 格式化单元格数据 只要年月日 // 格式化单元格数据 只要年月日
formatterDateOnly(row, column) { formatterDateOnly(row, column) {
return formatterDateOnly(row, column) return formatterDateOnly(row, column);
}, },
// 格式化人员 // 格式化人员
formaterPeople(row, column, val) { formaterPeople(row, column, val) {
let info let info;
if (val) { if (val) {
if (typeof (val) === 'number') { if (typeof val === "number") {
info = <el-tag type={'info'} size='mini'>{this.util_formatter('assigneeList', val)}</el-tag>
} else {
info = ( info = (
val.split(',').map(v => { <el-tag type={"info"} size="mini">
if (this.tableData.dict["assigneeList"][v] != undefined) { {this.util_formatter("assigneeList", val)}
return <el-tag type={'info'} size='mini'>{this.util_formatter('assigneeList', v)}</el-tag> </el-tag>
} );
}) } else {
) info = val.split(",").map((v) => {
if (this.tableData.dict["assigneeList"][v] != undefined) {
return (
<el-tag type={"info"} size="mini">
{this.util_formatter("assigneeList", v)}
</el-tag>
);
}
});
} }
} else { } else {
info = '--' info = "--";
} }
return info return info;
}, },
// 多选表格行 // 多选表格行
handleSelectionChange(val) { handleSelectionChange(val) {
this.selection = val.map(i => i.id); this.selection = val.map((i) => i.id);
}, },
// 当某一行被点击时会触发该事件 // 当某一行被点击时会触发该事件
handleRowClick(row, column, event) { handleRowClick(row, column, event) {},
},
// 合并表格行列 // 合并表格行列
handleSpanMethod() { handleSpanMethod() {},
},
// 自定义表格排序 // 自定义表格排序
handleSortChange() { handleSortChange() {},
},
// 自定义索引号 // 自定义索引号
handleIndexMethod(index) { handleIndexMethod(index) {
//prePageResult 每页条数 //prePageResult 每页条数
// console.log("index:"+index) // console.log("index:"+index)
let size = this.tableData.pageInfo.prePageResult; let size = this.tableData.pageInfo.prePageResult;
let page = this.tableData.pageInfo.currPage; let page = this.tableData.pageInfo.currPage;
let count = parseInt(size) * (parseInt(page) - 1) let count = parseInt(size) * (parseInt(page) - 1);
return count + index + 1; return count + index + 1;
}, },
// 自定义表格选择行是否能勾选 // 自定义表格选择行是否能勾选
...@@ -285,93 +356,91 @@ export default { ...@@ -285,93 +356,91 @@ export default {
}, },
// 设置单元行样式 // 设置单元行样式
tableRowClassName() { }, tableRowClassName() {},
// 批量删除 // 批量删除
toBatchDel() { toBatchDel() {
this.toDel(this.selection.join(','), true); this.toDel(this.selection.join(","), true);
}, },
// 单个删除 // 单个删除
toDel(id, isBatch) { toDel(id, isBatch) {
if (!id) { if (!id) {
return this.$message.warning('请选中一条记录'); return this.$message.warning("请选中一条记录");
} }
this.$get(this.pageInfo.del, { id: id }) this.$get(this.pageInfo.del, { id: id })
.then(res => { .then((res) => {
this.$message.success(res.msg) this.$message.success(res.msg);
// 更新数据 // 更新数据
if (isBatch) { if (isBatch) {
// 批量删除,刷新页面 // 批量删除,刷新页面
this.getData(); this.getData();
} else { } else {
let table = this.tableData.data; let table = this.tableData.data;
let { index } = find(table, 'id', id); let { index } = find(table, "id", id);
table.splice(index, 1); table.splice(index, 1);
this.tableData.pageInfo.totalResult -= 1; this.tableData.pageInfo.totalResult -= 1;
} }
this.afterDel(id); this.afterDel(id);
}) })
.catch(error => { .catch((error) => {
this.$message.error(error.message); this.$message.error(error.message);
}) });
}, },
// 新增 // 新增
toAdd() { toAdd() {
this.$router.push({ this.$router.push({
path: this.pageInfo.add, path: this.pageInfo.add,
query: this.tableConfig.addQuery, query: this.tableConfig.addQuery,
}) });
}, },
// 编辑 // 编辑
toEdit(row, query) { toEdit(row, query) {
this.$router.push({ this.$router.push({
path: this.pageInfo.edit, path: this.pageInfo.edit,
query: Object.assign({}, { id: row.id }, query) query: Object.assign({}, { id: row.id }, query),
}) });
}, },
// 查看 // 查看
toView(row, query) { toView(row, query) {
console.log(this.pageInfo.view) console.log(this.pageInfo.view);
this.$router.push({ this.$router.push({
path: this.pageInfo.view, path: this.pageInfo.view,
query: Object.assign({}, { id: row.id }, query) query: Object.assign({}, { id: row.id }, query),
}) });
}, },
// 导入 // 导入
toImport() { toImport() {
this.$router.push({ this.$router.push({
path: this.pageInfo.importView, path: this.pageInfo.importView,
query: this.tableConfig.addQuery, query: this.tableConfig.addQuery,
}) });
}, },
// 返回 // 返回
toBack() { toBack() {
this.$router.push({ this.$router.push({
path: this.pageInfo.back path: this.pageInfo.back,
}) });
}, },
// 开启、关闭 // 开启、关闭
open() { open() {},
},
}, },
computed: { computed: {
tableConfig() { tableConfig() {
return Object.assign({}, this.defaultConfig, this.config) return Object.assign({}, this.defaultConfig, this.config);
}, },
pageInfo() { pageInfo() {
const urls = { // 操作所需的url地址,和url同路径 const urls = {
// 操作所需的url地址,和url同路径
list: this.$route.path, list: this.$route.path,
edit: this.$route.path.replace('/list', '/edit'), edit: this.$route.path.replace("/list", "/edit"),
save: this.$route.path.replace('/list', '/save'), save: this.$route.path.replace("/list", "/save"),
del: this.$route.path.replace('/list', '/delete'), del: this.$route.path.replace("/list", "/delete"),
add: this.$route.path.replace('/list', '/add'), add: this.$route.path.replace("/list", "/add"),
view: this.$route.path.replace('/list', '/view'), view: this.$route.path.replace("/list", "/view"),
importView: this.$route.path.replace('/list', '/importView'), importView: this.$route.path.replace("/list", "/importView"),
exclude: this.$route.path.replace('/list', '/list/exclude'), exclude: this.$route.path.replace("/list", "/list/exclude"),
} };
return Object.assign({}, urls, this.urls) return Object.assign({}, urls, this.urls);
}, },
}, },
data() { data() {
...@@ -401,17 +470,15 @@ export default { ...@@ -401,17 +470,15 @@ export default {
back: this.toBack, back: this.toBack,
importView: this.toImport, importView: this.toImport,
refresh: this.getData, refresh: this.getData,
} },
}, },
tableData: { // 表格数据 tableData: {
// 表格数据
loading: true, // ajax请求状态 loading: true, // ajax请求状态
dict: {}, dict: {},
result: [], result: [],
pageInfo: {}, pageInfo: {},
} },
} };
} },
} };
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
:file-list="imgList" :file-list="imgList"
accept=".jpeg,.png,.jpg,.bmp,.gif" accept=".jpeg,.png,.jpg,.bmp,.gif"
:headers="headers" :headers="headers"
:limit="limit"
v-else v-else
> >
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
...@@ -98,6 +99,10 @@ export default { ...@@ -98,6 +99,10 @@ export default {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
limit: {
type: Number,
default: undefined,
},
}, },
mounted() { mounted() {
// 判断是否为多图上传 // 判断是否为多图上传
......
<template> <template>
<div class="page"> <div class="page">
<LayoutTable :data="tableData" :config="tableConfig" notDel> <LayoutTable :data="tableData" :config="tableConfig" notDel> </LayoutTable>
</LayoutTable>
<drawer-show ref="drawerform" @ok="getData" /> <drawer-show ref="drawerform" @ok="getData" />
</div> </div>
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
export default { export default {
name: "CompanyList", name: "CompanyList",
components: { components: {
drawerShow drawerShow,
}, },
mixins: [table], mixins: [table],
created() { created() {},
}, methods: {
methods: { /** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.drawerform.view(row);
},
},
data() {
return {
config: {
search: [
{
name: "companyName",
type: "text",
label: "公司名称",
fuzzy: true,
},
],
columns: [
{ type: "index", label: "序号", width: 50 },
/** 重写新增方法 */ { label: "公司名称", prop: "companyName" },
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.drawerform.view(row);
},
},
data() {
return {
config: { { label: "联系电话", prop: "contactPhone" },
search: [
{
name: "companyName",
type: "text",
label: "公司名称",
fuzzy: true,
},
],
columns: [
{type: "index",label: "序号",width: 50},
{label: "公司名称", prop: "companyName"}, {
label: "经营地址",
prop: "businessAdress",
formatter: this.formatters,
},
{label: "联系电话", prop: "contactPhone"}, {
label: "描述",
prop: "companyIntroduction",
formatter: this.formatters,
},
{label: "经营地址", prop: "businessAdress",formatter: this.formatters}, {
label: "更新时间",
prop: "updateTime",
formatter: this.formatterDate,
},
{label: "描述", prop: "companyIntroduction",formatter: this.formatters}, {
label: "操作",
{label: "更新时间", prop: "createTime", formatter: this.formatterDate}, width: 240,
formatter: (row) => {
{ return (
label: "操作", <table-buttons
width: 240, noAdd
formatter: row => { noView
return ( row={row}
<table-buttons noAdd noView row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> onEdit={this.toEdit}
); onView={this.toView}
} onDel={this.toDel}
} />
] );
} },
}; },
} ],
},
}; };
},
};
</script> </script>
<template> <template>
<div class="page"> <div class="page">
<LayoutTable :data="tableData" notAdd notDel :config="tableConfig"> <LayoutTable :data="tableData" notAdd notDel :config="tableConfig">
</LayoutTable> </LayoutTable>
<drawer-show ref="drawerform" @ok="getData" />
<drawer-show ref="drawerform" @ok="getData" /> </div>
</div>
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
export default { export default {
name: "FavoritesProductList", name: "FavoritesProductList",
components: { components: {
drawerShow drawerShow,
}, },
mixins: [table], mixins: [table],
created() { created() {},
}, methods: {
methods: { /** 重写新增方法 */
/** 重写新增方法 */ toAdd(row) {
toAdd(row) { this.$refs.drawerform.add(row);
this.$refs.drawerform.add(row); },
}, /** 重写编辑方法 */
/** 重写编辑方法 */ toEdit(row) {
toEdit(row) { this.$refs.drawerform.edit(row);
this.$refs.drawerform.edit(row); },
}, /** 重写查看方法 */
/** 重写查看方法 */ toView(row) {
toView(row) { this.$refs.drawerform.view(row);
this.$refs.drawerform.view(row); },
}, },
data() {
}, return {
data() { config: {
return { search: [],
config: { columns: [
search: [ { type: "selection", width: 60 },
], { type: "index", label: "序号", width: 50 },
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "用户", prop: "userId", formatter: this.formatter}, { label: "用户", prop: "userId", formatter: this.formatter },
{label: "产品", prop: "productId", formatter: this.formatter}, { label: "产品", prop: "productId", formatter: this.formatter },
{label: "创建用户", prop: "createUserId", formatter: this.formatter}, {
{ label: "创建用户",
label: "操作", prop: "createUserId",
width: 240, formatter: this.formatter,
formatter: row => { },
return ( {
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> label: "操作",
); width: 240,
} formatter: (row) => {
} return (
] <table-buttons
} noAdd
}; row={row}
} onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
);
},
},
],
},
}; };
},
};
</script> </script>
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
prop="deptId" prop="deptId"
v-model="form.deptId" v-model="form.deptId"
placeholder="请输入所属部门" placeholder="请输入所属部门"
:enum-data="dict.deptId"
/> />
</el-row> </el-row>
<!-- <el-row> <!-- <el-row>
...@@ -271,6 +272,11 @@ export default { ...@@ -271,6 +272,11 @@ export default {
cancel() { cancel() {
this.open = false; this.open = false;
}, },
/**获取数据前弹框 */
beforeRender(data) {
data.entity.deptId = String(data.entity.deptId);
return data;
},
/**获取数据后弹框 */ /**获取数据后弹框 */
afterRender(data) { afterRender(data) {
this.open = true; this.open = true;
......
...@@ -169,17 +169,38 @@ export default { ...@@ -169,17 +169,38 @@ export default {
width: 240, width: 240,
formatter: (row) => { formatter: (row) => {
return ( return (
<el-button <table-buttons
type="text" noAdd
icon="el-icon-edit" noView
size="mini" row={row}
onClick={() => { onEdit={this.toEdit}
this.toEdit(row); onView={this.toView}
}} onDel={this.toDel}
title="详情" />
> // <div>
详情 // <el-button
</el-button> // type="text"
// icon="el-icon-edit"
// size="mini"
// onClick={() => {
// this.toEdit(row);
// }}
// title="详情"
// >
// 详情
// </el-button>
// <el-button
// type="text"
// icon="el-icon-edit"
// size="mini"
// onClick={() => {
// this.toEdit(row);
// }}
// title="详情"
// >
// 删除
// </el-button>
// </div>
); );
}, },
}, },
......
<template> <template>
<div class="page"> <div class="page">
<LayoutTable :data="tableData" :config="tableConfig"> <LayoutTable :data="tableData" :config="tableConfig"> </LayoutTable>
</LayoutTable>
<drawer-show ref="drawerform" @ok="getData" />
<drawer-show ref="drawerform" @ok="getData" /> </div>
</div>
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
export default { export default {
name: "LabelsList", name: "LabelsList",
components: { components: {
drawerShow drawerShow,
}, },
mixins: [table], mixins: [table],
created() { created() {},
}, methods: {
methods: { /** 重写新增方法 */
/** 重写新增方法 */ toAdd(row) {
toAdd(row) { this.$refs.drawerform.add(row);
this.$refs.drawerform.add(row); },
}, /** 重写编辑方法 */
/** 重写编辑方法 */ toEdit(row) {
toEdit(row) { this.$refs.drawerform.edit(row);
this.$refs.drawerform.edit(row); },
}, /** 重写查看方法 */
/** 重写查看方法 */ toView(row) {
toView(row) { this.$refs.drawerform.view(row);
this.$refs.drawerform.view(row); },
}, },
data() {
}, return {
data() { config: {
return { search: [
config: { {
search: [ name: "labelName",
type: "text",
label: "标签名称",
},
],
columns: [
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{ { label: "标签名称", prop: "labelName" },
name: "labelName",
type: "text",
label: "标签名称"
}
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "标签名称", prop: "labelName"}, // { label: "标签描述", prop: "labelDesc", formatter: this.formatters },
{label: "标签描述", prop: "labelDesc",formatter: this.formatters},
{label: "标签图标", prop: "labelLogoPath",formatter: (row) => {
return row.labelLogoPath != "" ? (
<el-image
style="width: 70px; height: 70px"
src={row.labelLogoPath}
preview-src-list={[row.labelLogoPath]}
></el-image>
) : (
"--"
);
},},
{
label: "标签图标",
prop: "labelLogoPath",
formatter: (row) => {
return row.labelLogoPath != "" ? (
<el-image
style="width: 70px; height: 70px"
src={row.labelLogoPath}
preview-src-list={[row.labelLogoPath]}
></el-image>
) : (
"--"
);
},
},
{label: "创建时间", prop: "createTime", formatter: this.formatterDate}, {
{ label: "创建时间",
label: "操作", prop: "createTime",
width: 240, formatter: this.formatterDate,
formatter: row => { },
return ( {
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> label: "操作",
); width: 240,
} formatter: (row) => {
} return (
] <table-buttons
} noAdd
}; row={row}
} onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
);
},
},
],
},
}; };
},
};
</script> </script>
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
:visible.sync="open" :visible.sync="open"
:direction="direction" :direction="direction"
:destroy-on-close="true" :destroy-on-close="true"
size="100%" size="70%"
> >
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<div class="form"> <div class="form">
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
v-model="form.titleLogoPath" v-model="form.titleLogoPath"
prePath="/file/preview" prePath="/file/preview"
:isList="true" :isList="true"
:limit="9"
ref="imgList" ref="imgList"
/> />
</Field> </Field>
...@@ -174,13 +175,17 @@ export default { ...@@ -174,13 +175,17 @@ export default {
cancel() { cancel() {
this.open = false; this.open = false;
}, },
/**获取数据前弹框 */
beforeRender(data) {
data.entity.deptId = String(data.entity.deptId);
return data;
},
/**获取数据后弹框 */ /**获取数据后弹框 */
afterRender(data) { afterRender(data) {
this.open = true; this.open = true;
}, },
// 提交前数据处理 // 提交前数据处理
beforeSubmit(data) { beforeSubmit(data) {
console.log(data, "123");
let arr = []; let arr = [];
arr = this.$refs.imgList.imgList.map((v) => { arr = this.$refs.imgList.imgList.map((v) => {
return v.response ? v.response.url : v.url.substr(v.url.indexOf("f")); return v.response ? v.response.url : v.url.substr(v.url.indexOf("f"));
......
...@@ -138,7 +138,7 @@ export default { ...@@ -138,7 +138,7 @@ export default {
{ {
label: "创建时间", label: "创建时间",
prop: "createDateTime", prop: "createTime",
formatter: this.formatterDate, formatter: this.formatterDate,
}, },
......
<template> <template>
<!-- 弹出框表单 --> <!-- 弹出框表单 -->
<el-drawer <el-drawer
:title="title" :title="title"
:visible.sync="open" :visible.sync="open"
:direction="direction" :direction="direction"
:destroy-on-close="true" :destroy-on-close="true"
size="50%"> size="50%"
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> >
<el-row> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<Field :span="20" label="员工姓名" prop="name" v-model="form.name" placeholder="请输入员工姓名"/> <el-row>
<Field :span="20" label="所属公司" prop="companyIds" v-model="form.companyIds" :multiple="true" type="select" :enum-data="dict.companyIds" placeholder="请输入所属公司"/> <Field
<Field :span="20" label="职位" prop="positionId" v-model="form.positionId" type="select" :enum-data="dict.positionId" placeholder="请输入职位ID"/> :span="20"
<Field :span="20" label="联系电话" prop="phoneNumber" v-model="form.phoneNumber" placeholder="请输入联系电话"/> label="员工姓名"
<!-- <Field :span="20" label="员工状态" type="select" prop="staffStatus" v-model="form.staffStatus" :enum-data="dict.staffStatus" placeholder="请输入员工状态"/> --> prop="name"
<Field :span="20" label="头像" prop="photoPath" placeholder="请输入照片"><imageUpload v-model="form.photoPath" prePath="/file/preview"/> </Field> v-model="form.name"
<Field :span="20" label="邮件地址" prop="email" v-model="form.email" placeholder="请输入邮件地址"/> placeholder="请输入员工姓名"
<Field :span="20" label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/> />
<Field
:span="20"
label="所属公司"
prop="companyIds"
v-model="form.companyIds"
:multiple="true"
type="select"
:enum-data="dict.companyIds"
placeholder="请输入所属公司"
/>
<Field
:span="20"
label="职位"
prop="positionId"
v-model="form.positionId"
type="select"
:enum-data="dict.positionId"
placeholder="请输入职位ID"
/>
<Field
:span="20"
label="联系电话"
prop="phoneNumber"
v-model="form.phoneNumber"
placeholder="请输入联系电话"
/>
<!-- <Field :span="20" label="员工状态" type="select" prop="staffStatus" v-model="form.staffStatus" :enum-data="dict.staffStatus" placeholder="请输入员工状态"/> -->
<Field :span="20" label="头像" prop="photoPath" placeholder="请输入照片"
><imageUpload v-model="form.photoPath" prePath="/file/preview" />
</Field>
<Field
:span="20"
label="邮件地址"
prop="email"
v-model="form.email"
placeholder="请输入邮件地址"
/>
<Field
:span="20"
label="备注"
prop="remark"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
/>
</el-row>
</el-row> <form-buttons
@submit="submitForm"
<form-buttons @submit='submitForm' v-if="pageInfo.type!='view'" noCancelBtn /> v-if="pageInfo.type != 'view'"
</el-form> noCancelBtn
/>
</el-drawer> </el-form>
</el-drawer>
</template> </template>
<script> <script>
import form from "@/assets/mixins/formdialog"; import form from "@/assets/mixins/formdialog";
export default { export default {
name: "StaffDetail", name: "StaffDetail",
mixins: [form], mixins: [form],
components: { components: {},
created() {
}, this.changePath("staff");
created() { },
this.changePath("staff") data() {
}, var checkEmail = (rule, value, callback) => {
data() { let mailReg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
var checkEmail = (rule, value, callback) => { if (!value) {
let mailReg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/; //如果输入为空直接返回
if (!value) { //如果输入为空直接返回 callback();
callback(); } else {
} else { //如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。
//如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。 if (mailReg.test(value)) {
if (mailReg.test(value)) { //匹配成功返回 //匹配成功返回
callback(); callback();
} else { //匹配不成功返回错误显示 } else {
callback(new Error("邮箱格式:xx@xx.xx,只含数字、大小写字母、下划线、横杠")); //匹配不成功返回错误显示
} callback(
} new Error("邮箱格式:xx@xx.xx,只含数字、大小写字母、下划线、横杠")
}; );
var checkPhone = (rule,value,callback) =>{ }
let phoneReg = /^1[3|4|5|7|8][0-9]{9}$/ }
if(!value){ };
callback() var checkPhone = (rule, value, callback) => {
}else{ let phoneReg = /^1[3|4|5|7|8][0-9]{9}$/;
if(phoneReg.test(value)){ if (!value) {
callback() callback();
}else{ } else {
callback(new Error("电话格式:13、14、15、17、18开头+9位阿拉伯数字")) if (phoneReg.test(value)) {
} callback();
} } else {
} callback(new Error("电话格式:13、14、15、17、18开头+9位阿拉伯数字"));
return { }
}
// 遮罩层 };
loading: true, return {
// 弹出层标题 // 遮罩层
title: "员工基本信息", loading: true,
// 是否显示弹出层 // 弹出层标题
open: false, title: "员工基本信息",
direction:"rtl", // 是否显示弹出层
toString:[ open: false,
"gender", direction: "rtl",
"staffType", toString: ["gender", "staffType", "staffStatus", "source", "positionId"],
"staffStatus", toArrays: ["companyIds"],
"source",
"positionId"
],
toArrays:["companyIds"],
toDate:[
"birthday",
"entryDate",
"regularDate",
"leaveDate",
],
// 表单校验
rules: {
name: [
{required: true,message: "请输入员工姓名", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
positionId: [
{required: true,message: "请选择职位", trigger: "blur" }
],
companyIds: [
{required: true,message: "请选择所属企业", trigger: "blur" }
],
phoneNumber: [
{required: true,message: "请输入联系电话", trigger: "blur" },
{ validator: checkPhone,trigger: "blur" },
{max: 11,message: "最多只能录入11个字符",trigger: "blur",},
],
email: [
{ validator: checkEmail,trigger: "blur" }
],
}
};
},
methods: { toDate: ["birthday", "entryDate", "regularDate", "leaveDate"],
/** 编辑 */ // 表单校验
edit(row) { rules: {
this.reset() name: [
this.query = { id: row.id }; { required: true, message: "请输入员工姓名", trigger: "blur" },
this.urls.currUrl ="staff/edit"; { max: 64, message: "最多只能录入64个字符", trigger: "blur" },
this.getData(); ],
this.pageInfo.type="edit" positionId: [
this.title = "修改员工基本信息"; { required: true, message: "请选择职位", trigger: "blur" },
}, ],
/** 新增 */ companyIds: [
add(row) { { required: true, message: "请选择所属企业", trigger: "blur" },
this.reset() ],
this.urls.currUrl = "staff/add"; phoneNumber: [
this.getData(); { required: true, message: "请输入联系电话", trigger: "blur" },
this.pageInfo.type="add" { validator: checkPhone, trigger: "blur" },
this.title = "新增员工基本信息"; { max: 11, message: "最多只能录入11个字符", trigger: "blur" },
}, ],
/** 查看*/ email: [{ validator: checkEmail, trigger: "blur" }],
view(row) { },
this.reset() };
this.query = { id: row.id }; },
this.urls.currUrl ="staff/view";
this.getData();
this.pageInfo.type="view"
this.title = "员工基本信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
beforeSubmit(data) { methods: {
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "staff/edit";
this.getData();
this.pageInfo.type = "edit";
this.title = "修改员工基本信息";
},
/** 新增 */
add(row) {
this.reset();
this.urls.currUrl = "staff/add";
this.getData();
this.pageInfo.type = "add";
this.title = "新增员工基本信息";
},
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "staff/view";
this.getData();
this.pageInfo.type = "view";
this.title = "员工基本信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
data.companyIds=data.companyIds.join(",") beforeSubmit(data) {
data.companyIds = data.companyIds.join(",");
return data return data;
}, },
afterSubmit(data) { afterSubmit(data) {
this.open = false; this.open = false;
this.$emit("ok"); this.$emit("ok");
}, },
// 表单重置 // 表单重置
reset() { reset() {
this.form = { this.form = {
name : "", name: "",
gender : 1, gender: 1,
birthday : null, birthday: null,
photoPath : "", photoPath: "",
Email : "", Email: "",
phoneNumber : "", phoneNumber: "",
idCard : "", idCard: "",
workNum : "", workNum: "",
companyName : "", companyName: "",
positionId : null, positionId: null,
positionName : "", positionName: "",
staffType : 1, staffType: 1,
staffStatus : 1, staffStatus: 1,
source : 1, source: 1,
registerPath : "", registerPath: "",
entryDate : null, entryDate: null,
regularDate : null, regularDate: null,
leaveDate : null, leaveDate: null,
remark : "", remark: "",
sumViews : 0, sumViews: 0,
viewsByDay : 0, viewsByDay: 0,
sendBusinessCardTimes : 0, sendBusinessCardTimes: 0,
}; };
this.resetForm("form"); this.resetForm("form");
}, },
resetForm(refName) { resetForm(refName) {
if (this.$refs[refName]) { if (this.$refs[refName]) {
this.$refs[refName].resetFields(); this.$refs[refName].resetFields();
} }
}, },
}, },
}; };
</script> </script>
<template> <template>
<div class="page"> <div class="page">
<LayoutTable :data="tableData" notDel :config="tableConfig"> <LayoutTable :data="tableData" notDel :config="tableConfig"> </LayoutTable>
</LayoutTable>
<drawer-show ref="drawerform" @ok="getData" />
<drawer-show ref="drawerform" @ok="getData" /> </div>
</div>
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
export default { export default {
name: "StaffList", name: "StaffList",
components: { components: {
drawerShow drawerShow,
}, },
mixins: [table], mixins: [table],
created() { created() {},
}, methods: {
methods: { /** 重写新增方法 */
/** 重写新增方法 */ toAdd(row) {
toAdd(row) { this.$refs.drawerform.add(row);
this.$refs.drawerform.add(row); },
}, /** 重写编辑方法 */
/** 重写编辑方法 */ toEdit(row) {
toEdit(row) { this.$refs.drawerform.edit(row);
this.$refs.drawerform.edit(row); },
}, /** 重写查看方法 */
/** 重写查看方法 */ toView(row) {
toView(row) { this.$refs.drawerform.view(row);
this.$refs.drawerform.view(row); },
}, // 离职操作
// 离职操作 toDimission(row) {
toDimission(row){ console.log(row);
console.log(row); // 先弹窗提问
// 先弹窗提问 this.$confirm(
this.$confirm('此操作将'+row.name+'作离职处理,离职后,该员工在之前发送的名片将不做展示,客户点击名片消息后跳转至之前绑定的企业详情(若该员工有多张企业名片,以第一个为准),是否继续?', '系统提示', { "此操作将" +
confirmButtonText: '确定', row.name +
cancelButtonText: '取消' "作离职处理,离职后,该员工在之前发送的名片将不做展示,客户点击名片消息后跳转至之前绑定的企业详情(若该员工有多张企业名片,以第一个为准),是否继续?",
}).then(() => { "系统提示",
// 先修改状态在修改 {
let query = JSON.parse(JSON.stringify(row)) confirmButtonText: "确定",
query.staffStatus=3 cancelButtonText: "取消",
console.log(this.$refs.drawerform.urls.saveUrl); }
)
this.$post('staff/leave',{id:query.id}) .then(() => {
.then(res => { // 先修改状态在修改
this.$message.success(res.msg); let query = JSON.parse(JSON.stringify(row));
this.getData() query.staffStatus = 3;
}) console.log(this.$refs.drawerform.urls.saveUrl);
}).catch(() => {});
this.$post("staff/leave", { id: query.id }).then((res) => {
this.$message.success(res.msg);
this.getData();
});
})
.catch(() => {});
},
// 重写getData
async getData() {
this.query = Object.assign(
{ staffStatus: 1 },
this.query,
this.$route.query
);
try {
await this.beforeFecth();
} catch (error) {
return;
}
this.tableData.loading = true;
this.$post(this.pageInfo.list, this.query, {
cancelToken: this.source.token,
})
.then(({ data }) => {
this.tableData = this.beforeRender(
Object.assign({}, this.tableData, data)
);
this.afterRender(this.tableData);
})
.catch((error) => {
if (error.message == "自动取消ajax操作") return;
this.$message.error(error.message);
})
.then((data) => {
clearTimeout(this.loadingTimer);
this.loadingTimer = setTimeout(() => {
this.tableData.loading = false;
}, 300);
});
},
},
data() {
return {
config: {
search: [
{
name: "companyId",
type: "select",
placeholder: "请选择所属企业",
label: "所属企业",
},
{
name: "name",
type: "text",
placeholder: "请输入员工姓名",
label: "员工姓名",
},
],
columns: [
{ type: "index", label: "序号", width: 50 },
{ label: "员工姓名", prop: "name" },
{
label: "头像",
prop: "photoPath",
formatter: (row) => {
return row.photoPath != "" ? (
<el-image
style="width: 70px; height: 70px"
src={row.photoPath}
preview-src-list={[row.photoPath]}
></el-image>
) : (
"--"
);
}, },
// 重写getData },
async getData() {
this.query = Object.assign({staffStatus:1}, this.query, this.$route.query); { label: "联系电话", prop: "phoneNumber" },
try {
await this.beforeFecth(); { label: "邮件地址", prop: "email", formatter: this.formatters },
} catch (error) {
return; { label: "所属公司", prop: "companyIds", formatter: this.formatters },
}
this.tableData.loading = true; { label: "职位", prop: "positionId", formatter: this.formatter },
this.$post(this.pageInfo.list, this.query, { { label: "发送名片次数", prop: "sendBusinessCardTimes" },
cancelToken: this.source.token { label: "累计查看次数", prop: "sumViews" },
})
.then(({ data }) => { {
this.tableData = this.beforeRender( label: "最近更新时间",
Object.assign({}, this.tableData, data) prop: "updateTime",
); formatter: this.formatterDate,
this.afterRender(this.tableData); },
}) {
.catch(error => { label: "更新人员",
if (error.message == '自动取消ajax操作') return prop: "updateUserId",
this.$message.error(error.message); formatter: this.formatter,
}) },
.then(data => { // {label: "员工状态", prop: "staffStatus",formatter: this.formatter},
clearTimeout(this.loadingTimer); {
this.loadingTimer = setTimeout(() => { label: "操作",
this.tableData.loading = false; width: 240,
}, 300); formatter: (row) => {
}) return (
<div>
<table-buttons
noAdd
noView
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
<span
onClick={() => {
this.toDimission(row);
}}
style="color:#409EFF;margin-left:20px"
>
离职
</span>
</div>
);
}, },
},
}, ],
data() { },
return {
config: {
search: [
{
name: "companyId",
type: "select",
placeholder:"请选择所属企业",
label: "所属企业"
},
{
name: "name",
type: "text",
placeholder:"请输入员工姓名",
label: "员工姓名"
},
],
columns: [
{type: "index",label: "序号",width: 50},
{label: "员工姓名", prop: "name"},
{label: "头像", prop: "photoPath",formatter: (row) => {
return row.photoPath != "" ? (
<el-image
style="width: 70px; height: 70px"
src={row.photoPath}
preview-src-list={[row.photoPath]}
></el-image>
) : (
"--"
);
},},
{label: "联系电话", prop: "phoneNumber"},
{label: "邮件地址", prop: "email",formatter: this.formatters},
{label: "所属公司", prop: "companyIds",formatter: this.formatters},
{label: "职位", prop: "positionId",formatter:this.formatter},
{label: "发送名片次数", prop: "sendBusinessCardTimes"},
{label: "累计查看次数", prop: "sumViews"},
{label: "最近更新时间", prop: "updateTime", formatter: this.formatterDate},
{label: "更新人员", prop: "updateUserId", formatter: this.formatter},
// {label: "员工状态", prop: "staffStatus",formatter: this.formatter},
{
label: "操作",
width: 240,
formatter: row => {
return (
<div>
<table-buttons noAdd noView row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
<span onClick={ ()=>{this.toDimission(row)}} style="color:#409EFF;margin-left:20px">离职</span>
</div>
);
}
}
]
}
};
}
}; };
},
};
</script> </script>
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