Files
education/frontend/node_modules/.cache/vue-loader/3299b6e25eb3b271f87cc0a8235fd0bc.json
T

1 line
9.6 KiB
JSON

{"remainingRequest":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\monitor\\operlog\\detail.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\monitor\\operlog\\detail.vue","mtime":1787567871630},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\babel-loader\\lib\\index.js","mtime":1787309793142},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js","mtime":1787309793790}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICdPcGVybG9nRGV0YWlsJywNCiAgZGljdHM6IFsnc3lzX29wZXJfdHlwZSddLA0KICBwcm9wczogew0KICAgIHZpc2libGU6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSwNCiAgICByb3c6IHsgdHlwZTogT2JqZWN0LCBkZWZhdWx0OiAoKSA9PiAoe30pIH0NCiAgfSwNCiAgY29tcHV0ZWQ6IHsNCiAgICBmb3JtKCkgeyByZXR1cm4gdGhpcy5yb3cgfHwge30gfSwNCiAgICB0eXBlTGFiZWwoKSB7IHJldHVybiB0aGlzLnNlbGVjdERpY3RMYWJlbCh0aGlzLmRpY3QudHlwZS5zeXNfb3Blcl90eXBlLCB0aGlzLmZvcm0uYnVzaW5lc3NUeXBlKSB8fCAnLScgfQ0KICB9LA0KICBtZXRob2RzOiB7DQogICAgZm9ybWF0SnNvbihzdHIpIHsNCiAgICAgIGlmICghc3RyKSByZXR1cm4gJ++8iOaXoOaVsOaNru+8iScNCiAgICAgIHRyeSB7IHJldHVybiBKU09OLnN0cmluZ2lmeShKU09OLnBhcnNlKHN0ciksIG51bGwsIDIpIH0gY2F0Y2ggeyByZXR1cm4gc3RyIH0NCiAgICB9LA0KICAgIGNvcHlUZXh0KHN0cikgew0KICAgICAgY29uc3QgdGV4dCA9IHRoaXMuZm9ybWF0SnNvbihzdHIpDQogICAgICBpZiAobmF2aWdhdG9yLmNsaXBib2FyZCkgew0KICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KS50aGVuKCgpID0+IHRoaXMuJG1lc3NhZ2UoeyBtZXNzYWdlOiAn5bey5aSN5Yi2JywgdHlwZTogJ3N1Y2Nlc3MnLCBkdXJhdGlvbjogMTUwMCB9KSkNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIGNvbnN0IHRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKQ0KICAgICAgICB0YS52YWx1ZSA9IHRleHQNCiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0YSkNCiAgICAgICAgdGEuc2VsZWN0KCkNCiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKQ0KICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRhKQ0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsgbWVzc2FnZTogJ+W3suWkjeWIticsIHR5cGU6ICdzdWNjZXNzJywgZHVyYXRpb246IDE1MDAgfSkNCiAgICAgIH0NCiAgICB9DQogIH0NCn0NCg=="},{"version":3,"sources":["detail.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"detail.vue","sourceRoot":"src/views/monitor/operlog","sourcesContent":["<template>\r\n <el-dialog title=\"操作日志详细\" :visible.sync=\"visible\" width=\"780px\" append-to-body @close=\"$emit('update:visible', false)\">\r\n <div class=\"detail-wrap\">\r\n <!-- 基本信息 -->\r\n <div class=\"detail-card\">\r\n <div class=\"detail-card-title\"><i class=\"el-icon-info\"></i> 基本信息</div>\r\n <el-row class=\"detail-row\">\r\n <el-col :span=\"12\">\r\n <div class=\"detail-item\"><span class=\"detail-label\">操作模块</span><span class=\"detail-value\">{{ form.title }}</span></div>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <div class=\"detail-item\"><span class=\"detail-label\">业务类型</span><span class=\"detail-value\">{{ typeLabel }}</span></div>\r\n </el-col>\r\n </el-row>\r\n <el-row class=\"detail-row\">\r\n <el-col :span=\"12\">\r\n <div class=\"detail-item\"><span class=\"detail-label\">操作时间</span><span class=\"detail-value\">{{ form.operTime }}</span></div>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <div class=\"detail-item\">\r\n <span class=\"detail-label\">执行状态</span>\r\n <el-tag v-if=\"form.status === 0\" type=\"success\" size=\"small\"><i class=\"el-icon-check\"></i> 正常</el-tag>\r\n <el-tag v-else type=\"danger\" size=\"small\"><i class=\"el-icon-close\"></i> 异常</el-tag>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n </div>\r\n\r\n <!-- 操作人员 -->\r\n <div class=\"detail-card\">\r\n <div class=\"detail-card-title\"><i class=\"el-icon-user\"></i> 操作人员</div>\r\n <el-row class=\"detail-row\">\r\n <el-col :span=\"12\">\r\n <div class=\"detail-item\"><span class=\"detail-label\">操作人员</span><span class=\"detail-value\">{{ form.operName }}</span></div>\r\n </el-col>\r\n <el-col :span=\"12\" v-if=\"form.deptName\">\r\n <div class=\"detail-item\"><span class=\"detail-label\">所属部门</span><span class=\"detail-value\">{{ form.deptName }}</span></div>\r\n </el-col>\r\n </el-row>\r\n <el-row class=\"detail-row\">\r\n <el-col :span=\"24\">\r\n <div class=\"detail-item\">\r\n <span class=\"detail-label\">操作地址</span>\r\n <span class=\"detail-value\">{{ form.operIp }}&nbsp;&nbsp;<span class=\"detail-location\">{{ form.operLocation }}</span></span>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n </div>\r\n\r\n <!-- 请求信息 -->\r\n <div class=\"detail-card\">\r\n <div class=\"detail-card-title\"><i class=\"el-icon-sort\"></i> 请求信息</div>\r\n <el-row class=\"detail-row\">\r\n <el-col :span=\"24\">\r\n <div class=\"detail-item\">\r\n <span class=\"detail-label\">请求地址</span>\r\n <span class=\"detail-value\">\r\n <span :class=\"'method-tag method-' + form.requestMethod\">{{ form.requestMethod }}</span>\r\n {{ form.operUrl }}\r\n </span>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n <el-row class=\"detail-row\">\r\n <el-col :span=\"24\">\r\n <div class=\"detail-item\"><span class=\"detail-label\">操作方法</span><span class=\"detail-value mono\">{{ form.method }}</span></div>\r\n </el-col>\r\n </el-row>\r\n <el-row class=\"detail-row\">\r\n <el-col :span=\"12\">\r\n <div class=\"detail-item\"><span class=\"detail-label\">消耗时间</span><span class=\"detail-value\">{{ form.costTime }} 毫秒</span></div>\r\n </el-col>\r\n </el-row>\r\n </div>\r\n\r\n <!-- 请求参数 -->\r\n <div class=\"detail-card\">\r\n <div class=\"detail-card-title\"><i class=\"el-icon-upload2\"></i> 请求参数</div>\r\n <div class=\"code-body\">\r\n <div class=\"code-wrap\">\r\n <div class=\"code-action\">\r\n <el-button size=\"mini\" icon=\"el-icon-copy-document\" @click=\"copyText(form.operParam)\">复制</el-button>\r\n </div>\r\n <pre class=\"code-pre\">{{ formatJson(form.operParam) }}</pre>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- 返回参数 -->\r\n <div class=\"detail-card\">\r\n <div class=\"detail-card-title\"><i class=\"el-icon-download\"></i> 返回参数</div>\r\n <div class=\"code-body\">\r\n <div class=\"code-wrap\">\r\n <div class=\"code-action\">\r\n <el-button size=\"mini\" icon=\"el-icon-copy-document\" @click=\"copyText(form.jsonResult)\">复制</el-button>\r\n </div>\r\n <pre class=\"code-pre\">{{ formatJson(form.jsonResult) }}</pre>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- 异常信息 -->\r\n <div class=\"detail-card\" v-if=\"form.status !== 0\">\r\n <div class=\"detail-card-title error-title\"><i class=\"el-icon-warning\"></i> 异常信息</div>\r\n <div class=\"error-body\">\r\n <div class=\"error-msg\">{{ form.errorMsg }}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </el-dialog>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: 'OperlogDetail',\r\n dicts: ['sys_oper_type'],\r\n props: {\r\n visible: { type: Boolean, default: false },\r\n row: { type: Object, default: () => ({}) }\r\n },\r\n computed: {\r\n form() { return this.row || {} },\r\n typeLabel() { return this.selectDictLabel(this.dict.type.sys_oper_type, this.form.businessType) || '-' }\r\n },\r\n methods: {\r\n formatJson(str) {\r\n if (!str) return '(无数据)'\r\n try { return JSON.stringify(JSON.parse(str), null, 2) } catch { return str }\r\n },\r\n copyText(str) {\r\n const text = this.formatJson(str)\r\n if (navigator.clipboard) {\r\n navigator.clipboard.writeText(text).then(() => this.$message({ message: '已复制', type: 'success', duration: 1500 }))\r\n } else {\r\n const ta = document.createElement('textarea')\r\n ta.value = text\r\n document.body.appendChild(ta)\r\n ta.select()\r\n document.execCommand('copy')\r\n document.body.removeChild(ta)\r\n this.$message({ message: '已复制', type: 'success', duration: 1500 })\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n"]}]}