From 8189bce7b736e74ee13f70c53e705ac67e6d60c0 Mon Sep 17 00:00:00 2001 From: yzw <2431960323@qq.com> Date: Mon, 11 Jul 2022 09:29:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B2=97=E4=BD=8D=E9=A1=B5=E9=9D=A2=E5=88=9D?= =?UTF-8?q?=E6=AD=A5=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- package.json | 5 +- src/api/hello.js | 11 + src/assets/css/jsmind.css | 160 +++++ src/assets/js/jsmind.menu.js | 439 ++++++++++++++ src/components/EditDiv/index.vue | 61 ++ src/components/EditList/index.vue | 44 ++ src/components/EditText/EditText.vue | 71 +++ src/components/EditText/index.js | 9 + src/icons/svg/plane.svg | 2 + src/icons/svg/事件.svg | 2 + src/icons/svg/人员.svg | 2 + src/icons/svg/岗位.svg | 2 + src/main.js | 14 +- src/router/index.js | 62 +- src/utils/request.js | 58 +- src/views/event/event.vue | 20 + src/views/hello/hello.vue | 30 + src/views/job/job.vue | 57 ++ src/views/job/job2.vue | 509 ++++++++++++++++ src/views/job/search.vue | 5 + src/views/job/show.vue | 867 +++++++++++++++++++++++++++ src/views/login/index.vue | 35 +- src/views/person/person.vue | 20 + vue.config.js | 10 +- 25 files changed, 2458 insertions(+), 39 deletions(-) create mode 100644 src/api/hello.js create mode 100644 src/assets/css/jsmind.css create mode 100644 src/assets/js/jsmind.menu.js create mode 100644 src/components/EditDiv/index.vue create mode 100644 src/components/EditList/index.vue create mode 100644 src/components/EditText/EditText.vue create mode 100644 src/components/EditText/index.js create mode 100644 src/icons/svg/plane.svg create mode 100644 src/icons/svg/事件.svg create mode 100644 src/icons/svg/人员.svg create mode 100644 src/icons/svg/岗位.svg create mode 100644 src/views/event/event.vue create mode 100644 src/views/hello/hello.vue create mode 100644 src/views/job/job.vue create mode 100644 src/views/job/job2.vue create mode 100644 src/views/job/search.vue create mode 100644 src/views/job/show.vue create mode 100644 src/views/person/person.vue diff --git a/.env.development b/.env.development index de583d0..3e53e1d 100644 --- a/.env.development +++ b/.env.development @@ -2,4 +2,4 @@ ENV = 'development' # base api -VUE_APP_BASE_API = '/dev-api' +VUE_APP_BASE_API = '/admin' diff --git a/package.json b/package.json index 2413824..becf3c6 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,11 @@ "dependencies": { "axios": "0.18.1", "core-js": "3.6.5", - "element-ui": "2.13.2", + "echarts": "^5.3.3", + "element-ui": "^2.13.2", "js-cookie": "2.2.0", + "jsmind": "^0.4.8", + "neovis.js": "^2.0.2", "normalize.css": "7.0.0", "nprogress": "0.2.0", "path-to-regexp": "2.4.0", diff --git a/src/api/hello.js b/src/api/hello.js new file mode 100644 index 0000000..07fa80a --- /dev/null +++ b/src/api/hello.js @@ -0,0 +1,11 @@ +// src/api/test.js +import request from '@/utils/request' + +export function getList(params) { + return request({ + url: '', + method: 'get', + params + }) +} + diff --git a/src/assets/css/jsmind.css b/src/assets/css/jsmind.css new file mode 100644 index 0000000..2d61dcb --- /dev/null +++ b/src/assets/css/jsmind.css @@ -0,0 +1,160 @@ +/* + * Released under BSD License + * Copyright (c) 2014-2021 hizzgdev@163.com + * + * Project Home: + * https://github.com/hizzgdev/jsmind/ + */ + +/* important section */ +.jsmind-inner{position:relative;overflow: hidden auto;width:100%;height:100%;outline:none;}/*box-shadow:0 0 2px #000;*/ +.jsmind-inner{ + moz-user-select:-moz-none; + -moz-user-select:none; + -o-user-select:none; + -khtml-user-select:none; + -webkit-user-select:none; + -ms-user-select:none; + user-select:none; +} + +/* z-index:1 */ +svg.jsmind{position:absolute;z-index:1;} +canvas.jsmind{position:absolute;z-index:1;} + +/* z-index:2 */ +jmnodes{position:absolute;z-index:2;background-color:rgba(0,0,0,0);}/*background color is necessary*/ +jmnode{position:absolute;cursor:default;max-width:400px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;} +jmexpander{position:absolute;width:11px;height:11px;display:block;overflow:hidden;line-height:12px;font-size:12px;text-align:center;border-radius:6px;border-width:1px;border-style:solid;cursor:pointer;} + +/* default theme */ +jmnode{padding:10px;background-color:#fff;color:#333;border-radius:5px;box-shadow:1px 1px 3px #bfbfbf;font:16px/1.125 Verdana,Arial,Helvetica,sans-serif;} +jmnode:hover{box-shadow:2px 2px 8px #999;background-color:#ebebeb;color:#333;} +jmnode.selected{background-color:#ebebeb;color:#333;box-shadow:2px 2px 8px #999;} +jmnode.root{font-size:24px;} +jmexpander{border-color:gray;} +jmexpander:hover{border-color:#000;} + +@media screen and (max-device-width: 1024px) { + jmnode{padding:5px;border-radius:3px;font-size:14px;} + jmnode.root{font-size:21px;} +} +/* primary theme */ +jmnodes.theme-primary jmnode{background-color:#428bca;color:#fff;border-color:#357ebd;} +jmnodes.theme-primary jmnode:hover{background-color:#3276b1;border-color:#285e8e;} +jmnodes.theme-primary jmnode.selected{background-color:#f1c40f;color:#fff;} +jmnodes.theme-primary jmnode.root{} +jmnodes.theme-primary jmexpander{} +jmnodes.theme-primary jmexpander:hover{} + +/* warning theme */ +jmnodes.theme-warning jmnode{background-color:#f0ad4e;border-color:#eea236;color:#fff;} +jmnodes.theme-warning jmnode:hover{background-color:#ed9c28;border-color:#d58512;} +jmnodes.theme-warning jmnode.selected{background-color:#11f;color:#fff;} +jmnodes.theme-warning jmnode.root{} +jmnodes.theme-warning jmexpander{} +jmnodes.theme-warning jmexpander:hover{} + +/* danger theme */ +jmnodes.theme-danger jmnode{background-color:#d9534f;border-color:#d43f3a;color:#fff;} +jmnodes.theme-danger jmnode:hover{background-color:#d2322d;border-color:#ac2925;} +jmnodes.theme-danger jmnode.selected{background-color:#11f;color:#fff;} +jmnodes.theme-danger jmnode.root{} +jmnodes.theme-danger jmexpander{} +jmnodes.theme-danger jmexpander:hover{} + +/* success theme */ +jmnodes.theme-success jmnode{background-color:#5cb85c;border-color:#4cae4c;color:#fff;} +jmnodes.theme-success jmnode:hover{background-color:#47a447;border-color:#398439;} +jmnodes.theme-success jmnode.selected{background-color:#11f;color:#fff;} +jmnodes.theme-success jmnode.root{} +jmnodes.theme-success jmexpander{} +jmnodes.theme-success jmexpander:hover{} + +/* info theme */ +jmnodes.theme-info jmnode{background-color:#5dc0de;border-color:#46b8da;;color:#fff;} +jmnodes.theme-info jmnode:hover{background-color:#39b3d7;border-color:#269abc;} +jmnodes.theme-info jmnode.selected{background-color:#11f;color:#fff;} +jmnodes.theme-info jmnode.root{} +jmnodes.theme-info jmexpander{} +jmnodes.theme-info jmexpander:hover{} + +/* greensea theme */ +jmnodes.theme-greensea jmnode{background-color:#1abc9c;color:#fff;} +jmnodes.theme-greensea jmnode:hover{background-color:#16a085;} +jmnodes.theme-greensea jmnode.selected{background-color:#11f;color:#fff;} +jmnodes.theme-greensea jmnode.root{} +jmnodes.theme-greensea jmexpander{} +jmnodes.theme-greensea jmexpander:hover{} + +/* nephrite theme */ +jmnodes.theme-nephrite jmnode{background-color:#2ecc71;color:#fff;} +jmnodes.theme-nephrite jmnode:hover{background-color:#27ae60;} +jmnodes.theme-nephrite jmnode.selected{background-color:#11f;color:#fff;} +jmnodes.theme-nephrite jmnode.root{} +jmnodes.theme-nephrite jmexpander{} +jmnodes.theme-nephrite jmexpander:hover{} + +/* belizehole theme */ +jmnodes.theme-belizehole jmnode{background-color:#3498db;color:#fff;} +jmnodes.theme-belizehole jmnode:hover{background-color:#2980b9;} +jmnodes.theme-belizehole jmnode.selected{background-color:#11f;color:#fff;} +jmnodes.theme-belizehole jmnode.root{} +jmnodes.theme-belizehole jmexpander{} +jmnodes.theme-belizehole jmexpander:hover{} + +/* wisteria theme */ +jmnodes.theme-wisteria jmnode{background-color:#9b59b6;color:#fff;} +jmnodes.theme-wisteria jmnode:hover{background-color:#8e44ad;} +jmnodes.theme-wisteria jmnode.selected{background-color:#11f;color:#fff;} +jmnodes.theme-wisteria jmnode.root{} +jmnodes.theme-wisteria jmexpander{} +jmnodes.theme-wisteria jmexpander:hover{} + +/* asphalt theme */ +jmnodes.theme-asphalt jmnode{background-color:#34495e;color:#fff;} +jmnodes.theme-asphalt jmnode:hover{background-color:#2c3e50;} +jmnodes.theme-asphalt jmnode.selected{background-color:#11f;color:#fff;} +jmnodes.theme-asphalt jmnode.root{} +jmnodes.theme-asphalt jmexpander{} +jmnodes.theme-asphalt jmexpander:hover{} + +/* orange theme */ +jmnodes.theme-orange jmnode{background-color:#f1c40f;color:#fff;} +jmnodes.theme-orange jmnode:hover{background-color:#f39c12;} +jmnodes.theme-orange jmnode.selected{background-color:#11f;color:#fff;} +jmnodes.theme-orange jmnode.root{} +jmnodes.theme-orange jmexpander{} +jmnodes.theme-orange jmexpander:hover{} + +/* pumpkin theme */ +jmnodes.theme-pumpkin jmnode{background-color:#e67e22;color:#fff;} +jmnodes.theme-pumpkin jmnode:hover{background-color:#d35400;} +jmnodes.theme-pumpkin jmnode.selected{background-color:#11f;color:#fff;} +jmnodes.theme-pumpkin jmnode.root{} +jmnodes.theme-pumpkin jmexpander{} +jmnodes.theme-pumpkin jmexpander:hover{} + +/* pomegranate theme */ +jmnodes.theme-pomegranate jmnode{background-color:#e74c3c;color:#fff;} +jmnodes.theme-pomegranate jmnode:hover{background-color:#c0392b;} +jmnodes.theme-pomegranate jmnode.selected{background-color:#11f;color:#fff;} +jmnodes.theme-pomegranate jmnode.root{} +jmnodes.theme-pomegranate jmexpander{} +jmnodes.theme-pomegranate jmexpander:hover{} + +/* clouds theme */ +jmnodes.theme-clouds jmnode{background-color:#ecf0f1;color:#333;} +jmnodes.theme-clouds jmnode:hover{background-color:#bdc3c7;} +jmnodes.theme-clouds jmnode.selected{background-color:#11f;color:#fff;} +jmnodes.theme-clouds jmnode.root{} +jmnodes.theme-clouds jmexpander{} +jmnodes.theme-clouds jmexpander:hover{} + +/* asbestos theme */ +jmnodes.theme-asbestos jmnode{background-color:#95a5a6;color:#fff;} +jmnodes.theme-asbestos jmnode:hover{background-color:#7f8c8d;} +jmnodes.theme-asbestos jmnode.selected{background-color:#11f;color:#fff;} +jmnodes.theme-asbestos jmnode.root{} +jmnodes.theme-asbestos jmexpander{} +jmnodes.theme-asbestos jmexpander:hover{} diff --git a/src/assets/js/jsmind.menu.js b/src/assets/js/jsmind.menu.js new file mode 100644 index 0000000..1f4bceb --- /dev/null +++ b/src/assets/js/jsmind.menu.js @@ -0,0 +1,439 @@ +/* + * Released under BSD License + * Copyright (c) 2019-2020 Allen_sun_js@hotmail.com + * + * Project Home: + * https://github.com/allensunjian + */ + +(function ($w, temp) { + var obj = null + + + var Jm = $w[temp], name = 'menu', $d = $w['document'], menuEvent = 'oncontextmenu', clickEvent = 'onclick', $c = function (tag) { return $d.createElement(tag); }, _noop = function () { }, logger = (typeof console === 'undefined') ? { log: _noop, debug: _noop, error: _noop, warn: _noop, info: _noop } : console; + + var $t = function (n, t) { if (n.hasChildNodes()) { n.firstChild.nodeValue = t; } else { n.appendChild($d.createTextNode(t)); } }; + + var $h = function (n, t) { + if (t instanceof HTMLElement) { + t.innerHTML = ""; + n.appendChild(t) + } else { + n.innerHTML = t; + } + }; + + if (!Jm || Jm[name]) return; + + Jm.menu = function (_jm) { + obj = this + this._get_menu_options(_jm, function () { + + this.init(_jm); + + this._mount_events() + }) + } + Jm.menu.prototype = { + + defaultDataMap: { + funcMap: { + edit: { + isDepNode: true, + // defaultFn不受到中台变量的控制,始终会先于fn去执行 + defaultFn: function (node) { + var f = this._menu_default_mind_methods._menu_begin_edit.call(this.jm); + f && this._menu_default_mind_methods._menu_edit_node_begin(this.jm.view, node); + }, + fn: _noop, + text: 'edit node' + }, + addChild: { + isDepNode: true, + fn: function (nodeid,text) { + var selected_node = this.get_selected_node(); + if (selected_node) { + var node = this.add_node(selected_node, nodeid, text); + if (node) { + this.select_node(nodeid); + this.begin_edit(nodeid); + obj._mount_events(); + } + } + }, + text: 'append child' + }, + addBrother: { + isDepNode: true, + fn: function (nodeid,text) { + var selected_node = this.get_selected_node(); + if (selected_node && !selected_node.isroot) { + var node = this.insert_node_after(selected_node, nodeid, text); + if (node) { + this.select_node(nodeid); + this.begin_edit(nodeid); + obj._mount_events(); + } + } + }, + text: 'append brother' + }, + delete: { + isDepNode: true, + fn: function () { + this.shortcut.handle_delnode.call(this.shortcut, this); + }, + text: 'delete node' + }, + showAll: { + sDepNode: false, + fn: function () { + this.expand_all(this) + }, + text: 'show all' + }, + hideAll: { + isDepNode: false, + fn: function () { + this.collapse_all(this) + }, + text: 'hide all' + }, + screenshot: { + isDepNode: false, + fn: function () { + if (!this.screenshot) { + logger.error('[jsmind] screenshot dependent on jsmind.screenshot.js !'); + return; + } + this.screenshot.shootDownload(); + }, + text: 'load mind picture' + }, + showNode: { + isDepNode: true, + fn: function (node) { + this.expand_node(node); + }, + text: 'show target node' + }, + hideNode: { + isDepNode: true, + fn: function (node) { + this.collapse_node(node); + }, + text: 'hide target node' + }, + }, + menuStl: { + 'width': '150px', + 'padding': '12px 0', + 'position': 'fixed', + 'z-index': '10', + 'background': '#fff', + 'box-shadow': '0 2px 12px 0 rgba(0,0,0,0.1)', + 'border-radius': '5px', + 'font-size': '12px', + 'display': 'none' + }, + menuItemStl:{ + padding: '5px 15px', + cursor: 'pointer', + display: 'block', + 'text-align': 'center', + 'transition':'all .2s' + }, + injectionList:['edit','addChild','delete'] + }, + + init: function (_jm) { + this._create_menu(_jm); + this._get_injectionList(_jm); + this.menuOpts.switchMidStage && Jm.util.dom.add_event(_jm.view.e_editor , 'blur', function () { + this._menu_default_mind_methods._menu_edit_node_end.call(_jm.view); + if(typeof this.menuOpts.editCaller == 'function') { + this.menuOpts.editCaller($w.menu._update_node_info, this._menu_default_mind_methods._menu_update_edit_node) + return + } + this._menu_default_mind_methods._menu_update_edit_node(); + }.bind(this)); + }, + + _event_contextMenu (e) { + e.preventDefault(); + this.menu.style.left = e.clientX + 'px'; + this.menu.style.top = e.clientY + 'px'; + this.menu.style.display = 'block'; + this.selected_node = this.jm.get_selected_node(); + } , + + _event_hideMenu() { + this.menu.style.display = 'none' + }, + + _mount_events () { + var items = document.getElementsByTagName('jmnode') + for(let i = 0; i < items.length; i++) { + items[i][menuEvent] = this._event_contextMenu.bind(this); + } + $w[clickEvent] = this._event_hideMenu.bind(this); + }, + + _create_menu (_jm) { + var d = $c('menu'); + this._set_menu_wrap_syl(d); + this.menu = d; + this.e_panel = _jm.view.e_panel; + this.e_panel.appendChild(d); + }, + + _create_menu_item (j, text, fn, isDepNode,cb, defaultFn) { + var d = $c('menu-item'),_this = this; + this._set_menu_item_syl(d); + d.innerText = text; + d.addEventListener('click', function () { + if (this.selected_node || !isDepNode) { + defaultFn.call(_this, this.selected_node); + if (!_this._get_mid_opts()) { + cb(this.selected_node, _noop) + fn.call(j,Jm.util.uuid.newid(), this.menuOpts.newNodeText || 'New Node'); + return; + } + cb(this.selected_node,_this._mid_stage_next(function () { + var retArgs = [this.selected_node], + argus = Array.prototype.slice.call(arguments[0],0); + argus[1] = this.menuOpts.newNodeText || 'New Node'; + if (argus[0]) { + retArgs = argus + } + fn.apply(j,retArgs); + }.bind(this))) + return + } + alert(this.menuOpts.tipContent || 'Continue with node selected!') + }.bind(this)) + d.addEventListener('mouseover', function () { + d.style.background = 'rgb(179, 216, 255)' + }.bind(this)) + d.addEventListener('mouseleave', function () { + d.style.background = '#fff' + }.bind(this)) + return d + }, + + _set_menu_wrap_syl (d) { + var os = this._get_option_sty('menu',this._get_mixin_sty); + d.style.cssText = this._format_cssText(os); + }, + + _set_menu_item_syl (d) { + var os = this._get_option_sty('menuItem',this._get_mixin_sty); + d.style.cssText = this._format_cssText(os) + }, + + _format_cssText (o) { + var text = ''; + Object.keys(o).forEach(function (k) { + text += k +':'+o[k] +';' + }) + return text; + }, + + _empty_object (o) { + return Object.keys(o).length == 0? true :false + }, + + _get_option_sty (type, fn) { + var sty = this.menuOpts.style, + menu = this.defaultDataMap.menuStl, + menuItem = this.defaultDataMap.menuItemStl, + o = {menu,menuItem} + + if (!sty) return o[type]; + if (!sty[type]) return o[type]; + if (!sty[type] || this._empty_object(sty[type])) return o[type]; + return fn( o[type],sty[type]) + }, + + _get_mixin_sty (dSty, oSty) { + var o = {}; + Object.keys(oSty).forEach(function (k) { + o[k] = oSty[k]; + }) + Object.keys(dSty).forEach(function (k) { + if (!o[k]) o[k] = dSty[k]; + }) + return o + }, + + _get_menu_options (j, fn) { + var options = j.options; + if (!options.menuOpts) return; + if (!options.menuOpts.showMenu) return; + this.menuOpts = j.options.menuOpts + fn.call(this) + }, + + _get_injectionDetail () { + var iLs = this.menuOpts.injectionList, + dLs = this.defaultDataMap.injectionList; + if (!iLs) return dLs; + if (!Array.isArray(iLs)) { + logger.error('[jsmind] injectionList must be a Array'); + return; + } + if (iLs.length == 0) return dLs; + return iLs + }, + + _get_injectionList (j) { + var list = this._get_injectionDetail(), + _this = this; + list.forEach(function (k) { + var o = null, + text = "", + callback = _noop, + defaultFn = _noop; + + if (typeof k == 'object') { + o = _this.defaultDataMap.funcMap[k.target]; + text = k.text; + k.callback && (callback = k.callback); + } else { + o = _this.defaultDataMap.funcMap[k]; + text = o.text; + } + + if (o.defaultFn) defaultFn = o.defaultFn; + _this.menu.appendChild(_this._create_menu_item(j ,text, o.fn, o.isDepNode,callback, defaultFn)); + }) + }, + + _get_mid_opts () { + var b = this.menuOpts.switchMidStage; + if (!b) return false; + if (typeof b !== 'boolean') { + logger.error('[jsmind] switchMidStage must be Boolean'); + return false; + } + return b + }, + + _switch_view_db_event () { + Jm.prototype.dblclick_handle = _noop; + Jm.shortcut_provider.prototype.handler = _noop; + Jm.view_provider.prototype.edit_node_end = _noop; + }, + + _mid_stage_next (fn) { + return function () { + fn(arguments); + } + }, + + _reset_mind_event_edit () {}, + + _menu_default_mind_methods: { + _menu_begin_edit: function () { + var f = this.get_editable(); + if (!f) { + logger.error('fail, this mind map is not editable.'); + } + return f; + }, + _menu_edit_node_begin (scope, node) { + if (!node.topic) { + logger.warn("don't edit image nodes"); + return; + } + if (scope.editing_node != null) { + this._menu_default_mind_methods._menu_edit_node_end.call(scope); + } + scope.editing_node = node; + var view_data = node._data.view; + var element = view_data.element; + var topic = node.topic; + var ncs = getComputedStyle(element); + scope.e_editor.value = topic; + scope.e_editor.style.width = (element.clientWidth - parseInt(ncs.getPropertyValue('padding-left')) - parseInt(ncs.getPropertyValue('padding-right'))) + 'px'; + element.innerHTML = ''; + element.appendChild(scope.e_editor); + element.style.zIndex = 5; + scope.e_editor.focus(); + scope.e_editor.select(); + }, + _menu_edit_node_end: function () { + if (this.editing_node != null) { + var node = this.editing_node; + this.editing_node = null; + var view_data = node._data.view; + var element = view_data.element; + var topic = this.e_editor.value; + element.style.zIndex = 'auto'; + element.removeChild(this.e_editor); + $w.menu._update_node_info = {id: node.id, topic: topic}; + if (Jm.util.text.is_empty(topic) || node.topic === topic) { + if (this.opts.support_html) { + $h(element, node.topic); + } else { + $t(element, node.topic); + } + } + } + }, + _menu_update_edit_node: function () { + var info = $w.menu._update_node_info; + $w.menu.jm.update_node(info.id, info.topic); + } + } + + } + var plugin = new Jm.plugin('menu',function (_jm) { + + $w.menu = new Jm.menu(_jm); + + $w.menu.jm = _jm; + + if($w.menu.menuOpts) _jm.menu = $w.menu; + + }) + + Jm.register_plugin(plugin) + + function preventMindEventDefault() { + + Jm.menu.prototype._switch_view_db_event(); + + } + Jm.preventMindEventDefault = preventMindEventDefault + + + // eslint-disable-next-line no-unused-vars + function reBuild () { + if (obj !== null) { + obj._mount_events() + } + } + // export reBuild + if (typeof module !== 'undefined' && typeof exports === 'object') { + module.exports = { + reBuild, + init: function (opt) { + Jm = opt + } + }; + } + // exports = { + // reBuild, + // // init: function (opt) { + // // console.log(opt) + // // } + // }; + + // $w['render'] = function () { + // if (obj !== null) { + // obj._mount_events() + // } + // } + +})(window, 'jsMind') \ No newline at end of file diff --git a/src/components/EditDiv/index.vue b/src/components/EditDiv/index.vue new file mode 100644 index 0000000..ee997c9 --- /dev/null +++ b/src/components/EditDiv/index.vue @@ -0,0 +1,61 @@ + + + + diff --git a/src/components/EditList/index.vue b/src/components/EditList/index.vue new file mode 100644 index 0000000..51f473e --- /dev/null +++ b/src/components/EditList/index.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src/components/EditText/EditText.vue b/src/components/EditText/EditText.vue new file mode 100644 index 0000000..002f6ff --- /dev/null +++ b/src/components/EditText/EditText.vue @@ -0,0 +1,71 @@ + + + + + + diff --git a/src/components/EditText/index.js b/src/components/EditText/index.js new file mode 100644 index 0000000..c5740fe --- /dev/null +++ b/src/components/EditText/index.js @@ -0,0 +1,9 @@ +/** + * 文本双击可编辑 组件 + */ + import EditText from "./EditText.vue"; + EditText.install = function (vue) { + vue.component(EditText.name, EditText); + }; + export default EditText; + \ No newline at end of file diff --git a/src/icons/svg/plane.svg b/src/icons/svg/plane.svg new file mode 100644 index 0000000..123905f --- /dev/null +++ b/src/icons/svg/plane.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/icons/svg/事件.svg b/src/icons/svg/事件.svg new file mode 100644 index 0000000..ab9ff4b --- /dev/null +++ b/src/icons/svg/事件.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/icons/svg/人员.svg b/src/icons/svg/人员.svg new file mode 100644 index 0000000..fda04d9 --- /dev/null +++ b/src/icons/svg/人员.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/icons/svg/岗位.svg b/src/icons/svg/岗位.svg new file mode 100644 index 0000000..ca1137d --- /dev/null +++ b/src/icons/svg/岗位.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 01cba2f..3b08cae 100644 --- a/src/main.js +++ b/src/main.js @@ -14,7 +14,12 @@ import router from './router' import '@/icons' // icon import '@/permission' // permission control +import request from '@/utils/request' +// import EditText from "@/components/EditText/index"; +// Vue.use(EditText); + +Vue.prototype.req = request /** * If you don't want to use mock-server * you want to use MockJs for mock api @@ -23,10 +28,10 @@ import '@/permission' // permission control * Currently MockJs will be used in the production environment, * please remove it before going online ! ! ! */ -if (process.env.NODE_ENV === 'production') { - const { mockXHR } = require('../mock') - mockXHR() -} +// if (process.env.NODE_ENV === 'production') { +// const { mockXHR } = require('../mock') +// mockXHR() +// } // set ElementUI lang to EN Vue.use(ElementUI, { locale }) @@ -35,6 +40,7 @@ Vue.use(ElementUI, { locale }) Vue.config.productionTip = false + new Vue({ el: '#app', router, diff --git a/src/router/index.js b/src/router/index.js index 13459e9..6f7652b 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -150,16 +150,72 @@ export const constantRoutes = [ }, { - path: 'external-link', + path: '/hello', component: Layout, + children: [{ + path: 'hello', + name: 'hello', + component: () => import('@/views/hello/hello'), + meta: { + title: 'Hello', + icon: 'plane' + } + }] + }, + + { + path: '/job', + component: Layout, + redirect: '/job/show', + name: 'Job', + meta: { + title: '岗位', + icon: '岗位' + }, children: [ { - path: 'https://panjiachen.github.io/vue-element-admin-site/#/', - meta: { title: 'External Link', icon: 'link' } + path: 'show', + name: 'JobShow', + component: () => import('@/views/job/show'), + meta: { title: '岗位总览' } + }, + { + path: 'search', + name: 'JobSearch', + component: () => import('@/views/job/search'), + meta: { title: '岗位标签搜索' } } ] }, + { + path: '/person', + component: Layout, + children: [{ + path: 'person', + name: 'person', + component: () => import('@/views/person/person'), + meta: { + title: '人员', + icon: '人员' + } + }] + }, + + { + path: '/event', + component: Layout, + children: [{ + path: 'event', + name: 'event', + component: () => import('@/views/event/event'), + meta: { + title: '事件', + icon: '事件' + } + }] + }, + // 404 page must be placed at the end !!! { path: '*', redirect: '/404', hidden: true } ] diff --git a/src/utils/request.js b/src/utils/request.js index 2fb95ac..74bb82d 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -12,22 +12,23 @@ const service = axios.create({ // request interceptor service.interceptors.request.use( - config => { - // do something before request is sent + console.log('have a request') + // config => { + // // do something before request is sent - if (store.getters.token) { - // let each request carry token - // ['X-Token'] is a custom headers key - // please modify it according to the actual situation - config.headers['X-Token'] = getToken() - } - return config - }, - error => { - // do something with request error - console.log(error) // for debug - return Promise.reject(error) - } + // if (store.getters.token) { + // // let each request carry token + // // ['X-Token'] is a custom headers key + // // please modify it according to the actual situation + // config.headers['X-Token'] = getToken() + // } + // return config + // }, + // error => { + // // do something with request error + // console.log(error) // for debug + // return Promise.reject(error) + // } ) // response interceptor @@ -42,7 +43,7 @@ service.interceptors.response.use( * Here is just an example * You can also judge the status by HTTP Status Code */ - response => { +/* response => { const res = response.data // if the custom code is not 20000, it is judged as an error. @@ -79,6 +80,31 @@ service.interceptors.response.use( duration: 5 * 1000 }) return Promise.reject(error) + } */ + + response => { + const res = response.data + return res + // if (res.code !== 20000) { + // Message({ + // message: res.msg || 'Error check your token or method', + // type: 'error', + // duration: 2 * 1000 + // }) + // console.log(res.code) + // return Promise.reject(new Error(res.msg || 'Error')) + // } else{ + // return res + // } + }, + error => { + console.log('err' + error) + Message({ + message: error.message, + type: 'error', + duration: 2 * 1000 + }) + return Promise.reject(error) } ) diff --git a/src/views/event/event.vue b/src/views/event/event.vue new file mode 100644 index 0000000..03e3873 --- /dev/null +++ b/src/views/event/event.vue @@ -0,0 +1,20 @@ + + + + + \ No newline at end of file diff --git a/src/views/hello/hello.vue b/src/views/hello/hello.vue new file mode 100644 index 0000000..b2471b8 --- /dev/null +++ b/src/views/hello/hello.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/src/views/job/job.vue b/src/views/job/job.vue new file mode 100644 index 0000000..6c975fe --- /dev/null +++ b/src/views/job/job.vue @@ -0,0 +1,57 @@ + + + + + \ No newline at end of file diff --git a/src/views/job/job2.vue b/src/views/job/job2.vue new file mode 100644 index 0000000..f56a93b --- /dev/null +++ b/src/views/job/job2.vue @@ -0,0 +1,509 @@ + + + + + \ No newline at end of file diff --git a/src/views/job/search.vue b/src/views/job/search.vue new file mode 100644 index 0000000..212f936 --- /dev/null +++ b/src/views/job/search.vue @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/src/views/job/show.vue b/src/views/job/show.vue new file mode 100644 index 0000000..f6c578a --- /dev/null +++ b/src/views/job/show.vue @@ -0,0 +1,867 @@ + + + + + diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 1db2464..f29509c 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -106,19 +106,28 @@ export default { }) }, handleLogin() { - this.$refs.loginForm.validate(valid => { - if (valid) { - this.loading = true - this.$store.dispatch('user/login', this.loginForm).then(() => { - this.$router.push({ path: this.redirect || '/' }) - this.loading = false - }).catch(() => { - this.loading = false - }) - } else { - console.log('error submit!!') - return false - } + // this.$refs.loginForm.validate(valid => { + // if (valid) { + // this.loading = true + // this.$store.dispatch('user/login', this.loginForm).then(() => { + // this.$router.push({ path: this.redirect || '/' }) + // this.loading = false + // }).catch(() => { + // this.loading = false + // }) + // } else { + // console.log('error submit!!') + // return false + // } + // }) + + + this.loading = true + this.$store.dispatch('user/login', this.loginForm).then(() => { + this.$router.push({ path: this.redirect || '/' }) + this.loading = false + }).catch(() => { + this.loading = false }) } } diff --git a/src/views/person/person.vue b/src/views/person/person.vue new file mode 100644 index 0000000..8ee0c2d --- /dev/null +++ b/src/views/person/person.vue @@ -0,0 +1,20 @@ + + + + + \ No newline at end of file diff --git a/vue.config.js b/vue.config.js index 4856ed0..ee52389 100644 --- a/vue.config.js +++ b/vue.config.js @@ -36,7 +36,15 @@ module.exports = { warnings: false, errors: true }, - before: require('./mock/mock-server.js') + proxy: { + '/admin': { + target: 'http://localhost:8886/', + changeOrigin: true, + pathRewrite: { + } + } + } + // before: require('./mock/mock-server.js') }, configureWebpack: { // provide the app's title in webpack's name field, so that