岗位页面初步完成
parent
4c18a3f47b
commit
8189bce7b7
|
@ -2,4 +2,4 @@
|
|||
ENV = 'development'
|
||||
|
||||
# base api
|
||||
VUE_APP_BASE_API = '/dev-api'
|
||||
VUE_APP_BASE_API = '/admin'
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
// src/api/test.js
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function getList(params) {
|
||||
return request({
|
||||
url: '',
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
|
@ -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{}
|
|
@ -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')
|
|
@ -0,0 +1,61 @@
|
|||
<template>
|
||||
<div
|
||||
ref="editor"
|
||||
:contenteditable="editAble"
|
||||
:class="{ editing: editAble }"
|
||||
@blur="inputBlur"
|
||||
@focus="inputFocus"
|
||||
@keyup.27="$event.target.blur"
|
||||
@dblclick="allowInput"
|
||||
v-text="inputText"
|
||||
></div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: "editDiv",
|
||||
props: ["value"], // 父组件v-model绑定的prop
|
||||
data() {
|
||||
return {
|
||||
editAble: false,
|
||||
inputText: this.value
|
||||
};
|
||||
},
|
||||
// watch: {
|
||||
// value(val) {
|
||||
// if (this.isBlur) {
|
||||
// this.$refs.editor.innerHTML = val;
|
||||
// }
|
||||
// },
|
||||
// },
|
||||
methods: {
|
||||
// 监听输入框内容
|
||||
inputFocus() {
|
||||
},
|
||||
inputBlur() {
|
||||
// console.log("子组件输入框的输入内容", this.$refs.editor.innerText);
|
||||
// console.log(this.$refs.editor);
|
||||
this.$emit("input", this.$refs.editor.innerText);
|
||||
this.$emit("changeVal")
|
||||
this.editAble = false;
|
||||
},
|
||||
allowInput() {
|
||||
this.editAble = true;
|
||||
this.$refs.editor.focus();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
.input-box {
|
||||
width: 400px;
|
||||
height: 250px;
|
||||
border: 1px solid #6e6e6e;
|
||||
outline: none; /* 隐藏聚焦时外边框 */
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.editing {
|
||||
border: 1px solid #6e6e6e;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
<template>
|
||||
<div>
|
||||
<edit-div
|
||||
v-for="(item, index) in dataList"
|
||||
:key="index"
|
||||
v-model="dataList[index]"
|
||||
@changeVal="checkList"
|
||||
:class="{ add: item == '双击添加' }"
|
||||
></edit-div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import EditDiv from "@/components/EditDiv/index.vue";
|
||||
export default {
|
||||
name: "EditList",
|
||||
props: ["data"],
|
||||
data() {
|
||||
return {
|
||||
dataList: this.data,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.dataList.push("双击添加");
|
||||
},
|
||||
methods: {
|
||||
checkList() {
|
||||
if (this.dataList[this.dataList.length - 1] != "双击添加") {
|
||||
this.dataList.push("双击添加");
|
||||
}
|
||||
},
|
||||
},
|
||||
components: {
|
||||
EditDiv,
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.add {
|
||||
color: #c0c4cc;
|
||||
font-size: 0.7em;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,71 @@
|
|||
<template>
|
||||
<div id="test" class="test" :class="{ editing: isChecked }">
|
||||
<div class="view">
|
||||
<label @dblclick="dbTest()">{{ item }}</label>
|
||||
</div>
|
||||
<input
|
||||
v-myfoucs="isChecked"
|
||||
class="edit"
|
||||
type="text"
|
||||
v-model="inputStr"
|
||||
@keyup.enter="$event.target.blur"
|
||||
@blur="inputStred"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "EditText",
|
||||
props: ["val", "itemName"],
|
||||
data() {
|
||||
return {
|
||||
item: this.val,
|
||||
isChecked: false,
|
||||
inputStr: "",
|
||||
domain: this.itemName
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
dbTest() {
|
||||
this.isChecked = true;
|
||||
this.inputStr = this.item;
|
||||
},
|
||||
inputStred() {
|
||||
this.item = this.inputStr;
|
||||
this.isChecked = false;
|
||||
this.$emit("changeDomainVal", this.domain, this.item)
|
||||
}
|
||||
},
|
||||
directives: {
|
||||
myfoucs: {
|
||||
update(el, binding) {
|
||||
if (binding.value) {
|
||||
el.focus();
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
label {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.test.editing .edit {
|
||||
display: block;
|
||||
// width: 150px;
|
||||
}
|
||||
|
||||
.test.editing .view {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.test .edit {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* 文本双击可编辑 组件
|
||||
*/
|
||||
import EditText from "./EditText.vue";
|
||||
EditText.install = function (vue) {
|
||||
vue.component(EditText.name, EditText);
|
||||
};
|
||||
export default EditText;
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1656899019644" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2273" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css">@font-face { font-family: feedback-iconfont; src: url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944") format("woff2"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944") format("woff"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944") format("truetype"); }
|
||||
</style></defs><path d="M704 864c-6.4 0-12.8 0-19.2-6.4l-153.6-102.4L454.4 832c-6.4 6.4-25.6 12.8-32 6.4-12.8-6.4-19.2-19.2-19.2-32l0-140.8c0-6.4 0-12.8 6.4-19.2L652.8 384c12.8-12.8 32-12.8 44.8 0 12.8 12.8 12.8 32 0 44.8l-236.8 256 0 51.2 44.8-38.4c12.8-12.8 25.6-12.8 38.4-6.4l140.8 89.6 108.8-531.2L256 512l121.6 76.8C390.4 595.2 396.8 620.8 384 633.6c-6.4 12.8-32 19.2-44.8 12.8L172.8 537.6C166.4 531.2 160 524.8 160 512c0-12.8 6.4-19.2 19.2-25.6l640-320c12.8-6.4 25.6-6.4 32 0 12.8 6.4 12.8 19.2 12.8 32l-128 640c0 12.8-6.4 19.2-19.2 25.6C710.4 864 710.4 864 704 864z" p-id="2274"></path></svg>
|
After Width: | Height: | Size: 1.2 KiB |
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1656923933409" class="icon" viewBox="0 0 1056 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3677" xmlns:xlink="http://www.w3.org/1999/xlink" width="206.25" height="200"><defs><style type="text/css">@font-face { font-family: feedback-iconfont; src: url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944") format("woff2"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944") format("woff"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944") format("truetype"); }
|
||||
</style></defs><path d="M1023.399201 163.074146h-155.151516V55.458414a49.516441 49.516441 0 0 0-99.032882 0v107.615732h-481.960025V49.516441a49.516441 49.516441 0 1 0-99.032882 0v113.557705H33.07038A33.010961 33.010961 0 0 0 0.05942 198.065764v792.263056a33.010961 33.010961 0 0 0 33.01096 33.010961h990.328821a33.010961 33.010961 0 0 0 33.01096-33.010961V198.065764a33.010961 33.010961 0 0 0-33.01096-34.991618zM204.067157 315.584784h514.310767a25.08833 25.08833 0 0 1 0 49.516441H204.067157a25.08833 25.08833 0 0 1 0-49.516441z m0 180.239845h267.388781a25.08833 25.08833 0 0 1 0 49.516441h-264.087685a25.08833 25.08833 0 0 1 0-49.516441z m0 180.239846h441.686653a25.08833 25.08833 0 1 1 0 49.516441H204.067157a25.08833 25.08833 0 0 1 0-49.516441z m639.092198 229.756286H204.067157a25.08833 25.08833 0 0 1 0-49.516441h639.092198a25.08833 25.08833 0 1 1 0 49.516441z" p-id="3678"></path></svg>
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1656923670749" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2742" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css">@font-face { font-family: feedback-iconfont; src: url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944") format("woff2"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944") format("woff"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944") format("truetype"); }
|
||||
</style></defs><path d="M426.666667 170.666667l85.333333 85.333333h341.333333a85.333333 85.333333 0 0 1 85.333334 85.333333v426.666667a85.333333 85.333333 0 0 1-85.333334 85.333333H170.666667a85.333333 85.333333 0 0 1-85.333334-85.333333V256a85.333333 85.333333 0 0 1 85.333334-85.333333h256z m426.666666 170.666666H170.666667v426.666667h682.666666V341.333333z m-392.533333 247.466667a102.826667 102.826667 0 0 1 102.4 102.4v34.133333H256v-34.133333a102.826667 102.826667 0 0 1 102.4-102.4h102.4z m273.066667-68.266667v68.266667H597.333333v-68.266667h136.533334zM409.6 384a85.333333 85.333333 0 1 1 0 170.666667 85.333333 85.333333 0 0 1 0-170.666667z m392.533333 34.133333v68.266667H597.333333V418.133333h204.8z" p-id="2743"></path></svg>
|
After Width: | Height: | Size: 1.4 KiB |
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1656923467424" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2293" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css">@font-face { font-family: feedback-iconfont; src: url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944") format("woff2"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944") format("woff"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944") format("truetype"); }
|
||||
</style></defs><path d="M141.730909 369.989818a34.909091 34.909091 0 0 1 34.909091 34.909091v220.020364a34.909091 34.909091 0 0 1-69.818182 0V404.898909a34.909091 34.909091 0 0 1 34.909091-34.909091zM847.825455 46.545455H233.565091a126.929455 126.929455 0 0 0-126.743273 126.743272v66.978909a34.909091 34.909091 0 0 0 69.818182 0V173.288727c0-31.371636 25.553455-56.925091 56.925091-56.925091h614.260364c31.371636 0 56.925091 25.553455 56.92509 56.925091v677.422546c0 31.371636-25.553455 56.925091-56.92509 56.925091H233.565091a57.018182 57.018182 0 0 1-56.925091-56.925091v-72.750546a34.443636 34.443636 0 0 0-30.394182-33.978182h83.502546a34.909091 34.909091 0 0 0 0-69.818181H84.340364a34.909091 34.909091 0 0 0 0 69.818181h52.922181a34.536727 34.536727 0 0 0-30.394181 33.978182v72.750546A126.836364 126.836364 0 0 0 233.565091 977.454545h614.260364a126.929455 126.929455 0 0 0 126.743272-126.743272V173.288727A126.929455 126.929455 0 0 0 847.825455 46.545455zM382.324364 655.685818l87.831272-256.139636-41.611636-112.733091a34.909091 34.909091 0 0 1 32.721455-46.964364h177.943272a34.862545 34.862545 0 0 1 32.721455 46.964364l-41.658182 112.733091 87.831273 256.139636a34.909091 34.909091 0 0 1-13.824 40.494546l-139.636364 91.927272a35.002182 35.002182 0 0 1-39.330909-0.698181L395.170909 695.482182a34.909091 34.909091 0 0 1-12.846545-39.796364z m129.070545-346.065454l20.154182 54.551272h37.422545l20.200728-54.551272h-77.777455z m-54.551273 343.970909l89.320728 63.069091 97.140363-63.953455-74.984727-218.670545h-36.165818l-75.310546 219.554909zM84.340364 363.240727h145.454545a34.909091 34.909091 0 0 0 0-69.818182H84.340364a34.909091 34.909091 0 0 0 0 69.818182z" p-id="2294"></path></svg>
|
After Width: | Height: | Size: 2.3 KiB |
14
src/main.js
14
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,
|
||||
|
|
|
@ -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 }
|
||||
]
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
<template>
|
||||
<div>
|
||||
event
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'event',
|
||||
data() {
|
||||
return {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
|
@ -0,0 +1,30 @@
|
|||
<template>
|
||||
<div >
|
||||
<el-input v-model="input" placeholder="请输入内容"></el-input>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {getList} from '@/api/hello.js'
|
||||
|
||||
export default {
|
||||
name: 'hello',
|
||||
data() {
|
||||
return {
|
||||
input: ''
|
||||
}
|
||||
},
|
||||
mounted: function() {
|
||||
getList('').then(res => {
|
||||
console.log('api tableData :', res);
|
||||
}, err=>{
|
||||
console.log('err :', err)
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
|
||||
</style>
|
|
@ -0,0 +1,57 @@
|
|||
<template>
|
||||
<div>
|
||||
<div id="viz"></div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NeoVis from "neovis.js/dist/neovis.js";
|
||||
export default {
|
||||
name: "job",
|
||||
data() {
|
||||
return {
|
||||
neoViz: null,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.draw();
|
||||
},
|
||||
methods: {
|
||||
draw() {
|
||||
var config = {
|
||||
containerId: "viz",
|
||||
neo4j: {
|
||||
serverUrl: "bolt://localhost:7687",
|
||||
serverUser: "neo4j",
|
||||
serverPassword: "neo4j123",
|
||||
},
|
||||
labels: {
|
||||
Character: {
|
||||
label: "name",
|
||||
value: "pagerank",
|
||||
group: "community",
|
||||
},
|
||||
},
|
||||
relationships: {
|
||||
INTERACTS: {
|
||||
value: "weight",
|
||||
},
|
||||
},
|
||||
initialCypher: "MATCH (n)-[r:INTERACTS]->(m) RETURN n,r,m limit 100",
|
||||
};
|
||||
this.neoViz = new NeoVis(config);
|
||||
this.neoViz.render();
|
||||
console.log(this.neoViz);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
#viz {
|
||||
width: 900px;
|
||||
height: 700px;
|
||||
border: 1px solid lightgray;
|
||||
font: 22pt arial;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,509 @@
|
|||
<template>
|
||||
<el-container class="main-body">
|
||||
<el-contrainer class="body-left">
|
||||
<div style="height: 100%; width: 100%" id="job_img"></div>
|
||||
</el-contrainer>
|
||||
<el-contrainer class="body-right">岗位说明书</el-contrainer>
|
||||
</el-container>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as echarts from "echarts";
|
||||
export default {
|
||||
name: "job",
|
||||
data() {
|
||||
return {
|
||||
chart: null,
|
||||
job_data: {
|
||||
name: "恩施卷烟厂",
|
||||
children: [
|
||||
{ name: "领导班子", value: "其他 | 虚拟" },
|
||||
{ name: "厂部办公室", value: "职能部门 | 非虚拟" },
|
||||
{ name: "企业管理科", value: "职能部门 | 非虚拟" },
|
||||
{ name: "生产调度科", value: "职能部门 | 非虚拟" },
|
||||
{ name: "安全保卫科", value: "职能部门 | 非虚拟" },
|
||||
{ name: "法律与改革科", value: "职能部门 | 非虚拟" },
|
||||
{ name: "财务管理科", value: "职能部门 | 非虚拟" },
|
||||
{ name: "审计科", value: "职能部门 | 非虚拟" },
|
||||
{ name: "人力资源科", value: "职能部门 | 非虚拟" },
|
||||
{ name: "党建工作科", value: "职能部门 | 非虚拟" },
|
||||
{ name: "纪检监察科", value: "职能部门 | 非虚拟" },
|
||||
{ name: "设备工程科", value: "职能部门 | 非虚拟" },
|
||||
{ name: "工艺品质科", value: "职能部门 | 非虚拟" },
|
||||
{
|
||||
name: "营销管理办公室",
|
||||
value: "专业部门 | 非虚拟",
|
||||
children: [
|
||||
{ name: "恩施责任区域", value: "专业部门 | 非虚拟" },
|
||||
{ name: "川藏责任区域", value: "专业部门 | 非虚拟" },
|
||||
{ name: "重庆责任区域", value: "专业部门 | 非虚拟" },
|
||||
{ name: "黑龙江责任区域", value: "专业部门 | 非虚拟" },
|
||||
{ name: "吉大责任区域", value: "专业部门 | 非虚拟" },
|
||||
{ name: "辽宁责任区域", value: "专业部门 | 非虚拟" },
|
||||
],
|
||||
},
|
||||
{ name: "物资采购办公室", value: "专业部门 | 非虚拟" },
|
||||
{ name: "群团工作科", value: "职能部门 | 非虚拟" },
|
||||
{ name: "信息管理办公室", value: "专业部门 | 非虚拟" },
|
||||
{ name: "项目管理办公室", value: "专业部门 | 非虚拟" },
|
||||
{ name: "动力车间", value: "生产部门 | 非虚拟" },
|
||||
{ name: "制丝车间", value: "生产部门 | 非虚拟" },
|
||||
{ name: "卷包车间", value: "生产部门 | 非虚拟" },
|
||||
{ name: "物流车间", value: "生产部门 | 非虚拟" },
|
||||
{ name: "内部退养人员", value: "其他 | 虚拟" },
|
||||
{ name: "离退休人员", value: "其他 | 虚拟" },
|
||||
{ name: "离职人员", value: "其他 | 虚拟" },
|
||||
],
|
||||
},
|
||||
data: {
|
||||
name: "flare",
|
||||
children: [
|
||||
{
|
||||
name: "analytics",
|
||||
children: [
|
||||
{
|
||||
name: "cluster",
|
||||
children: [
|
||||
{ name: "AgglomerativeCluster", value: 3938 },
|
||||
{ name: "CommunityStructure", value: 3812 },
|
||||
{ name: "HierarchicalCluster", value: 6714 },
|
||||
{ name: "MergeEdge", value: 743 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "graph",
|
||||
children: [
|
||||
{ name: "BetweennessCentrality", value: 3534 },
|
||||
{ name: "LinkDistance", value: 5731 },
|
||||
{ name: "MaxFlowMinCut", value: 7840 },
|
||||
{ name: "ShortestPaths", value: 5914 },
|
||||
{ name: "SpanningTree", value: 3416 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "optimization",
|
||||
children: [{ name: "AspectRatioBanker", value: 7074 }],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "animate",
|
||||
children: [
|
||||
{ name: "Easing", value: 17010 },
|
||||
{ name: "FunctionSequence", value: 5842 },
|
||||
{
|
||||
name: "interpolate",
|
||||
children: [
|
||||
{ name: "ArrayInterpolator", value: 1983 },
|
||||
{ name: "ColorInterpolator", value: 2047 },
|
||||
{ name: "DateInterpolator", value: 1375 },
|
||||
{ name: "Interpolator", value: 8746 },
|
||||
{ name: "MatrixInterpolator", value: 2202 },
|
||||
{ name: "NumberInterpolator", value: 1382 },
|
||||
{ name: "ObjectInterpolator", value: 1629 },
|
||||
{ name: "PointInterpolator", value: 1675 },
|
||||
{ name: "RectangleInterpolator", value: 2042 },
|
||||
],
|
||||
},
|
||||
{ name: "ISchedulable", value: 1041 },
|
||||
{ name: "Parallel", value: 5176 },
|
||||
{ name: "Pause", value: 449 },
|
||||
{ name: "Scheduler", value: 5593 },
|
||||
{ name: "Sequence", value: 5534 },
|
||||
{ name: "Transition", value: 9201 },
|
||||
{ name: "Transitioner", value: 19975 },
|
||||
{ name: "TransitionEvent", value: 1116 },
|
||||
{ name: "Tween", value: 6006 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "data",
|
||||
children: [
|
||||
{
|
||||
name: "converters",
|
||||
children: [
|
||||
{ name: "Converters", value: 721 },
|
||||
{ name: "DelimitedTextConverter", value: 4294 },
|
||||
{ name: "GraphMLConverter", value: 9800 },
|
||||
{ name: "IDataConverter", value: 1314 },
|
||||
{ name: "JSONConverter", value: 2220 },
|
||||
],
|
||||
},
|
||||
{ name: "DataField", value: 1759 },
|
||||
{ name: "DataSchema", value: 2165 },
|
||||
{ name: "DataSet", value: 586 },
|
||||
{ name: "DataSource", value: 3331 },
|
||||
{ name: "DataTable", value: 772 },
|
||||
{ name: "DataUtil", value: 3322 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "display",
|
||||
children: [
|
||||
{ name: "DirtySprite", value: 8833 },
|
||||
{ name: "LineSprite", value: 1732 },
|
||||
{ name: "RectSprite", value: 3623 },
|
||||
{ name: "TextSprite", value: 10066 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "flex",
|
||||
children: [{ name: "FlareVis", value: 4116 }],
|
||||
},
|
||||
{
|
||||
name: "physics",
|
||||
children: [
|
||||
{ name: "DragForce", value: 1082 },
|
||||
{ name: "GravityForce", value: 1336 },
|
||||
{ name: "IForce", value: 319 },
|
||||
{ name: "NBodyForce", value: 10498 },
|
||||
{ name: "Particle", value: 2822 },
|
||||
{ name: "Simulation", value: 9983 },
|
||||
{ name: "Spring", value: 2213 },
|
||||
{ name: "SpringForce", value: 1681 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "query",
|
||||
children: [
|
||||
{ name: "AggregateExpression", value: 1616 },
|
||||
{ name: "And", value: 1027 },
|
||||
{ name: "Arithmetic", value: 3891 },
|
||||
{ name: "Average", value: 891 },
|
||||
{ name: "BinaryExpression", value: 2893 },
|
||||
{ name: "Comparison", value: 5103 },
|
||||
{ name: "CompositeExpression", value: 3677 },
|
||||
{ name: "Count", value: 781 },
|
||||
{ name: "DateUtil", value: 4141 },
|
||||
{ name: "Distinct", value: 933 },
|
||||
{ name: "Expression", value: 5130 },
|
||||
{ name: "ExpressionIterator", value: 3617 },
|
||||
{ name: "Fn", value: 3240 },
|
||||
{ name: "If", value: 2732 },
|
||||
{ name: "IsA", value: 2039 },
|
||||
{ name: "Literal", value: 1214 },
|
||||
{ name: "Match", value: 3748 },
|
||||
{ name: "Maximum", value: 843 },
|
||||
{
|
||||
name: "methods",
|
||||
children: [
|
||||
{ name: "add", value: 593 },
|
||||
{ name: "and", value: 330 },
|
||||
{ name: "average", value: 287 },
|
||||
{ name: "count", value: 277 },
|
||||
{ name: "distinct", value: 292 },
|
||||
{ name: "div", value: 595 },
|
||||
{ name: "eq", value: 594 },
|
||||
{ name: "fn", value: 460 },
|
||||
{ name: "gt", value: 603 },
|
||||
{ name: "gte", value: 625 },
|
||||
{ name: "iff", value: 748 },
|
||||
{ name: "isa", value: 461 },
|
||||
{ name: "lt", value: 597 },
|
||||
{ name: "lte", value: 619 },
|
||||
{ name: "max", value: 283 },
|
||||
{ name: "min", value: 283 },
|
||||
{ name: "mod", value: 591 },
|
||||
{ name: "mul", value: 603 },
|
||||
{ name: "neq", value: 599 },
|
||||
{ name: "not", value: 386 },
|
||||
{ name: "or", value: 323 },
|
||||
{ name: "orderby", value: 307 },
|
||||
{ name: "range", value: 772 },
|
||||
{ name: "select", value: 296 },
|
||||
{ name: "stddev", value: 363 },
|
||||
{ name: "sub", value: 600 },
|
||||
{ name: "sum", value: 280 },
|
||||
{ name: "update", value: 307 },
|
||||
{ name: "variance", value: 335 },
|
||||
{ name: "where", value: 299 },
|
||||
{ name: "xor", value: 354 },
|
||||
{ name: "-", value: 264 },
|
||||
],
|
||||
},
|
||||
{ name: "Minimum", value: 843 },
|
||||
{ name: "Not", value: 1554 },
|
||||
{ name: "Or", value: 970 },
|
||||
{ name: "Query", value: 13896 },
|
||||
{ name: "Range", value: 1594 },
|
||||
{ name: "StringUtil", value: 4130 },
|
||||
{ name: "Sum", value: 791 },
|
||||
{ name: "Variable", value: 1124 },
|
||||
{ name: "Variance", value: 1876 },
|
||||
{ name: "Xor", value: 1101 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "scale",
|
||||
children: [
|
||||
{ name: "IScaleMap", value: 2105 },
|
||||
{ name: "LinearScale", value: 1316 },
|
||||
{ name: "LogScale", value: 3151 },
|
||||
{ name: "OrdinalScale", value: 3770 },
|
||||
{ name: "QuantileScale", value: 2435 },
|
||||
{ name: "QuantitativeScale", value: 4839 },
|
||||
{ name: "RootScale", value: 1756 },
|
||||
{ name: "Scale", value: 4268 },
|
||||
{ name: "ScaleType", value: 1821 },
|
||||
{ name: "TimeScale", value: 5833 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "util",
|
||||
children: [
|
||||
{ name: "Arrays", value: 8258 },
|
||||
{ name: "Colors", value: 10001 },
|
||||
{ name: "Dates", value: 8217 },
|
||||
{ name: "Displays", value: 12555 },
|
||||
{ name: "Filter", value: 2324 },
|
||||
{ name: "Geometry", value: 10993 },
|
||||
{
|
||||
name: "heap",
|
||||
children: [
|
||||
{ name: "FibonacciHeap", value: 9354 },
|
||||
{ name: "HeapNode", value: 1233 },
|
||||
],
|
||||
},
|
||||
{ name: "IEvaluable", value: 335 },
|
||||
{ name: "IPredicate", value: 383 },
|
||||
{ name: "IValueProxy", value: 874 },
|
||||
{
|
||||
name: "math",
|
||||
children: [
|
||||
{ name: "DenseMatrix", value: 3165 },
|
||||
{ name: "IMatrix", value: 2815 },
|
||||
{ name: "SparseMatrix", value: 3366 },
|
||||
],
|
||||
},
|
||||
{ name: "Maths", value: 17705 },
|
||||
{ name: "Orientation", value: 1486 },
|
||||
{
|
||||
name: "palette",
|
||||
children: [
|
||||
{ name: "ColorPalette", value: 6367 },
|
||||
{ name: "Palette", value: 1229 },
|
||||
{ name: "ShapePalette", value: 2059 },
|
||||
{ name: "SizePalette", value: 2291 },
|
||||
],
|
||||
},
|
||||
{ name: "Property", value: 5559 },
|
||||
{ name: "Shapes", value: 19118 },
|
||||
{ name: "Sort", value: 6887 },
|
||||
{ name: "Stats", value: 6557 },
|
||||
{ name: "Strings", value: 22026 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "vis",
|
||||
children: [
|
||||
{
|
||||
name: "axis",
|
||||
children: [
|
||||
{ name: "Axes", value: 1302 },
|
||||
{ name: "Axis", value: 24593 },
|
||||
{ name: "AxisGridLine", value: 652 },
|
||||
{ name: "AxisLabel", value: 636 },
|
||||
{ name: "CartesianAxes", value: 6703 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "controls",
|
||||
children: [
|
||||
{ name: "AnchorControl", value: 2138 },
|
||||
{ name: "ClickControl", value: 3824 },
|
||||
{ name: "Control", value: 1353 },
|
||||
{ name: "ControlList", value: 4665 },
|
||||
{ name: "DragControl", value: 2649 },
|
||||
{ name: "ExpandControl", value: 2832 },
|
||||
{ name: "HoverControl", value: 4896 },
|
||||
{ name: "IControl", value: 763 },
|
||||
{ name: "PanZoomControl", value: 5222 },
|
||||
{ name: "SelectionControl", value: 7862 },
|
||||
{ name: "TooltipControl", value: 8435 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "data",
|
||||
children: [
|
||||
{ name: "Data", value: 20544 },
|
||||
{ name: "DataList", value: 19788 },
|
||||
{ name: "DataSprite", value: 10349 },
|
||||
{ name: "EdgeSprite", value: 3301 },
|
||||
{ name: "NodeSprite", value: 19382 },
|
||||
{
|
||||
name: "render",
|
||||
children: [
|
||||
{ name: "ArrowType", value: 698 },
|
||||
{ name: "EdgeRenderer", value: 5569 },
|
||||
{ name: "IRenderer", value: 353 },
|
||||
{ name: "ShapeRenderer", value: 2247 },
|
||||
],
|
||||
},
|
||||
{ name: "ScaleBinding", value: 11275 },
|
||||
{ name: "Tree", value: 7147 },
|
||||
{ name: "TreeBuilder", value: 9930 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "events",
|
||||
children: [
|
||||
{ name: "DataEvent", value: 2313 },
|
||||
{ name: "SelectionEvent", value: 1880 },
|
||||
{ name: "TooltipEvent", value: 1701 },
|
||||
{ name: "VisualizationEvent", value: 1117 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "legend",
|
||||
children: [
|
||||
{ name: "Legend", value: 20859 },
|
||||
{ name: "LegendItem", value: 4614 },
|
||||
{ name: "LegendRange", value: 10530 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "operator",
|
||||
children: [
|
||||
{
|
||||
name: "distortion",
|
||||
children: [
|
||||
{ name: "BifocalDistortion", value: 4461 },
|
||||
{ name: "Distortion", value: 6314 },
|
||||
{ name: "FisheyeDistortion", value: 3444 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "encoder",
|
||||
children: [
|
||||
{ name: "ColorEncoder", value: 3179 },
|
||||
{ name: "Encoder", value: 4060 },
|
||||
{ name: "PropertyEncoder", value: 4138 },
|
||||
{ name: "ShapeEncoder", value: 1690 },
|
||||
{ name: "SizeEncoder", value: 1830 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "filter",
|
||||
children: [
|
||||
{ name: "FisheyeTreeFilter", value: 5219 },
|
||||
{ name: "GraphDistanceFilter", value: 3165 },
|
||||
{ name: "VisibilityFilter", value: 3509 },
|
||||
],
|
||||
},
|
||||
{ name: "IOperator", value: 1286 },
|
||||
{
|
||||
name: "label",
|
||||
children: [
|
||||
{ name: "Labeler", value: 9956 },
|
||||
{ name: "RadialLabeler", value: 3899 },
|
||||
{ name: "StackedAreaLabeler", value: 3202 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "layout",
|
||||
children: [
|
||||
{ name: "AxisLayout", value: 6725 },
|
||||
{ name: "BundledEdgeRouter", value: 3727 },
|
||||
{ name: "CircleLayout", value: 9317 },
|
||||
{ name: "CirclePackingLayout", value: 12003 },
|
||||
{ name: "DendrogramLayout", value: 4853 },
|
||||
{ name: "ForceDirectedLayout", value: 8411 },
|
||||
{ name: "IcicleTreeLayout", value: 4864 },
|
||||
{ name: "IndentedTreeLayout", value: 3174 },
|
||||
{ name: "Layout", value: 7881 },
|
||||
{ name: "NodeLinkTreeLayout", value: 12870 },
|
||||
{ name: "PieLayout", value: 2728 },
|
||||
{ name: "RadialTreeLayout", value: 12348 },
|
||||
{ name: "RandomLayout", value: 870 },
|
||||
{ name: "StackedAreaLayout", value: 9121 },
|
||||
{ name: "TreeMapLayout", value: 9191 },
|
||||
],
|
||||
},
|
||||
{ name: "Operator", value: 2490 },
|
||||
{ name: "OperatorList", value: 5248 },
|
||||
{ name: "OperatorSequence", value: 4190 },
|
||||
{ name: "OperatorSwitch", value: 2581 },
|
||||
{ name: "SortOperator", value: 2023 },
|
||||
],
|
||||
},
|
||||
{ name: "Visualization", value: 16540 },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.initChart();
|
||||
},
|
||||
beforeDestroy() {
|
||||
if (!this.chart) {
|
||||
return;
|
||||
}
|
||||
this.chart.dispose();
|
||||
this.chart = null;
|
||||
},
|
||||
methods: {
|
||||
initChart() {
|
||||
this.chart = echarts.init(document.getElementById("job_img"), null, {
|
||||
renderer: "canvas",
|
||||
useDirtyRect: false,
|
||||
});
|
||||
this.chart.setOption({
|
||||
tooltip: {
|
||||
trigger: "item",
|
||||
triggerOn: "mousemove",
|
||||
},
|
||||
series: [
|
||||
{
|
||||
type: "tree",
|
||||
data: [this.job_data],
|
||||
left: "2%",
|
||||
right: "2%",
|
||||
top: "8%",
|
||||
bottom: "20%",
|
||||
symbol: "emptyCircle",
|
||||
orient: "vertical",
|
||||
expandAndCollapse: true,
|
||||
label: {
|
||||
position: "top",
|
||||
rotate: -90,
|
||||
verticalAlign: "middle",
|
||||
align: "right",
|
||||
fontSize: 9,
|
||||
},
|
||||
leaves: {
|
||||
label: {
|
||||
position: "bottom",
|
||||
rotate: -90,
|
||||
verticalAlign: "middle",
|
||||
align: "left",
|
||||
},
|
||||
},
|
||||
animationDurationUpdate: 750,
|
||||
},
|
||||
],
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.main-body {
|
||||
width: 100%;
|
||||
height: calc(100vh - 50px);
|
||||
}
|
||||
|
||||
.body-left {
|
||||
width: 60%;
|
||||
height: 100%;
|
||||
background-color: aqua;
|
||||
}
|
||||
|
||||
.body-right {
|
||||
width: 40%;
|
||||
height: 100%;
|
||||
background-color: red;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,5 @@
|
|||
<template>
|
||||
<div>
|
||||
job search
|
||||
</div>
|
||||
</template>
|
|
@ -0,0 +1,867 @@
|
|||
<template>
|
||||
<el-container class="main-body">
|
||||
<el-container class="body-left">
|
||||
<el-header height="10%" class="left-header">
|
||||
<el-row type="flex" justify="space-around" style="width: 90%">
|
||||
<el-col :span="3"
|
||||
><el-button @click="shotScreen" size="medium"
|
||||
>下载图片</el-button
|
||||
></el-col
|
||||
>
|
||||
<el-col :span="5">
|
||||
<el-select
|
||||
v-model="level"
|
||||
placeholder="展开节点"
|
||||
size="medium"
|
||||
@change="expand_to_level"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in nodeOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-select
|
||||
v-model="theme"
|
||||
placeholder="选择主题"
|
||||
@change="set_theme"
|
||||
size="medium"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in themeOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<el-button @click="clickModify" size="medium"
|
||||
>修改</el-button
|
||||
></el-col
|
||||
>
|
||||
<el-col :span="2">
|
||||
<el-button
|
||||
@click="clickSave"
|
||||
size="medium"
|
||||
v-bind:disabled="!allowSave"
|
||||
>保存</el-button
|
||||
></el-col
|
||||
>
|
||||
</el-row>
|
||||
</el-header>
|
||||
<div
|
||||
style="height: 90%; width: 100%"
|
||||
id="jsmind_container"
|
||||
v-on:click="clickNode"
|
||||
></div>
|
||||
</el-container>
|
||||
<el-container class="body-right">
|
||||
<el-header height="10%" class="right-header">
|
||||
<el-row type="flex" justify="space-around" style="width: 90%">
|
||||
<el-col :span="2"
|
||||
><el-button plain @click="clickHello()" size="medium"
|
||||
>你好世界</el-button
|
||||
></el-col
|
||||
>
|
||||
<el-col :span="2"
|
||||
><el-button plain size="medium">展开全部</el-button></el-col
|
||||
>
|
||||
<el-col :span="2"
|
||||
><el-button plain size="medium">关闭全部</el-button></el-col
|
||||
>
|
||||
<el-col :span="2"
|
||||
><el-button plain size="medium">保存修改</el-button></el-col
|
||||
>
|
||||
</el-row>
|
||||
</el-header>
|
||||
<el-main class="right-main">
|
||||
<div class="jd-title">{{ jobData.岗位名称 }} 岗位说明书</div>
|
||||
<div class="jd-block1">
|
||||
<div class="jd-h1">一、岗位概况</div>
|
||||
<table class="jd-table">
|
||||
<tr>
|
||||
<th>岗位名称</th>
|
||||
<td>
|
||||
<edit-text
|
||||
:val="jobData.岗位概况.岗位名称"
|
||||
:itemName="'岗位名称'"
|
||||
@changeDomainVal="changeOverviewVal"
|
||||
></edit-text>
|
||||
</td>
|
||||
<th>岗位级别</th>
|
||||
<td>
|
||||
<edit-text
|
||||
:val="jobData.岗位概况.岗位级别"
|
||||
:itemName="'岗位级别'"
|
||||
@changeDomainVal="changeOverviewVal"
|
||||
></edit-text>
|
||||
</td>
|
||||
<th>定编人数</th>
|
||||
<td>
|
||||
<edit-text
|
||||
:val="jobData.岗位概况.定编人数"
|
||||
:itemName="'定编人数'"
|
||||
@changeDomainVal="changeOverviewVal"
|
||||
></edit-text>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>所属部门</th>
|
||||
<td>
|
||||
<edit-text
|
||||
:val="jobData.岗位概况.所属部门"
|
||||
:itemName="'所属部门'"
|
||||
@changeDomainVal="changeOverviewVal"
|
||||
></edit-text>
|
||||
</td>
|
||||
<th>岗位类别</th>
|
||||
<td>
|
||||
<edit-text
|
||||
:val="jobData.岗位概况.岗位类别"
|
||||
:itemName="'岗位类别'"
|
||||
@changeDomainVal="changeOverviewVal"
|
||||
></edit-text>
|
||||
</td>
|
||||
<th>辖员人数</th>
|
||||
<td>
|
||||
<edit-text
|
||||
:val="jobData.岗位概况.辖员人数"
|
||||
:itemName="'辖员人数'"
|
||||
@changeDomainVal="changeOverviewVal"
|
||||
></edit-text>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>直接上级</th>
|
||||
<td>
|
||||
<edit-text
|
||||
:val="jobData.岗位概况.直接上级"
|
||||
:itemName="'直接上级'"
|
||||
@changeDomainVal="changeOverviewVal"
|
||||
></edit-text>
|
||||
</td>
|
||||
<th>直接下级</th>
|
||||
<td colspan="3">
|
||||
<edit-text
|
||||
:val="jobData.岗位概况.直接下级"
|
||||
:itemName="'直接下级'"
|
||||
@changeDomainVal="changeOverviewVal"
|
||||
></edit-text>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="jd-block1">
|
||||
<div class="jd-h1">二、工作内容</div>
|
||||
<div class="jd-block2">
|
||||
<div class="jd-h2">1、工作概况</div>
|
||||
<edit-div class="jd-text" v-model="jobData.工作内容.工作概况">
|
||||
</edit-div>
|
||||
</div>
|
||||
<div class="jd-block2">
|
||||
<div class="jd-h2">2、工作说明</div>
|
||||
<div class="jd-block3">
|
||||
<div class="jd-h3">党风廉政建设</div>
|
||||
<edit-div
|
||||
class="jd-text"
|
||||
v-model="jobData.工作内容.工作说明.党风廉政建设"
|
||||
></edit-div>
|
||||
</div>
|
||||
<div class="jd-block3">
|
||||
<div class="jd-h3">部门管理</div>
|
||||
<edit-list
|
||||
:data="jobData.工作内容.工作说明.部门管理"
|
||||
class="jd-text"
|
||||
></edit-list>
|
||||
</div>
|
||||
<div class="jd-block3">
|
||||
<div class="jd-h3">业务管理</div>
|
||||
<edit-list
|
||||
:data="jobData.工作内容.工作说明.业务管理"
|
||||
class="jd-text"
|
||||
></edit-list>
|
||||
</div>
|
||||
<div class="jd-block3">
|
||||
<div class="jd-h3">属员管理</div>
|
||||
<edit-list
|
||||
:data="jobData.工作内容.工作说明.属员管理"
|
||||
class="jd-text"
|
||||
></edit-list>
|
||||
</div>
|
||||
<div class="jd-block3">
|
||||
<div class="jd-h3">安全职责</div>
|
||||
<edit-list
|
||||
:data="jobData.工作内容.工作说明.安全职责"
|
||||
class="jd-text"
|
||||
></edit-list>
|
||||
</div>
|
||||
<div class="jd-block3">
|
||||
<div class="jd-h3">兼办、协助、临时代理工作</div>
|
||||
<edit-list
|
||||
:data="jobData.工作内容.工作说明.临时代理工作"
|
||||
class="jd-text"
|
||||
></edit-list>
|
||||
</div>
|
||||
</div>
|
||||
<div class="jd-block2">
|
||||
<div class="jd-h2">3、职权范围</div>
|
||||
<table class="jd-table jd-table2">
|
||||
<tr>
|
||||
<th colspan="2">所受监督</th>
|
||||
<td>
|
||||
<edit-div
|
||||
v-model="jobData.工作内容.职权范围.所受监督"
|
||||
></edit-div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="2">所施监督</th>
|
||||
<td>
|
||||
<edit-div
|
||||
v-model="jobData.工作内容.职权范围.所施监督"
|
||||
></edit-div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="2">工作权限</th>
|
||||
<td>
|
||||
<edit-list
|
||||
:data="jobData.工作内容.职权范围.工作权限"
|
||||
></edit-list>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2" class="vertical-one">沟通关系</th>
|
||||
<th class="vertical-two">企业内部</th>
|
||||
<td>
|
||||
<edit-list
|
||||
:data="jobData.工作内容.职权范围.沟通关系企业内部"
|
||||
></edit-list>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="vertical-two">企业外部</th>
|
||||
<td>
|
||||
<edit-list
|
||||
:data="jobData.工作内容.职权范围.沟通关系企业外部"
|
||||
></edit-list>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="jd-block2">
|
||||
<div class="jd-h2">4、工作环境与条件</div>
|
||||
<table class="jd-table">
|
||||
<tr>
|
||||
<th>工作时间</th>
|
||||
<td>
|
||||
<el-radio-group
|
||||
v-model="jobData.工作内容.工作环境与条件.工作时间"
|
||||
@change="changeCheckGroup"
|
||||
>
|
||||
<el-radio :label="'办公班,实际工作时间8小时'"
|
||||
>办公班,实际工作时间8小时</el-radio
|
||||
>
|
||||
<el-radio :label="'综合计算工时工作制'"
|
||||
>综合计算工时工作制</el-radio
|
||||
>
|
||||
<el-radio :label="'不定时工作制'">不定时工作制</el-radio>
|
||||
</el-radio-group>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>脑力强度</th>
|
||||
<td>
|
||||
<el-radio-group
|
||||
v-model="jobData.工作内容.工作环境与条件.工作强度脑力劳动"
|
||||
@change="changeCheckGroup"
|
||||
>
|
||||
<el-radio :label="'高'">高</el-radio>
|
||||
<el-radio :label="'中'">中</el-radio>
|
||||
<el-radio :label="'低'">低</el-radio>
|
||||
</el-radio-group>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>体力强度</th>
|
||||
<td>
|
||||
<el-radio-group
|
||||
v-model="jobData.工作内容.工作环境与条件.工作强度体力劳动"
|
||||
@change="changeCheckGroup"
|
||||
>
|
||||
<el-radio :label="'高'">高</el-radio>
|
||||
<el-radio :label="'中'">中</el-radio>
|
||||
<el-radio :label="'低'">低</el-radio>
|
||||
</el-radio-group>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>出差频度</th>
|
||||
<td>
|
||||
<el-radio-group
|
||||
v-model="jobData.工作内容.工作环境与条件.出差频度"
|
||||
@change="changeCheckGroup"
|
||||
>
|
||||
<el-radio :label="'驻外工作'">驻外工作</el-radio>
|
||||
<el-radio :label="'经常出差'">经常出差</el-radio>
|
||||
<el-radio :label="'有时出差'">有时出差</el-radio>
|
||||
<el-radio :label="'极少或不出差'">极少或不出差</el-radio>
|
||||
</el-radio-group>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>主要工作场所</th>
|
||||
<td>
|
||||
<el-radio-group
|
||||
v-model="jobData.工作内容.工作环境与条件.主要工作场所"
|
||||
@change="changeCheckGroup"
|
||||
>
|
||||
<el-radio :label="'室内'">室内</el-radio>
|
||||
<el-radio :label="'室外'">室外</el-radio>
|
||||
</el-radio-group>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>环境舒适性</th>
|
||||
<td>
|
||||
<el-radio-group
|
||||
v-model="jobData.工作内容.工作环境与条件.工作环境的舒适性"
|
||||
@change="changeCheckGroup"
|
||||
>
|
||||
<el-radio :label="'舒适'">舒适</el-radio>
|
||||
<el-radio :label="'一般'">一般</el-radio>
|
||||
<el-radio :label="'较差'">较差</el-radio>
|
||||
</el-radio-group>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>环境特殊性</th>
|
||||
<td>
|
||||
<el-checkbox-group
|
||||
v-model="jobData.工作内容.工作环境与条件.工作环境的特殊性"
|
||||
@change="changeCheckGroup"
|
||||
>
|
||||
<el-checkbox label="无"></el-checkbox>
|
||||
<el-checkbox label="粉尘\有毒有害气体"></el-checkbox>
|
||||
<el-checkbox label="噪音"></el-checkbox>
|
||||
<el-checkbox label="高温\高压"></el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="jd-block1">
|
||||
<div class="jd-h1">三、任职资格</div>
|
||||
<table class="jd-table jd-table2">
|
||||
<tr>
|
||||
<th>学历</th>
|
||||
<td>
|
||||
<edit-div v-model="jobData.任职资格.学历"></edit-div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>专业</th>
|
||||
<td><edit-div v-model="jobData.任职资格.专业"></edit-div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>技术职称</th>
|
||||
<td><edit-div v-model="jobData.任职资格.技术职称"></edit-div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>所需知识</th>
|
||||
<td><edit-div v-model="jobData.任职资格.所需知识"></edit-div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="vertical-four">所需技能能力</th>
|
||||
<td>
|
||||
<edit-list :data="jobData.任职资格.所需技能或能力"></edit-list>
|
||||
<!-- <edit-div v-model="jobData.任职资格.所需技能或能力"></edit-div> -->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>所需经历经验</th>
|
||||
<td>
|
||||
<edit-div v-model="jobData.任职资格.所需经历或经验"></edit-div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>所需体能</th>
|
||||
<td><edit-div v-model="jobData.任职资格.所需体能"></edit-div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>所需职业风格</th>
|
||||
<td>
|
||||
<edit-div v-model="jobData.任职资格.所需职业风格"></edit-div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="jd-block1">
|
||||
<div class="jd-h1">四、备注</div>
|
||||
<edit-div v-model="jobData.备注" class="jd-text"></edit-div>
|
||||
</div>
|
||||
</el-main>
|
||||
</el-container>
|
||||
</el-container>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import "@/assets/css/jsmind.css";
|
||||
import jsMind from "jsmind/js/jsmind.js";
|
||||
import EditText from "@/components/EditText/EditText.vue";
|
||||
import EditDiv from "@/components/EditDiv/index.vue";
|
||||
import EditList from "@/components/EditList/index.vue";
|
||||
window.jsMind = jsMind;
|
||||
|
||||
const { init, reBuild } = require("@/assets/js/jsmind.menu.js");
|
||||
require("jsmind/js/jsmind.draggable.js");
|
||||
require("jsmind/js/jsmind.screenshot.js");
|
||||
init(jsMind);
|
||||
|
||||
export default {
|
||||
name: "job",
|
||||
data() {
|
||||
return {
|
||||
jm: null,
|
||||
level: 1,
|
||||
nodeOptions: [
|
||||
{ value: 1, label: "展开到一级节点" },
|
||||
{ value: 2, label: "展开到二级节点" },
|
||||
{ value: 3, label: "展开到三级节点" },
|
||||
{ value: 4, label: "展开到四级节点" },
|
||||
{ value: 0, label: "展开全部节点" },
|
||||
{ value: -1, label: "隐藏全部节点" },
|
||||
],
|
||||
themeOptions: [
|
||||
{ value: "default", label: "纯白" },
|
||||
{ value: "clouds", label: "云朵白" },
|
||||
{ value: "wisteria", label: "紫" },
|
||||
{ value: "belizehole", label: "天空蓝" },
|
||||
{ value: "primary", label: "深蓝" },
|
||||
{ value: "info", label: "青" },
|
||||
{ value: "nephrite", label: "青绿" },
|
||||
{ value: "success", label: "浅绿 " },
|
||||
{ value: "greensea", label: "绿" },
|
||||
{ value: "orange", label: "橘黄" },
|
||||
{ value: "warning", label: "浅黄" },
|
||||
{ value: "pumpkin", label: "南瓜黄" },
|
||||
{ value: "danger", label: "红" },
|
||||
{ value: "pomegranate", label: "石榴红" },
|
||||
{ value: "asbestos", label: "灰" },
|
||||
{ value: "asphalt", label: "沥青黑" },
|
||||
],
|
||||
theme: "belizehole",
|
||||
allowSave: false,
|
||||
|
||||
jobData: {
|
||||
岗位名称: "财务科科长",
|
||||
岗位概况: {
|
||||
岗位名称: "科长",
|
||||
岗位级别: "10",
|
||||
定编人数: "1",
|
||||
所属部门: "财务科",
|
||||
岗位类别: "专业管理类",
|
||||
辖员人数: "9",
|
||||
直接上级: "分管领导",
|
||||
直接下级: "副科长",
|
||||
},
|
||||
工作内容: {
|
||||
工作概况:
|
||||
"依据《会计法》及相关财经法规,开展企业会计审核、会计监督、资金调拨、预算控制、财务分析等财务管理工作,建立、健全现代企业财务管理体系,确保企业稳定健康发展对财务的需求。",
|
||||
工作说明: {
|
||||
党风廉政建设:
|
||||
'1、抓好全面从严治党和党风廉政建设,切实履行好党建的“一岗双责”。抓好本部门的党风廉政建设,把反腐倡廉、案件防范工作与业务工作同研究、同规划、同布置、同检查、同考核、同问责,真正做到"两手抓、两手硬",使党风廉政建设和反腐败工作始终保持应有的力度。',
|
||||
部门管理: [
|
||||
"2、根据企业管理规范,组织制定企业内部财务管理制度、会计控制规范及会计核算规程,以及部门相关的岗位职责、和工作流程;",
|
||||
"3、组织开展本部门综合管理体系的推行与维护工作;",
|
||||
"4、根据预算管理,执行本部门费用控制;",
|
||||
"5、对本部门直接管辖范围内人员、场所负全面安全管理责任。",
|
||||
],
|
||||
业务管理: [
|
||||
"6、协助分管财务厂长完善全厂的财务管理体系,主持全厂会计核算工作;",
|
||||
"7、组织实施企业全面预算管理工作,监督财务预算执行情况,上报企业年度及月度财务预算;",
|
||||
"8、组织企业财务分析,参与企业生产经营决策,编制财务分析资料,供领导决策参考;",
|
||||
"9、筹集、调度资金,保证企业生产及经营管理的正常运行对资金的需求;",
|
||||
"10、审批会计凭证及各项资金和费用;",
|
||||
"11、监督和参与企业重大采购、投资、资产处置及工程招投标活动;",
|
||||
"12、组织财经法规、财务制度的宣传工作。",
|
||||
],
|
||||
属员管理: [
|
||||
"13、开展本部门员工的绩效管理工作,对员工任免提出意见;",
|
||||
"14、组织部门员工培训工作,督导企业会计人员的政治学习和业务学习,加强团队建设与廉政作风建设,增强团队凝聚力。",
|
||||
],
|
||||
安全职责: [
|
||||
"15、保证国家安全生产法规和厂安全生产规章制度在本部门的贯彻执行,对本部门的安全工作负全面责任,健全安全机构,层层落实安全生产责任。",
|
||||
"16、贯彻“五同时”的原则,即在计划、布置、检查、总结、评比生产工作的同时,同时计划、布置、检查、总结、评比安全工作。",
|
||||
"17、监督检查本部门对安全生产各项规章制度的执行情况,及时纠正“三违”行为。",
|
||||
"18、组织制订并实施本部门安全生产管理规定、安全技术操作规程、安全技术措施计划。",
|
||||
"19、负责组织对部门职工进行经常性的安全思想、安全知识和安全技术教育培训;组织并参加厂组织的安全活动,至少组织两次部门的安全活动,掌握其部门存在的危险因素、防范措施及事故应急措施。",
|
||||
"20、负责组织本部门安全检查,每季度参加本部门安全检查一次以上,落实隐患整改,保证生产设备、安全设施、消防设施、防护器材等处于完好状态,并教育职工加强维护、正确使用。",
|
||||
"21、负责本部门的应急管理,定期开展应急处置预案的演练及评估,发生事故应及时现场组织抢救,协助事故调查处理。",
|
||||
"22、负责组织分析本部门安全生产动态,向上级领导汇报本部门的安全生产情况。",
|
||||
],
|
||||
临时代理工作: ["23、完成上级领导临时交办的其他工作任务。"],
|
||||
},
|
||||
职权范围: {
|
||||
所受监督:
|
||||
"企业资金安全、资金和费用的审批支付、资金调度、企业预算管理",
|
||||
所施监督:
|
||||
"会计核算、财务分析、预算的执行与控制、资金与费用的支付、工程招投标",
|
||||
工作权限: [
|
||||
"1、对企业财务预算的分解落实、资金及费用的支付有建议权和执行权;",
|
||||
"2、对企业内部财务管理制度有拟定权和监督权;",
|
||||
"3、企业重大采购、投资、资产处置及工程招投标有监督权;",
|
||||
"4、对财务会计人员的任用、考核、培训、晋升有建议权;",
|
||||
"5、对本部门费用的使用有支配权;",
|
||||
"6、对本厂安全工作有建议权,对本部门安全工作有决策权;",
|
||||
"7、有权拒绝违章指挥和强令冒险作业,并对他人违章作业加以劝阻和制止。",
|
||||
],
|
||||
沟通关系企业内部: [
|
||||
"与企业领导就预算执行情况、财务分析、资金使用情况等进行请示、汇报;",
|
||||
"与厂内各科室就安全管理、财务预算、固定资产保管与处置等进行沟通。",
|
||||
],
|
||||
沟通关系企业外部: [
|
||||
"与中烟公司财务部领导就本企业财务预算及资金使用情况等进行汇报;",
|
||||
"与银行、税务、财政、保险等单位就资金划拨、税收、财产保险等事项进行沟通。",
|
||||
],
|
||||
},
|
||||
工作环境与条件: {
|
||||
工作时间: "不定时工作制",
|
||||
工作强度脑力劳动: "中",
|
||||
工作强度体力劳动: "低",
|
||||
出差频度: "经常出差",
|
||||
主要工作场所: "室内",
|
||||
工作环境的舒适性: "舒适",
|
||||
工作环境的特殊性: ["无"],
|
||||
},
|
||||
},
|
||||
任职资格: {
|
||||
学历: "大专及以上",
|
||||
专业: "财会",
|
||||
技术职称: "会计师及以上职称",
|
||||
所需知识: "熟悉会计及税务法规,掌握财务及企业管理知识",
|
||||
所需技能或能力: [
|
||||
"具备较强的独立工作能力、良好的沟通与团队协作能力、写作与表达能力;",
|
||||
"具备良好的人际交往和社会活动能力以及计划和执行能力;",
|
||||
"对企业财务有较强的理解、分析和判断的能力;",
|
||||
"熟练掌握财务软件及办公软件。",
|
||||
],
|
||||
所需经历或经验:
|
||||
"行业工作经验5年以上,相关中层管理岗位工作经验2年以上。",
|
||||
所需体能: "身体健康,精力充沛,能连续工作8小时以上",
|
||||
所需职业风格: "作风严谨、思维敏捷、开拓创新;为人诚实可靠、品行端正",
|
||||
},
|
||||
备注: "无",
|
||||
},
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.showChart();
|
||||
},
|
||||
methods: {
|
||||
showChart() {
|
||||
var mind = {
|
||||
/* 元数据,定义思维导图的名称、作者、版本等信息 */
|
||||
meta: {
|
||||
name: "jsMind-demo-tree",
|
||||
author: "hizzgdev@163.com",
|
||||
version: "0.2",
|
||||
},
|
||||
/* 数据格式声明 */
|
||||
format: "node_tree",
|
||||
/* 数据内容 */
|
||||
data: {
|
||||
id: "root",
|
||||
topic: "恩施卷烟厂",
|
||||
children: [
|
||||
{ id: 1, topic: "领导班子" },
|
||||
{ id: 2, topic: "厂部办公室" },
|
||||
{ id: 3, topic: "企业管理科" },
|
||||
{ id: 4, topic: "生产调度科" },
|
||||
{ id: 5, topic: "安全保卫科" },
|
||||
{ id: 6, topic: "法律与改革科" },
|
||||
{ id: 7, topic: "财务管理科" },
|
||||
{ id: 8, topic: "审计科" },
|
||||
{ id: 9, topic: "人力资源科" },
|
||||
{ id: 10, topic: "党建工作科" },
|
||||
{ id: 11, topic: "纪检监察科" },
|
||||
{ id: 12, topic: "设备工程科" },
|
||||
{ id: 13, topic: "工艺品质科" },
|
||||
{
|
||||
id: 14,
|
||||
topic: "营销管理办公室",
|
||||
expanded: false,
|
||||
children: [
|
||||
{ id: 15, topic: "恩施责任区域" },
|
||||
{ id: 16, topic: "川藏责任区域" },
|
||||
{ id: 17, topic: "重庆责任区域" },
|
||||
{ id: 18, topic: "黑龙江责任区域" },
|
||||
{ id: 19, topic: "吉大责任区域" },
|
||||
{ id: 20, topic: "辽宁责任区域" },
|
||||
],
|
||||
},
|
||||
{ id: 21, topic: "物资采购办公室" },
|
||||
{ id: 22, topic: "群团工作科" },
|
||||
{ id: 23, topic: "信息管理办公室" },
|
||||
{ id: 24, topic: "项目管理办公室" },
|
||||
{ id: 25, topic: "动力车间" },
|
||||
{ id: 26, topic: "制丝车间" },
|
||||
{ id: 27, topic: "卷包车间" },
|
||||
{ id: 28, topic: "物流车间" },
|
||||
{ id: 29, topic: "内部退养人员" },
|
||||
{ id: 30, topic: "离退休人员" },
|
||||
{ id: 31, topic: "离职人员" }
|
||||
],
|
||||
},
|
||||
};
|
||||
var options = {
|
||||
// options 将在下一章中详细介绍
|
||||
container: "jsmind_container", // [必选] 容器的ID,或者为容器的对象
|
||||
editable: false, // [可选] 是否启用编辑
|
||||
theme: "belizehole", // [可选] 主题
|
||||
mode: "full",
|
||||
support_html: true,
|
||||
view: {
|
||||
engine: "canvas", // 思维导图各节点之间线条的绘制引擎
|
||||
hmargin: 50, // 思维导图距容器外框的最小水平距离
|
||||
vmargin: 50, // 思维导图距容器外框的最小垂直距离
|
||||
line_width: 2, // 思维导图线条的粗细
|
||||
line_color: "#555", // 思维导图线条的颜色
|
||||
draggable: true, // 当容器不能完全容纳思维导图时,是否允许拖动画布代替鼠标滚动
|
||||
hide_scrollbars_when_draggable: false, // 当设置 draggable = true 时,是否隐藏滚动条
|
||||
},
|
||||
layout: {
|
||||
hspace: 30, // 节点之间的水平间距
|
||||
vspace: 20, // 节点之间的垂直间距
|
||||
pspace: 13, // 节点与连接线之间的水平间距(用于容纳节点收缩/展开控制器)
|
||||
},
|
||||
shortcut: {
|
||||
enable: true, // 是否启用快捷键
|
||||
handles: {}, // 命名的快捷键事件处理器
|
||||
mapping: {
|
||||
// 快捷键映射
|
||||
addchild: 9, // <Tab>
|
||||
addbrother: 13, // <Enter>
|
||||
editnode: 113, // <F2>
|
||||
delnode: 46, // <Delete>
|
||||
toggle: 32, // <Space>
|
||||
left: 37, // <Left>
|
||||
up: 38, // <Up>
|
||||
right: 39, // <Right>
|
||||
down: 40, // <Down>
|
||||
},
|
||||
},
|
||||
menuOpts: {
|
||||
// 这里加入一个专门配置menu的对象
|
||||
showMenu: true, //showMenu 为 true 则打开右键功能 ,反之关闭
|
||||
injectionList: [
|
||||
{ target: "edit", text: "编辑节点" },
|
||||
{ target: "delete", text: "删除节点" },
|
||||
{ target: "addChild", text: "添加子节点" },
|
||||
{ target: "addBrother", text: "添加兄弟节点" },
|
||||
],
|
||||
style: {
|
||||
menuItem: {
|
||||
"line-height": "28px",
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
this.jm = new jsMind(options);
|
||||
this.jm.show(mind);
|
||||
},
|
||||
clickNode() {
|
||||
console.log("click node");
|
||||
console.log(this.jm.get_selected_node());
|
||||
},
|
||||
shotScreen() {
|
||||
this.jm.screenshot.shootDownload();
|
||||
},
|
||||
expand_to_level(num) {
|
||||
switch (num) {
|
||||
case -1:
|
||||
this.jm.collapse_all();
|
||||
break;
|
||||
case 0:
|
||||
this.jm.expand_all();
|
||||
break;
|
||||
default:
|
||||
this.jm.expand_to_depth(num);
|
||||
break;
|
||||
}
|
||||
},
|
||||
set_theme(theme_name) {
|
||||
this.jm.set_theme(theme_name);
|
||||
},
|
||||
clickModify() {
|
||||
this.$message({
|
||||
message: "修改数据",
|
||||
type: "warning",
|
||||
});
|
||||
this.allowSave = true;
|
||||
// this.jm.options.editable = true;
|
||||
this.jm.enable_edit();
|
||||
},
|
||||
clickSave() {
|
||||
this.$message({
|
||||
message: "数据已保存",
|
||||
type: "success",
|
||||
});
|
||||
},
|
||||
clickHello() {
|
||||
console.log(this.jm.get_data('node_tree'))
|
||||
},
|
||||
changeOverviewVal(domain, newVal) {
|
||||
let bigDomain = "岗位概况";
|
||||
this.jobData[bigDomain][domain] = newVal;
|
||||
},
|
||||
changeCheckGroup(newVal) {
|
||||
console.log(newVal);
|
||||
console.log(this.jobData.工作内容.工作环境与条件);
|
||||
},
|
||||
},
|
||||
components: {
|
||||
EditText,
|
||||
EditDiv,
|
||||
EditList,
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.main-body {
|
||||
width: 100%;
|
||||
height: calc(100vh - 50px);
|
||||
}
|
||||
|
||||
.body-left {
|
||||
width: 50%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.left-header {
|
||||
position: relative;
|
||||
background-color: #f8f9fa;
|
||||
box-shadow: 0 0 4px #b8b8b8;
|
||||
/* box-shadow: 0px -8px 5px -5px #b8b8b8; */
|
||||
}
|
||||
|
||||
.left-header > div {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
.body-right {
|
||||
width: 50%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.right-header {
|
||||
position: relative;
|
||||
background-color: #f8f9fa;
|
||||
box-shadow: 0 0 4px #b8b8b8;
|
||||
}
|
||||
|
||||
.right-header > div {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
.right-main {
|
||||
/* padding-top: 10px; */
|
||||
padding-left: 30px;
|
||||
padding-right: 30px;
|
||||
padding-bottom: 100px;
|
||||
}
|
||||
|
||||
.jd-title {
|
||||
text-align: center;
|
||||
/* font-family: "Times New Roman","宋体","微软雅黑"; */
|
||||
font-size: 2em;
|
||||
/* line-height: 2em; */
|
||||
}
|
||||
|
||||
.jd-h1 {
|
||||
font-size: 1.5em;
|
||||
line-height: 1.8em;
|
||||
}
|
||||
|
||||
.jd-h2 {
|
||||
font-size: 1.3em;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
.jd-h3 {
|
||||
font-size: 1.2em;
|
||||
line-height: 1.5em;
|
||||
text-indent: 1em;
|
||||
}
|
||||
|
||||
.jd-text {
|
||||
font-size: 1.1em;
|
||||
line-height: 1.5em;
|
||||
text-indent: 2em;
|
||||
}
|
||||
|
||||
.jd-block1 {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.jd-block2 {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.jd-block3 {
|
||||
margin-top: 7px;
|
||||
}
|
||||
|
||||
.jd-table {
|
||||
border-collapse: collapse;
|
||||
width: 80%;
|
||||
margin: 10px auto 0px;
|
||||
}
|
||||
|
||||
.jd-table tr {
|
||||
height: 2em;
|
||||
}
|
||||
|
||||
.jd-table table,
|
||||
th,
|
||||
td {
|
||||
border: 1px solid #ebebeb;
|
||||
}
|
||||
|
||||
.jd-table td {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.jd-table2 td {
|
||||
text-align: left;
|
||||
text-indent: 2em;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
.vertical-one {
|
||||
width: 2em;
|
||||
}
|
||||
|
||||
.vertical-two {
|
||||
width: 3em;
|
||||
}
|
||||
|
||||
.vertical-four {
|
||||
width: 5em;
|
||||
}
|
||||
|
||||
.header-menu {
|
||||
}
|
||||
</style>
|
|
@ -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
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
<template>
|
||||
<div>
|
||||
person
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'person',
|
||||
data() {
|
||||
return {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue