diff --git a/src/api/floor/index.js b/src/api/floor/index.js new file mode 100644 index 0000000..94bbc9f --- /dev/null +++ b/src/api/floor/index.js @@ -0,0 +1,35 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/libraryFloor/editLibraryFloor', + method: 'post', + data + }) +} + +export function edit(data) { + return request({ + url: 'api/libraryFloor/editLibraryFloor', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/libraryFloor/delLibraryFloor', + method: 'post', + data: ids + }) +} + +export function sort(parameter) { + return request({ + url: 'api/libraryFloor/libraryFloorSort', + method: 'post', + data: parameter + }) +} + +export default { add, edit, del, sort } diff --git a/src/assets/iconfonts/light/iconfont.css b/src/assets/iconfonts/light/iconfont.css index 77add7b..a26cff9 100644 --- a/src/assets/iconfonts/light/iconfont.css +++ b/src/assets/iconfonts/light/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* Project id 3966148 */ - src: url('iconfont.woff2?t=1716796171009') format('woff2'), - url('iconfont.woff?t=1716796171009') format('woff'), - url('iconfont.ttf?t=1716796171009') format('truetype'); + src: url('iconfont.woff2?t=1733797195168') format('woff2'), + url('iconfont.woff?t=1733797195168') format('woff'), + url('iconfont.ttf?t=1733797195168') format('truetype'); } .iconfont { @@ -13,6 +13,34 @@ -moz-osx-font-smoothing: grayscale; } +.icon-duolouceng:before { + content: "\e87c"; +} + +.icon-shujia:before { + content: "\e68c"; +} + +.icon-hangzhengquyuguanli:before { + content: "\e68d"; +} + +.icon-quyu1:before { + content: "\e68b"; +} + +.icon-gongsi:before { + content: "\e689"; +} + +.icon-louceng:before { + content: "\e68a"; +} + +.icon-wodeshujia:before { + content: "\e688"; +} + .icon-ceshi:before { content: "\e687"; } @@ -489,6 +517,10 @@ content: "\e613"; } +.icon-weizhi-copy:before { + content: "\e7d5"; +} + .icon-xuanzhong:before { content: "\e614"; } diff --git a/src/assets/iconfonts/light/iconfont.js b/src/assets/iconfonts/light/iconfont.js index f2d31ce..e8715f6 100644 --- a/src/assets/iconfonts/light/iconfont.js +++ b/src/assets/iconfonts/light/iconfont.js @@ -1 +1 @@ -window._iconfont_svg_string_3966148='',function(c){var a=(a=document.getElementsByTagName("script"))[a.length-1],l=a.getAttribute("data-injectcss"),a=a.getAttribute("data-disable-injectsvg");if(!a){var h,i,o,t,s,p=function(a,l){l.parentNode.insertBefore(a,l)};if(l&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}h=function(){var a,l=document.createElement("div");l.innerHTML=c._iconfont_svg_string_3966148,(l=l.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",l=l,(a=document.body).firstChild?p(l,a.firstChild):a.appendChild(l))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(h,0):(i=function(){document.removeEventListener("DOMContentLoaded",i,!1),h()},document.addEventListener("DOMContentLoaded",i,!1)):document.attachEvent&&(o=h,t=c.document,s=!1,v(),t.onreadystatechange=function(){"complete"==t.readyState&&(t.onreadystatechange=null,z())})}function z(){s||(s=!0,o())}function v(){try{t.documentElement.doScroll("left")}catch(a){return void setTimeout(v,50)}z()}}(window); \ No newline at end of file +window._iconfont_svg_string_3966148='',(c=>{var a=(l=(l=document.getElementsByTagName("script"))[l.length-1]).getAttribute("data-injectcss"),l=l.getAttribute("data-disable-injectsvg");if(!l){var h,i,o,t,s,z=function(a,l){l.parentNode.insertBefore(a,l)};if(a&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}h=function(){var a,l=document.createElement("div");l.innerHTML=c._iconfont_svg_string_3966148,(l=l.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",l=l,(a=document.body).firstChild?z(l,a.firstChild):a.appendChild(l))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(h,0):(i=function(){document.removeEventListener("DOMContentLoaded",i,!1),h()},document.addEventListener("DOMContentLoaded",i,!1)):document.attachEvent&&(o=h,t=c.document,s=!1,p(),t.onreadystatechange=function(){"complete"==t.readyState&&(t.onreadystatechange=null,v())})}function v(){s||(s=!0,o())}function p(){try{t.documentElement.doScroll("left")}catch(a){return void setTimeout(p,50)}v()}})(window); \ No newline at end of file diff --git a/src/assets/iconfonts/light/iconfont.json b/src/assets/iconfonts/light/iconfont.json index e5085c3..9489b99 100644 --- a/src/assets/iconfonts/light/iconfont.json +++ b/src/assets/iconfonts/light/iconfont.json @@ -5,6 +5,55 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "10767710", + "name": "多楼层", + "font_class": "duolouceng", + "unicode": "e87c", + "unicode_decimal": 59516 + }, + { + "icon_id": "16328040", + "name": "书架", + "font_class": "shujia", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "23855671", + "name": "行政区域管理", + "font_class": "hangzhengquyuguanli", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "24272021", + "name": "区域", + "font_class": "quyu1", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "6901606", + "name": "公司", + "font_class": "gongsi", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "7032903", + "name": "楼层", + "font_class": "louceng", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "15085894", + "name": "我的书架", + "font_class": "wodeshujia", + "unicode": "e688", + "unicode_decimal": 59016 + }, { "icon_id": "18585490", "name": "数据测试名称", @@ -838,6 +887,13 @@ "unicode": "e613", "unicode_decimal": 58899 }, + { + "icon_id": "40682301", + "name": "位置-copy", + "font_class": "weizhi-copy", + "unicode": "e7d5", + "unicode_decimal": 59349 + }, { "icon_id": "34690923", "name": "选中", diff --git a/src/assets/iconfonts/light/iconfont.ttf b/src/assets/iconfonts/light/iconfont.ttf index c96b676..65b6a6a 100644 Binary files a/src/assets/iconfonts/light/iconfont.ttf and b/src/assets/iconfonts/light/iconfont.ttf differ diff --git a/src/assets/iconfonts/light/iconfont.woff b/src/assets/iconfonts/light/iconfont.woff index 8795d98..f042d19 100644 Binary files a/src/assets/iconfonts/light/iconfont.woff and b/src/assets/iconfonts/light/iconfont.woff differ diff --git a/src/assets/iconfonts/light/iconfont.woff2 b/src/assets/iconfonts/light/iconfont.woff2 index 28c02d8..96ce9b5 100644 Binary files a/src/assets/iconfonts/light/iconfont.woff2 and b/src/assets/iconfonts/light/iconfont.woff2 differ diff --git a/src/assets/styles/manage.scss b/src/assets/styles/manage.scss index 6d4bd20..3b95919 100644 --- a/src/assets/styles/manage.scss +++ b/src/assets/styles/manage.scss @@ -1,9 +1,32 @@ @import 'variables'; @import 'mixin'; -.venue-container{ +.venue-header{ display: flex; justify-content: space-between; + align-items: center; + padding: 16px 30px 10px 20px; + color: #0C0E1E; + background-color: #fff; + h4{ + font-size: 18px; + i{ + font-size: 22px; + color: #0348F3; + padding-right: 6px; + } + } + p{ + i{ + font-size: 18px; + } + } +} + +.venue-content{ + display: flex; + justify-content: space-between; + // height: calc(100% - 52px); } .venue-left{ @@ -31,12 +54,12 @@ .container-right{ @include table_height_min; &.tab-content{ - @include tab_height_min; + @include tab_height_min_lib; } } } -.venue-container{ +.venue-content{ .tab-content{ position: relative; @include row_tab_style; @@ -49,7 +72,7 @@ .venue-preview{ width: 100%; - height: 690px; + height: 630px; margin-top: 20px; overflow: hidden; img{ @@ -57,3 +80,97 @@ width: 100%; } } + +::v-deep .book-cover-upload { + display: flex; + justify-content: flex-start; + .el-form-item__content{ + position: relative; + width: 580px !important; + display: flex; + justify-content: space-between; + .input-style{ + width: 490px; + height: 34px; + line-height: 34px; + padding: 0 20px; + border: 1px solid #e6e8ed; + border-radius: 3px; + &.error-box{ + border-color: #ed4a41; + } + } + .error-tip{ + position: absolute; + left: 0; + bottom: -26px; + font-size: 12px; + color: #ff4949; + } + } +} + +.venue-mark{ + position: absolute; + right: 10px; + top: 0; + i{ + font-weight: bold; + } +} +.mark-dialog{ + .el-dialog{ + width: auto !important; + } +} +.mark-handle{ + display: flex; + justify-content: space-between; + align-items: center; + .mark-img{ + width: 900px; + overflow: hidden; + img{ + display: block; + width: 100%; + } + } + .mark-right{ + // display: flex; + // flex-direction: column; + // justify-content: space-between; + width: 200px; + padding: 0 20px; + } + .mark-info{ + font-size: 16px; + li{ + margin-bottom: 14px; + p{ + font-weight: bold; + color: #0C0E1E; + line-height: 30px; + } + } + } +} +.mark-button{ + margin-top: 80px; + .el-button{ + width: 150px; + height: 40px; + line-height: 40px; + padding: 0; + margin-bottom: 10px; + margin-left: 0; + border-color: #E6E8ED; + background-color: transparent; + color: #545B65; + font-weight: normal; + &.el-button--primary{ + color: #fff; + background-color: #0348F3; + border-color: #0348F3; + } + } +} \ No newline at end of file diff --git a/src/assets/styles/mixin.scss b/src/assets/styles/mixin.scss index 489163a..de40de5 100644 --- a/src/assets/styles/mixin.scss +++ b/src/assets/styles/mixin.scss @@ -347,6 +347,15 @@ } } +@mixin tab_height_min_lib{ + [data-theme="dark"] & { + min-height: calc(100vh - 230px); + } + [data-theme="light"] & { + min-height: calc(100vh - 230px); + } +} + @mixin input_style{ [data-theme="dark"] & { border: 1px solid $mainColor; diff --git a/src/main.js b/src/main.js index 2e6443e..1125686 100644 --- a/src/main.js +++ b/src/main.js @@ -43,6 +43,17 @@ import { parseTime } from '@/utils/index.js' Vue.filter('parseTime', function(time, cFormat) { return parseTime(time, cFormat) }) + +// 解决el-radio报错 +Vue.directive('removeAriaHidden', { + bind(el, binding) { + const ariaEls = el.querySelectorAll('.el-radio__original') + ariaEls.forEach((item) => { + item.removeAttribute('aria-hidden') + }) + } +}) + Vue.use(uploader) Vue.use(checkPer) Vue.use(VueHighlightJS) diff --git a/src/router/routers.js b/src/router/routers.js index 8577718..89f732b 100644 --- a/src/router/routers.js +++ b/src/router/routers.js @@ -63,12 +63,29 @@ export const constantRouterMap = [ // meta: { title: '借阅车' } // } ] + }, + { + path: '/bookshelfPosition', + component: Layout, + hidden: true, + redirect: 'noredirect', + children: [ + { + path: 'bookshelfPosition', + component: (resolve) => require(['@/views/visualCheck/venueDevice/bookshelfPosition/index'], resolve), + name: '/check/venueDevice/bookshelf/bookshelfPosition', + meta: { title: '架位列表', noCache: true, activeMenu: '/check/venueDevice/bookshelf' } + } + ] } // { - // path: '/environmentalScreen', - // component: (resolve) => require(['@/views/environmentalScreen/index'], resolve), - // hidden: true - // }, + // path: '/check/venueDevice/bookshelf/bookshelfPosition', // 路径及携带参数 + // component: () => import('@/views/visualCheck/venueDevice/bookshelfPosition/index'), + // name: '架位列表', + // // meta.activeMunu 激活时的菜单,新开的页面需要挂在那个菜单下 + // meta: { title: '架位列表', noCache: true, activeMenu: '/check/venueDevice/bookshelf' }, + // hidden: true // 是否显示在菜单 + // } // { // path: '/preview', // component: (resolve) => require(['@/views/preview/index'], resolve), diff --git a/src/views/components/upload.vue b/src/views/components/upload.vue new file mode 100644 index 0000000..8d622fa --- /dev/null +++ b/src/views/components/upload.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue index ac40ffe..4e787a5 100644 --- a/src/views/system/menu/index.vue +++ b/src/views/system/menu/index.vue @@ -39,8 +39,8 @@ - - + + @@ -67,7 +67,7 @@ - + @@ -75,10 +75,10 @@ - + - + @@ -130,9 +130,9 @@ {{ scope.row.menuSort }} - + @@ -169,7 +169,7 @@ import rrOperation from '@crud/RR.operation' import crudOperation from '@crud/CRUD.operation' // crud交由presenter持有 -const defaultForm = { id: null, title: null, menuSort: 999, path: null, component: null, componentName: null, iFrame: false, roles: [], pid: 0, icon: null, cache: false, hidden: false, type: 0, permission: null } +const defaultForm = { id: null, title: null, menuSort: 999, path: null, component: null, componentName: null, iframe: false, roles: [], pid: 0, icon: null, cache: false, hidden: false, type: 0, permission: null } export default { name: 'Menu', components: { Treeselect, IconSelect, crudOperation, rrOperation }, @@ -192,7 +192,7 @@ export default { // icon: [ // { required: true, message: '菜单图标不可为空', trigger: 'change' } // ], - iFrame: [ + iframe: [ { required: true, message: '请选择是否为外链菜单', trigger: 'change' } ], hidden: [ diff --git a/src/views/visualCheck/bookstore/book/index.vue b/src/views/visualCheck/bookstore/book/index.vue index 3a11042..582c551 100644 --- a/src/views/visualCheck/bookstore/book/index.vue +++ b/src/views/visualCheck/bookstore/book/index.vue @@ -53,21 +53,11 @@ -
- - - - -
- - 上传 -
-
-
+ -
+

封面预览

- +