作者 王勇

修改权限管理页面显示数目,并备份Home首页

  1 +.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=SimSun]::before,
  2 +.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=SimSun]::before {
  3 + content: "宋体";
  4 + font-family: "SimSun";
  5 +}
  6 +
  7 +.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=SimHei]::before,
  8 +.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=SimHei]::before {
  9 + content: "黑体";
  10 + font-family: "SimHei";
  11 +}
  12 +
  13 +.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Microsoft-YaHei]::before,
  14 +.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Microsoft-YaHei]::before {
  15 + content: "微软雅黑";
  16 + font-family: "Microsoft YaHei";
  17 +}
  18 +
  19 +.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=KaiTi]::before,
  20 +.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=KaiTi]::before {
  21 + content: "楷体";
  22 + font-family: "KaiTi";
  23 +}
  24 +
  25 +.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=FangSong]::before,
  26 +.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=FangSong]::before {
  27 + content: "仿宋";
  28 + font-family: "FangSong";
  29 +}
  30 +
  31 +.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Arial]::before,
  32 +.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Arial]::before {
  33 + content: "Arial";
  34 + font-family: "Arial";
  35 +}
  36 +
  37 +.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Times-New-Roman]::before,
  38 +.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Times-New-Roman]::before {
  39 + content: "Times New Roman";
  40 + font-family: "Times New Roman";
  41 +}
  42 +
  43 +.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=sans-serif]::before,
  44 +.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=sans-serif]::before {
  45 + content: "sans-serif";
  46 + font-family: "sans-serif";
  47 +}
  48 +
  49 +.ql-font-SimSun {
  50 + font-family: "SimSun";
  51 +}
  52 +
  53 +.ql-font-SimHei {
  54 + font-family: "SimHei";
  55 +}
  56 +
  57 +.ql-font-Microsoft-YaHei {
  58 + font-family: "Microsoft YaHei";
  59 +}
  60 +
  61 +.ql-font-KaiTi {
  62 + font-family: "KaiTi";
  63 +}
  64 +
  65 +.ql-font-FangSong {
  66 + font-family: "FangSong";
  67 +}
  68 +
  69 +.ql-font-Arial {
  70 + font-family: "Arial";
  71 +}
  72 +
  73 +.ql-font-Times-New-Roman {
  74 + font-family: "Times New Roman";
  75 +}
  76 +
  77 +.ql-font-sans-serif {
  78 + font-family: "sans-serif";
  79 +}
  1 +<template>
  2 + <el-row class="container darkmenu" style="margin-top: 0px;">
  3 + <el-col :span="24" class="header">
  4 + <el-col :span="10" class="logo" align="center" :class="collapsed?'logo-collapse-width':'logo-width'">
  5 + {{collapsed?'':sysName}}
  6 + </el-col>
  7 + <el-col :span="10">
  8 + <div class="tools" @click.prevent="collapse">
  9 + <i class="fa fa-align-justify"></i>
  10 + </div>
  11 + </el-col>
  12 + <el-col :span="4" class="userinfo">
  13 + <el-dropdown trigger="hover">
  14 + <span class="el-dropdown-link userinfo-inner"><img
  15 + :src="this.sysUserAvatar"/> {{sysUserName}}</span>
  16 + <el-dropdown-menu slot="dropdown">
  17 + <el-dropdown-item>我的消息</el-dropdown-item>
  18 + <el-dropdown-item @click.native="editPass">修改密码</el-dropdown-item>
  19 + <el-dropdown-item divided @click.native="logout">退出登录</el-dropdown-item>
  20 + </el-dropdown-menu>
  21 + </el-dropdown>
  22 + </el-col>
  23 + </el-col>
  24 + <el-col>
  25 + <el-dialog title="修改密码" :visible.sync="dialogFormVisible">
  26 + <el-form :model="resetForm" status-icon :rules="resetFormRules" ref="resetForm" label-width="100px">
  27 + <el-form-item label="用户名" prop="name">
  28 + <span>{{sysUserName}}</span>
  29 + </el-form-item>
  30 + <el-form-item label="新密码" prop="newpwd">
  31 + <el-input type="password" v-model="resetForm.newpwd" autocomplete="off"
  32 + placeholder="8-20位字符在数字、小写、大写字母以及特殊字符中四选三"></el-input>
  33 + </el-form-item>
  34 + <el-form-item label="确认密码" prop="renewpwd">
  35 + <el-input type="password" v-model="resetForm.renewpwd" auto-complete="off"></el-input>
  36 + </el-form-item>
  37 + <el-form-item>
  38 + <el-button type="primary" @click="submitEdit('resetForm')" style="float:right">提 交</el-button>
  39 + </el-form-item>
  40 +
  41 + </el-form>
  42 + </el-dialog>
  43 + </el-col>
  44 + <el-col :span="24" class="main">
  45 + <aside :class="collapsed?'menu-collapsed':'menu-expanded'">
  46 + <!--导航菜单-->
  47 + <el-menu :default-active="$route.path" class="el-menu-vertical-demo" @open="handleopen"
  48 + @close="handleclose" @select="handleselect" unique-opened router v-show="!collapsed"
  49 + style="min-width: 230px">
  50 + <template v-for="(item,index) in $router.options.routes" v-if="!item.hidden">
  51 + <el-submenu :index="index+''" v-if="!item.leaf">
  52 + <template slot="title"><i :class="item.iconCls"></i>{{item.name}}</template>
  53 + <el-menu-item v-for="child in item.children" :index="child.path" :key="child.path"
  54 + v-if="!child.hidden">{{child.name}}
  55 + </el-menu-item>
  56 + </el-submenu>
  57 + <el-menu-item v-if="item.leaf&&item.children.length>0" :index="item.children[0].path"><i
  58 + :class="item.iconCls"></i>{{item.children[0].name}}
  59 + </el-menu-item>
  60 + </template>
  61 + </el-menu>
  62 + <!--导航菜单-折叠后-->
  63 + <ul class="el-menu el-menu-vertical-demo collapsed" v-show="collapsed" ref="menuCollapsed">
  64 + <li v-for="(item,index) in $router.options.routes" v-if="!item.hidden" class="el-submenu item">
  65 + <template v-if="!item.leaf">
  66 + <div class="el-submenu__title" style="padding-left: 20px;" @mouseover="showMenu(index,true)"
  67 + @mouseout="showMenu(index,false)"><i :class="item.iconCls"></i></div>
  68 + <ul class="el-menu submenu" :class="'submenu-hook-'+index" @mouseover="showMenu(index,true)"
  69 + @mouseout="showMenu(index,false)">
  70 + <li v-for="child in item.children" v-if="!child.hidden" :key="child.path"
  71 + class="el-menu-item" style="padding-left: 40px;"
  72 + :class="$route.path==child.path?'is-active':''" @click="$router.push(child.path)">
  73 + {{child.name}}
  74 + </li>
  75 + </ul>
  76 + </template>
  77 + <template v-else>
  78 + <li class="el-submenu">
  79 + <div class="el-submenu__title el-menu-item"
  80 + style="padding-left: 20px;height: 56px;line-height: 56px;padding: 0 20px;"
  81 + :class="$route.path==item.children[0].path?'is-active':''"
  82 + @click="$router.push(item.children[0].path)"><i :class="item.iconCls"></i></div>
  83 + </li>
  84 + </template>
  85 + </li>
  86 + </ul>
  87 + </aside>
  88 + <section class="content-container">
  89 + <div class="grid-content bg-purple-light">
  90 + <el-col :span="24" class="breadcrumb-container">
  91 + <strong class="title">{{$route.name}}</strong>
  92 + <el-breadcrumb separator=">" class="breadcrumb-inner">
  93 + <el-breadcrumb-item v-for="item in $route.matched" :key="item.path">
  94 + {{ item.name }}
  95 + </el-breadcrumb-item>
  96 + </el-breadcrumb>
  97 + </el-col>
  98 + <el-col :span="24" class="content-wrapper">
  99 + <transition name="fade" mode="out-in">
  100 + <router-view :key="$route.path +$route.query.t"></router-view>
  101 + </transition>
  102 + </el-col>
  103 + </div>
  104 + </section>
  105 + </el-col>
  106 + </el-row>
  107 +</template>
  108 +
  109 +<script>
  110 + import rt from '../routes'
  111 + import {editPass} from '../api/user';
  112 + import ElFormItem from "element-ui/packages/form/src/form-item";
  113 +
  114 + export default {
  115 +
  116 + provide() {
  117 + return {
  118 + reload: this.reload
  119 + }
  120 + },
  121 + components: {ElFormItem},
  122 + data() {
  123 + var validatePass = (rule, value, callback) => {
  124 + if (!value) {
  125 + callback(new Error('请输入新密码'));
  126 + } else {
  127 + var ls = 0;
  128 + if (value.match(/([a-z])+/)) {
  129 + ls++;
  130 + }
  131 + if (value.match(/([0-9])+/)) {
  132 + ls++;
  133 + }
  134 + if (value.match(/([A-Z])+/)) {
  135 + ls++;
  136 + }
  137 + if ((/([\W])+/) && !value.match(/(![\u4E00-\u9FA5])+/)) {
  138 + ls++;
  139 + }
  140 + if (value.toString().length < 8 || value.toString().length > 20) {
  141 + callback(new Error('密码长度为8 - 20个字符'));
  142 + ls = 0;
  143 + }
  144 + if (value.match(/([\u4E00-\u9FA5])+/)) {
  145 + callback(new Error('不能包含中文字符'));
  146 + ls = 0;
  147 + }
  148 + switch (ls) {
  149 + case 0:
  150 + this.passwordPercent = 0;
  151 + callback(new Error('数字、小写字母、大写字母以及特殊字符中四选三'));
  152 + break;
  153 + case 1:
  154 + this.passwordPercent = 33;
  155 + callback(new Error('数字、小写字母、大写字母以及特殊字符中四选三'));
  156 + break;
  157 + case 2:
  158 + this.passwordPercent = 66;
  159 + callback(new Error('数字、小写字母 、大写字母以及特殊字符中四选三'));
  160 + break;
  161 + case 3:
  162 + case 4:
  163 + this.passwordPercent = 100;
  164 + break;
  165 + default:
  166 + this.passwordPercent = 0;
  167 + break;
  168 + }
  169 + callback();
  170 + }
  171 +
  172 + };
  173 +
  174 + var validatePass2 = (rule, value, callback) => {
  175 + if (value === '') {
  176 + callback(new Error('请再次输入密码'));
  177 + } else if (value !== this.resetForm.newpwd) {
  178 + callback(new Error('两次输入密码不一致!'));
  179 + } else {
  180 + callback();
  181 + }
  182 + };
  183 + return {
  184 + sysName: '车辆调度系统',
  185 + collapsed: false,
  186 + sysUserName: '',
  187 + sysUserId: '',
  188 + sysUserAvatar: '',
  189 + isRouterAlive: true,
  190 + form: {
  191 + name: '',
  192 + region: '',
  193 + date1: '',
  194 + date2: '',
  195 + delivery: false,
  196 + type: [],
  197 + resource: '',
  198 + desc: ''
  199 + },
  200 + dialogFormVisible: false,
  201 + resetForm: {
  202 + newpwd: '',
  203 + renewpwd: '',
  204 + },
  205 + resetFormRules: {
  206 + newpwd: [
  207 + {required: true, validator: validatePass, trigger: 'blur'}
  208 + ],
  209 + renewpwd: [
  210 + {required: true, validator: validatePass2, trigger: 'blur'}
  211 + ]
  212 + },
  213 + editForm: {
  214 + userId: '',
  215 + password: '',
  216 + },
  217 + }
  218 + },
  219 + methods: {
  220 + reload() {
  221 + this.$nextTick(function () {
  222 + this.$router.push({
  223 + path: this.$router.path,
  224 + query: {
  225 + t: new Date().getTime()
  226 + }
  227 + })
  228 + })
  229 + },
  230 + editPass: function () {
  231 + this.dialogFormVisible = true;
  232 + },
  233 + submitEdit(formName) {
  234 + this.$refs[formName].validate((valid) => {
  235 + if (valid) {
  236 + this.editForm.userId = this.sysUserId;
  237 + this.editForm.password = this.resetForm.renewpwd;
  238 + editPass(this.editForm).then(res => {
  239 + let response = res.data;
  240 + if (response.code == '200') {
  241 + this.$notify({
  242 + title: '密码修改成功',
  243 + message: '密码修改成功,退出请重新登录',
  244 + type: 'success'
  245 + });
  246 + this.dialogFormVisible = false;
  247 + } else {
  248 + this.$notify.error({
  249 + title: '密码修改失败',
  250 + message: '密码修改失败!!!'
  251 + });
  252 + }
  253 + });
  254 + } else {
  255 + console.log('error submit!!');
  256 + return false;
  257 + }
  258 + });
  259 + },
  260 + onSubmit() {
  261 + console.log('submit!');
  262 + },
  263 + handleopen() {
  264 + console.log('handleopen');
  265 + },
  266 + handleclose() {
  267 + console.log('handleclose');
  268 + },
  269 + handleselect: function (a, b) {
  270 + this.reload()
  271 + },
  272 + //退出登录
  273 + logout: function () {
  274 + var _this = this;
  275 + this.$confirm('确认退出吗?', '提示', {
  276 + //type: 'warning'
  277 + }).then(() => {
  278 + sessionStorage.removeItem('user');
  279 + sessionStorage.removeItem('menu');
  280 + //退出后初始化原来的路由
  281 + let sysRoutes = JSON.parse(sessionStorage.getItem('sysMenu'));
  282 + console.log(sysRoutes);
  283 + _this.$router.options.routes = sysRoutes;
  284 +
  285 + _this.$router.push('/login');
  286 + }).catch(() => {
  287 +
  288 + });
  289 +
  290 +
  291 + },
  292 + //折叠导航栏
  293 + collapse: function () {
  294 + this.collapsed = !this.collapsed;
  295 + },
  296 + showMenu(i, status) {
  297 + this.$refs.menuCollapsed.getElementsByClassName('submenu-hook-' + i)[0].style.display = status ? 'block' : 'none';
  298 + }
  299 + },
  300 + mounted() {
  301 + var _this = this;
  302 + var user = sessionStorage.getItem('user');
  303 + if (user) {
  304 + user = JSON.parse(user);
  305 + this.sysUserName = user.username || '';
  306 + this.sysUserId = user.userId || '';
  307 + this.sysUserAvatar = user.userface || '/static/images/faceDefault.jpg';
  308 + }
  309 + //操作路由,判断本地存储的用户栏目列表是否存在,如果存在则加载路由
  310 + var userRouters = sessionStorage.getItem('menu');
  311 + if (userRouters) {
  312 + userRouters = JSON.parse(userRouters);
  313 + _this.$router.options.routes = userRouters;
  314 + console.log("home:");
  315 + console.log(_this.$router.options.routes);
  316 + }
  317 + }
  318 + }
  319 +
  320 +</script>
  321 +
  322 +<style scoped lang="scss">
  323 + @import '~scss_vars';
  324 +
  325 + .container {
  326 + position: absolute;
  327 + top: 0px;
  328 + bottom: 0px;
  329 + width: 100%;
  330 +
  331 + .header {
  332 + height: 60px;
  333 + line-height: 60px;
  334 + background: $color-primary url("/static/images/air-banner.png");
  335 + color: #fff;
  336 +
  337 + .userinfo {
  338 + text-align: right;
  339 + padding-right: 35px;
  340 + float: right;
  341 +
  342 + .userinfo-inner {
  343 + cursor: pointer;
  344 + color: #fff;
  345 +
  346 + img {
  347 + width: 40px;
  348 + height: 40px;
  349 + border-radius: 20px;
  350 + margin: 10px 0px 10px 10px;
  351 + float: right;
  352 + }
  353 + }
  354 + }
  355 +
  356 + .logo {
  357 + //width:230px;
  358 + height: 60px;
  359 + font-size: 22px;
  360 + padding-left: 20px;
  361 + padding-right: 20px;
  362 + border-color: rgba(238, 241, 146, 0.3);
  363 + border-right-width: 1px;
  364 + border-right-style: solid;
  365 +
  366 + img {
  367 + width: 40px;
  368 + float: left;
  369 + margin: 10px 10px 10px 18px;
  370 + }
  371 +
  372 + .txt {
  373 + color: #fff;
  374 + }
  375 + }
  376 +
  377 + .logo-width {
  378 + width: 230px;
  379 + }
  380 +
  381 + .logo-collapse-width {
  382 + width: 60px
  383 + }
  384 +
  385 + .tools {
  386 + padding: 0px 23px;
  387 + width: 14px;
  388 + height: 60px;
  389 + line-height: 60px;
  390 + cursor: pointer;
  391 + }
  392 + }
  393 +
  394 + .main {
  395 + display: flex;
  396 + // background: #324057;
  397 + position: absolute;
  398 + top: 60px;
  399 + bottom: 0px;
  400 + overflow: hidden;
  401 +
  402 + aside {
  403 + flex: 0 0 230px;
  404 + width: 230px;
  405 + // position: absolute;
  406 + // top: 0px;
  407 + // bottom: 0px;
  408 + .collapsed {
  409 + width: 60px;
  410 +
  411 + .item {
  412 + position: relative;
  413 + }
  414 +
  415 + .submenu {
  416 + position: absolute;
  417 + top: 0px;
  418 + left: 60px;
  419 + z-index: 99999;
  420 + height: auto;
  421 + display: none;
  422 + }
  423 +
  424 + }
  425 + }
  426 +
  427 + .menu-collapsed {
  428 + flex: 0 0 60px;
  429 + width: 60px;
  430 + }
  431 +
  432 + .menu-expanded {
  433 + flex: 0 0 230px;
  434 + width: 230px;
  435 + }
  436 +
  437 + .menu-expanded ul {
  438 + width: 230px;
  439 + }
  440 +
  441 + .content-container {
  442 + // background: #f1f2f7;
  443 + flex: 1;
  444 + // position: absolute;
  445 + // right: 0px;
  446 + // top: 0px;
  447 + // bottom: 0px;
  448 + // left: 230px;
  449 + overflow-y: scroll;
  450 + padding: 10px;
  451 + background-color: #dfe6e9;
  452 + .breadcrumb-container {
  453 + //margin-bottom: 15px;
  454 + background: #bfcbd9;
  455 + .title {
  456 + width: 200px;
  457 + float: left;
  458 + color: #475669;
  459 + margin-left: 20px;
  460 + margin-top: 8px;
  461 + font-size: 16px;
  462 + }
  463 +
  464 + .breadcrumb-inner {
  465 + float: right;
  466 + margin-right: 20px;
  467 + }
  468 +
  469 + .el-breadcrumb {
  470 + line-height: 36px;
  471 + }
  472 + }
  473 +
  474 + .content-wrapper {
  475 + background-color: #fff;
  476 + box-sizing: border-box;
  477 + }
  478 + }
  479 + }
  480 + }
  481 +</style>
  482 +<style lang="scss">
  483 + .darkmenu {
  484 + .main {
  485 + aside {
  486 + .el-menu {
  487 + height: 100%;
  488 + background: #606060;
  489 +
  490 + .el-menu-item {
  491 + i {
  492 + color: white;
  493 + }
  494 +
  495 + color: white;
  496 + }
  497 +
  498 + .el-menu-item.is-active {
  499 + color: #e6a23c;
  500 + }
  501 +
  502 + .el-menu-item:hover, .el-menu-item:focus {
  503 + background-color: #1a4496;
  504 + }
  505 +
  506 + .el-submenu {
  507 + ul.el-menu.el-menu--inline {
  508 + background: #303030;
  509 + }
  510 +
  511 + .el-submenu__title {
  512 + color: white;
  513 +
  514 + i {
  515 + color: white;
  516 + }
  517 + }
  518 +
  519 + .el-submenu__title:hover {
  520 + background-color: #1a4496;
  521 + }
  522 + }
  523 + }
  524 + }
  525 + }
  526 + }
  527 +</style>
@@ -147,7 +147,7 @@ @@ -147,7 +147,7 @@
147 tableList: [], 147 tableList: [],
148 total: 0, 148 total: 0,
149 pageNum: 1, 149 pageNum: 1,
150 - pageSize: 100, 150 + pageSize: 10000,
151 listLoading: false, 151 listLoading: false,
152 sels: [],//列表选中列 152 sels: [],//列表选中列
153 //编辑界面是否显示 153 //编辑界面是否显示
@@ -35,12 +35,12 @@ @@ -35,12 +35,12 @@
35 </el-table-column> 35 </el-table-column>
36 <el-table-column prop="type" label="类型" min-width="100" sortable align="center"> 36 <el-table-column prop="type" label="类型" min-width="100" sortable align="center">
37 </el-table-column> 37 </el-table-column>
38 - <el-table-column prop="businessLicense" label="工商代码" min-width="180" align="center">  
39 - </el-table-column>  
40 - <el-table-column prop="customsRegCode" label="海关备案代码" min-width="150" align="center" >  
41 - </el-table-column>  
42 - <el-table-column prop="mqcode" label="海关通道编号" min-width="150" align="center">  
43 - </el-table-column> 38 +<!-- <el-table-column prop="businessLicense" label="工商代码" min-width="180" align="center">-->
  39 +<!-- </el-table-column>-->
  40 +<!-- <el-table-column prop="customsRegCode" label="海关备案代码" min-width="150" align="center" >-->
  41 +<!-- </el-table-column>-->
  42 +<!-- <el-table-column prop="mqcode" label="海关通道编号" min-width="150" align="center">-->
  43 +<!-- </el-table-column>-->
44 <el-table-column label="操作" width="230px" fixed="right" align="center"> 44 <el-table-column label="操作" width="230px" fixed="right" align="center">
45 <template slot-scope="scope"> 45 <template slot-scope="scope">
46 <el-button type="success" size="small" @click="handleAdd(scope.$index, scope.row)" style="width:97px;margin-left: 1px;">新增下级</el-button> 46 <el-button type="success" size="small" @click="handleAdd(scope.$index, scope.row)" style="width:97px;margin-left: 1px;">新增下级</el-button>
@@ -84,15 +84,15 @@ @@ -84,15 +84,15 @@
84 </el-option> 84 </el-option>
85 </el-select> 85 </el-select>
86 </el-form-item> 86 </el-form-item>
87 - <el-form-item label="工商企业代码" prop="businessLicense">  
88 - <el-input v-model="addForm.businessLicense" auto-complete="off" placeholder="社会信用代码或者组织机构代码"></el-input>  
89 - </el-form-item>  
90 - <el-form-item label="海关备案代码" prop="customsRegCode">  
91 - <el-input v-model="addForm.customsRegCode" auto-complete="off" placeholder="海关备案后返回的备案代码"></el-input>  
92 - </el-form-item>  
93 - <el-form-item label="海关通道编号" prop="mqcode">  
94 - <el-input v-model="addForm.mqcode" auto-complete="off" placeholder="海关通道编号"></el-input>  
95 - </el-form-item> 87 +<!-- <el-form-item label="工商企业代码" prop="businessLicense">-->
  88 +<!-- <el-input v-model="addForm.businessLicense" auto-complete="off" placeholder="社会信用代码或者组织机构代码"></el-input>-->
  89 +<!-- </el-form-item>-->
  90 +<!-- <el-form-item label="海关备案代码" prop="customsRegCode">-->
  91 +<!-- <el-input v-model="addForm.customsRegCode" auto-complete="off" placeholder="海关备案后返回的备案代码"></el-input>-->
  92 +<!-- </el-form-item>-->
  93 +<!-- <el-form-item label="海关通道编号" prop="mqcode">-->
  94 +<!-- <el-input v-model="addForm.mqcode" auto-complete="off" placeholder="海关通道编号"></el-input>-->
  95 +<!-- </el-form-item>-->
96 </el-form> 96 </el-form>
97 <div slot="footer" class="dialog-footer"> 97 <div slot="footer" class="dialog-footer">
98 <el-button @click.native="addFormVisible = false">取消</el-button> 98 <el-button @click.native="addFormVisible = false">取消</el-button>