e7b5ea3d5919bfd5a82a74430368176e.json 43 KB

1
  1. {"remainingRequest":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/src/views/system/menu/index.vue?vue&type=style&index=0&id=0304e458&lang=scss&scoped=true","dependencies":[{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/src/views/system/menu/index.vue","mtime":1708395041891},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/css-loader/dist/cjs.js","mtime":1708395146948},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/loaders/stylePostLoader.js","mtime":1708395147772},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/postcss-loader/src/index.js","mtime":1708395147225},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/sass-loader/dist/cjs.js","mtime":1708395146389},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/cache-loader/dist/cjs.js","mtime":1708395146433},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/index.js","mtime":1708395147382}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKDQouZGFzaGJvYXJkIHsNCiAgJi1jb250YWluZXIgew0KICAgIG1hcmdpbjogMzBweDsNCiAgfQ0KDQogICYtdGV4dCB7DQogICAgZm9udC1zaXplOiAzMHB4Ow0KICAgIGxpbmUtaGVpZ2h0OiA0NnB4Ow0KICB9DQp9DQoNCi5kYXNoYm9hcmQtY29udGFpbmVyIHsNCiAgLnNlYXJjaC1jb250ZW50IHsNCiAgICB3aWR0aDogMTAwJTsNCiAgICBoZWlnaHQ6IDc0cHg7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsNCiAgICBkaXNwbGF5OiBmbGV4Ow0KICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogICAgcGFkZGluZy1sZWZ0OiAxMHB4Ow0KDQogICAgLmVsLWlucHV0IHsNCiAgICAgIG1hcmdpbjogMCAxMHB4Ow0KICAgIH0NCg0KICAgIC5lbC1zZWxlY3Qgew0KICAgICAgbWFyZ2luOiAwIDEwcHg7DQogICAgfQ0KDQogICAgLnNlYXJjaC1idG4gew0KICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogICAgICBoZWlnaHQ6IDEwMCU7DQogICAgICBtYXJnaW4tbGVmdDogMTBweDsNCg0KICAgICAgZGl2IHsNCiAgICAgICAgLy8gbWFyZ2luOiAwIDZweDsNCiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICAgICAgICB3aWR0aDogODBweDsNCiAgICAgICAgaGVpZ2h0OiA0MHB4Ow0KICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7DQogICAgICAgIGZvbnQtc2l6ZTogMTRweDsNCiAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7DQogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgIH0NCg0KICAgICAgZGl2OmhvdmVyIHsNCiAgICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgfQ0KDQogICAgICAuc2VhcmNoIHsNCiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4Ow0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjc2NkREOw0KICAgICAgICBjb2xvcjogI0Y3RjhGQjsNCiAgICAgIH0NCg0KICAgICAgLnNlYXJjaDpob3ZlciB7DQogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0RDg1RjQ7DQogICAgICB9DQoNCiAgICAgIC5yZXNldCB7DQogICAgICAgIGNvbG9yOiAjMzMzMzM0Ow0KICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjRDdEN0Q3Ow0KICAgICAgfQ0KDQogICAgICAucmVzZXQ6aG92ZXIgew0KICAgICAgICBjb2xvcjogIzFGOUZGRjsNCiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzFGOUZGRjsNCiAgICAgIH0NCiAgICB9DQogIH0NCg0KICAudGFibGUtY29udGVudCB7DQogICAgbWFyZ2luLXRvcDogMTVweDsNCiAgICB3aWR0aDogMTAwJTsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOw0KICAgIHBhZGRpbmc6IDAgMjBweDsNCg0KICAgIC5idG4gew0KICAgICAgbWFyZ2luOiAxNXB4IDIwcHggMTVweCAwOw0KICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgZmxvYXQ6IGxlZnQ7DQogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgICB3aWR0aDogOThweDsNCiAgICAgIGhlaWdodDogMzRweDsNCiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsNCiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNBQkM3RkQ7DQogICAgICBsaW5lLWhlaWdodDogMzRweDsNCiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7DQogICAgICBmb250LXNpemU6IDE0cHg7DQogICAgICBjb2xvcjogIzIyNTBDODsNCiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNFN0VFRkY7DQogICAgfQ0KDQogICAgLmJ0bjpob3ZlciB7DQogICAgICBjb2xvcjogI0ZGRkZGRjsNCiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjUwQzg7DQogICAgICBib3JkZXI6IDFweCBzb2xpZCAjMjI1MEM4Ow0KICAgIH0NCg0KICAgIC5idG46YWN0aXZlIHsNCiAgICAgIGNvbG9yOiAjRkZGRkZGOw0KICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE5NERBNDsNCiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMxOTREQTQ7DQogICAgfQ0KDQogICAgLnN0YXJ0VXNpbmcgew0KICAgICAgICB3aWR0aDogNTRweDsNCiAgICAgICAgaGVpZ2h0OiAyNHB4Ow0KICAgICAgICBtYXJnaW46IDE0LjVweCBhdXRvIDA7DQogICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4Ow0KICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICAgICAgY29sb3I6ICMwMDk3NEQ7DQogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0U3RkFGMDsNCiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0JFRkRERDsNCiAgICAgIH0NCg0KICAgICAgLkRlYWN0aXZhdGUgew0KICAgICAgICB3aWR0aDogNTRweDsNCiAgICAgICAgaGVpZ2h0OiAyNHB4Ow0KICAgICAgICBtYXJnaW46IDE0LjVweCBhdXRvIDA7DQogICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4Ow0KICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICAgICAgY29sb3I6ICNGRjk5MzM7DQogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjNFODsNCiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0ZERTZDRjsNCiAgICAgIH0NCg0KICAgIC5vcGVyYXRlQnRuIHsNCiAgICAgIGRpc3BsYXk6IGZsZXg7DQogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsNCiAgICAgIGNvbG9yOiAjMUU5RkZGOw0KDQogICAgICBkaXYgew0KICAgICAgICBtYXJnaW46IDAgNXB4Ow0KICAgICAgICBjdXJzb3I6IHBvaW50ZXI7DQogICAgICB9DQogICAgfQ0KDQogICAgLnBhZ2luYXRpb24gew0KICAgICAgbWFyZ2luOiAxMHB4IDA7DQogICAgICB3aWR0aDogMTAwJTsNCiAgICAgIGhlaWdodDogMjBweDsNCg0KICAgICAgLmVsLXBhZ2luYXRpb24gew0KICAgICAgICBmbG9hdDogcmlnaHQ7DQogICAgICB9DQogICAgfSAgICANCiAgfQ0KDQp9DQoNCjo6di1kZWVwIC5lbC1kaWFsb2dfX2JvZHkgew0KICBwYWRkaW5nOiAyMHB4IDk1cHggIWltcG9ydGFudDsNCn0NCg0KLy8g6YCJ5Lit5ZCOcmFkaW/mlofmnKznmoTpopzoibINCjo6di1kZWVwIC5lbC1yYWRpb19faW5wdXQuaXMtY2hlY2tlZCsuZWwtcmFkaW9fX2xhYmVsIHsNCiAgY29sb3I6ICMyNzY2REQNCn0NCg0KLyogcmFkaW/pgInkuK3lkI7lsI/lnIbngrnnmoTpopzoibIgKi8NCjo6di1kZWVwIC5lbC1yYWRpb19faW5wdXQuaXMtY2hlY2tlZCAuZWwtcmFkaW9fX2lubmVyIHsNCiAgYmFja2dyb3VuZDogIzI3NjZERCAhaW1wb3J0YW50Ow0KICBib3JkZXItY29sb3I6ICMyNzY2REQgIWltcG9ydGFudDsNCn0NCg0KOjp2LWRlZXAuZWwtcmFkaW8tYnV0dG9uIHsNCiAgLy8gbWFyZ2luLXJpZ2h0OiAxNXB4Ow0KICBib3JkZXItcmFkaXVzOiA0cHg7DQoNCiAgLmVsLXJhZGlvLWJ1dHRvbl9faW5uZXIgew0KICAgIC8v5L+u5pS55oyJ6ZKu5qC35byPDQogICAgd2lkdGg6IDEyMHB4Ow0KICAgIGhlaWdodDogNDJweDsNCiAgICBiYWNrZ3JvdW5kOiAjRjdGOEZBOw0KICAgIGNvbG9yOiAjMzMzOw0KICAgIGJvcmRlcjogMCAhaW1wb3J0YW50Ow0KICB9DQoNCiAgLmVsLXJhZGlvLWJ1dHRvbl9fb3JpZy1yYWRpbzpjaGVja2VkKy5lbC1yYWRpby1idXR0b25fX2lubmVyIHsNCiAgICAvLyDkv67mlLnmjInpkq7mv4DmtLvmoLflvI8NCiAgICBjb2xvcjogI2ZmZjsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjc2NkREOw0KICAgIGJvcmRlci1jb2xvcjogIzI3NjZERDsNCiAgICBib3gtc2hhZG93OiAtMXB4IDAgMCAwICMyNzY2REQ7DQogIH0NCn0NCjo6di1kZWVwIC5lbC1pbnB1dC1udW1iZXIgLmVsLWlucHV0X19pbm5lcnsNCiAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50Ow0KfQ0K"},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2sBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/views/system/menu","sourcesContent":["<template>\r\n <div class=\"dashboard-container\">\r\n <div class=\"search-content\">\r\n <el-input clearable style=\"width: 220px;\" placeholder=\"请输入菜单名称\" v-model=\"searchData.menuName\"></el-input>\r\n <el-select style=\"width: 220px;\" clearable placeholder=\"请选择状态\" v-model=\"searchData.status\">\r\n <el-option v-for=\"item in statusOptions\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\">\r\n </el-option>\r\n </el-select>\r\n <div class=\"search-btn\">\r\n <div class=\"search\" @click=\"handleQuery\">查询</div>\r\n <div class=\"reset\" @click=\"resetSearchData()\">重置</div>\r\n </div>\r\n </div>\r\n <div class=\"table-content\">\r\n <div class=\"btn\" @click=\"handleAdd()\">\r\n <span class=\"icon font_family\">&#xe604;</span>\r\n 新增\r\n </div>\r\n <div class=\"btn\" @click=\"exportExcel\">\r\n <span class=\"icon font_family\">&#xe605;</span>\r\n <a>导出</a>\r\n </div>\r\n <el-table :indent=\"50\" v-loading=\"loading\" :data=\"menuList\" stripe ref=\"tableRef\" row-key=\"menuId\"\r\n :default-expand-all=\"false\" :tree-props=\"{ children: 'children', hasChildren: 'hasChildren' }\"\r\n highlight-current-row style=\"width: 100%;\">\r\n <el-table-column prop=\"menuName\" label=\"菜单名称\" :show-overflow-tooltip=\"true\" width=\"300\"></el-table-column>\r\n <el-table-column prop=\"icon\" label=\"图标\" align=\"center\" width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <svg-icon style=\"color: #1096DB;\" :icon-class=\"scope.row.icon\" />\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"orderNum\" label=\"排序\" width=\"60\"></el-table-column>\r\n <el-table-column prop=\"perms\" label=\"权限标识\" :show-overflow-tooltip=\"true\"></el-table-column>\r\n <el-table-column prop=\"component\" label=\"组件路径\" :show-overflow-tooltip=\"true\"></el-table-column>\r\n <el-table-column prop=\"status\" label=\"状态\" width=\"80\">\r\n <!-- <template #default=\"scope\">\r\n <dict-tag :options=\"sys_normal_disable\" :value=\"scope.row.status\" />\r\n </template> -->\r\n <template slot-scope=\"scope\">\r\n <div class=\"startUsing\" v-if=\"scope.row.status == '1'\">启用</div>\r\n <div class=\"Deactivate\" v-else>停用</div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"创建时间\" align=\"center\" prop=\"createTime\" width=\"170\">\r\n <template #default=\"scope\">\r\n <span>{{ parseTime(scope.row.createTime) }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" align=\"center\" width=\"200\" class-name=\"small-padding fixed-width\">\r\n <template #default=\"scope\">\r\n <el-button type=\"text\" style=\"color: #2866DD;\" @click=\"handleUpdate(scope.row)\"\r\n v-hasPermi=\"['system:menu:edit']\">修改</el-button>\r\n <el-divider direction=\"vertical\"></el-divider>\r\n <el-button type=\"text\" style=\"color: #2866DD;\" @click=\"handleAdd(scope.row)\">新增</el-button>\r\n <el-divider direction=\"vertical\"></el-divider>\r\n <el-button type=\"text\" style=\"color: #2866DD;\" @click=\"delMenu(scope.row)\"\r\n v-hasPermi=\"['system:menu:remove']\">删除</el-button>\r\n </template>\r\n </el-table-column>\r\n <template v-slot:empty>\r\n <svg-icon icon-class=\"search-none\" style=\"font-size: 64px;\" />\r\n <p>暂无数据</p>\r\n </template>\r\n </el-table>\r\n <!-- 修改菜单对话框 -->\r\n <el-dialog center @close=\"cancel\" :title=\"title\" v-if='this.open' :visible.sync=\"open\" width=\"636px\"\r\n :before-close=\"handleClose\" append-to-body>\r\n <div class=\"dialog_box\" style=\"height: 502px;overflow: auto;\">\r\n <el-form label-width=\"100px\" ref=\"editMenuRef\" :model=\"form\" :rules=\"rules\" label-position=\"right\">\r\n <el-form-item v-if=\"form.parentId !== 0\" label=\"上级菜单\" prop=\"parentName\" key=\"parentName\">\r\n <el-select style=\"width: 340px;\" clearable v-model=\"form.parentName\" placeholder=\"选择上级菜单\">\r\n <el-option :key=\"form.parentId\" :value=\"menuOptions.id\" :label=\"menuOptions.label\" hidden />\r\n <el-tree :data=\"menuOptions\" :props=\"defaultProps\" :node-key=\"menuOptions.id\" accordion highlight-current\r\n @node-click=\"handleNodeClick\" /></el-select>\r\n </el-form-item>\r\n <el-form-item label=\"菜单类型\" prop=\"menuType\" key=\"menuType\">\r\n <el-radio-group v-model=\"form.menuType\">\r\n <el-radio label=\"M\">目录</el-radio>\r\n <el-radio label=\"C\">菜单</el-radio>\r\n <el-radio label=\"F\">按钮</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item v-if=\"form.menuType != 'F'\" label=\"菜单图标\" prop=\"icon\">\r\n <el-popover width=\"290\" trigger=\"click\">\r\n <div class=\"svgList\">\r\n <el-tabs v-model=\"activeName\" type=\"card\">\r\n <el-tab-pane v-for=\"item in titleData\" :label=\"item.title\" :name=\"item.index\">\r\n <svg-icon style=\"display: inline-block;margin-right: 5px;\" @click=\"editSvg(items)\"\r\n v-for=\"items in svgData[item.index - 1]\" :icon-class=\"items\" />\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n <el-input style=\"width: 340px;\" slot=\"reference\" placeholder=\"请选择菜单图标\" v-model=\"form.icon\">\r\n <template #prefix>\r\n <svg-icon v-if=\"form.icon\" :icon-class=\"form.icon\" class=\"el-input__icon\"\r\n style=\"height: 32px;width: 16px;position: relative;top: 5px;left: 5px;\" />\r\n <el-icon v-else style=\"height: 32px;width: 16px;position: relative;top: 5px;left: 5px;\">\r\n <search />\r\n </el-icon>\r\n </template></el-input>\r\n </el-popover>\r\n </el-form-item>\r\n <el-form-item label=\"菜单名称\" prop=\"menuName\" key=\"menuName\">\r\n <el-input style=\"width: 340px;\" v-model=\"form.menuName\" placeholder=\"请输入菜单名称\" />\r\n </el-form-item>\r\n <el-form-item label=\"显示排序\" prop=\"orderNum\" key=\"orderNum\">\r\n <el-input-number placeholder=\"请输入显示排序\" v-model=\"form.orderNum\" controls-position=\"right\" :step=\"1\" style=\"width: 340px;\"\r\n :min=\"1\" />\r\n </el-form-item>\r\n <el-form-item label=\"是否外链\" v-if=\"form.menuType != 'F'\" key=\"isFrame\">\r\n <el-radio-group v-model=\"form.isFrame\">\r\n <el-radio label=\"1\">是</el-radio>\r\n <el-radio label=\"2\">否</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"路由地址\" prop=\"path\" key=\"path\">\r\n <el-input style=\"width: 340px;\" v-model=\"form.path\" placeholder=\"请输入路由地址\" />\r\n </el-form-item>\r\n <el-form-item label=\"组件路径\" v-if=\"form.menuType == 'C'\" prop=\"component\" key=\"component\">\r\n <el-input style=\"width: 340px;\" v-model=\"form.component\" placeholder=\"请输入组件路径\" />\r\n </el-form-item>\r\n <el-form-item label=\"权限字符\" v-if=\"form.menuType != 'M'\" prop=\"perms\" key=\"perms\">\r\n <el-input style=\"width: 340px;\" v-model=\"form.perms\" placeholder=\"请输入权限标识\" maxlength=\"100\" />\r\n </el-form-item>\r\n <el-form-item label=\"路由参数\" v-if=\"form.menuType == 'C'\" key=\"query\">\r\n <el-input style=\"width: 340px;\" v-model=\"form.query\" placeholder=\"请输入路由参数\" maxlength=\"255\" />\r\n </el-form-item>\r\n <el-form-item label=\"是否缓存\" v-if=\"form.menuType == 'C'\" key=\"isCache\">\r\n <el-radio-group v-model=\"form.isCache\">\r\n <el-radio-button label=\"1\">缓存</el-radio-button>\r\n <el-radio-button label=\"2\">不缓存</el-radio-button>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"显示状态\" v-if=\"form.menuType != 'F'\" key=\"visible\">\r\n <el-radio-group v-model=\"form.visible\">\r\n <el-radio-button label=\"1\">显示</el-radio-button>\r\n <el-radio-button label=\"2\">隐藏</el-radio-button>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"菜单状态\" v-if=\"form.menuType != 'F'\" key=\"status\">\r\n <el-radio-group v-model=\"form.status\">\r\n <el-radio-button label=\"1\">启用</el-radio-button>\r\n <el-radio-button label=\"2\">停用</el-radio-button>\r\n </el-radio-group>\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n <template #footer>\r\n <div class=\"dialog-footer\">\r\n <div class=\"search\" @click=\"editMenu\">保 存</div>\r\n <div class=\"reset\" @click=\"cancel()\">取 消</div>\r\n </div>\r\n </template>\r\n </el-dialog>\r\n <!-- 添加菜单对话框 -->\r\n <el-dialog center :title=\"addMenuTitle\" v-if='this.addMenuOpen' :visible.sync=\"addMenuOpen\" width=\"636px\"\r\n :before-close=\"handleClose\" append-to-body>\r\n <div class=\"dialog_box\" style=\"height: 502px;overflow: auto;\">\r\n <el-form label-width=\"100px\" ref=\"addMenuRef\" :model=\"addMenuForm\" :rules=\"addRules\" label-position=\"right\">\r\n <el-form-item v-if=\"isShoeParentName\" label=\"上级菜单\" prop=\"parentName\" key=\"parentName\">\r\n <el-select style=\"width: 340px;\" :disabled=\"true\" clearable v-model=\"addMenuForm.parentName\"\r\n placeholder=\"选择上级菜单\">\r\n <el-option :key=\"addMenuForm.parentId\" :value=\"menuOptions.id\" :label=\"menuOptions.label\" hidden />\r\n <el-tree :data=\"menuOptions\" :props=\"defaultProps\" :node-key=\"menuOptions.id\" accordion highlight-current\r\n @node-click=\"handleNodeClick\" /></el-select>\r\n </el-form-item>\r\n <el-form-item label=\"菜单类型\" prop=\"menuType\" key=\"menuType\">\r\n <el-radio-group v-model=\"addMenuForm.menuType\">\r\n <el-radio label=\"M\">目录</el-radio>\r\n <el-radio label=\"C\">菜单</el-radio>\r\n <el-radio label=\"F\">按钮</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item v-if=\"addMenuForm.menuType != 'F'\" label=\"菜单图标\" prop=\"icon\">\r\n <el-popover width=\"290\" trigger=\"click\">\r\n <div class=\"svgList\">\r\n <el-tabs v-model=\"activeName\" type=\"card\">\r\n <el-tab-pane v-for=\"item in titleData\" :label=\"item.title\" :name=\"item.index\">\r\n <svg-icon style=\"display: inline-block;margin-right: 5px;\" @click=\"addSvg(items)\"\r\n v-for=\"items in svgData[item.index - 1]\" :icon-class=\"items\" />\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n <el-input class=\"iconInput\" style=\"width: 340px;\" slot=\"reference\" v-model=\"addMenuForm.icon\" placeholder=\"请选择菜单图标\">\r\n <template #prefix>\r\n <svg-icon v-if=\"addMenuForm.icon\" :icon-class=\"addMenuForm.icon\" class=\"el-input__icon\"\r\n style=\"height: 32px;width: 16px;position: relative;top: 5px;left: 5px;\" />\r\n <el-icon v-else style=\"height: 32px;width: 16px;position: relative;top: 5px;left: 5px;\">\r\n <search />\r\n </el-icon>\r\n </template></el-input>\r\n </el-popover>\r\n </el-form-item>\r\n <el-form-item label=\"菜单名称\" prop=\"menuName\" key=\"menuName\">\r\n <el-input style=\"width: 340px;\" v-model=\"addMenuForm.menuName\" placeholder=\"请输入菜单名称\" />\r\n </el-form-item>\r\n <el-form-item label=\"显示排序\" prop=\"orderNum\" key=\"orderNum\">\r\n <el-input-number placeholder=\"请输入显示排序\" v-model=\"addMenuForm.orderNum\" controls-position=\"right\" :step=\"1\" style=\"width: 340px;\"\r\n :min=\"1\" />\r\n </el-form-item>\r\n <el-form-item v-if=\"addMenuForm.menuType != 'F'\" key=\"isFrame\">\r\n <template #label>\r\n <span>\r\n 是否外链\r\n <el-tooltip content=\"选择是外链则路由地址需要以`http(s)://`开头\" placement=\"top\">\r\n <el-icon><question-filled /></el-icon>\r\n </el-tooltip>\r\n </span>\r\n </template>\r\n <el-radio-group v-model=\"addMenuForm.isFrame\">\r\n <el-radio label=\"1\">是</el-radio>\r\n <el-radio label=\"2\">否</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"路由地址\" prop=\"path\" key=\"path\">\r\n <el-input style=\"width: 340px;\" v-model=\"addMenuForm.path\" placeholder=\"请输入路由地址\" />\r\n </el-form-item>\r\n <el-form-item label=\"组件路径\" prop=\"component\" v-if=\"addMenuForm.menuType == 'C'\" key=\"component\">\r\n <el-input style=\"width: 340px;\" v-model=\"addMenuForm.component\" placeholder=\"请输入组件路径\" />\r\n </el-form-item> \r\n <el-form-item label=\"路由参数\" v-if=\"addMenuForm.menuType !== 'F'\" key=\"query\">\r\n <el-input style=\"width: 340px;\" v-model=\"addMenuForm.query\" placeholder=\"请输入路由参数\" maxlength=\"255\" />\r\n </el-form-item>\r\n <el-form-item label=\"权限字符\" v-if=\"addMenuForm.menuType !== 'M'\" prop=\"perms\" key=\"perms\">\r\n <el-input style=\"width: 340px;\" v-model=\"addMenuForm.perms\" placeholder=\"请输入权限字符\" maxlength=\"100\" />\r\n </el-form-item> \r\n <el-form-item label=\"是否缓存\" v-if=\"addMenuForm.menuType == 'C'\" key=\"isCache\">\r\n <el-radio-group v-model=\"addMenuForm.isCache\">\r\n <el-radio-button label=\"1\">缓存</el-radio-button>\r\n <el-radio-button label=\"2\">不缓存</el-radio-button>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"显示状态\" v-if=\"addMenuForm.menuType != 'F'\" key=\"visible\">\r\n <el-radio-group v-model=\"addMenuForm.visible\">\r\n <el-radio-button label=\"1\">显示</el-radio-button>\r\n <el-radio-button label=\"2\">隐藏</el-radio-button>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"菜单状态\" v-if=\"addMenuForm.menuType != 'F'\" key=\"status\">\r\n <el-radio-group v-model=\"addMenuForm.status\">\r\n <el-radio-button label=\"1\">启用</el-radio-button>\r\n <el-radio-button label=\"2\">停用</el-radio-button>\r\n </el-radio-group>\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n <template #footer>\r\n <div class=\"c\">\r\n <div class=\"search\" @click=\"submitForm\">保 存</div>\r\n <div class=\"reset\" @click=\"editCancel()\">取 消</div>\r\n </div>\r\n </template>\r\n </el-dialog>\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nconst Buildings = require.context('@/icons/Buildings', false, /\\.svg$/)\r\nconst Business = require.context('@/icons/Business', false, /\\.svg$/)\r\nconst Device = require.context('@/icons/Device', false, /\\.svg$/)\r\nconst Document = require.context('@/icons/Document', false, /\\.svg$/)\r\nconst Others = require.context('@/icons/Others', false, /\\.svg$/)\r\nconst svg = require.context('@/icons/svg', false, /\\.svg$/)\r\nconst System = require.context('@/icons/System', false, /\\.svg$/)\r\nconst User = require.context('@/icons/User', false, /\\.svg$/)\r\nconst requireAll = requireContext => requireContext.keys().map(requireContext)\r\n\r\nconst UserData = requireAll(User)//用户\r\nconst BuildingsData = requireAll(Buildings)//建筑\r\nconst BusinessData = requireAll(Business)//办公\r\nconst DeviceData = requireAll(Device)//设备\r\nconst DocumentData = requireAll(Document)//文档\r\nconst SystemData = requireAll(System)//系统\r\nconst OthersData = requireAll(Others)//其他\r\nconst svgData = requireAll(svg)//默认\r\nimport { mapGetters } from 'vuex'\r\nimport { getMenuTree, delMenu, getMenuList, addMenu, editMenu, exportMenuExcel } from '@/api/sysManage'\r\nexport default {\r\n name: 'home',\r\n computed: {\r\n ...mapGetters([\r\n 'name'\r\n ])\r\n },\r\n components: {\r\n },\r\n data() {\r\n return {\r\n activeName: '1',\r\n titleData: [\r\n {\r\n index: '1',\r\n title: '用户'\r\n },\r\n {\r\n index: '2',\r\n title: '建筑'\r\n },\r\n {\r\n index: '3',\r\n title: '办公'\r\n },\r\n {\r\n index: '4',\r\n title: '设备'\r\n },\r\n {\r\n index: '5',\r\n title: '文档'\r\n },\r\n {\r\n index: '6',\r\n title: '系统'\r\n },\r\n {\r\n index: '7',\r\n title: '其他'\r\n },\r\n {\r\n index: '8',\r\n title: '默认'\r\n },\r\n ],\r\n svgData: [],\r\n searchData: {\r\n menuName: '',\r\n status: ''\r\n },\r\n showChooseIcon: false,\r\n form: {\r\n menuId: undefined,\r\n parentId: 0,\r\n parentName: \"\",\r\n menuName: undefined,\r\n icon: undefined,\r\n menuType: \"M\",\r\n orderNum: undefined,\r\n isFrame: \"1\",\r\n isCache: \"1\",\r\n visible: \"1\",\r\n status: \"1\"\r\n },\r\n addMenuForm: {\r\n menuId: undefined,\r\n parentId: 0,\r\n parentName: \"\",\r\n menuName: undefined,\r\n icon: undefined,\r\n menuType: \"M\",\r\n orderNum: undefined,\r\n isFrame: \"1\",\r\n isCache: \"1\",\r\n visible: \"1\",\r\n status: \"1\"\r\n },\r\n isShoeParentName: false,\r\n parentName: '',\r\n open: false,\r\n addMenuOpen: false,\r\n menuList: [],\r\n title: '',\r\n addMenuTitle: '',\r\n loading: true,\r\n menuOptions: [],\r\n statusOptions: [\r\n {\r\n label: '启用',\r\n value: '1'\r\n },\r\n {\r\n label: '停用',\r\n value: '2'\r\n }\r\n ],\r\n rules: {\r\n parentName: [{ required: true, message: \"请选择父级菜单\", trigger: \"blur\" }],\r\n parentId: [{ required: true, message: \"请选择父级菜单\", trigger: \"blur\" }],\r\n menuName: [{ required: true, message: \"菜单名称不能为空\", trigger: \"blur\" }],\r\n orderNum: [{ required: true, message: \"菜单顺序不能为空\", trigger: \"blur\" }],\r\n path: [{ required: true, message: \"路由地址不能为空\", trigger: \"blur\" }],\r\n perms: [{ required: true, message: \"权限字符不能为空\", trigger: \"blur\" }]\r\n },\r\n addRules: {\r\n parentName: [{ required: true, message: \"请选择父级菜单\", trigger: \"blur\" }],\r\n parentId: [{ required: true, message: \"请选择父级菜单\", trigger: \"blur\" }],\r\n menuName: [{ required: true, message: \"菜单名称不能为空\", trigger: \"blur\" }],\r\n orderNum: [{ required: true, message: \"菜单顺序不能为空\", trigger: \"blur\" }],\r\n path: [{ required: true, message: \"路由地址不能为空\", trigger: \"blur\" }],\r\n perms: [{ required: true, message: \"权限字符不能为空\", trigger: \"blur\" }], \r\n },\r\n iconSelectRef: null,\r\n }\r\n },\r\n created() {\r\n this.svgData = [this.handleArr(UserData), this.handleArr(BuildingsData), this.handleArr(BusinessData), this.handleArr(DeviceData), this.handleArr(DocumentData), this.handleArr(SystemData), this.handleArr(OthersData), this.handleArr(svgData)]\r\n this.getMenuList(this.searchData)\r\n },\r\n methods: {\r\n editSvg(items) {\r\n this.form.icon = items\r\n },\r\n addSvg(items) {\r\n this.addMenuForm.icon = items\r\n },\r\n handleArr(arr) {\r\n let tempArr = []\r\n arr.forEach(item => {\r\n let str = item.default.id.slice(5)\r\n tempArr.push(str)\r\n })\r\n return tempArr\r\n },\r\n cancel() {\r\n this.getMenuList(this.searchData)\r\n this.open = false\r\n },\r\n editCancel() {\r\n this.getMenuList(this.searchData)\r\n this.addMenuOpen = false\r\n },\r\n exportExcel() {\r\n exportMenuExcel('/system/menu/export').then(res => {\r\n // const blob = new Blob([res], { type: 'text/plain;charset=utf-8' });\r\n // const url = window.URL.createObjectURL(blob);\r\n // const a = document.createElement('a');\r\n // a.href = url;\r\n // a.download = '菜单列表.xlsx';\r\n // a.click();\r\n // window.URL.revokeObjectURL(url);\r\n\r\n\r\n if (res.type == \"application/json\") {\r\n const reader = new FileReader(); \r\n reader.readAsText(res, 'utf-8'); \r\n reader.onload = function () {\r\n const msg = JSON.parse(reader.result);\r\n if(msg.code == 200){\r\n const blob = new Blob([res], { type: 'text/plain;charset=utf-8' });\r\n const url = window.URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = '菜单列表.xlsx';\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n } else{\r\n Message({\r\n type: 'error',\r\n message: msg.msg\r\n });\r\n } \r\n }\r\n }else{\r\n const blob = new Blob([res], { type: 'text/plain;charset=utf-8' });\r\n const url = window.URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = '菜单列表.xlsx';\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n }\r\n\r\n\r\n\r\n })\r\n },\r\n submitForm() {\r\n this.$refs.addMenuRef.validate(valid => {\r\n if (valid) {\r\n addMenu(this.addMenuForm).then(res => {\r\n if (res.code == 200) {\r\n this.$message({\r\n type: 'success',\r\n message: '添加成功!'\r\n });\r\n this.getMenuList(this.searchData)\r\n this.addMenuOpen = false\r\n } else {\r\n this.$message({\r\n type: 'error',\r\n message: res.msg\r\n });\r\n }\r\n })\r\n }\r\n })\r\n },\r\n editMenu() {\r\n this.$refs.editMenuRef.validate(valid => {\r\n if (valid) {\r\n let params = this.form\r\n editMenu(params).then(res => {\r\n if (res.code == 200) {\r\n this.$message({\r\n type: 'success',\r\n message: '修改成功!'\r\n });\r\n this.getMenuList(this.searchData)\r\n this.open = false\r\n } else {\r\n this.$message({\r\n type: 'error',\r\n message: res.msg\r\n });\r\n }\r\n })\r\n }\r\n })\r\n },\r\n handleUpdate(row) {\r\n this.form.menuId = row.menuId\r\n this.title = \"修改菜单\"\r\n this.getTreeselect();\r\n this.form = row\r\n this.open = true\r\n },\r\n getMenuList(params) {\r\n this.loading = true\r\n getMenuList(params).then(res => {\r\n if (res.code == 200) {\r\n this.menuList = this.handleTree(res.data, \"menuId\")\r\n this.loading = false\r\n } else {\r\n this.$message({\r\n type: 'error',\r\n message: res.msg\r\n })\r\n }\r\n\r\n })\r\n },\r\n resetSearchData() {\r\n this.searchData = {\r\n menuName: '',\r\n status: ''\r\n }\r\n this.getMenuList(this.searchData)\r\n },\r\n showSelectIcon() {\r\n this.iconSelectRef.reset();\r\n this.showChooseIcon = true;\r\n },\r\n selected(name) {\r\n this.form.icon = name;\r\n this.showChooseIcon = false;\r\n },\r\n handleNodeClick(v) {\r\n this.form.parentId = v.id\r\n this.form.parentName = v.label\r\n },\r\n handleAdd(row) {\r\n this.addMenuForm = {\r\n menuId: undefined,\r\n parentId: 0,\r\n parentName: \"\",\r\n menuName: undefined,\r\n icon: undefined,\r\n menuType: \"M\",\r\n orderNum: undefined,\r\n isFrame: \"1\",\r\n isCache: \"1\",\r\n visible: \"1\",\r\n status: \"1\"\r\n }\r\n if (row) {\r\n this.isShoeParentName = true\r\n this.addMenuForm.parentName = row.menuName\r\n this.addMenuForm.parentId = row.menuId\r\n } else {\r\n this.isShoeParentName = false\r\n }\r\n\r\n this.getTreeselect();\r\n this.addMenuOpen = true;\r\n this.addMenuTitle = \"新增菜单\";\r\n },\r\n reset() {\r\n this.form = {\r\n menuId: undefined,\r\n parentId: 0,\r\n menuName: undefined,\r\n icon: undefined,\r\n menuType: \"M\",\r\n orderNum: undefined,\r\n isFrame: \"1\",\r\n isCache: \"1\",\r\n visible: \"1\",\r\n status: \"1\"\r\n }\r\n },\r\n getTreeselect() {\r\n this.menuOptions = [];\r\n getMenuTree().then(response => {\r\n this.menuOptions = response.data\r\n })\r\n },\r\n handleQuery() {\r\n this.getMenuList(this.searchData)\r\n },\r\n delMenu(scope) {\r\n this.$confirm('确定要删除吗?', '信息提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n delMenu(scope.menuId).then(res => {\r\n if (res.code == 200) {\r\n this.$message({\r\n type: 'success',\r\n message: '删除成功!'\r\n });\r\n this.getMenuList(this.searchData)\r\n } else {\r\n this.$message({\r\n type: 'error',\r\n message: res.msg\r\n });\r\n }\r\n })\r\n }).catch(() => {\r\n this.$message({\r\n type: 'info',\r\n message: '已取消删除'\r\n });\r\n })\r\n\r\n },\r\n handleTree(data, id, parentId, children) {\r\n let config = {\r\n id: id || 'id',\r\n parentId: parentId || 'parentId',\r\n childrenList: children || 'children'\r\n };\r\n\r\n var childrenListMap = {};\r\n var nodeIds = {};\r\n var tree = [];\r\n\r\n for (let d of data) {\r\n let parentId = d[config.parentId];\r\n if (childrenListMap[parentId] == null) {\r\n childrenListMap[parentId] = [];\r\n }\r\n nodeIds[d[config.id]] = d;\r\n childrenListMap[parentId].push(d);\r\n }\r\n\r\n for (let d of data) {\r\n let parentId = d[config.parentId];\r\n if (nodeIds[parentId] == null) {\r\n tree.push(d);\r\n }\r\n }\r\n\r\n for (let t of tree) {\r\n adaptToChildrenList(t);\r\n }\r\n\r\n function adaptToChildrenList(o) {\r\n if (childrenListMap[o[config.id]] !== null) {\r\n o[config.childrenList] = childrenListMap[o[config.id]];\r\n }\r\n if (o[config.childrenList]) {\r\n for (let c of o[config.childrenList]) {\r\n adaptToChildrenList(c);\r\n }\r\n }\r\n }\r\n return tree;\r\n },\r\n parseTime(time, pattern) {\r\n if (arguments.length === 0 || !time) {\r\n return null\r\n }\r\n const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'\r\n let date\r\n if (typeof time === 'object') {\r\n date = time\r\n } else {\r\n if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {\r\n time = parseInt(time)\r\n } else if (typeof time === 'string') {\r\n time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\\.[\\d]{3}/gm), '');\r\n }\r\n if ((typeof time === 'number') && (time.toString().length === 10)) {\r\n time = time * 1000\r\n }\r\n date = new Date(time)\r\n }\r\n const formatObj = {\r\n y: date.getFullYear(),\r\n m: date.getMonth() + 1,\r\n d: date.getDate(),\r\n h: date.getHours(),\r\n i: date.getMinutes(),\r\n s: date.getSeconds(),\r\n a: date.getDay()\r\n }\r\n const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\r\n let value = formatObj[key]\r\n // Note: getDay() returns 0 on Sunday\r\n if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }\r\n if (result.length > 0 && value < 10) {\r\n value = '0' + value\r\n }\r\n return value || 0\r\n })\r\n return time_str\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.dashboard {\r\n &-container {\r\n margin: 30px;\r\n }\r\n\r\n &-text {\r\n font-size: 30px;\r\n line-height: 46px;\r\n }\r\n}\r\n\r\n.dashboard-container {\r\n .search-content {\r\n width: 100%;\r\n height: 74px;\r\n background-color: #fff;\r\n display: flex;\r\n align-items: center;\r\n padding-left: 10px;\r\n\r\n .el-input {\r\n margin: 0 10px;\r\n }\r\n\r\n .el-select {\r\n margin: 0 10px;\r\n }\r\n\r\n .search-btn {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n margin-left: 10px;\r\n\r\n div {\r\n // margin: 0 6px;\r\n display: inline-block;\r\n width: 80px;\r\n height: 40px;\r\n border-radius: 2px;\r\n font-size: 14px;\r\n line-height: 40px;\r\n text-align: center;\r\n }\r\n\r\n div:hover {\r\n cursor: pointer;\r\n }\r\n\r\n .search {\r\n margin-right: 10px;\r\n background-color: #2766DD;\r\n color: #F7F8FB;\r\n }\r\n\r\n .search:hover {\r\n background-color: #4D85F4;\r\n }\r\n\r\n .reset {\r\n color: #333334;\r\n border: 1px solid #D7D7D7;\r\n }\r\n\r\n .reset:hover {\r\n color: #1F9FFF;\r\n border: 1px solid #1F9FFF;\r\n }\r\n }\r\n }\r\n\r\n .table-content {\r\n margin-top: 15px;\r\n width: 100%;\r\n background-color: #fff;\r\n padding: 0 20px;\r\n\r\n .btn {\r\n margin: 15px 20px 15px 0;\r\n cursor: pointer;\r\n float: left;\r\n text-align: center;\r\n width: 98px;\r\n height: 34px;\r\n border-radius: 2px;\r\n border: 1px solid #ABC7FD;\r\n line-height: 34px;\r\n font-weight: 400;\r\n font-size: 14px;\r\n color: #2250C8;\r\n background-color: #E7EEFF;\r\n }\r\n\r\n .btn:hover {\r\n color: #FFFFFF;\r\n background-color: #2250C8;\r\n border: 1px solid #2250C8;\r\n }\r\n\r\n .btn:active {\r\n color: #FFFFFF;\r\n background-color: #194DA4;\r\n border: 1px solid #194DA4;\r\n }\r\n\r\n .startUsing {\r\n width: 54px;\r\n height: 24px;\r\n margin: 14.5px auto 0;\r\n line-height: 24px;\r\n text-align: center;\r\n font-size: 12px;\r\n color: #00974D;\r\n border-radius: 4px;\r\n background-color: #E7FAF0;\r\n border: 1px solid #BEFDDD;\r\n }\r\n\r\n .Deactivate {\r\n width: 54px;\r\n height: 24px;\r\n margin: 14.5px auto 0;\r\n line-height: 24px;\r\n text-align: center;\r\n font-size: 12px;\r\n color: #FF9933;\r\n border-radius: 4px;\r\n background-color: #FFF3E8;\r\n border: 1px solid #FDE6CF;\r\n }\r\n\r\n .operateBtn {\r\n display: flex;\r\n justify-content: center;\r\n color: #1E9FFF;\r\n\r\n div {\r\n margin: 0 5px;\r\n cursor: pointer;\r\n }\r\n }\r\n\r\n .pagination {\r\n margin: 10px 0;\r\n width: 100%;\r\n height: 20px;\r\n\r\n .el-pagination {\r\n float: right;\r\n }\r\n } \r\n }\r\n\r\n}\r\n\r\n::v-deep .el-dialog__body {\r\n padding: 20px 95px !important;\r\n}\r\n\r\n// 选中后radio文本的颜色\r\n::v-deep .el-radio__input.is-checked+.el-radio__label {\r\n color: #2766DD\r\n}\r\n\r\n/* radio选中后小圆点的颜色 */\r\n::v-deep .el-radio__input.is-checked .el-radio__inner {\r\n background: #2766DD !important;\r\n border-color: #2766DD !important;\r\n}\r\n\r\n::v-deep.el-radio-button {\r\n // margin-right: 15px;\r\n border-radius: 4px;\r\n\r\n .el-radio-button__inner {\r\n //修改按钮样式\r\n width: 120px;\r\n height: 42px;\r\n background: #F7F8FA;\r\n color: #333;\r\n border: 0 !important;\r\n }\r\n\r\n .el-radio-button__orig-radio:checked+.el-radio-button__inner {\r\n // 修改按钮激活样式\r\n color: #fff;\r\n background-color: #2766DD;\r\n border-color: #2766DD;\r\n box-shadow: -1px 0 0 0 #2766DD;\r\n }\r\n}\r\n::v-deep .el-input-number .el-input__inner{\r\n text-align: left !important;\r\n}\r\n</style>\r\n"]}]}