Commit 6da4d277 authored by 赵啸非's avatar 赵啸非

修改pom文件

parent 97780abe
# 测试环境配置
NODE_ENV = 'production'
# 地址
VUE_APP_BASE_API = http://192.168.0.98:11021/m
# websocket地址
VUE_APP_WEBSOCKET_API =192.168.0.98:18211/m
exports.install = function (Vue) {
// 把需要暴露出去的方法挂载到Vue原型上,避免了全局变量过多的问题
Vue.prototype.refreshData = function () {
console.log("刷新设备列表")
const component = findComponentDownward(this, 'Device')
console.log("component",component)
if(component){
component.getData()
}
}
}
/**
* 由一个组件,向下找到最近的指定组件
* @param {*} context 当前上下文,比如你要基于哪个组件来向上寻找,一般都是基于当前的组件,也就是传入 this
* @param {*} componentName 要找的组件的 name
*/
function findComponentDownward(context, componentName) {
const childrens = context.$children
let children = null
if (childrens.length) {
for (const child of childrens) {
const name = child.$options.name
if (name === componentName) {
children = child
break
} else {
children = findComponentDownward(child, componentName)
if (children) break
}
}
}
return children
}
\ No newline at end of file
// 添加,编辑设备
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="35%" append-to-body>
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="110px"
label-position="right"
>
<el-row>
<Field
:span="22"
label="ID"
prop="id"
v-model="form.id"
v-if="pageInfo.type !== 'add'"
disabled
/>
<Field :span="22" label="名称" prop="name" v-model="form.name" />
<Field
:span="22"
label="权限类型"
prop="authType"
v-model="form.authType"
:enumData="dict.authType"
type="select"
/>
<Field
:span="22"
label="父级菜单"
prop="parentId"
v-model="form.parentId"
:enumData="menu"
type="select"
/>
<Field :span="22" label="访问地址" prop="url" v-model="form.url" />
<Field
:span="22"
label="状态"
prop="status"
v-model="form.status"
:enumData="dict.status"
type="radio"
/>
<Field
:span="22"
label="图标"
placeholder="请输入图标名称"
prop="imgPath"
v-model="form.imgPath"
/>
<!-- <Field v-else :span="22" label="图标" prop="imgPath">
<el-radio-group v-model="form.imgPath" class="form-el-radio-group">
<el-radio-button label="">不需要图标</el-radio-button>
<el-radio-button
v-for="(icon, index) in icons"
:key="index"
:label="icon"
>
<i :class="'el-icon-' + icon"></i>
{{ icon }}
</el-radio-button>
</el-radio-group>
</Field> -->
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button
type="primary"
v-if="pageInfo.type !== 'view'"
@click="submitForm"
>确 定</el-button
>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
export default {
mixins: [form],
components: {
dialogShow,
},
computed: {
menu() {
let menu = { 0: "" };
this.$store.state.userData.barList.forEach((item) => {
menu[item.id + ""] = item.name;
});
return menu;
},
},
methods: {
afterSubmit() {
this.$store.dispatch("login");
this.$router.go(-1);
},
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.editUrl;
this.getData();
this.pageInfo.type = "edit";
this.title = "修改菜单";
},
/** 新增 */
add(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.addUrl;
this.getData();
this.pageInfo.type = "add";
this.open = true;
this.title = "新增菜单";
},
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.viewUrl;
this.getData();
this.pageInfo.type = "view";
this.open = true;
this.title = "菜单详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
// this.form={}
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "菜单",
// 是否显示弹出层
open: false,
toString: ["parentId", "authType", "status"],
icons: [
"info",
"error",
"success",
"warning",
"question",
"tickets",
"document",
"goods",
"sold-out",
"news",
"message",
"date",
"printer",
"time",
"bell",
"mobile-phone",
"service",
"view",
"menu",
"star-on",
"location",
"phone",
"picture",
"delete",
"search",
"edit",
"rank",
"refresh",
"share",
"setting",
"upload",
"upload2",
"download",
"loading",
"reading",
],
rules: {
name: [{ required: true, message: "请输入名称", trigger: "blur" }],
},
};
},
};
</script>
<style lang="less">
.el-select {
width: 100%;
}
.el-date-editor.el-input {
width: 100%;
}
.form-el-radio-group.label {
width: 160px;
}
.el-radio-button__inner {
border: 0;
}
</style>
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="70%" append-to-body>
<el-form
:model="form"
:rules="rules"
size="small"
label-width="100px"
ref="form"
>
<el-row>
<Field label="参数名称" prop="name" v-model="form.name" />
<Field
label="一级组织"
prop="firstOrganize"
v-model="form.firstOrganize"
/>
<Field
label="二级组织"
prop="secondOrganize"
v-model="form.secondOrganize"
/>
<Field
label="参数有效状态"
prop="validStatus"
v-model="form.validStatus"
:enumData="dict.validStatus"
type="select"
/>
<Field
label="参数修改状态"
prop="modStatus"
v-model="form.modStatus"
:enumData="dict.modStatus"
type="select"
/>
<Field
label="展现类型"
prop="displayType"
v-model="form.displayType"
:enumData="dict.displayType"
type="select"
/>
<Field
label="参数键"
prop="paramKey"
v-model="form.paramKey"
:span="24"
/>
<Field
label="参数值"
prop="paramValue"
v-model="form.paramValue"
:span="24"
type="textarea"
/>
<Field label="备注" prop="remark" v-model="form.remark" :span="24" />
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/form";
export default {
mixins: [form],
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "站点信息",
// 是否显示弹出层
open: false,
toString: ["validStatus", "modStatus", "displayType"],
rules: {
name: [{ required: true, message: "请输入参数名称", trigger: "blur" }],
paramKey: [{ required: true, message: "请输入参数键", trigger: "blur" }],
paramValue: [{ required: true, message: "请输入参数值", trigger: "blur" }],
},
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.editUrl;
this.getData();
this.open = true;
this.title = "修改站点信息";
},
/** 新增 */
add(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.addUrl;
this.getData();
this.open = true;
this.title = "新增站点信息";
},
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.viewUrl;
this.getData();
this.open = true;
this.title = "站点信息详细";
},
/**取消按钮 */
cancel() {
this.reset();
this.open = false;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="40%" append-to-body>
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="110px"
label-position="right"
>
<el-row>
<Field :span="20" label="名称" prop="name" v-model="form.name" />
<Field
:span="20"
label="权限类型"
prop="authType"
v-model="form.authType"
:enumData="dict.authType"
type="select"
/>
<!-- <Field label="用户类型" prop="userType" v-model="form.userType" :enumData='dict.userType' type='select' /> -->
<Field label="链接地址" prop="url" :span="20">
<el-button
icon="el-icon-plus"
circle
size="mini"
@click="addResource"
v-if="!form.urls.length"
></el-button>
<el-row
v-for="(url, index) in form.urls"
:key="index"
style="width: 400px"
>
<el-col :span="16">
<el-form-item
label-width="0"
:prop="'urls.' + index + '.value'"
:rules="[
{ required: true, message: '地址不能为空', trigger: 'blur' },
{ validator: validatorUrl, trigger: 'blur' },
]"
>
<el-input size="mini" v-model="url.value"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
&nbsp;
<el-button
icon="el-icon-minus"
circle
size="mini"
@click="del(index)"
></el-button>
<el-button
icon="el-icon-plus"
circle
size="mini"
@click="addResource"
v-if="index === form.urls.length - 1"
></el-button>
</el-col>
</el-row>
</Field>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button
type="primary"
v-if="pageInfo.type !== 'view'"
@click="submitForm"
>确 定</el-button
>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
import FormButtons from "@/components/tools/FormButtons";
export default {
mixins: [form],
components: {
dialogShow,
FormButtons,
},
methods: {
beforeRender(data) {
data.entity.urls = (data.entity.url || "").split(",").map((i) => {
return { value: i };
});
return data;
},
beforeSubmit(form) {
form.url = this.form.urls.map((item) => item.value).join(",");
return form;
},
del(index) {
this.form.urls.splice(index, 1);
},
addResource(index) {
const urls = this.form.urls;
const values = urls.map((i) => i.value);
// 新增前检查前方是否有空行
if (urls.some((i) => !i.value)) {
return this.$message.warning("请先完成上一个地址的填写");
}
urls.push({ value: "" });
console.log("urls", urls);
},
isRepeat(value) {
return this.form.urls.filter((i) => value == i.value).length > 1;
},
validatorUrl(rule, value, cb) {
if (this.isRepeat(value)) {
return cb(new Error(`重复的url地址`));
}
cb();
},
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.editUrl;
this.getData();
this.pageInfo.type = "edit";
this.title = "修改资源";
},
/** 新增 */
add(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.addUrl;
this.getData();
this.pageInfo.type = "add";
this.title = "新增资源";
},
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.viewUrl;
this.getData();
this.pageInfo.type = "view";
this.title = "资源详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
// this.form.urls = (data.entity.url || "").split(",").map((i) => {
// return { value: i };
// });
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
urls: [],
};
//this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "资源",
// 是否显示弹出层
open: false,
toString: ["userType", "authType"],
form: {
urls: [],
},
rules: {
name: [{ required: true, message: "请输入名称", trigger: "blur" }],
},
};
},
};
</script>
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="40%" append-to-body>
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="110px"
label-position="right"
>
<el-row>
<Field :span="20" label="角色名" prop="name" v-model="form.name" />
<!-- <Field
:span="20"
label="角色类型"
prop="roleType"
v-model="form.roleType"
:enumData="dict.roleType"
type="select"
/> -->
<Field
label="备注"
prop="remark"
v-model="form.remark"
type="textarea"
:span="20"
/>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button
type="primary"
v-if="pageInfo.type !== 'view'"
@click="submitForm"
>确 定</el-button
>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
export default {
mixins: [form],
components: {
dialogShow,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "用户",
// 是否显示弹出层
open: false,
toString: ["roleType"],
rules: {
name: [{ required: true, message: "请输入名称", trigger: "blur" }],
roleType: [
{ required: true, message: "请选择用户类型", trigger: "blur" },
],
},
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.editUrl;
this.getData();
this.pageInfo.type = "edit";
this.open = true;
this.title = "修改角色";
},
/** 新增 */
add(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.addUrl;
this.getData();
this.pageInfo.type = "add";
this.open = true;
this.title = "新增角色";
},
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.viewUrl;
this.getData();
this.pageInfo.type = "view";
this.open = true;
this.title = "角色详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="70%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="24" v-if="form.parentId !== 0">
<el-form-item label="上级站点" prop="parentId">
<treeselect
v-model="form.parentId"
:options="siteOptions"
:normalizer="normalizer"
placeholder="选择上级站点信息"
/>
</el-form-item>
</el-col>
<Field label="站点名" prop="siteName" v-model="form.siteName" placeholder="请输入站点名"/>
<Field label="父级id" prop="parentId" v-model="form.parentId" placeholder="请输入父级id"/>
<Field label="祖级列表,逗号分隔" prop="ancestors" v-model="form.ancestors" placeholder="请输入祖级列表,逗号分隔"/>
<Field label="地址" prop="address" v-model="form.address" placeholder="请输入地址"/>
<Field label="电话" prop="mobile" v-model="form.mobile" placeholder="请输入电话"/>
<Field label="单位介绍" prop="introduce" v-model="form.introduce" type="textarea" placeholder="请输入单位介绍"/>
<Field label="周一 1上班 0不上" prop="workday1" v-model="form.workday1" type="select" :enumData="dict.workday1" placeholder="请选择周一 1上班 0不上"/>
<Field label="周二 1上班 0不上" prop="workday2" v-model="form.workday2" type="select" :enumData="dict.workday2" placeholder="请选择周二 1上班 0不上"/>
<Field label="周三 1上班 0不上" prop="workday3" v-model="form.workday3" type="select" :enumData="dict.workday3" placeholder="请选择周三 1上班 0不上"/>
<Field label="周四 1上班 0不上" prop="workday4" v-model="form.workday4" type="select" :enumData="dict.workday4" placeholder="请选择周四 1上班 0不上"/>
<Field label="周五 1上班 0不上" prop="workday5" v-model="form.workday5" type="select" :enumData="dict.workday5" placeholder="请选择周五 1上班 0不上"/>
<Field label="周六 1上班 0不上" prop="workday6" v-model="form.workday6" type="select" :enumData="dict.workday6" placeholder="请选择周六 1上班 0不上"/>
<Field label="周日 1上班 0不上" prop="workday7" v-model="form.workday7" type="select" :enumData="dict.workday7" placeholder="请选择周日 1上班 0不上"/>
<Field label="站点编号" prop="number" v-model="form.number" placeholder="请输入站点编号"/>
<Field label="中心介绍" prop="summary" v-model="form.summary" type="textarea" placeholder="请输入中心介绍"/>
<Field label="排序字段" prop="orderNum" v-model="form.orderNum" placeholder="请输入排序字段"/>
<Field label="站点状态 ,0,停用,1,正常 默认1" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="请选择站点状态 ,0,停用,1,正常 默认1"/>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/form";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
mixins: [form],
components: {
Treeselect,
},
data() {
return {
siteOptions: [],
// 遮罩层
loading: true,
// 弹出层标题
title: "站点信息",
// 是否显示弹出层
open: false,
toString:[
"workday1",
"workday2",
"workday3",
"workday4",
"workday5",
"workday6",
"workday7",
"status",
],
// 表单校验
rules: {
siteName: [
{required: true, trigger: "blur" },
],
ancestors: [
{ trigger: "blur" },
],
address: [
{required: true, trigger: "blur" },
],
mobile: [
{required: true, trigger: "blur" },
],
introduce: [
{required: true, trigger: "blur" },
],
workday1: [
{ type: 'integer',trigger: "blur" },
],
workday2: [
{ type: 'integer',trigger: "blur" },
],
workday3: [
{ type: 'integer',trigger: "blur" },
],
workday4: [
{ type: 'integer',trigger: "blur" },
],
workday5: [
{ type: 'integer',trigger: "blur" },
],
workday6: [
{ type: 'integer',trigger: "blur" },
],
workday7: [
{ type: 'integer',trigger: "blur" },
],
number: [
{required: true, trigger: "blur" },
],
summary: [
{required: true, trigger: "blur" },
],
orderNum: [
{ type: 'integer',trigger: "blur" },
],
status: [
{ type: 'integer',trigger: "blur" },
],
}
};
},
methods: {
/** 编辑 */
edit(row, siteOptions) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl =this.pageInfo.editUrl;;
this.getData();
this.siteOptions = siteOptions;
this.open = true;
this.title = "修改站点信息";
},
/** 新增 */
add(row, siteOptions) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.addUrl;
this.getData();
this.siteOptions = siteOptions;
this.open = true;
this.title = "新增站点信息";
},
/** 查看*/
view(row, siteOptions) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl =this.pageInfo.viewUrl;;
this.getData();
this.siteOptions = siteOptions;
this.open = true;
this.title = "站点信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
/** 转换站点信息数据结构 */
normalizer(node) {
if (node.children && !node.children.length) {
delete node.children;
}
return {
id: node.id,
label: node.siteName,
children: node.children,
};
},
// 表单重置
reset() {
this.form = {
siteName : null,
parentId : null,
ancestors : "",
address : null,
mobile : null,
introduce : null,
number : null,
summary : null,
orderNum : 0,
status : 1,
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="70%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="24" v-if="form.parentId !== 0">
<el-form-item label="上级站点" prop="parentId">
<treeselect
v-model="form.parentId"
:options="siteOptions"
:normalizer="normalizer"
placeholder="选择上级站点"
/>
</el-form-item>
</el-col>
<el-form-item label="站点名称" prop="siteName">
<el-input v-model="form.siteName" placeholder="请输入站点名称" />
</el-form-item>
<el-form-item label="显示排序" prop="orderNum">
<el-input-number
v-model="form.orderNum"
controls-position="right"
:min="0"
/>
</el-form-item>
<el-form-item label="地址" prop="address">
<el-input
v-model="form.address"
placeholder="请输入地址"
maxlength="20"
/>
</el-form-item>
<el-form-item label="联系电话" prop="mobile">
<el-input
v-model="form.mobile"
placeholder="请输入联系电话"
maxlength="11"
/>
</el-form-item>
<el-form-item label="站点编号" prop="number">
<el-input
v-model="form.number"
placeholder="请输入站点编号"
maxlength="50"
/>
</el-form-item>
<el-form-item label="站点状态">
<el-radio-group v-model="form.status">
<el-radio
v-for="(label, value) in dict.status"
:key="value"
:label="value"
>{{ label }}</el-radio
>
</el-radio-group>
</el-form-item>
<el-col :span="24">
<el-form-item label="单位介绍" prop="introduce">
<el-input
v-model="form.introduce"
placeholder="请输入单位介绍"
type="textarea"
:rows="2"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="中心介绍" prop="summary">
<el-input
v-model="form.summary"
placeholder="请输入中心介绍"
type="textarea"
:rows="2"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/form";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
mixins: [form],
components: { Treeselect },
data() {
return {
siteOptions: [],
// 遮罩层
loading: true,
// 站点树选项
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
toString: ["status"],
// 表单校验
rules: {
parentId: [
{ required: true, message: "上级站点不能为空", trigger: "blur" },
],
siteName: [
{ required: true, message: "站点名称不能为空", trigger: "blur" },
],
orderNum: [
{ required: true, message: "显示排序不能为空", trigger: "blur" },
],
},
};
},
methods: {
//编辑
edit(row, siteOptions) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl =this.pageInfo.editUrl;;
this.getData();
this.siteOptions = siteOptions;
this.open = true;
this.title = "修改站点";
},
//新增
add(row, siteOptions) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.addUrl;
this.getData();
this.siteOptions = siteOptions;
this.open = true;
this.title = "新增站点";
},
//查看
view(row, siteOptions) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl =this.pageInfo.viewUrl;;
this.getData();
this.siteOptions = siteOptions;
this.open = true;
this.title = "站点详细";
},
// 取消按钮
cancel() {
this.open = false;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
/** 转换站点数据结构 */
normalizer(node) {
if (node.children && !node.children.length) {
delete node.children;
}
return {
id: node.id,
label: node.siteName,
children: node.children,
};
},
// 表单重置
reset() {
this.form = {
id: null,
parentId: 0,
siteName: "",
orderNum: 0,
address: "",
mobile: "",
introduce: "",
summary: "",
ancestors: "",
status: "1",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
>
<el-form-item label="站点名称" prop="siteName">
<el-input
v-model="queryParams['query.siteName']"
placeholder="请输入站点名称"
clearable
size="small"
@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-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="siteList"
row-key="id"
border
default-expand-all
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
>
<el-table-column
prop="siteName"
label="站点名称"
width="400"
></el-table-column>
<el-table-column
prop="number"
label="站点编号"
width="200"
></el-table-column>
<el-table-column
prop="address"
label="站点地址"
width="200"
></el-table-column>
<el-table-column
prop="status"
label="状态"
:formatter="statusFormat"
width="100"
></el-table-column>
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="200"
>
<template slot-scope="scope">
<span>{{ formatterDate(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-plus"
@click="handleAdd(scope.row)"
>新增</el-button
>
<el-button
v-if="scope.row.parentId != 0"
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<!-- 添加或修改站点对话框 -->
<el-dialog :title="title" :visible.sync="open" width="70%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="24" v-if="form.parentId !== 0">
<el-form-item label="上级站点" prop="parentId">
<treeselect
v-model="form.parentId"
:options="siteOptions"
:normalizer="normalizer"
placeholder="选择上级站点"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="站点名称" prop="siteName">
<el-input v-model="form.siteName" placeholder="请输入站点名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="显示排序" prop="orderNum">
<el-input-number
v-model="form.orderNum"
controls-position="right"
:min="0"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="地址" prop="address">
<el-input
v-model="form.address"
placeholder="请输入地址"
maxlength="20"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系电话" prop="mobile">
<el-input
v-model="form.mobile"
placeholder="请输入联系电话"
maxlength="11"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="站点编号" prop="number">
<el-input
v-model="form.number"
placeholder="请输入站点编号"
maxlength="50"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="站点状态">
<el-radio-group v-model="form.status">
<el-radio
v-for="(label, value) in dict.status"
:key="value"
:label="value"
>{{ label }}</el-radio
>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="单位介绍" prop="introduce">
<el-input
v-model="form.introduce"
placeholder="请输入单位介绍"
type="textarea"
:rows="2"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="中心介绍" prop="summary">
<el-input
v-model="form.summary"
placeholder="请输入中心介绍"
type="textarea"
:rows="2"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { handleTree, formatterDate } from "@/assets/utils";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
name: "Dept",
components: { Treeselect },
data() {
return {
// 遮罩层
loading: true,
// 显示搜索条件
showSearch: true,
// 表格树数据
siteList: [],
// 站点树选项
siteOptions: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 状态数据字典
statusOptions: [],
// 查询参数
queryParams: {
"query.siteName": null,
},
// 表单参数
form: {},
dict: {},
toString: ["status"],
// 表单校验
rules: {
parentId: [
{ required: true, message: "上级站点不能为空", trigger: "blur" },
],
siteName: [
{ required: true, message: "站点名称不能为空", trigger: "blur" },
],
orderNum: [
{ required: true, message: "显示排序不能为空", trigger: "blur" },
],
email: [
{
type: "email",
message: "'请输入正确的邮箱地址",
trigger: ["blur", "change"],
},
],
mobile: [
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号码",
trigger: "blur",
},
],
},
};
},
created() {
this.getList();
},
methods: {
formatterDate(time) {
return formatterDate(time);
},
/** 查询站点列表 */
getList() {
this.loading = true;
let query = {};
//判断追加百分号
Object.assign(query, this.queryParams);
if (query["query.siteName"] != null) {
query["query.siteName"] = "%" + query["query.siteName"] + "%";
}
this.$post("/site/list", query)
.then((res) => {
if (res && res.code && res.code == 1) {
this.siteList = handleTree(res.data.result, "id");
this.dict = Object.assign({}, this.dict, res.data.dict);
this.loading = false;
}
})
.catch((error) => {
this.$message.error(error.message);
});
},
/** 转换站点数据结构 */
normalizer(node) {
console.log("normalizer", node);
if (node.children && !node.children.length) {
delete node.children;
}
return {
id: node.id,
label: node.siteName,
children: node.children,
};
},
// 字典状态字典翻译
statusFormat(row, column) {
try {
return this.dict["status"][row.status];
} catch (error) {
return row.status;
}
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
// 表单重置
reset() {
this.form = {
id: null,
parentId: 0,
siteName: "",
orderNum: 0,
address: "",
mobile: "",
introduce: "",
summary: "",
ancestors: "",
status: "1",
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd(row) {
this.reset();
if (row.id != undefined) {
this.form.parentId = row.id;
}
this.open = true;
this.title = "添加站点";
this.loading = true;
this.$post("/site/list", {})
.then((res) => {
if (res && res.code && res.code == 1) {
this.siteOptions = handleTree(res.data.result);
this.loading = false;
}
})
.catch((error) => {
this.$message.error(error.message);
});
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.loading = true;
this.$post("/site/edit", { id: [row.id] })
.then((res) => {
if (res && res.code && res.code == 1) {
res.data.entity = this.util_toString(
res.data.entity,
this.toString
);
Object.assign(this.form, res.data.entity);
this.open = true;
this.title = "修改站点";
this.loading = false;
}
})
.catch((error) => {
this.$message.error(error.message);
});
this.$post("/site/list/exclude", { id: [row.id] })
.then((res) => {
if (res && res.code && res.code == 1) {
this.siteOptions = handleTree(res.data.result);
}
})
.catch((error) => {
this.$message.error(error.message);
});
},
/** 提交按钮 */
submitForm: function () {
this.loading = true;
const el = this.$refs.form;
el.validate((valid) => {
if (!valid) return;
this.$post("/site/save", {
entity: this.form,
})
.then((res) => {
if (res && res.code && res.code == 1) {
this.loading = false;
this.reset();
this.open = false;
this.getList();
}
})
.catch((error) => {
this.loading = false;
this.$message.error(error.message);
});
});
},
/** 删除按钮操作 */
handleDelete(row) {
let _this=this
this.$confirm(
'是否确认删除名称为"' + row.siteName + '"的数据项?',
"警告",
{
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}
).then(function () {
_this.$post("/site/delete", { id: [row.id] })
.then((res) => {
if (res && res.code && res.code == 1) {
_this.getList();
_this.$message.success("删除成功");
}
})
.catch((error) => {
_this.$message.error(error.message);
});
});
},
// 工具方法,把数字转化为字符串
util_toString(data, array) {
const dataCopy = Object.assign({}, data);
array.forEach((item) => {
dataCopy[item] =
dataCopy[item] === undefined ? "" : dataCopy[item] + "";
});
return dataCopy;
},
},
};
</script>
\ No newline at end of file
<template>
<div class="page">
<LayoutTable ref="layoutTable" :data="tableData" :config="tableConfig" />
<dialog-show ref="dialogform" @ok="getData" />
</div>
</template>
<script>
import dialogShow from "./dialogshow";
import { handleTree } from "@/assets/utils/table";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import table from "@/assets/mixins/table";
export default {
name: "Site",
mixins: [table],
components: { Treeselect, dialogShow },
data() {
return {
config: {
expand:true,
search: [
{
name: "name",
type: "text",
label: "参数名称",
},
],
columns: [
{
prop: "siteName",
label: "siteName",
},
{
prop: "number",
label: "站点编号",
width: 200,
},
{
prop: "address",
label: "站点地址",
width: 200,
},
{
prop: "status",
label: "状态",
width: 100,
formatter: this.formatter,
},
{
label: "创建时间",
prop: "createTime",
formatter: this.formatterDate,
},
{
label: "操作",
width: 280,
formatter: (row) => {
return (
<div>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
onClick={() => {
this.toEdit(row);
}}
>
修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-plus"
onClick={() => {
this.toAdd(row);
}}
>
新增
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
onClick={() => {
this.handleDelete(row);
}}
>
删除
</el-button>
</div>
);
},
},
],
},
};
},
created() {
},
methods: {
afterRender(data) {
data.result = handleTree(data.result, "id","parentId");
this.siteOptions = data.result;
this.$refs.layoutTable.showType="treetable"
console.log(this.$refs.layoutTable)
},
// 新增
toAdd(row) {
this.$refs.dialogform.add(row, this.siteOptions);
},
// 编辑
toEdit(row,query) {
this.loading = true;
this.$post(this.pageInfo.exclude, { id: [row.id] })
.then((res) => {
if (res && res.code && res.code == 1) {
this.siteOptions = handleTree(res.data.result);
this.$refs.dialogform.edit(row, this.siteOptions);
this.loading = false;
}
})
.catch((error) => {
this.$message.error(error.message);
});
},
// 查看
toView(row,) {
this.$refs.dialogform.view(row, this.siteOptions);
},
},
};
</script>
\ No newline at end of file
<template>
<div class="page">
<LayoutTable ref="layoutTable" :data="tableData" :config="tableConfig" />
<dialog-show ref="dialogform" @ok="getData" />
</LayoutTable>
</div>
</template>
<script>
import dialogShow from "./dialogshow";
import { handleTree } from "@/assets/utils/table";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import table from "@/assets/mixins/table";
export default {
name: "Site",
mixins: [table],
components: { Treeselect, dialogShow },
created() {},
methods: {
afterRender(data) {
data.result = handleTree(data.result, "id", "parentId");
this.siteOptions = data.result;
this.$refs.layoutTable.showType = "treetable";
},
// 新增
toAdd(row) {
this.$refs.dialogform.add(row, this.siteOptions);
},
// 编辑
toEdit(row) {
this.loading = true;
this.$post(this.pageInfo.exclude, { id: [row.id] })
.then((res) => {
if (res && res.code && res.code == 1) {
this.siteOptions = handleTree(res.data.result);
this.$refs.dialogform.edit(row, this.siteOptions);
this.loading = false;
}
})
.catch((error) => {
this.$message.error(error.message);
});
},
// 查看
toView(row) {
this.$refs.dialogform.view(row, this.siteOptions);
},
},
data() {
return {
/** 树表是否默认展开 */
expand: true,
config: {
search: [
{
name: "siteName",
type: "text",
label: "站点名",
fuzzy: true,
},
{
name: "parentId",
type: "text",
label: "父级id",
fuzzy: true,
},
{
name: "ancestors",
type: "text",
label: "祖级列表,逗号分隔",
fuzzy: true,
},
{
name: "address",
type: "text",
label: "地址",
fuzzy: true,
},
{
name: "mobile",
type: "text",
label: "电话",
fuzzy: true,
},
{
name: "workday1",
type: "text",
label: "周一 1上班 0不上",
fuzzy: true,
},
{
name: "workday2",
type: "text",
label: "周二 1上班 0不上",
fuzzy: true,
},
{
name: "workday3",
type: "text",
label: "周三 1上班 0不上",
fuzzy: true,
},
{
name: "workday4",
type: "text",
label: "周四 1上班 0不上",
fuzzy: true,
},
{
name: "workday5",
type: "text",
label: "周五 1上班 0不上",
fuzzy: true,
},
{
name: "workday6",
type: "text",
label: "周六 1上班 0不上",
fuzzy: true,
},
{
name: "workday7",
type: "text",
label: "周日 1上班 0不上",
fuzzy: true,
},
{
name: "number",
type: "text",
label: "站点编号",
fuzzy: true,
},
{
name: "orderNum",
type: "text",
label: "排序字段",
fuzzy: true,
},
{
name: "status",
type: "checkbox",
label: "站点状态 ,0,停用,1,正常 默认1",
fuzzy: true,
},
],
columns: [
{ label: "站点名", prop: "siteName" },
{
label: "父级id",
prop: "parentId",
formatter: this.formatterString,
},
{ label: "祖级列表,逗号分隔", prop: "ancestors" },
{ label: "地址", prop: "address" },
{ label: "电话", prop: "mobile" },
{ label: "单位介绍", prop: "introduce" },
{ label: "周一 1上班 0不上", prop: "workday1" },
{ label: "周二 1上班 0不上", prop: "workday2" },
{ label: "周三 1上班 0不上", prop: "workday3" },
{ label: "周四 1上班 0不上", prop: "workday4" },
{ label: "周五 1上班 0不上", prop: "workday5" },
{ label: "周六 1上班 0不上", prop: "workday6" },
{ label: "周日 1上班 0不上", prop: "workday7" },
{ label: "站点编号", prop: "number" },
{ label: "中心介绍", prop: "summary" },
{ label: "排序字段", prop: "orderNum" },
{ label: "站点状态 ,0,停用,1,正常 默认1", prop: "status" },
{
label: "操作",
width: 280,
formatter: (row) => {
return (
<div>
<el-button
size="mini"
type="text"
icon="el-icon-edit-outline"
onClick={() => {
this.handleAdd(row);
}}
>
新增
</el-button>
<table-buttons
noAdd
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
</div>
);
},
},
],
},
};
},
};
</script>
\ No newline at end of file
// 添加,编辑设备
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="80%" append-to-body>
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="110px"
label-position="right"
>
<el-row>
<Field label="任务名称" prop="name" v-model="form.name"/>
<Field label="关键字" prop="taskKey" v-model="form.taskKey"/>
<Field label="执行服务" prop="excuteService" v-model="form.excuteService" :enumData='dict.excuteService' type='select' />
<Field label="执行策略" prop="excuteStrategy" @change='excuteStrategyChange' v-model="form.excuteStrategy" :enumData='dict.excuteStrategy' type='select' />
<Field :label="form.excuteStrategy == 4 ? '执行间隔时间' : '执行日期'" prop="excuteDate">
<el-input disabled value='每天' v-if='form.excuteStrategy == 1'></el-input>
<el-select v-model="form.excuteDate" v-if='form.excuteStrategy == 2'>
<el-option
v-for='($label, $value) in dict.week'
:key='$value'
:label="$label"
:value="$value"
></el-option>
</el-select>
<el-select v-model="form.excuteDate" v-if='form.excuteStrategy == 3'>
<el-option
v-for='($label, $value) in dict.days'
:key='$value'
:label="$label"
:value="$value"
></el-option>
</el-select>
<el-input v-model="form.excuteDate" v-if='form.excuteStrategy == 4'>
<template slot="append"></template>
</el-input>
</Field>
<Field label="执行时间" prop="excuteTime" v-if='form.excuteStrategy != 4'>
<el-time-select
v-model="form.excuteTime"
:picker-options="{
start: '00:00',
step: '00:5',
end: '23:45'
}"
placeholder="选择时间">
</el-time-select>
</Field>
<Field :span="24" label="执行主机" prop="excuteHost" v-model="form.excuteHost"/>
<Field :span="24" label="执行参数" prop="excuteParam" v-model="form.excuteParam" type='textarea' textareaSize/>
<Field :span="24" label="备注" prop="remark" v-model="form.remark" type='textarea' textareaSize/>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button
type="primary"
v-if="pageInfo.type !== 'view'"
@click="submitForm"
>确 定</el-button
>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
export default {
mixins: [form],
components: {
dialogShow,
},
methods: {
beforeRender(data) {
data.dict = data.dict || {};
const days = {};
[...new Array(31)].forEach((i,index)=>{
let key = index+1;
days[key] = `${key}号`;
})
data.dict.days = days;
data.dict.week = {
1: '星期一',
2: '星期二',
3: '星期三',
4: '星期四',
5: '星期五',
6: '星期六',
7: '星期天',
};
data.dict.excuteService = data.excuteService;
return data;
},
excuteStrategyChange(val) {
this.form.excuteDate = val == 1 ? '0' : '1';
},
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.editUrl;
this.getData();
this.pageInfo.type = "edit";
this.title = "修改任务";
},
/** 新增 */
add(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.addUrl;
this.getData();
this.pageInfo.type = "add";
this.title = "新增任务";
},
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.viewUrl;
this.getData();
this.pageInfo.type = "view";
this.title = "任务详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
console.log(this.form)
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "用户",
// 是否显示弹出层
open: false,
toString: ['excuteService', 'excuteStrategy', 'excuteDate'],
rules: {
name: [{ required: true, message: '请输入任务名称', trigger: 'blur' },],
taskKey: [{ required: true, message: '请输入任务关键字', trigger: 'blur' },],
excuteService: [{ required: true, message: '请选择任务执行服务', trigger: 'blur' },],
},
};
},
};
</script>
// 添加,编辑设备
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="40%" append-to-body>
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="110px"
label-position="right"
>
<el-row>
<Field
:span="20"
label="登录名称"
prop="loginName"
v-model="form.loginName"
/>
<Field :span="20" label="密码" prop="loginPwd">
<el-input
v-model.trim="form.loginPwd"
placeholder="请输入密码"
:type="passw"
clearable
@blur="onBlur"
>
<!-- input中加图标必须要有slot="suffix"属性,不然无法显示图标 -->
<i slot="suffix" :class="icon" @click="showPass"></i>
</el-input>
</Field>
<!-- <Field :span="20" label="登录密码" prop="loginPwd" v-model="form.loginPwd" /> -->
<Field
:span="20"
label="用户名称"
prop="realName"
v-model="form.realName"
/>
<Field
:span="20"
label="手机号码"
prop="mobile"
v-model="form.mobile"
/>
<!-- <Field label="用户类型" prop="userType" v-model="form.userType" :enumData='dict.userType' type='select' />
<Field label="用户状态" prop="status" v-model="form.status" :enumData='dict.status' type='select' /> -->
<Field
label="角色分配"
:span="24"
v-model="form.roleIds"
type="checkbox"
:enumData="dict.roleIds"
/>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button
type="primary"
v-if="pageInfo.type !== 'view'"
@click="submitForm"
>确 定</el-button
>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
export default {
mixins: [form],
components: {
dialogShow,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "用户",
// 是否显示弹出层
open: false,
toString: ["status", "userType"],
toArrays: ["roleIds"],
// 表单校验
rules: {
loginName: [
{ required: true, message: "请输入英文的用户名", trigger: "blur" },
{
validator: function (rule, value, callback) {
// 校验英文的正则
if (/[A-Za-z0-9]$/.test(value) == false) {
callback(new Error("请输入英文"));
} else {
//校验通过
callback();
}
},
trigger: "blur",
},
],
},
icon: "el-input__icon el-icon-view",
passw: "password",
SPAN: "24",
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.editUrl;
this.getData();
this.pageInfo.type = "edit";
this.title = "修改用户";
},
/** 新增 */
add(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.addUrl;
this.getData();
this.pageInfo.type = "add";
this.title = "新增用户";
},
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.viewUrl;
this.getData();
this.pageInfo.type = "view";
this.title = "用户详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
beforeSubmit(data) {
data.roleIds = data.roleIds
.filter((item) => {
return item !== "";
})
.join(",");
return data;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {roleIds:""};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
showPass() {
//点击图标是密码隐藏或显示
if (this.passw == "text") {
this.passw = "password";
//更换图标
this.icon = "el-input__icon el-icon-view";
} else {
this.passw = "text";
this.icon = "el-input__icon el-icon-loading";
setTimeout(() => {
this.icon = "";
}, 100);
}
},
//密码失焦事件
onBlur() {
this.passw = "password";
this.icon = "el-input__icon el-icon-view";
},
},
};
</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