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 @@
-
-
+
@@ -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 @@
-
+
-
+
封面预览
-
![]()
+