OnePsycho пре 4 година
родитељ
комит
cb118804cd

+ 1 - 0
TEAMModelOS/ClientApp/package.json

@@ -34,6 +34,7 @@
 		"firestore": "^1.1.6",
 		"html2canvas": "^1.0.0-rc.7",
 		"html2pdf.js": "^0.9.3",
+		"i18next": "^20.3.1",
 		"imports-loader": "^0.8.0",
 		"increase-memory-limit": "^1.0.7",
 		"js-sha1": "^0.6.0",

+ 2 - 2
TEAMModelOS/ClientApp/src/common/BaseKonva.vue

@@ -1,6 +1,6 @@
 <template>
 	<div class="app-container">
-		<div id="container" ref="container" class="container" />
+		<div id="containers" ref="container" class="container" />
 	</div>
 </template>
 
@@ -60,7 +60,7 @@
 			initStage() {
 				let that = this
 				var stage = new Konva.Stage({
-					container: 'container',
+					container: 'containers',
 					width: this.config.canvasWidth,
 					height: this.config.canvasHeight
 				});

+ 3 - 2
TEAMModelOS/ClientApp/src/common/BaseMyCanvas.vue

@@ -1,7 +1,7 @@
 <template>
 	<div id="baseCanvas" @mouseover="mouseOver" @mouseleave="mouseLeave">
 		<!-- <BaseCanvas class="sign-canvas" ref="SignCanvas" :options="options"/> -->
-		<BaseKonva class="sign-canvas" ref="SignCanvas" :options="options"/>
+		<BaseKonvaCanvas class="sign-canvas" ref="SignCanvas" status="line"/>
 		<div class="canvas-tools animated fadeIn" ref="canvasTools">
 			<span :class="['canvas-tools-item',curMode === 'move' ? 'tools-active' : '']" @click="doMove()" style="border-radius: 15px 0 0 0;">
 				<Icon custom="iconfont icon-left-arrow" size="20"/>
@@ -57,9 +57,10 @@
 </template>
 <script>
 	import BaseCanvas from './BaseCanvas.vue';
+	import BaseKonvaCanvas from '@/view/task/mark/MarkCanvas.vue'
 	export default {
 		components: {
-			BaseCanvas
+			BaseCanvas,BaseKonvaCanvas
 		},
 		props: {
 			vm:{

+ 1 - 0
TEAMModelOS/ClientApp/src/common/BaseUserPoptip.vue

@@ -118,6 +118,7 @@
 				}
 				this.userInfo.username = this.user.name
 				this.userInfo.nameColor = this.randomColor()
+				this.userInfo.courseNum = user_profile.courses.length
 				this.getSize()
 			},
 			//获取Blob空间信息

+ 1 - 1
TEAMModelOS/ClientApp/src/components/syllabus/DragTree.less

@@ -17,7 +17,7 @@
     padding-left: 0 !important;
     &:hover {
       height: 45px;
-      background: #313131;
+      background: #2b2b2b;
     }
 	
 	.el-tree-node__expand-icon{

+ 3 - 3
TEAMModelOS/ClientApp/src/components/syllabus/DragTree.vue

@@ -3,12 +3,13 @@
 		<vuescroll>
 			<el-tree :data="treeDatas" :props="defaultProps" :allow-drop="allowDrop" class="tree" node-key="id"
 				default-expand-all highlight-current @node-drop="handleDrop" @node-click="onNodeClick"
-				:draggable="editable" :expand-on-click-node="false" ref="tree">
+				:draggable="Boolean(editable)" :expand-on-click-node="false" ref="tree">
 				<span class="custom-tree-node" slot-scope="{ node, data }">
 					<span class="tree-node-lable">
 						{{data.title}}
 						<!-- {{data.id}} -->
-						<Icon type="md-cube" :title="$t('syllabus.tree.hasResource')" v-if="data.rnodes && data.rnodes.length" />
+						<Icon type="md-cube" color="#00c38d" :title="$t('syllabus.tree.hasResource')" v-if="data.rnodes && data.rnodes.length" />
+						<Icon type="md-git-compare" color="#00c38d" :title="$t('syllabus.tree.hasCoEdit')" v-if="hasEditAuth(data) && isSchool" />
 					</span>
 					<span class="custom-tree-tools" v-if="(hasEditAuth(data) || $access.can('admin.*|Syllabus_Edit'))">
 						<Icon type="md-create" size="16" :title="$t('syllabus.tree.edit')" @click="onEditItem(node,data,$event)" />
@@ -301,7 +302,6 @@
 					// 判断是否为一级节点,如果是二级节点则需要拿对应的一级节点去做判断
 					let chapterId = nodeData.pid === this.volume.id ? nodeData.id : this.getChapterIdById(nodeData.id)
 					let chapterNode = this.treeDatas.find(i => i.id === chapterId)
-					console.log(this.volume);
 					return this.volume.creatorId === userId || (chapterNode.auth && chapterNode.auth.length && chapterNode.auth.map(i => i.tmdid).includes(userId))
 				}
 			},

+ 1 - 0
TEAMModelOS/ClientApp/src/locale/lang/zh-CN/syllabus.js

@@ -39,6 +39,7 @@ export default{
 	isExistVolume:'已存在相同册别',
     tree:{
 		hasResource:'有关联资源',
+		hasCoEdit:'有共编权限',
 		edit:'编辑',
 		add:'添加',
 		remove:'删除',

+ 1 - 0
TEAMModelOS/ClientApp/src/locale/lang/zh-TW/syllabus.js

@@ -39,6 +39,7 @@ export default {
 	isExistVolume: '已存在相同册別',
 	tree: {
 		hasResource: '有關聯資源',
+		hasCoEdit:'有共編許可權',
 		edit: '編輯',
 		add: '添加',
 		remove: '删除',

+ 3 - 0
TEAMModelOS/ClientApp/src/router/routes.js

@@ -359,6 +359,7 @@ export const routes = [
 				name: 'schoolBank',
 				component: resolve => require(['@/view/evaluation/bank/index.vue'], resolve),
 				meta: {
+					isKeep:true,
 					activeName: 'schoolBank'
 				},
 			},
@@ -377,6 +378,7 @@ export const routes = [
 			name: 'newSchoolPaper',
 			component: resolve => require(['@/view/evaluation/index/CreatePaper.vue'], resolve),
 			meta: {
+				isKeep:true,
 				activeName: 'schoolBank'
 			}
 		},
@@ -385,6 +387,7 @@ export const routes = [
 			name: 'newPrivatePaper',
 			component: resolve => require(['@/view/evaluation/index/CreatePaper.vue'], resolve),
 			meta: {
+				isKeep:true,
 				activeName: 'personalBank'
 			}
 		},

+ 130 - 0
TEAMModelOS/ClientApp/src/utils/editorLangTw.js

@@ -0,0 +1,130 @@
+let editor_tw_config = {
+    wangEditor: {
+        插入: '插入',
+        默认: '默認',
+        创建: '創建',
+        修改: '修改',
+        如: '如',
+        请输入正文: '請輸入正文',
+        menus: {
+          title: {
+                标题: '標題',
+                加粗: '加粗',
+                字号: '字型大小',
+                字体: '字體',
+                斜体: '斜體',
+                下划线: '底線',
+                删除线: '删除線',
+                缩进: '縮進',
+                行高: '行高',
+                文字颜色: '文字顏色',
+                背景色: '背景色',
+                链接: '連結',
+                序列: '序列',
+                对齐: '對齊',
+                引用: '引用',
+                表情: '表情',
+                图片: '圖片',
+                视频: '視頻',
+                表格: '表格',
+                代码: '程式碼',
+                分割线: '分割線',
+                恢复: '恢復',
+                撤销: '撤銷',
+                全屏: '全屏',
+                代办事项: '代辦事項',
+            },
+            dropListMenu: {
+                设置标题: '設定標題',
+                背景颜色: '背景顏色',
+                文字颜色: '文字顏色',
+                设置字号: '設定字型大小',
+                设置字体: '設置字體',
+                设置缩进: '設定縮進',
+                对齐方式: '對齊管道',
+                设置行高: '設定行高',
+                序列: '序列',
+                head: {
+                    正文: '正文',
+                },
+                indent: {
+                    增加缩进: '新增縮進',
+                    减少缩进: '减少縮進',
+                },
+                justify: {
+                    靠左: '靠左',
+                    居中: '居中',
+                    靠右: '靠右',
+                },
+                list: {
+                    无序列表: '無序清單',
+                    有序列表: '有序列錶',
+                },
+            },
+            panelMenus: {
+                emoticon: {
+                    默认: '默認',
+                    新浪: '新浪',
+                    emoji: 'emoji',
+                    手势: '手勢',
+                },
+                image: {
+                    图片链接: '圖片連結',
+                    上传图片: '上傳圖片',
+                    网络图片: '網絡圖片',
+                },
+                link: {
+                    链接: '連結',
+                    链接文字: '連結文字',
+                    删除链接: '删除連結',
+                    查看链接: '查看連結',
+                },
+                video: {
+                    插入视频: '插入視頻',
+                },
+                table: {
+                    行: '行',
+                    列: '列',
+                    的: ' ',
+                    表格: '表格',
+                    添加行: '添加行',
+                    删除行: '删除行',
+                    添加列: '添加列',
+                    删除列: '删除列',
+                    设置表头: '設定表頭',
+                    取消表头: '取消表頭',
+                    插入表格: '插入表格',
+                    删除表格: '删除表格',
+                },
+                code: {
+                    删除代码: '删除程式碼',
+                    修改代码: '修改程式碼',
+                    插入代码: '插入代碼',
+                },
+            },
+        },
+        validate: {
+            张图片: '張圖片',
+            大于: '大於',
+            图片链接: '圖片連結',
+            不是图片: '不是圖片',
+            返回结果: '返回結果',
+            上传图片超时: '上傳圖片超時',
+            上传图片错误: '上傳圖片錯誤',
+            上传图片失败: '上傳圖片失敗',
+            插入图片错误: '插入圖片錯誤',
+            一次最多上传: '一次最多上傳',
+            下载链接失败: '下載連結失敗',
+            图片验证未通过: '圖片驗證未通過',
+            服务器返回状态: '服務器返回狀態',
+            上传图片返回结果错误: '上傳圖片返回結果錯誤',
+            请替换为支持的图片类型: '請替換為支持的圖片類型',
+            您插入的网络图片无法识别: '您插入的網絡圖片無法識別',
+            您刚才插入的图片链接未通过编辑器校验: '您剛才插入的圖片連結未通過編輯器校驗',
+        },
+    }
+}
+
+export {
+	editor_tw_config
+}

+ 18 - 0
TEAMModelOS/ClientApp/src/utils/editorTools.js

@@ -5,6 +5,8 @@ import E from 'wangeditor'
 import createKityformula from "./kityformula";
 import myscriptMath from "./myscript-math-web";
 import { app } from '@/boot-app.js'
+import { editor_tw_config } from './editorLangTw.js'
+import i18next from 'i18next'
 import {
 	Message,
 	Modal
@@ -17,11 +19,20 @@ import {
 export default {
 	/* 初始化自定义富文本配置项 */
 	initMyEditor(editor,vm,isOption) {
+		let curLang = localStorage.getItem('local') || 'zh-cn'
+		// 自定义语言
+		editor.config.languages['tw'] = editor_tw_config
+		// 选择语言
+		editor.config.lang = curLang === 'zh-tw' ? 'tw' : curLang === 'en-us' ? 'en' : 'zh'
+		// 引入 i18next 插件
+		editor.i18next = i18next
+		
 		// 初始化公式、视频、音频、画板功能
 		this.addFormula(vm,editor)
 		this.addVideoUpload(vm,editor)
 		this.addAudio(vm,editor)
 		this.addCanvas(vm,editor)
+		
 		editor.config.uploadImgMaxSize = 2 * 1024 * 1024 // 2M
 		editor.config.uploadImgShowBase64 = true;
 		editor.config.uploadImgMaxLength = 5 // 一次最多上传 5 个图片
@@ -48,6 +59,13 @@ export default {
 
 	/* 初始化自定义富文本简版配置项 */
 	initSimpleEditor(editor) {
+		let curLang = localStorage.getItem('local') || 'zh-cn'
+		// 自定义语言
+		editor.config.languages['tw'] = editor_tw_config
+		// 选择语言
+		editor.config.lang = curLang === 'zh-tw' ? 'tw' : curLang === 'en-us' ? 'en' : 'zh'
+		// 引入 i18next 插件
+		editor.i18next = i18next
 		editor.config.uploadImgMaxSize = 2 * 1024 * 1024 // 2M
 		editor.config.uploadImgShowBase64 = true;
 		editor.config.uploadImgMaxLength = 5 // 一次最多上传 5 个图片

+ 0 - 1
TEAMModelOS/ClientApp/src/view/answersheet/BaseEditor.vue

@@ -766,7 +766,6 @@
 			items: {
 				handler(n, o) {
 					if (n.length) {
-						console.log(n)
 						let objectiveArr = ["complete"];
 						this.completeItems = n.filter((item) =>
 							objectiveArr.includes(item.type)

+ 3 - 0
TEAMModelOS/ClientApp/src/view/evaluation/bank/TestPaperList.vue

@@ -175,6 +175,9 @@
 			this.isShowSchoolBank = this.$route.name === "schoolBank";
 
 		},
+		activated() {
+			this.isShowSchoolBank = this.$route.name === "schoolBank";
+		},
 		methods: {
 			
 			onCheckPaper(item){

+ 6 - 3
TEAMModelOS/ClientApp/src/view/evaluation/bank/index.vue

@@ -66,8 +66,6 @@
 				isShowBackList:false,
 			}
 		},
-		created() {
-		},
 		methods: {
 			onBackToTop(){
 				this.$refs.bankContainer.scrollIntoView()
@@ -151,7 +149,12 @@
 				handler(n) {
 					console.log(n)
 				}
-			}
+			},
+			$route( to , from ){   
+			   if(from.name !== 'answerSheet' && to.name === 'schoolBank'){
+				  this.onShowPaperList()
+			   }
+			 }
 		}
 	}
 </script>