From 221a1a1059e593a8413389f337682e3328db7943 Mon Sep 17 00:00:00 2001 From: yangjun <1173114630@qq.com> Date: Mon, 18 Mar 2024 14:29:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AE=BF=E9=97=AE=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- .env.production | 3 +- public/img/nyzy_yc.jpg | Bin 0 -> 34883 bytes src/components/jeecg/JEditor.vue | 17 +- .../jeecg/tinymce/plugins/link2/index.js | 7 + .../jeecg/tinymce/plugins/link2/plugin.js | 1293 +++++++++++++++++ .../jeecg/tinymce/plugins/link2/plugin.min.js | 9 + src/views/blFwl/BlFwlList.vue | 196 +++ src/views/blFwl/modules/BlFwlForm.vue | 163 +++ src/views/blFwl/modules/BlFwlModal.vue | 60 + src/views/gateway/common/header.vue | 931 +++++++----- src/views/gateway/common/main.vue | 61 +- src/views/gateway/detailedPage.vue | 21 +- src/views/gateway/detailedPage2.vue | 23 +- src/views/gateway/detailedPage3.vue | 21 +- src/views/gateway/gybs.vue | 4 +- src/views/gateway/listPage.vue | 4 +- src/views/gateway/listPage2.vue | 55 +- src/views/gateway/listPage3.vue | 29 +- 19 files changed, 2419 insertions(+), 480 deletions(-) create mode 100644 public/img/nyzy_yc.jpg create mode 100644 src/components/jeecg/tinymce/plugins/link2/index.js create mode 100644 src/components/jeecg/tinymce/plugins/link2/plugin.js create mode 100644 src/components/jeecg/tinymce/plugins/link2/plugin.min.js create mode 100644 src/views/blFwl/BlFwlList.vue create mode 100644 src/views/blFwl/modules/BlFwlForm.vue create mode 100644 src/views/blFwl/modules/BlFwlModal.vue diff --git a/.env.development b/.env.development index 2da64a7..e8c7b3c 100644 --- a/.env.development +++ b/.env.development @@ -1,4 +1,4 @@ NODE_ENV=development -VUE_APP_API_BASE_URL=http://124.71.184.231:8891/nyzy +VUE_APP_API_BASE_URL=http://127.0.0.1:8891/nyzy VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview \ No newline at end of file diff --git a/.env.production b/.env.production index 5251881..eddad2c 100644 --- a/.env.production +++ b/.env.production @@ -1,4 +1,5 @@ NODE_ENV=production -VUE_APP_API_BASE_URL=http://124.71.184.231:8891/nyzy +VUE_APP_API_BASE_URL=http://172.16.18.220:8891/nyzy +VUE_APP_API_BASE_URL2=http://124.71.184.231:8891/nyzy VUE_APP_CAS_BASE_URL=http://localhost:8888/cas VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview \ No newline at end of file diff --git a/public/img/nyzy_yc.jpg b/public/img/nyzy_yc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0628cb5babad1ab9e3fc0b0c461ca002b71bf8ff GIT binary patch literal 34883 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

BLYg}Mm$y(#EE}wo-4ue}Nn;Yj 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

Fwi&)u)yu zhLz9ar_GeHlPyK77>3;8jj@^0duLG|-8V6TL%GWJE9Jt`5Jx-zc z{$iQx@#n(}y}#4^$@k)opEvb~^u+q+&{c6>i)3_HC(Q}3(O=TF^$F?`R=j)tEv z3ShOLzF+uyH}Ox)zGLV<dV2f2w(I?Ex^QoN=zQR(fUch$QrP<6Bx_zd zYR2bg`4`BgK5^3Z-j&Cq^d26krfqh4>C^Gk&w-zP)n1puQLFd)V7$FPgLS{Dr0J)Q zC;k!sI{qtr_%G&vFZ@K~cg_0Vo1@n@x^MF7>9IIn$0C{JH)szErQuK40=LmoM`Vk$-OA(jKR%>ifHPYvJd@)t~tG zq4Qe0x`)NXk1Alr@8eWIFHWA5!;ioBV{oQ=zwpoh0K0u}#J+^zHRx{nkEq&zRq6U( z_p8@kyL|k7_+P)#{zoTXpD)xJYr>qc!)34V6zEs4)Ae}PncyA&0NOwPYX1P0-}_(p pzyAQLIAH$(-oNyJ?!TA%fB7&c{{U+L0M-8hwe$X`{%_Nd|JlTg_0j+U literal 0 HcmV?d00001 diff --git a/src/components/jeecg/JEditor.vue b/src/components/jeecg/JEditor.vue index 516f684..63ab6bb 100644 --- a/src/components/jeecg/JEditor.vue +++ b/src/components/jeecg/JEditor.vue @@ -15,7 +15,8 @@ import Editor from '@tinymce/tinymce-vue' import 'tinymce/themes/silver/theme' import 'tinymce/plugins/image' - import 'tinymce/plugins/link' + //import 'tinymce/plugins/link' + import '@/components/jeecg/tinymce/plugins/link2' import 'tinymce/plugins/media' import 'tinymce/plugins/table' import 'tinymce/plugins/lists' @@ -57,9 +58,9 @@ "styleselect formatselect fontselect fontsizeselect | table tabledelete tablecellprops tablemergecells| blockquote subscript superscript removeformat | ltr rtl " + "tablesplitcells tableinsertrowbefore tableinsertrowafter tabledeleterow tablerowprops tablecutrow " + "tablecopyrow tablepasterowbefore tablepasterowafter tableinsertcolbefore tableinsertcolafter tabledeletecol | " + - "image media fullscreen", + "image media fullscreen lineheight", "insertdatetime charmap emoticons hr pagebreak template code pastetext print visualblocks visualchars " + - "nonbreaking searchreplace preview kityformula-editor indent2em ", + "nonbreaking searchreplace preview kityformula-editor indent2em ", ], branding:false } @@ -71,9 +72,12 @@ language_url: '/tinymce/langs/zh_CN.js', language: 'zh_CN', skin_url: '/tinymce/skins/lightgray', - height: 300, + height: 500, plugins: this.plugins, toolbar: this.toolbar, + contextmenu: false, + //contextmenu_never_use_native: true, + lineheight_formats: '1 1.1 1.2 1.3 1.4 1.5 2 2.5 3 3.5', branding: false, menubar: false, toolbar_drawer: false, @@ -163,5 +167,8 @@ } - \ No newline at end of file diff --git a/src/components/jeecg/tinymce/plugins/link2/index.js b/src/components/jeecg/tinymce/plugins/link2/index.js new file mode 100644 index 0000000..ff52930 --- /dev/null +++ b/src/components/jeecg/tinymce/plugins/link2/index.js @@ -0,0 +1,7 @@ +// Exports the "link" plugin for usage with module loaders +// Usage: +// CommonJS: +// require('tinymce/plugins/link') +// ES2015: +// import 'tinymce/plugins/link' +require('./plugin.js'); \ No newline at end of file diff --git a/src/components/jeecg/tinymce/plugins/link2/plugin.js b/src/components/jeecg/tinymce/plugins/link2/plugin.js new file mode 100644 index 0000000..13958ef --- /dev/null +++ b/src/components/jeecg/tinymce/plugins/link2/plugin.js @@ -0,0 +1,1293 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.5 (2022-05-25) + */ +(function () { + 'use strict'; + + var global$7 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var global$6 = tinymce.util.Tools.resolve('tinymce.util.VK'); + + var typeOf = function (x) { + var t = typeof x; + if (x === null) { + return 'null'; + } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { + return 'array'; + } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { + return 'string'; + } else { + return t; + } + }; + var isType = function (type) { + return function (value) { + return typeOf(value) === type; + }; + }; + var isSimpleType = function (type) { + return function (value) { + return typeof value === type; + }; + }; + var eq = function (t) { + return function (a) { + return t === a; + }; + }; + var isString = isType('string'); + var isArray = isType('array'); + var isNull = eq(null); + var isBoolean = isSimpleType('boolean'); + var isFunction = isSimpleType('function'); + + var noop = function () { + }; + var constant = function (value) { + return function () { + return value; + }; + }; + var identity = function (x) { + return x; + }; + var tripleEquals = function (a, b) { + return a === b; + }; + var never = constant(false); + var always = constant(true); + + var none = function () { + return NONE; + }; + var NONE = function () { + var call = function (thunk) { + return thunk(); + }; + var id = identity; + var me = { + fold: function (n, _s) { + return n(); + }, + isSome: never, + isNone: always, + getOr: id, + getOrThunk: call, + getOrDie: function (msg) { + throw new Error(msg || 'error: getOrDie called on none.'); + }, + getOrNull: constant(null), + getOrUndefined: constant(undefined), + or: id, + orThunk: call, + map: none, + each: noop, + bind: none, + exists: never, + forall: always, + filter: function () { + return none(); + }, + toArray: function () { + return []; + }, + toString: constant('none()') + }; + return me; + }(); + var some = function (a) { + var constant_a = constant(a); + var self = function () { + return me; + }; + var bind = function (f) { + return f(a); + }; + var me = { + fold: function (n, s) { + return s(a); + }, + isSome: always, + isNone: never, + getOr: constant_a, + getOrThunk: constant_a, + getOrDie: constant_a, + getOrNull: constant_a, + getOrUndefined: constant_a, + or: self, + orThunk: self, + map: function (f) { + return some(f(a)); + }, + each: function (f) { + f(a); + }, + bind: bind, + exists: bind, + forall: bind, + filter: function (f) { + return f(a) ? me : NONE; + }, + toArray: function () { + return [a]; + }, + toString: function () { + return 'some(' + a + ')'; + } + }; + return me; + }; + var from = function (value) { + return value === null || value === undefined ? NONE : some(value); + }; + var Optional = { + some: some, + none: none, + from: from + }; + + var nativeIndexOf = Array.prototype.indexOf; + var nativePush = Array.prototype.push; + var rawIndexOf = function (ts, t) { + return nativeIndexOf.call(ts, t); + }; + var contains = function (xs, x) { + return rawIndexOf(xs, x) > -1; + }; + var map = function (xs, f) { + var len = xs.length; + var r = new Array(len); + for (var i = 0; i < len; i++) { + var x = xs[i]; + r[i] = f(x, i); + } + return r; + }; + var each$1 = function (xs, f) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + f(x, i); + } + }; + var foldl = function (xs, f, acc) { + each$1(xs, function (x, i) { + acc = f(acc, x, i); + }); + return acc; + }; + var flatten = function (xs) { + var r = []; + for (var i = 0, len = xs.length; i < len; ++i) { + if (!isArray(xs[i])) { + throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs); + } + nativePush.apply(r, xs[i]); + } + return r; + }; + var bind = function (xs, f) { + return flatten(map(xs, f)); + }; + var findMap = function (arr, f) { + for (var i = 0; i < arr.length; i++) { + var r = f(arr[i], i); + if (r.isSome()) { + return r; + } + } + return Optional.none(); + }; + + var is = function (lhs, rhs, comparator) { + if (comparator === void 0) { + comparator = tripleEquals; + } + return lhs.exists(function (left) { + return comparator(left, rhs); + }); + }; + var cat = function (arr) { + var r = []; + var push = function (x) { + r.push(x); + }; + for (var i = 0; i < arr.length; i++) { + arr[i].each(push); + } + return r; + }; + var someIf = function (b, a) { + return b ? Optional.some(a) : Optional.none(); + }; + + var assumeExternalTargets = function (editor) { + var externalTargets = editor.getParam('link_assume_external_targets', false); + if (isBoolean(externalTargets) && externalTargets) { + return 1; + } else if (isString(externalTargets) && (externalTargets === 'http' || externalTargets === 'https')) { + return externalTargets; + } + return 0; + }; + var hasContextToolbar = function (editor) { + return editor.getParam('link_context_toolbar', false, 'boolean'); + }; + var getLinkList = function (editor) { + return editor.getParam('link_list'); + }; + var getDefaultLinkTarget = function (editor) { + return editor.getParam('default_link_target'); + }; + var getTargetList = function (editor) { + return editor.getParam('target_list', true); + }; + var getRelList = function (editor) { + return editor.getParam('rel_list', [], 'array'); + }; + var getLinkClassList = function (editor) { + return editor.getParam('link_class_list', [], 'array'); + }; + var shouldShowLinkTitle = function (editor) { + return editor.getParam('link_title', true, 'boolean'); + }; + var allowUnsafeLinkTarget = function (editor) { + return editor.getParam('allow_unsafe_link_target', false, 'boolean'); + }; + var useQuickLink = function (editor) { + return editor.getParam('link_quicklink', false, 'boolean'); + }; + var getDefaultLinkProtocol = function (editor) { + return editor.getParam('link_default_protocol', 'http', 'string'); + }; + + var global$5 = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var getValue = function (item) { + return isString(item.value) ? item.value : ''; + }; + var getText = function (item) { + if (isString(item.text)) { + return item.text; + } else if (isString(item.title)) { + return item.title; + } else { + return ''; + } + }; + var sanitizeList = function (list, extractValue) { + var out = []; + global$5.each(list, function (item) { + var text = getText(item); + if (item.menu !== undefined) { + var items = sanitizeList(item.menu, extractValue); + out.push({ + text: text, + items: items + }); + } else { + var value = extractValue(item); + out.push({ + text: text, + value: value + }); + } + }); + return out; + }; + var sanitizeWith = function (extracter) { + if (extracter === void 0) { + extracter = getValue; + } + return function (list) { + return Optional.from(list).map(function (list) { + return sanitizeList(list, extracter); + }); + }; + }; + var sanitize = function (list) { + return sanitizeWith(getValue)(list); + }; + var createUi = function (name, label) { + return function (items) { + return { + name: name, + type: 'listbox', + label: label, + items: items + }; + }; + }; + var ListOptions = { + sanitize: sanitize, + sanitizeWith: sanitizeWith, + createUi: createUi, + getValue: getValue + }; + + var __assign = function () { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + var keys = Object.keys; + var hasOwnProperty = Object.hasOwnProperty; + var each = function (obj, f) { + var props = keys(obj); + for (var k = 0, len = props.length; k < len; k++) { + var i = props[k]; + var x = obj[i]; + f(x, i); + } + }; + var objAcc = function (r) { + return function (x, i) { + r[i] = x; + }; + }; + var internalFilter = function (obj, pred, onTrue, onFalse) { + var r = {}; + each(obj, function (x, i) { + (pred(x, i) ? onTrue : onFalse)(x, i); + }); + return r; + }; + var filter = function (obj, pred) { + var t = {}; + internalFilter(obj, pred, objAcc(t), noop); + return t; + }; + var has = function (obj, key) { + return hasOwnProperty.call(obj, key); + }; + var hasNonNullableKey = function (obj, key) { + return has(obj, key) && obj[key] !== undefined && obj[key] !== null; + }; + + var global$4 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker'); + + var global$3 = tinymce.util.Tools.resolve('tinymce.util.URI'); + + var isAnchor = function (elm) { + return elm && elm.nodeName.toLowerCase() === 'a'; + }; + var isLink = function (elm) { + return isAnchor(elm) && !!getHref(elm); + }; + var collectNodesInRange = function (rng, predicate) { + if (rng.collapsed) { + return []; + } else { + var contents = rng.cloneContents(); + var walker = new global$4(contents.firstChild, contents); + var elements = []; + var current = contents.firstChild; + do { + if (predicate(current)) { + elements.push(current); + } + } while (current = walker.next()); + return elements; + } + }; + var hasProtocol = function (url) { + return /^\w+:/i.test(url); + }; + var getHref = function (elm) { + var href = elm.getAttribute('data-mce-href'); + return href ? href : elm.getAttribute('href'); + }; + var applyRelTargetRules = function (rel, isUnsafe) { + var rules = ['noopener']; + var rels = rel ? rel.split(/\s+/) : []; + var toString = function (rels) { + return global$5.trim(rels.sort().join(' ')); + }; + var addTargetRules = function (rels) { + rels = removeTargetRules(rels); + return rels.length > 0 ? rels.concat(rules) : rules; + }; + var removeTargetRules = function (rels) { + return rels.filter(function (val) { + return global$5.inArray(rules, val) === -1; + }); + }; + var newRels = isUnsafe ? addTargetRules(rels) : removeTargetRules(rels); + return newRels.length > 0 ? toString(newRels) : ''; + }; + var trimCaretContainers = function (text) { + return text.replace(/\uFEFF/g, ''); + }; + var getAnchorElement = function (editor, selectedElm) { + selectedElm = selectedElm || editor.selection.getNode(); + if (isImageFigure(selectedElm)) { + return editor.dom.select('a[href]', selectedElm)[0]; + } else { + return editor.dom.getParent(selectedElm, 'a[href]'); + } + }; + var getAnchorText = function (selection, anchorElm) { + var text = anchorElm ? anchorElm.innerText || anchorElm.textContent : selection.getContent({ format: 'text' }); + return trimCaretContainers(text); + }; + var hasLinks = function (elements) { + return global$5.grep(elements, isLink).length > 0; + }; + var hasLinksInSelection = function (rng) { + return collectNodesInRange(rng, isLink).length > 0; + }; + var isOnlyTextSelected = function (editor) { + var inlineTextElements = editor.schema.getTextInlineElements(); + var isElement = function (elm) { + return elm.nodeType === 1 && !isAnchor(elm) && !has(inlineTextElements, elm.nodeName.toLowerCase()); + }; + var elements = collectNodesInRange(editor.selection.getRng(), isElement); + return elements.length === 0; + }; + var isImageFigure = function (elm) { + return elm && elm.nodeName === 'FIGURE' && /\bimage\b/i.test(elm.className); + }; + var getLinkAttrs = function (data) { + var attrs = [ + 'title', + 'rel', + 'class', + 'target' + ]; + return foldl(attrs, function (acc, key) { + data[key].each(function (value) { + acc[key] = value.length > 0 ? value : null; + }); + return acc; + }, { href: data.href }); + }; + var handleExternalTargets = function (href, assumeExternalTargets) { + if ((assumeExternalTargets === 'http' || assumeExternalTargets === 'https') && !hasProtocol(href)) { + return assumeExternalTargets + '://' + href; + } + return href; + }; + var applyLinkOverrides = function (editor, linkAttrs) { + var newLinkAttrs = __assign({}, linkAttrs); + if (!(getRelList(editor).length > 0) && allowUnsafeLinkTarget(editor) === false) { + var newRel = applyRelTargetRules(newLinkAttrs.rel, newLinkAttrs.target === '_blank'); + newLinkAttrs.rel = newRel ? newRel : null; + } + if (Optional.from(newLinkAttrs.target).isNone() && getTargetList(editor) === false) { + newLinkAttrs.target = getDefaultLinkTarget(editor); + } + newLinkAttrs.href = handleExternalTargets(newLinkAttrs.href, assumeExternalTargets(editor)); + return newLinkAttrs; + }; + var updateLink = function (editor, anchorElm, text, linkAttrs) { + text.each(function (text) { + if (has(anchorElm, 'innerText')) { + anchorElm.innerText = text; + } else { + anchorElm.textContent = text; + } + }); + editor.dom.setAttribs(anchorElm, linkAttrs); + editor.selection.select(anchorElm); + }; + var createLink = function (editor, selectedElm, text, linkAttrs) { + if (isImageFigure(selectedElm)) { + linkImageFigure(editor, selectedElm, linkAttrs); + } else { + text.fold(function () { + editor.execCommand('mceInsertLink', false, linkAttrs); + }, function (text) { + editor.insertContent(editor.dom.createHTML('a', linkAttrs, editor.dom.encode(text))); + }); + } + }; + var linkDomMutation = function (editor, attachState, data) { + var selectedElm = editor.selection.getNode(); + var anchorElm = getAnchorElement(editor, selectedElm); + var linkAttrs = applyLinkOverrides(editor, getLinkAttrs(data)); + editor.undoManager.transact(function () { + if (data.href === attachState.href) { + attachState.attach(); + } + if (anchorElm) { + editor.focus(); + updateLink(editor, anchorElm, data.text, linkAttrs); + } else { + createLink(editor, selectedElm, data.text, linkAttrs); + } + }); + }; + var unlinkSelection = function (editor) { + var dom = editor.dom, selection = editor.selection; + var bookmark = selection.getBookmark(); + var rng = selection.getRng().cloneRange(); + var startAnchorElm = dom.getParent(rng.startContainer, 'a[href]', editor.getBody()); + var endAnchorElm = dom.getParent(rng.endContainer, 'a[href]', editor.getBody()); + if (startAnchorElm) { + rng.setStartBefore(startAnchorElm); + } + if (endAnchorElm) { + rng.setEndAfter(endAnchorElm); + } + selection.setRng(rng); + editor.execCommand('unlink'); + selection.moveToBookmark(bookmark); + }; + var unlinkDomMutation = function (editor) { + editor.undoManager.transact(function () { + var node = editor.selection.getNode(); + if (isImageFigure(node)) { + unlinkImageFigure(editor, node); + } else { + unlinkSelection(editor); + } + editor.focus(); + }); + }; + var unwrapOptions = function (data) { + var cls = data.class, href = data.href, rel = data.rel, target = data.target, text = data.text, title = data.title; + return filter({ + class: cls.getOrNull(), + href: href, + rel: rel.getOrNull(), + target: target.getOrNull(), + text: text.getOrNull(), + title: title.getOrNull() + }, function (v, _k) { + return isNull(v) === false; + }); + }; + var sanitizeData = function (editor, data) { + var href = data.href; + return __assign(__assign({}, data), { href: global$3.isDomSafe(href, 'a', editor.settings) ? href : '' }); + }; + var link = function (editor, attachState, data) { + var sanitizedData = sanitizeData(editor, data); + editor.hasPlugin('rtc', true) ? editor.execCommand('createlink', false, unwrapOptions(sanitizedData)) : linkDomMutation(editor, attachState, sanitizedData); + }; + var unlink = function (editor) { + editor.hasPlugin('rtc', true) ? editor.execCommand('unlink') : unlinkDomMutation(editor); + }; + var unlinkImageFigure = function (editor, fig) { + var img = editor.dom.select('img', fig)[0]; + if (img) { + var a = editor.dom.getParents(img, 'a[href]', fig)[0]; + if (a) { + a.parentNode.insertBefore(img, a); + editor.dom.remove(a); + } + } + }; + var linkImageFigure = function (editor, fig, attrs) { + var img = editor.dom.select('img', fig)[0]; + if (img) { + var a = editor.dom.create('a', attrs); + img.parentNode.insertBefore(a, img); + a.appendChild(img); + } + }; + + var isListGroup = function (item) { + return hasNonNullableKey(item, 'items'); + }; + var findTextByValue = function (value, catalog) { + return findMap(catalog, function (item) { + if (isListGroup(item)) { + return findTextByValue(value, item.items); + } else { + return someIf(item.value === value, item); + } + }); + }; + var getDelta = function (persistentText, fieldName, catalog, data) { + var value = data[fieldName]; + var hasPersistentText = persistentText.length > 0; + return value !== undefined ? findTextByValue(value, catalog).map(function (i) { + return { + url: { + value: i.value, + meta: { + text: hasPersistentText ? persistentText : i.text, + attach: noop + } + }, + text: hasPersistentText ? persistentText : i.text + }; + }) : Optional.none(); + }; + var findCatalog = function (catalogs, fieldName) { + if (fieldName === 'link') { + return catalogs.link; + } else if (fieldName === 'anchor') { + return catalogs.anchor; + } else { + return Optional.none(); + } + }; + var init = function (initialData, linkCatalog) { + var persistentData = { + text: initialData.text, + title: initialData.title + }; + var getTitleFromUrlChange = function (url) { + return someIf(persistentData.title.length <= 0, Optional.from(url.meta.title).getOr('')); + }; + var getTextFromUrlChange = function (url) { + return someIf(persistentData.text.length <= 0, Optional.from(url.meta.text).getOr(url.value)); + }; + var onUrlChange = function (data) { + var text = getTextFromUrlChange(data.url); + var title = getTitleFromUrlChange(data.url); + if (text.isSome() || title.isSome()) { + return Optional.some(__assign(__assign({}, text.map(function (text) { + return { text: text }; + }).getOr({})), title.map(function (title) { + return { title: title }; + }).getOr({}))); + } else { + return Optional.none(); + } + }; + var onCatalogChange = function (data, change) { + var catalog = findCatalog(linkCatalog, change.name).getOr([]); + return getDelta(persistentData.text, change.name, catalog, data); + }; + var onChange = function (getData, change) { + var name = change.name; + if (name === 'url') { + return onUrlChange(getData()); + } else if (contains([ + 'anchor', + 'link' + ], name)) { + return onCatalogChange(getData(), change); + } else if (name === 'text' || name === 'title') { + persistentData[name] = getData()[name]; + return Optional.none(); + } else { + return Optional.none(); + } + }; + return { onChange: onChange }; + }; + var DialogChanges = { + init: init, + getDelta: getDelta + }; + + var global$2 = tinymce.util.Tools.resolve('tinymce.util.Delay'); + + var global$1 = tinymce.util.Tools.resolve('tinymce.util.Promise'); + + var delayedConfirm = function (editor, message, callback) { + var rng = editor.selection.getRng(); + global$2.setEditorTimeout(editor, function () { + editor.windowManager.confirm(message, function (state) { + editor.selection.setRng(rng); + callback(state); + }); + }); + }; + var tryEmailTransform = function (data) { + var url = data.href; + var suggestMailTo = url.indexOf('@') > 0 && url.indexOf('/') === -1 && url.indexOf('mailto:') === -1; + return suggestMailTo ? Optional.some({ + message: 'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?', + preprocess: function (oldData) { + return __assign(__assign({}, oldData), { href: 'mailto:' + url }); + } + }) : Optional.none(); + }; + var tryProtocolTransform = function (assumeExternalTargets, defaultLinkProtocol) { + return function (data) { + var url = data.href; + var suggestProtocol = assumeExternalTargets === 1 && !hasProtocol(url) || assumeExternalTargets === 0 && /^\s*www(\.|\d\.)/i.test(url); + return suggestProtocol ? Optional.some({ + message: 'The URL you entered seems to be an external link. Do you want to add the required ' + defaultLinkProtocol + ':// prefix?', + preprocess: function (oldData) { + return __assign(__assign({}, oldData), { href: defaultLinkProtocol + '://' + url }); + } + }) : Optional.none(); + }; + }; + var preprocess = function (editor, data) { + return findMap([ + tryEmailTransform, + tryProtocolTransform(assumeExternalTargets(editor), getDefaultLinkProtocol(editor)) + ], function (f) { + return f(data); + }).fold(function () { + return global$1.resolve(data); + }, function (transform) { + return new global$1(function (callback) { + delayedConfirm(editor, transform.message, function (state) { + callback(state ? transform.preprocess(data) : data); + }); + }); + }); + }; + var DialogConfirms = { preprocess: preprocess }; + + var getAnchors = function (editor) { + var anchorNodes = editor.dom.select('a:not([href])'); + var anchors = bind(anchorNodes, function (anchor) { + var id = anchor.name || anchor.id; + return id ? [{ + text: id, + value: '#' + id + }] : []; + }); + return anchors.length > 0 ? Optional.some([{ + text: 'None', + value: '' + }].concat(anchors)) : Optional.none(); + }; + var AnchorListOptions = { getAnchors: getAnchors }; + + var getClasses = function (editor) { + var list = getLinkClassList(editor); + if (list.length > 0) { + return ListOptions.sanitize(list); + } + return Optional.none(); + }; + var ClassListOptions = { getClasses: getClasses }; + + var global = tinymce.util.Tools.resolve('tinymce.util.XHR'); + + var parseJson = function (text) { + try { + return Optional.some(JSON.parse(text)); + } catch (err) { + return Optional.none(); + } + }; + var getLinks = function (editor) { + var extractor = function (item) { + return editor.convertURL(item.value || item.url, 'href'); + }; + var linkList = getLinkList(editor); + return new global$1(function (callback) { + if (isString(linkList)) { + global.send({ + url: linkList, + success: function (text) { + return callback(parseJson(text)); + }, + error: function (_) { + return callback(Optional.none()); + } + }); + } else if (isFunction(linkList)) { + linkList(function (output) { + return callback(Optional.some(output)); + }); + } else { + callback(Optional.from(linkList)); + } + }).then(function (optItems) { + return optItems.bind(ListOptions.sanitizeWith(extractor)).map(function (items) { + if (items.length > 0) { + var noneItem = [{ + text: 'None', + value: '' + }]; + return noneItem.concat(items); + } else { + return items; + } + }); + }); + }; + var LinkListOptions = { getLinks: getLinks }; + + var getRels = function (editor, initialTarget) { + var list = getRelList(editor); + if (list.length > 0) { + var isTargetBlank_1 = is(initialTarget, '_blank'); + var enforceSafe = allowUnsafeLinkTarget(editor) === false; + var safeRelExtractor = function (item) { + return applyRelTargetRules(ListOptions.getValue(item), isTargetBlank_1); + }; + var sanitizer = enforceSafe ? ListOptions.sanitizeWith(safeRelExtractor) : ListOptions.sanitize; + return sanitizer(list); + } + return Optional.none(); + }; + var RelOptions = { getRels: getRels }; + + var fallbacks = [ + { + text: 'Current window', + value: '' + }, + { + text: 'New window', + value: '_blank' + } + ]; + var getTargets = function (editor) { + var list = getTargetList(editor); + if (isArray(list)) { + return ListOptions.sanitize(list).orThunk(function () { + return Optional.some(fallbacks); + }); + } else if (list === false) { + return Optional.none(); + } + return Optional.some(fallbacks); + }; + var TargetOptions = { getTargets: getTargets }; + + var nonEmptyAttr = function (dom, elem, name) { + var val = dom.getAttrib(elem, name); + return val !== null && val.length > 0 ? Optional.some(val) : Optional.none(); + }; + var extractFromAnchor = function (editor, anchor) { + var dom = editor.dom; + var onlyText = isOnlyTextSelected(editor); + var text = onlyText ? Optional.some(getAnchorText(editor.selection, anchor)) : Optional.none(); + var url = anchor ? Optional.some(dom.getAttrib(anchor, 'href')) : Optional.none(); + var target = anchor ? Optional.from(dom.getAttrib(anchor, 'target')) : Optional.none(); + var rel = nonEmptyAttr(dom, anchor, 'rel'); + var linkClass = nonEmptyAttr(dom, anchor, 'class'); + var title = nonEmptyAttr(dom, anchor, 'title'); + return { + url: url, + text: text, + title: title, + target: target, + rel: rel, + linkClass: linkClass + }; + }; + var collect = function (editor, linkNode) { + return LinkListOptions.getLinks(editor).then(function (links) { + var anchor = extractFromAnchor(editor, linkNode); + return { + anchor: anchor, + catalogs: { + targets: TargetOptions.getTargets(editor), + rels: RelOptions.getRels(editor, anchor.target), + classes: ClassListOptions.getClasses(editor), + anchor: AnchorListOptions.getAnchors(editor), + link: links + }, + optNode: Optional.from(linkNode), + flags: { titleEnabled: shouldShowLinkTitle(editor) } + }; + }); + }; + var DialogInfo = { collect: collect }; + + var handleSubmit = function (editor, info) { + return function (api) { + var data = api.getData(); + if (!data.url.value) { + unlink(editor); + api.close(); + return; + } + var getChangedValue = function (key) { + return Optional.from(data[key]).filter(function (value) { + return !is(info.anchor[key], value); + }); + }; + var changedData = { + href: data.url.value, + text: getChangedValue('text'), + target: getChangedValue('target'), + rel: getChangedValue('rel'), + class: getChangedValue('linkClass'), + title: getChangedValue('title') + }; + var attachState = { + href: data.url.value, + attach: data.url.meta !== undefined && data.url.meta.attach ? data.url.meta.attach : noop + }; + DialogConfirms.preprocess(editor, changedData).then(function (pData) { + link(editor, attachState, pData); + }); + api.close(); + }; + }; + var collectData = function (editor) { + var anchorNode = getAnchorElement(editor); + return DialogInfo.collect(editor, anchorNode); + }; + var getInitialData = function (info, defaultTarget) { + var anchor = info.anchor; + var url = anchor.url.getOr(''); + return { + url: { + value: url, + meta: { original: { value: url } } + }, + text: anchor.text.getOr(''), + title: anchor.title.getOr(''), + anchor: url, + link: url, + rel: anchor.rel.getOr(''), + target: anchor.target.or(defaultTarget).getOr(''), + linkClass: anchor.linkClass.getOr('') + }; + }; + var makeDialog = function (settings, onSubmit, editor) { + var urlInput = [{ + name: 'url', + type: 'urlinput', + filetype: 'file', + label: 'URL' + }]; + var displayText = settings.anchor.text.map(function () { + return { + name: 'text', + type: 'input', + label: 'Text to display' + }; + }).toArray(); + var titleText = settings.flags.titleEnabled ? [{ + name: 'title', + type: 'input', + label: 'Title' + }] : []; + var defaultTarget = Optional.from(getDefaultLinkTarget(editor)); + var initialData = getInitialData(settings, defaultTarget); + var catalogs = settings.catalogs; + var dialogDelta = DialogChanges.init(initialData, catalogs); + var body = { + type: 'panel', + items: flatten([ + urlInput, + displayText, + titleText, + cat([ + catalogs.anchor.map(ListOptions.createUi('anchor', 'Anchors')), + catalogs.rels.map(ListOptions.createUi('rel', 'Rel')), + catalogs.targets.map(ListOptions.createUi('target', 'Open link in...')), + catalogs.link.map(ListOptions.createUi('link', 'Link list')), + catalogs.classes.map(ListOptions.createUi('linkClass', 'Class')) + ]) + ]) + }; + return { + title: 'Insert/Edit Link', + size: 'normal', + body: body, + buttons: [ + { + type: 'cancel', + name: 'cancel', + text: 'Cancel' + }, + { + type: 'submit', + name: 'save', + text: 'Save', + primary: true + } + ], + initialData: initialData, + onChange: function (api, _a) { + var name = _a.name; + dialogDelta.onChange(api.getData, { name: name }).each(function (newData) { + api.setData(newData); + }); + }, + onSubmit: onSubmit + }; + }; + var open$1 = function (editor) { + var data = collectData(editor); + data.then(function (info) { + var onSubmit = handleSubmit(editor, info); + return makeDialog(info, onSubmit, editor); + }).then(function (spec) { + editor.windowManager.open(spec); + }); + }; + + var appendClickRemove = function (link, evt) { + document.body.appendChild(link); + link.dispatchEvent(evt); + document.body.removeChild(link); + }; + var open = function (url) { + var link = document.createElement('a'); + link.target = '_blank'; + link.href = url; + link.rel = 'noreferrer noopener'; + var evt = document.createEvent('MouseEvents'); + evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); + appendClickRemove(link, evt); + }; + + var getLink = function (editor, elm) { + return editor.dom.getParent(elm, 'a[href]'); + }; + var getSelectedLink = function (editor) { + return getLink(editor, editor.selection.getStart()); + }; + var hasOnlyAltModifier = function (e) { + return e.altKey === true && e.shiftKey === false && e.ctrlKey === false && e.metaKey === false; + }; + var gotoLink = function (editor, a) { + if (a) { + var href = getHref(a); + if (/^#/.test(href)) { + var targetEl = editor.$(href); + if (targetEl.length) { + editor.selection.scrollIntoView(targetEl[0], true); + } + } else { + open(a.href); + } + } + }; + var openDialog = function (editor) { + return function () { + open$1(editor); + }; + }; + var gotoSelectedLink = function (editor) { + return function () { + gotoLink(editor, getSelectedLink(editor)); + }; + }; + var setupGotoLinks = function (editor) { + editor.on('click', function (e) { + var link = getLink(editor, e.target); + if (link && global$6.metaKeyPressed(e)) { + e.preventDefault(); + gotoLink(editor, link); + } + }); + editor.on('keydown', function (e) { + var link = getSelectedLink(editor); + if (link && e.keyCode === 13 && hasOnlyAltModifier(e)) { + e.preventDefault(); + gotoLink(editor, link); + } + }); + }; + var toggleState = function (editor, toggler) { + editor.on('NodeChange', toggler); + return function () { + return editor.off('NodeChange', toggler); + }; + }; + var toggleActiveState = function (editor) { + return function (api) { + var updateState = function () { + return api.setActive(!editor.mode.isReadOnly() && getAnchorElement(editor, editor.selection.getNode()) !== null); + }; + updateState(); + return toggleState(editor, updateState); + }; + }; + var toggleEnabledState = function (editor) { + return function (api) { + var updateState = function () { + return api.setDisabled(getAnchorElement(editor, editor.selection.getNode()) === null); + }; + updateState(); + return toggleState(editor, updateState); + }; + }; + var toggleUnlinkState = function (editor) { + return function (api) { + var hasLinks$1 = function (parents) { + return hasLinks(parents) || hasLinksInSelection(editor.selection.getRng()); + }; + var parents = editor.dom.getParents(editor.selection.getStart()); + api.setDisabled(!hasLinks$1(parents)); + return toggleState(editor, function (e) { + return api.setDisabled(!hasLinks$1(e.parents)); + }); + }; + }; + + var register = function (editor) { + editor.addCommand('mceLink', function () { + if (useQuickLink(editor)) { + editor.fire('contexttoolbar-show', { toolbarKey: 'quicklink' }); + } else { + openDialog(editor)(); + } + }); + }; + + var setup = function (editor) { + editor.addShortcut('Meta+K', '', function () { + editor.execCommand('mceLink'); + }); + }; + + var setupButtons = function (editor) { + editor.ui.registry.addToggleButton('link', { + icon: 'link', + tooltip: 'Insert/edit link', + onAction: openDialog(editor), + onSetup: toggleActiveState(editor) + }); + editor.ui.registry.addButton('openlink', { + icon: 'new-tab', + tooltip: 'Open link', + onAction: gotoSelectedLink(editor), + onSetup: toggleEnabledState(editor) + }); + editor.ui.registry.addButton('unlink', { + icon: 'unlink', + tooltip: 'Remove link', + onAction: function () { + return unlink(editor); + }, + onSetup: toggleUnlinkState(editor) + }); + }; + var setupMenuItems = function (editor) { + editor.ui.registry.addMenuItem('openlink', { + text: 'Open link', + icon: 'new-tab', + onAction: gotoSelectedLink(editor), + onSetup: toggleEnabledState(editor) + }); + editor.ui.registry.addMenuItem('link', { + icon: 'link', + text: 'Link...', + shortcut: 'Meta+K', + onAction: openDialog(editor) + }); + editor.ui.registry.addMenuItem('unlink', { + icon: 'unlink', + text: 'Remove link', + onAction: function () { + return unlink(editor); + }, + onSetup: toggleUnlinkState(editor) + }); + }; + var setupContextMenu = function (editor) { + var inLink = 'link unlink openlink'; + var noLink = 'link'; + editor.ui.registry.addContextMenu('link', { + update: function (element) { + return hasLinks(editor.dom.getParents(element, 'a')) ? inLink : noLink; + } + }); + }; + var setupContextToolbars = function (editor) { + var collapseSelectionToEnd = function (editor) { + editor.selection.collapse(false); + }; + var onSetupLink = function (buttonApi) { + var node = editor.selection.getNode(); + buttonApi.setDisabled(!getAnchorElement(editor, node)); + return noop; + }; + var getLinkText = function (value) { + var anchor = getAnchorElement(editor); + var onlyText = isOnlyTextSelected(editor); + if (!anchor && onlyText) { + var text = getAnchorText(editor.selection, anchor); + return Optional.some(text.length > 0 ? text : value); + } else { + return Optional.none(); + } + }; + editor.ui.registry.addContextForm('quicklink', { + launch: { + type: 'contextformtogglebutton', + icon: 'link', + tooltip: 'Link', + onSetup: toggleActiveState(editor) + }, + label: 'Link', + predicate: function (node) { + return !!getAnchorElement(editor, node) && hasContextToolbar(editor); + }, + initValue: function () { + var elm = getAnchorElement(editor); + return !!elm ? getHref(elm) : ''; + }, + commands: [ + { + type: 'contextformtogglebutton', + icon: 'link', + tooltip: 'Link', + primary: true, + onSetup: function (buttonApi) { + var node = editor.selection.getNode(); + buttonApi.setActive(!!getAnchorElement(editor, node)); + return toggleActiveState(editor)(buttonApi); + }, + onAction: function (formApi) { + var value = formApi.getValue(); + var text = getLinkText(value); + var attachState = { + href: value, + attach: noop + }; + link(editor, attachState, { + href: value, + text: text, + title: Optional.none(), + rel: Optional.none(), + target: Optional.none(), + class: Optional.none() + }); + collapseSelectionToEnd(editor); + formApi.hide(); + } + }, + { + type: 'contextformbutton', + icon: 'unlink', + tooltip: 'Remove link', + onSetup: onSetupLink, + onAction: function (formApi) { + unlink(editor); + formApi.hide(); + } + }, + { + type: 'contextformbutton', + icon: 'new-tab', + tooltip: 'Open link', + onSetup: onSetupLink, + onAction: function (formApi) { + gotoSelectedLink(editor)(); + formApi.hide(); + } + } + ] + }); + }; + + function Plugin () { + global$7.add('link', function (editor) { + setupButtons(editor); + setupMenuItems(editor); + setupContextMenu(editor); + setupContextToolbars(editor); + setupGotoLinks(editor); + register(editor); + setup(editor); + }); + } + + Plugin(); + +}()); diff --git a/src/components/jeecg/tinymce/plugins/link2/plugin.min.js b/src/components/jeecg/tinymce/plugins/link2/plugin.min.js new file mode 100644 index 0000000..fc9019b --- /dev/null +++ b/src/components/jeecg/tinymce/plugins/link2/plugin.min.js @@ -0,0 +1,9 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.5 (2022-05-25) + */ +!function(){"use strict";function t(r){return function(t){return e=typeof(n=t),(null===n?"null":"object"==e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e)===r;var n,e}}function n(n){return function(t){return typeof t===n}}function h(){}function i(t){return function(){return t}}function e(t){return t}function r(t,n){return t===n}function o(){return v}var u,a=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.VK"),l=t("string"),d=t("array"),p=function(t){return u===t},f=n("boolean"),s=n("function"),m=i(!1),g=i(!(u=null)),v={fold:function(t,n){return t()},isSome:m,isNone:g,getOr:e,getOrThunk:y,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:e,orThunk:y,map:o,each:h,bind:o,exists:m,forall:g,filter:function(){return v},toArray:function(){return[]},toString:i("none()")};function y(t){return t()}function k(t,o,i){return function(t){for(var n,e=0,r=t.length;e + + +

+ + + + + + + + + + + + 查询 + 重置 + + + + + +
+ + + +
+ + 导出 + +
+ + +
+ + + + + + + + + + 编辑 + + + + 更多 + + + 详情 + + + + 删除 + + + + + + + +
+ + + + + + + \ No newline at end of file diff --git a/src/views/blFwl/modules/BlFwlForm.vue b/src/views/blFwl/modules/BlFwlForm.vue new file mode 100644 index 0000000..0d12b1d --- /dev/null +++ b/src/views/blFwl/modules/BlFwlForm.vue @@ -0,0 +1,163 @@ + + + \ No newline at end of file diff --git a/src/views/blFwl/modules/BlFwlModal.vue b/src/views/blFwl/modules/BlFwlModal.vue new file mode 100644 index 0000000..7c0a3c6 --- /dev/null +++ b/src/views/blFwl/modules/BlFwlModal.vue @@ -0,0 +1,60 @@ + + + \ No newline at end of file diff --git a/src/views/gateway/common/header.vue b/src/views/gateway/common/header.vue index 6a586e7..4d05f09 100644 --- a/src/views/gateway/common/header.vue +++ b/src/views/gateway/common/header.vue @@ -1,284 +1,373 @@ @@ -286,151 +375,185 @@ import { getwayMixin } from '@/views/gateway/mixins/getwayMixin' import { getAction } from '@/api/manage' -let mst; +let mst export default { - mixins:[getwayMixin], - props:{ - }, - computed:{ - }, - data(){ + mixins: [getwayMixin], + props: {}, + computed: {}, + data() { return { window, searchText: '', columnList: [], - xbzlzdList:[], - dbjjzyList:[], - zblszyList:[], - syjlsList:[], + xbzlzdList: [], + dbjjzyList: [], + zblszyList: [], + syjlsList: [], } }, - mounted(){ - this.loadData(); + mounted() { + this.loadData() }, - computed:{ - banClass(){ - let r = 'detailHtml'; - var pid = this.$route.query.pid - var fullPath = this.$route.fullPath - console.log('fullPath--->',fullPath,pid); - // if(!pid){ - // r = 'ban'; - // } - switch (pid) { - case 101: r = 'baner8'; break; - case 102: r = 'baner4'; break; - case 103: r = 'baner'; break; - case 104: r = 'baner5'; break; - case 105: r = 'baner3'; break; - case 106: r = 'baner7'; break; - case 107: r = 'baner6'; break; - case 'gybs': r = 'baner2'; break; - case 'home': r = 'ban'; break; - case 501: r = 'detailHtml'; break; - case 306: r = 'detailHtml'; break; - case 305: r = 'detailHtml'; break; - case 304: r = 'detailHtml'; break; - case 303: r = 'detailHtml'; break; - case 302: r = 'detailHtml'; break; - case 301: r = 'baner9'; break; - case 1: r = 'baner9'; break; - default: - break; - } - - if(fullPath.indexOf('detailedPage')>-1){ - r = "detailHtml"; - }else if(fullPath.indexOf('home')>-1){ - r = "ban"; - } - return r; - } + computed: { + banClass() { + let r = 'detailHtml' + var pid = this.$route.query.pid+"" + var fullPath = this.$route.fullPath + console.log('fullPath--->', fullPath, pid) + console.log('pid--->', pid) + switch (pid) { + case '101': r = 'baner8' + break + case '102': r = 'baner4' + break + case '103': r = 'baner' + break + case '104': r = 'baner5' + break + case '105': r = 'baner3' + break + case '106': r = 'baner7' + break + case '107': r = 'baner6' + break + case 'gybs': r = 'baner2' + break + case 'home': r = 'ban' + break + case '401': r = 'baner9' + break + case '40101': r = 'baner9' + break + case '40102': r = 'baner9' + break + case '40103': r = 'baner9' + break + case '501': r = 'baner9' + break + case '306': r = 'baner9' + break + case '305': r = 'baner9' + break + case '30501': r = 'baner9' + break + case '30502': r = 'baner9' + break + case '304': r = 'baner9' + break + case '30401': r = 'baner9' + break + case '30402': r = 'baner9' + break + case '30403': r = 'baner9' + break + case '303': r = 'baner9' + break + case '302': r = 'baner9' + break + case '301': r = 'baner9' + break + case '1': r = 'baner9' + break + default: + break + } + + if (fullPath.indexOf('home') > -1) { + r = 'ban' + }else if(fullPath.indexOf('detailedPage2') > -1){ + r = 'baner8' + } + console.log('r--->', r) + return r + }, }, - updated(){ - }, - methods:{ - addFavo() { - alert("您的浏览器不支持加入收藏功能,请使用Ctrl+D进行添加!") - }, - addShow() { - alert("您的浏览器不支持设为首页,请按照下面步骤进行操作:1.打开浏览器设置。2.点击设置网页。3.复制本网址,然后进行粘贴点击确定!") - }, - loadData(){ - if(this.$route.query.findStr){ - this.searchText = this.$route.query.findStr; - } - //查询区域农业资源--西部杂粮杂豆 内容列表 - getAction('/gateway/gatewayColumn/list',{pageSize:-1,isRelease:'Y',parent:10101}).then((res)=>{ - if(res.success){ - let list = res.result.records||res.result; - this.xbzlzdList = list; - } - }); - //查询区域农业资源--东部经济资源 内容列表 - getAction('/gateway/gatewayColumn/list',{pageSize:-1,isRelease:'Y',parent:10102}).then((res)=>{ - if(res.success){ - let list = res.result.records||res.result; - this.dbjjzyList = list; - } - }); - //查询区域农业资源--中部粮食资源 内容列表 - getAction('/gateway/gatewayColumn/list',{pageSize:-1,isRelease:'Y',parent:10103}).then((res)=>{ - if(res.success){ - let list = res.result.records||res.result; - this.zblszyList = list; - } - }); - //查询区域农业资源--适宜吉林省 内容列表 - getAction('/gateway/gatewayColumn/list',{pageSize:-1,isRelease:'Y',parent:10104}).then((res)=>{ - if(res.success){ - let list = res.result.records||res.result; - this.syjlsList = list; - } - }); + updated() {}, + methods: { + addFavo() { + alert('您的浏览器不支持加入收藏功能,请使用Ctrl+D进行添加!') + }, + addShow() { + alert( + '您的浏览器不支持设为首页,请按照下面步骤进行操作:1.打开浏览器设置。2.点击设置网页。3.复制本网址,然后进行粘贴点击确定!' + ) + }, + loadData() { + if (this.$route.query.findStr) { + this.searchText = this.$route.query.findStr + } + //查询区域农业资源--西部杂粮杂豆 内容列表 + getAction('/gateway/gatewayColumn/list', { pageSize: -1, isRelease: 'Y', parent: 10101 }).then((res) => { + if (res.success) { + let list = res.result.records || res.result + this.xbzlzdList = list + } + }) + //查询区域农业资源--东部经济资源 内容列表 + getAction('/gateway/gatewayColumn/list', { pageSize: -1, isRelease: 'Y', parent: 10102 }).then((res) => { + if (res.success) { + let list = res.result.records || res.result + this.dbjjzyList = list + } + }) + //查询区域农业资源--中部粮食资源 内容列表 + getAction('/gateway/gatewayColumn/list', { pageSize: -1, isRelease: 'Y', parent: 10103 }).then((res) => { + if (res.success) { + let list = res.result.records || res.result + this.zblszyList = list + } + }) + //查询区域农业资源--适宜吉林省 内容列表 + getAction('/gateway/gatewayColumn/list', { pageSize: -1, isRelease: 'Y', parent: 10104 }).then((res) => { + if (res.success) { + let list = res.result.records || res.result + this.syjlsList = list + } + }) //查询栏目 - // getAction('/gateway/gatewayColumn/list',{pageSize:-1,isEnable:'Y',type:'!!BLANK'}).then((res)=>{ - // if(res.success){ - // let list = res.result.records||res.result; - // let map = {}; - // //转成,map - // let parentList = list.filter(x => { - // if(x.parent){ - // return false; - // }else{ - // map[x.id] = x; - // return true; - // } - // }); - // //孩子找父亲 - // list.forEach(x => { - // let parent = map[x.parent] || {}; - // if(!parent.list) parent.list = []; - // parent.list.push(x); - // }); - // this.columnList = parentList; - // } - // }); + // getAction('/gateway/gatewayColumn/list',{pageSize:-1,isEnable:'Y',type:'!!BLANK'}).then((res)=>{ + // if(res.success){ + // let list = res.result.records||res.result; + // let map = {}; + // //转成,map + // let parentList = list.filter(x => { + // if(x.parent){ + // return false; + // }else{ + // map[x.id] = x; + // return true; + // } + // }); + // //孩子找父亲 + // list.forEach(x => { + // let parent = map[x.parent] || {}; + // if(!parent.list) parent.list = []; + // parent.list.push(x); + // }); + // this.columnList = parentList; + // } + // }); }, //鼠标移入菜单上,显示其下菜单 - openMenu(e){ - var curItem = jQuery(e.target); - mst = setTimeout(function(){//延时触发 - curItem.find("blockquote").slideDown('fast'); - mst = null; - }); + openMenu(e) { + var curItem = jQuery(e.target) + mst = setTimeout(function () { + //延时触发 + curItem.find('blockquote').slideDown('fast') + mst = null + }) }, //鼠标移出菜单时,隐藏其下菜单 - closeMenu(e){ - if(mst)clearTimeout(mst); - jQuery(e.target).find("blockquote").slideUp('fast'); - } + closeMenu(e) { + if (mst) clearTimeout(mst) + jQuery(e.target).find('blockquote').slideUp('fast') + }, }, } \ No newline at end of file diff --git a/src/views/gateway/common/main.vue b/src/views/gateway/common/main.vue index b28ea0d..ef8052e 100644 --- a/src/views/gateway/common/main.vue +++ b/src/views/gateway/common/main.vue @@ -8,8 +8,8 @@
-

{{tt.title}}

-

{{$tfnm(tt,'content',60)}}

+

{{tt.title}}

+

{{$tfnm(tt,'content',60)}}

@@ -25,9 +25,9 @@
- + @@ -52,7 +52,7 @@
  • - +

    {{gzdtList[0].title}}

    {{$tfnm(gzdtList[0],'content',84)}}

    @@ -60,7 +60,7 @@