Bladeren bron

Merge branch 'develop5.0-tmd' of http://106.12.23.251:10000/TEAMMODEL/TEAMModelOS into develop5.0-tmd

CrazyIter_Bin 4 jaren geleden
bovenliggende
commit
d909708df2

+ 6 - 1
TEAMModelOS/ClientApp/src/api/schoolSetting.js

@@ -73,5 +73,10 @@ export default {
     //根据私有班级id集合查询班级详细信息
     getClassByIds: function (data) {
         return post('/school/classroom/name', data)
-    }
+    },
+	
+	// 申请建立学校
+	applySchool:function (data) {
+        return post('/core/apply-school', data)
+    },
 }

+ 5 - 5
TEAMModelOS/ClientApp/src/common/BaseAreaPicker.vue

@@ -38,12 +38,12 @@
 </script>
 <style>
 	.distpicker-address-wrapper select {
-		background-color: #575757;
-		color: #cacaca;
+		background-color: #575757 !important;
+		color: #cacaca !important;
 		margin: 5px 0;
-		font-size: 14px;
-		height: 35px;
-		border: 0;
+		font-size: 14px !important;
+		height: 35px !important;
+		border: 0 !important;
 		display: inline-block;
 		position: relative;
 		outline: none;

+ 41 - 30
TEAMModelOS/ClientApp/src/components/app-root.vue

@@ -1,43 +1,54 @@
 <template>
     <div id="app" class="container-fluid">
-        <router-view v-if="isRouterAlive"/>
+        <router-view v-if="isRouterAlive" />
     </div>
 </template>
 
 <script>
-    import NavMenu from './nav-menu'
+import NavMenu from './nav-menu'
 
-    export default {
-        components: {
-            'nav-menu': NavMenu,
-        },
-        provide () {    //父组件中通过provide来提供变量,在子组件中通过inject来注入变量。                                             
-            return {
-                reload: this.reload                                              
-            }
-        },
-        methods: {
-            reload() {
-                this.isRouterAlive = false
-                this.$nextTick(function () {
-                    this.isRouterAlive = true
-                })
-            }
-        },
-        data() {
-            return {
-                isRouterAlive:true
-            }
-        },
-        created() {
+export default {
+    components: {
+        'nav-menu': NavMenu,
+    },
+    provide() {    //父组件中通过provide来提供变量,在子组件中通过inject来注入变量。                                             
+        return {
+            reload: this.reload
+        }
+    },
+    methods: {
+        reload() {
+            this.isRouterAlive = false
+            this.$nextTick(function () {
+                this.isRouterAlive = true
+            })
+        }
+    },
+    data() {
+        return {
+            isRouterAlive: true
+        }
+    },
+    created() {
+    },
+    watch: {
+        '$i18n.locale': {
+            handler(n, o) {
+                document.title = this.$t('system.title')
+            },
+            immediate: true
         }
     }
+}
 </script>
 
 <style scoped>
-    #app, body, html {
-        width: 100%;
-        height: 100%;
-        font-family: 'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI','Microsoft YaHei','微软雅黑', 'Microsoft JhengHei';
-    }
+#app,
+body,
+html {
+    width: 100%;
+    height: 100%;
+    font-family: "Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI",
+        "Microsoft YaHei", "微软雅黑", "Microsoft JhengHei";
+}
 </style>

File diff suppressed because it is too large
+ 1 - 1
TEAMModelOS/ClientApp/src/components/public/frontEndMain/Index.vue


+ 1 - 0
TEAMModelOS/ClientApp/src/locale/lang/en-US/system.js

@@ -1,4 +1,5 @@
 export default {
+    title:'TEAM Model Cloud',
     loading:'加载中',
     menu:{
         school:'学校',

+ 16 - 0
TEAMModelOS/ClientApp/src/locale/lang/zh-CN/settings.js

@@ -75,4 +75,20 @@ export default {
 	copyModal2: "复制失败",
 	openModal1: "应用列表获取失败",
 	openModal2: "api列表获取失败",
+	applyForm:{
+		name:'学校名称',
+		id:'学校简码',
+		code:'学校代码',
+		address:'学校位置',
+		cellphone:'联系方式',
+		content:'备注信息',
+		place1:'选择学校所在地区',
+		place2:'请输入学校详细地址',
+		place3:'请输入您的手机号,邮箱等联系方式',
+		place4:'可填写您的备注信息',
+		submit:'提交申请',
+		submitSuc:'已成功提交申请!',
+		errTip1:'请选择正确的地区!',
+		errTip2:'请将信息填写完整!'
+	}
 }

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

@@ -1,4 +1,5 @@
 export default {
+    title:'醍摩豆云平台',
     loading:'加载中',
     menu:{
         school:'学校',

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

@@ -38,7 +38,7 @@ export default {
 	condition8: '发布年份',
     // totalIndex.vue
     ti_title1: '基本数据统计',
-    ti_title2: '评测数据统计',
+    ti_title2: '学情分析',
     ti_title3: '学科对比统计',
     ti_title4: '年级优生率统计',
     ti_title5: '评测列表数据',

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

@@ -2,7 +2,7 @@ export default {
 	index: {
 		item: '試題',
 		paper: '試卷',
-		addExercise: '新建題',
+		addExercise: '新建題',
 		openAll: '全部展開',
 		collapseAll: '全部折疊',
 		autoCreate: '智慧組卷',

+ 23 - 7
TEAMModelOS/ClientApp/src/locale/lang/zh-TW/settings.js

@@ -12,10 +12,10 @@ export default {
 	menuTips: '選擇左側Menu在網站載入時的預設顯示模式',
 	menuOpen: '預設展開顯示',
 	menuClose: '預設關閉顯示',
-	logoSetting:'Logo顯示設定',
-	logoTips:'選擇是否隱藏左上角平臺Logo',
-	logoOpen:'預設顯示',
-	logoHide:'預設隱藏',
+	logoSetting: 'Logo顯示設定',
+	logoTips: '選擇是否隱藏左上角平臺Logo',
+	logoOpen: '預設顯示',
+	logoHide: '預設隱藏',
 	defaultSchool: '預設學校',
 	curSchool: '當前學校',
 	courseNum: '課程數',
@@ -24,8 +24,8 @@ export default {
 	requestStatus: '送出加入邀請',
 	goSchool: '前往學校',
 	agreeJoin: '同意加入',
-	cancelAdd:'拒絕加入',
-	undoJoin:'撤銷申請',
+	cancelAdd: '拒絕加入',
+	undoJoin: '撤銷申請',
 	requestJoin: '申請加入',
 	inputSearch: '輸入要檢索的學校名稱',
 	modalTip1: '注意',
@@ -37,7 +37,7 @@ export default {
 	columnTool: '操作',
 	modalTip4: '溫馨提示',
 	modalTip5: '確認加入',
-	modalTip6:'確認取消加入',
+	modalTip6: '確認取消加入',
 	submitSucTips: '提交成功',
 	submitFailTips: '操作失敗',
 	joinSucTips: '加入成功!',
@@ -57,4 +57,20 @@ export default {
 	apiMethod: '請求方法',
 	openKeep: '保存平臺',
 	unedit: '取消編輯',
+	applyForm: {
+		name: '學校名稱',
+		id: '學校簡碼',
+		code: '學校程式碼',
+		address: '學校位置',
+		cellphone: '聯繫方式',
+		content: '備註資訊',
+		place1: '選擇學校所在地區',
+		place2: '請輸入學校詳細地址',
+		place3: '請輸入您的手機號,郵箱等聯繫方式',
+		place4: '可填寫您的備註資訊',
+		submit: '提交申請',
+		submitSuc: '已成功提交申請!',
+		errTip1: '請選擇正確的地區!',
+		errTip2: '請將資訊填寫完整!'
+	}
 }

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

@@ -1,4 +1,5 @@
 export default {
+    title:'醍摩豆雲平台',
     loading: '加載中',
     menu: {
         school: '學校',

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

@@ -39,7 +39,7 @@ export default {
 
 	// totalIndex.vue
 	ti_title1: '基本資料統計',
-	ti_title2: '評量資料統計',
+	ti_title2: '學情分析',
 	ti_title3: '學科比較統計',
 	ti_title4: '年級優生率統計',
 	ti_title5: '評量清單數據',

+ 992 - 0
TEAMModelOS/ClientApp/src/static/countries.js

@@ -0,0 +1,992 @@
+export default [
+    {
+        "en": "Angola",
+        "cn": "安哥拉",
+        "code": "+244"
+    },
+    {
+        "en": "Afghanistan",
+        "cn": "阿富汗",
+        "code": "+93"
+    },
+    {
+        "en": "Alaska(U.S.A)",
+        "cn": "阿拉斯加",
+        "code": "+1907"
+    },
+    {
+        "en": "Albania",
+        "cn": "阿尔巴尼亚",
+        "code": "+335"
+    },
+    {
+        "en": "Algeria",
+        "cn": "阿尔及利亚",
+        "code": "+213"
+    },
+    {
+        "en": "Andorra",
+        "cn": "安道尔共和国",
+        "code": "+376"
+    },
+    {
+        "en": "Anguilla",
+        "cn": "安圭拉岛",
+        "code": "+1254"
+    },
+    {
+        "en": "Antigua and Barbuda",
+        "cn": "安提瓜和巴布达",
+        "code": "+1268"
+    },
+    {
+        "en": "Argentina",
+        "cn": "阿根廷",
+        "code": "+54"
+    },
+    {
+        "en": "Armenia",
+        "cn": "亚美尼亚",
+        "code": "+374"
+    },
+    {
+        "en": "Aruba",
+        "cn": "阿鲁巴岛",
+        "code": "+297"
+    },
+    {
+        "en": "Ascension",
+        "cn": "阿森松",
+        "code": "+247"
+    },
+    {
+        "en": "Australia",
+        "cn": "澳大利亚",
+        "code": "+61"
+    },
+    {
+        "en": "Austria",
+        "cn": "奥地利",
+        "code": "+43"
+    },
+    {
+        "en": "Azerbaijan",
+        "cn": "阿塞拜疆",
+        "code": "+994"
+    },
+    {
+        "en": "Bahamas",
+        "cn": "巴哈马",
+        "code": "+1242"
+    },
+    {
+        "en": "Bahrain",
+        "cn": "巴林",
+        "code": "+973"
+    },
+    {
+        "en": "Bangladesh",
+        "cn": "孟加拉国",
+        "code": "+880"
+    },
+    {
+        "en": "Barbados",
+        "cn": "巴巴多斯",
+        "code": "+1246"
+    },
+    {
+        "en": "Belarus",
+        "cn": "白俄罗斯",
+        "code": "+375"
+    },
+    {
+        "en": "Belgium",
+        "cn": "比利时",
+        "code": "+32"
+    },
+    {
+        "en": "Belize",
+        "cn": "伯利兹",
+        "code": "+501"
+    },
+    {
+        "en": "Benin",
+        "cn": "贝宁",
+        "code": "+229"
+    },
+    {
+        "en": "Bermuda Is",
+        "cn": "百慕大群岛",
+        "code": "+1441"
+    },
+    {
+        "en": "Bhutan",
+        "cn": "不丹",
+        "code": "+975"
+    },
+    {
+        "en": "Bolivia",
+        "cn": "玻利维亚",
+        "code": "+591"
+    },
+    {
+        "en": "Bosnia And Herzegovina",
+        "cn": "波斯尼亚和黑塞哥维那",
+        "code": "+387"
+    },
+    {
+        "en": "Botswana",
+        "cn": "博茨瓦纳",
+        "code": "+267"
+    },
+    {
+        "en": "Brazil",
+        "cn": "巴西",
+        "code": "+55"
+    },
+    {
+        "en": "Brunei",
+        "cn": "文莱",
+        "code": "+673"
+    },
+    {
+        "en": "Bulgaria",
+        "cn": "保加利亚",
+        "code": "+359"
+    },
+    {
+        "en": "Burkina Faso",
+        "cn": "布基纳法索",
+        "code": "+226"
+    },
+    {
+        "en": "Burma",
+        "cn": "缅甸",
+        "code": "+95"
+    },
+    {
+        "en": "Burundi",
+        "cn": "布隆迪",
+        "code": "+257"
+    },
+    {
+        "en": "Cameroon",
+        "cn": "喀麦隆",
+        "code": "+237"
+    },
+    {
+        "en": "Canada",
+        "cn": "加拿大",
+        "code": "+1"
+    },
+    {
+        "en": "Cape Verde",
+        "cn": "佛得角",
+        "code": "+238"
+    },
+    {
+        "en": "Cayman Is",
+        "cn": "开曼群岛",
+        "code": "+1345"
+    },
+    {
+        "en": "Central African Republic",
+        "cn": "中非共和国",
+        "code": "+236"
+    },
+    {
+        "en": "Chad",
+        "cn": "乍得",
+        "code": "+235"
+    },
+    {
+        "en": "Chile",
+        "cn": "智利",
+        "code": "+56"
+    },
+    {
+        "en": "China",
+        "cn": "中国",
+        "code": "+86"
+    },
+    {
+        "en": "Colombia",
+        "cn": "哥伦比亚",
+        "code": "+57"
+    },
+    {
+        "en": "Congo",
+        "cn": "刚果",
+        "code": "+242"
+    },
+    {
+        "en": "Cook Is",
+        "cn": "库克群岛",
+        "code": "+682"
+    },
+    {
+        "en": "Costa Rica",
+        "cn": "哥斯达黎加",
+        "code": "+506"
+    },
+    {
+        "en": "Cuba",
+        "cn": "古巴",
+        "code": "+53"
+    },
+    {
+        "en": "Cyprus",
+        "cn": "塞浦路斯",
+        "code": "+357"
+    },
+    {
+        "en": "Czech Republic",
+        "cn": "捷克",
+        "code": "+420"
+    },
+    {
+        "en": "Republic of Croatia",
+        "cn": "克罗地亚共和国",
+        "code": "+385"
+    },
+    {
+        "en": "Denmark",
+        "cn": "丹麦",
+        "code": "+45"
+    },
+    {
+        "en": "Djibouti",
+        "cn": "吉布提",
+        "code": "+253"
+    },
+    {
+        "en": "Dominica Rep",
+        "cn": "多米尼加共和国",
+        "code": "+1890"
+    },
+    {
+        "en": "Ecuador",
+        "cn": "厄瓜多尔",
+        "code": "+593"
+    },
+    {
+        "en": "Egypt",
+        "cn": "埃及",
+        "code": "+20"
+    },
+    {
+        "en": "EI Salvador",
+        "cn": "萨尔瓦多",
+        "code": "+503"
+    },
+    {
+        "en": "Estonia",
+        "cn": "爱沙尼亚",
+        "code": "+372"
+    },
+    {
+        "en": "Ethiopia",
+        "cn": "埃塞俄比亚",
+        "code": "+251"
+    },
+    {
+        "en": "Fiji",
+        "cn": "斐济",
+        "code": "+679"
+    },
+    {
+        "en": "Finland",
+        "cn": "芬兰",
+        "code": "+358"
+    },
+    {
+        "en": "France",
+        "cn": "法国",
+        "code": "+33"
+    },
+    {
+        "en": "French Guiana",
+        "cn": "法属圭亚那",
+        "code": "+594"
+    },
+    {
+        "en": "French Polynesia",
+        "cn": "法属玻利尼西亚",
+        "code": "+689"
+    },
+    {
+        "en": "Gabon",
+        "cn": "加蓬",
+        "code": "+241"
+    },
+    {
+        "en": "Gambia",
+        "cn": "冈比亚",
+        "code": "+220"
+    },
+    {
+        "en": "Georgia",
+        "cn": "格鲁吉亚",
+        "code": "+995"
+    },
+    {
+        "en": "Germany",
+        "cn": "德国",
+        "code": "+49"
+    },
+    {
+        "en": "Ghana",
+        "cn": "加纳",
+        "code": "+233"
+    },
+    {
+        "en": "Gibraltar",
+        "cn": "直布罗陀",
+        "code": "+350"
+    },
+    {
+        "en": "Greece",
+        "cn": "希腊",
+        "code": "+30"
+    },
+    {
+        "en": "Grenada",
+        "cn": "格林纳达",
+        "code": "+1809"
+    },
+    {
+        "en": "Guam",
+        "cn": "关岛",
+        "code": "+1671"
+    },
+    {
+        "en": "Guatemala",
+        "cn": "危地马拉",
+        "code": "+502"
+    },
+    {
+        "en": "Guinea",
+        "cn": "几内亚",
+        "code": "+224"
+    },
+    {
+        "en": "Guyana",
+        "cn": "圭亚那",
+        "code": "+592"
+    },
+    {
+        "en": "Haiti",
+        "cn": "海地",
+        "code": "+509"
+    },
+    {
+        "en": "Honduras",
+        "cn": "洪都拉斯",
+        "code": "+504"
+    },
+    {
+        "en": "Hongkong",
+        "cn": "香港特别行政区",
+        "code": "+852"
+    },
+    {
+        "en": "Hungary",
+        "cn": "匈牙利",
+        "code": "+36"
+    },
+    {
+        "en": "Iceland",
+        "cn": "冰岛",
+        "code": "+354"
+    },
+    {
+        "en": "India",
+        "cn": "印度",
+        "code": "+91"
+    },
+    {
+        "en": "Indonesia",
+        "cn": "印度尼西亚",
+        "code": "+62"
+    },
+    {
+        "en": "Iran",
+        "cn": "伊朗",
+        "code": "+98"
+    },
+    {
+        "en": "Iraq",
+        "cn": "伊拉克",
+        "code": "+964"
+    },
+    {
+        "en": "Ireland",
+        "cn": "爱尔兰",
+        "code": "+353"
+    },
+    {
+        "en": "Israel",
+        "cn": "以色列",
+        "code": "+972"
+    },
+    {
+        "en": "Italy",
+        "cn": "意大利",
+        "code": "+39"
+    },
+    {
+        "en": "Ivory Coast",
+        "cn": "科特迪瓦",
+        "code": "+225"
+    },
+    {
+        "en": "Jamaica",
+        "cn": "牙买加",
+        "code": "+1876"
+    },
+    {
+        "en": "Japan",
+        "cn": "日本",
+        "code": "+81"
+    },
+    {
+        "en": "Jordan",
+        "cn": "约旦",
+        "code": "+962"
+    },
+    {
+        "en": "Kampuchea (Cambodia )",
+        "cn": "柬埔寨",
+        "code": "+855"
+    },
+    {
+        "en": "Kazakstan",
+        "cn": "哈萨克斯坦",
+        "code": "+327"
+    },
+    {
+        "en": "Kenya",
+        "cn": "肯尼亚",
+        "code": "+254"
+    },
+    {
+        "en": "Korea",
+        "cn": "韩国",
+        "code": "+82"
+    },
+    {
+        "en": "Kuwait",
+        "cn": "科威特",
+        "code": "+965"
+    },
+    {
+        "en": "Kyrgyzstan",
+        "cn": "吉尔吉斯坦",
+        "code": "+331"
+    },
+    {
+        "en": "Laos",
+        "cn": "老挝",
+        "code": "+856"
+    },
+    {
+        "en": "Latvia",
+        "cn": "拉脱维亚",
+        "code": "+371"
+    },
+    {
+        "en": "Lebanon",
+        "cn": "黎巴嫩",
+        "code": "+961"
+    },
+    {
+        "en": "Lesotho",
+        "cn": "莱索托",
+        "code": "+266"
+    },
+    {
+        "en": "Liberia",
+        "cn": "利比里亚",
+        "code": "+231"
+    },
+    {
+        "en": "Libya",
+        "cn": "利比亚",
+        "code": "+218"
+    },
+    {
+        "en": "Liechtenstein",
+        "cn": "列支敦士登",
+        "code": "+423"
+    },
+    {
+        "en": "Lithuania",
+        "cn": "立陶宛",
+        "code": "+370"
+    },
+    {
+        "en": "Luxembourg",
+        "cn": "卢森堡",
+        "code": "+352"
+    },
+    {
+        "en": "Macao",
+        "cn": "澳门特别行政区",
+        "code": "+853"
+    },
+    {
+        "en": "Madagascar",
+        "cn": "马达加斯加",
+        "code": "+261"
+    },
+    {
+        "en": "Malawi",
+        "cn": "马拉维",
+        "code": "+265"
+    },
+    {
+        "en": "Malaysia",
+        "cn": "马来西亚",
+        "code": "+60"
+    },
+    {
+        "en": "Maldives",
+        "cn": "马尔代夫",
+        "code": "+960"
+    },
+    {
+        "en": "Mali",
+        "cn": "马里",
+        "code": "+223"
+    },
+    {
+        "en": "Malta",
+        "cn": "马耳他",
+        "code": "+356"
+    },
+    {
+        "en": "Mariana Is",
+        "cn": "马里亚那群岛",
+        "code": "+1670"
+    },
+    {
+        "en": "Martinique",
+        "cn": "马提尼克",
+        "code": "+596"
+    },
+    {
+        "en": "Mauritius",
+        "cn": "毛里求斯",
+        "code": "+230"
+    },
+    {
+        "en": "Mexico",
+        "cn": "墨西哥",
+        "code": "+52"
+    },
+    {
+        "en": "Moldova",
+        "cn": "摩尔多瓦",
+        "code": "+373"
+    },
+    {
+        "en": "Monaco",
+        "cn": "摩纳哥",
+        "code": "+377"
+    },
+    {
+        "en": "Mongolia",
+        "cn": "蒙古",
+        "code": "+976"
+    },
+    {
+        "en": "Montserrat Is",
+        "cn": "蒙特塞拉特岛",
+        "code": "+1664"
+    },
+    {
+        "en": "Morocco",
+        "cn": "摩洛哥",
+        "code": "+212"
+    },
+    {
+        "en": "Mozambique",
+        "cn": "莫桑比克",
+        "code": "+258"
+    },
+    {
+        "en": "Namibia",
+        "cn": "纳米比亚",
+        "code": "+264"
+    },
+    {
+        "en": "Nauru",
+        "cn": "瑙鲁",
+        "code": "+674"
+    },
+    {
+        "en": "Nepal",
+        "cn": "尼泊尔",
+        "code": "+977"
+    },
+    {
+        "en": "Netheriands Antilles",
+        "cn": "荷属安的列斯",
+        "code": "+599"
+    },
+    {
+        "en": "Netherlands",
+        "cn": "荷兰",
+        "code": "+31"
+    },
+    {
+        "en": "New Zealand",
+        "cn": "新西兰",
+        "code": "+64"
+    },
+    {
+        "en": "Nicaragua",
+        "cn": "尼加拉瓜",
+        "code": "+505"
+    },
+    {
+        "en": "Niger",
+        "cn": "尼日尔",
+        "code": "+227"
+    },
+    {
+        "en": "Nigeria",
+        "cn": "尼日利亚",
+        "code": "+234"
+    },
+    {
+        "en": "North Korea",
+        "cn": "朝鲜",
+        "code": "+850"
+    },
+    {
+        "en": "Norway",
+        "cn": "挪威",
+        "code": "+47"
+    },
+    {
+        "en": "Oman",
+        "cn": "阿曼",
+        "code": "+968"
+    },
+    {
+        "en": "Pakistan",
+        "cn": "巴基斯坦",
+        "code": "+92"
+    },
+    {
+        "en": "Panama",
+        "cn": "巴拿马",
+        "code": "+507"
+    },
+    {
+        "en": "Papua New Cuinea",
+        "cn": "巴布亚新几内亚",
+        "code": "+675"
+    },
+    {
+        "en": "Paraguay",
+        "cn": "巴拉圭",
+        "code": "+595"
+    },
+    {
+        "en": "Peru",
+        "cn": "秘鲁",
+        "code": "+51"
+    },
+    {
+        "en": "Philippines",
+        "cn": "菲律宾",
+        "code": "+63"
+    },
+    {
+        "en": "Poland",
+        "cn": "波兰",
+        "code": "+48"
+    },
+    {
+        "en": "Portugal",
+        "cn": "葡萄牙",
+        "code": "+351"
+    },
+    {
+        "en": "Puerto Rico",
+        "cn": "波多黎各",
+        "code": "+1787"
+    },
+    {
+        "en": "Qatar",
+        "cn": "卡塔尔",
+        "code": "+974"
+    },
+    {
+        "en": "Reunion",
+        "cn": "留尼旺",
+        "code": "+262"
+    },
+    {
+        "en": "Romania",
+        "cn": "罗马尼亚",
+        "code": "+40"
+    },
+    {
+        "en": "Russia",
+        "cn": "俄罗斯",
+        "code": "+7"
+    },
+    {
+        "en": "Saint Lueia",
+        "cn": "圣卢西亚",
+        "code": "+1758"
+    },
+    {
+        "en": "Saint Vincent",
+        "cn": "圣文森特岛",
+        "code": "+1784"
+    },
+    {
+        "en": "Samoa Eastern",
+        "cn": "东萨摩亚(美)",
+        "code": "+684"
+    },
+    {
+        "en": "Samoa Western",
+        "cn": "西萨摩亚",
+        "code": "+685"
+    },
+    {
+        "en": "San Marino",
+        "cn": "圣马力诺",
+        "code": "+378"
+    },
+    {
+        "en": "Sao Tome and Principe",
+        "cn": "圣多美和普林西比",
+        "code": "+239"
+    },
+    {
+        "en": "Saudi Arabia",
+        "cn": "沙特阿拉伯",
+        "code": "+966"
+    },
+    {
+        "en": "Senegal",
+        "cn": "塞内加尔",
+        "code": "+221"
+    },
+    {
+        "en": "Seychelles",
+        "cn": "塞舌尔",
+        "code": "+248"
+    },
+    {
+        "en": "Sierra Leone",
+        "cn": "塞拉利昂",
+        "code": "+232"
+    },
+    {
+        "en": "Singapore",
+        "cn": "新加坡",
+        "code": "+65"
+    },
+    {
+        "en": "Slovakia",
+        "cn": "斯洛伐克",
+        "code": "+421"
+    },
+    {
+        "en": "Slovenia",
+        "cn": "斯洛文尼亚",
+        "code": "+386"
+    },
+    {
+        "en": "Solomon Is",
+        "cn": "所罗门群岛",
+        "code": "+677"
+    },
+    {
+        "en": "Somali",
+        "cn": "索马里",
+        "code": "+252"
+    },
+    {
+        "en": "South Africa",
+        "cn": "南非",
+        "code": "+27"
+    },
+    {
+        "en": "Spain",
+        "cn": "西班牙",
+        "code": "+34"
+    },
+    {
+        "en": "SriLanka",
+        "cn": "斯里兰卡",
+        "code": "+94"
+    },
+    {
+        "en": "St.Lucia",
+        "cn": "圣卢西亚",
+        "code": "+1758"
+    },
+    {
+        "en": "St.Vincent",
+        "cn": "圣文森特",
+        "code": "+1784"
+    },
+    {
+        "en": "Sudan",
+        "cn": "苏丹",
+        "code": "+249"
+    },
+    {
+        "en": "Suriname",
+        "cn": "苏里南",
+        "code": "+597"
+    },
+    {
+        "en": "Swaziland",
+        "cn": "斯威士兰",
+        "code": "+268"
+    },
+    {
+        "en": "Sweden",
+        "cn": "瑞典",
+        "code": "+46"
+    },
+    {
+        "en": "Switzerland",
+        "cn": "瑞士",
+        "code": "+41"
+    },
+    {
+        "en": "Syria",
+        "cn": "叙利亚",
+        "code": "+963"
+    },
+    {
+        "en": "Taiwan",
+        "cn": "台湾",
+        "code": "+886"
+    },
+    {
+        "en": "Tajikstan",
+        "cn": "塔吉克斯坦",
+        "code": "+992"
+    },
+    {
+        "en": "Tanzania",
+        "cn": "坦桑尼亚",
+        "code": "+255"
+    },
+    {
+        "en": "Thailand",
+        "cn": "泰国",
+        "code": "+66"
+    },
+    {
+        "en": "Togo",
+        "cn": "多哥",
+        "code": "+228"
+    },
+    {
+        "en": "Tonga",
+        "cn": "汤加",
+        "code": "+676"
+    },
+    {
+        "en": "Trinidad and Tobago",
+        "cn": "特立尼达和多巴哥",
+        "code": "+1809"
+    },
+    {
+        "en": "Tunisia",
+        "cn": "突尼斯",
+        "code": "+216"
+    },
+    {
+        "en": "Turkey",
+        "cn": "土耳其",
+        "code": "+90"
+    },
+    {
+        "en": "Turkmenistan",
+        "cn": "土库曼斯坦",
+        "code": "+993"
+    },
+    {
+        "en": "Uganda",
+        "cn": "乌干达",
+        "code": "+256"
+    },
+    {
+        "en": "Ukraine",
+        "cn": "乌克兰",
+        "code": "+380"
+    },
+    {
+        "en": "United Arab Emirates",
+        "cn": "阿拉伯联合酋长国",
+        "code": "+971"
+    },
+    {
+        "en": "United Kiongdom",
+        "cn": "英国",
+        "code": "+44"
+    },
+    {
+        "en": "United States of America",
+        "cn": "美国",
+        "code": "+1"
+    },
+    {
+        "en": "Uruguay",
+        "cn": "乌拉圭",
+        "code": "+598"
+    },
+    {
+        "en": "Uzbekistan",
+        "cn": "乌兹别克斯坦",
+        "code": "+233"
+    },
+    {
+        "en": "Venezuela",
+        "cn": "委内瑞拉",
+        "code": "+58"
+    },
+    {
+        "en": "Vietnam",
+        "cn": "越南",
+        "code": "+84"
+    },
+    {
+        "en": "Yemen",
+        "cn": "也门",
+        "code": "+967"
+    },
+    {
+        "en": "Yugoslavia",
+        "cn": "南斯拉夫",
+        "code": "+381"
+    },
+    {
+        "en": "Zimbabwe",
+        "cn": "津巴布韦",
+        "code": "+263"
+    },
+    {
+        "en": "Zaire",
+        "cn": "扎伊尔",
+        "code": "+243"
+    },
+    {
+        "en": "Zambia",
+        "cn": "赞比亚",
+        "code": "+260"
+    }
+]

+ 36 - 19
TEAMModelOS/ClientApp/src/view/answersheet/BaseEditor.vue

@@ -5,10 +5,12 @@
 			<span class="select-model btn-delete" @click="onDeleteBlock" v-if="!isAutoCreate">删除</span>
 		</div>
 		<p class="margin-block"></p>
-		<!-- <div @mouseenter="isShowTools = true" @mouseleave="isShowTools = false"> -->
 		<div >
 			<div :id="ids" class="sheet-Editor" ></div>
-			<div v-for="(item,index) in fixArr" :id="ids + 'fix' + index" class="sheet-Editor"></div>
+			<div  v-for="(item,index) in fixArr" :key="index" class="sheet-fix-Editor">
+				<div :id="ids + 'fix' + index" class="sheet-Editor"></div>
+				<span :id="ids + 'fix' + index + 'btn'" class="btn-delete-fix" @click="onDeleteFixBlock(ids + 'fix' + index)">删除</span>
+			</div>
 		</div>
 
 		<Modal v-model="isShowSelectModel" title="设置内容格式" width="600px" @on-ok="doSelectModel">
@@ -112,6 +114,13 @@
 				this.$EventBus.$emit('doRefresh')
 				this.$EventBus.$emit('deleteItem',this.type)
 			},
+			
+			/* 删除附加答题区域富文本块 */
+			onDeleteFixBlock(curId){
+				document.getElementById(curId).remove()
+				document.getElementById(curId + 'btn').remove()
+				this.$EventBus.$emit('doRefresh')
+			},
 
 			/* 切换富文本显示模式(简答题、语文作文、英语作文)*/
 			doSelectModel() {
@@ -220,6 +229,7 @@
 						let lastBottomGap = 20;
 						let curEditorY = Y > paperH ? +((Y % paperH).toFixed(4)) : Y;
 						let curEditorH = editorDom.clientHeight;
+						
 						let leftHeight = paperH - curEditorY - lastBottomGap - SVG_BORDER_MB;
 						let fixHeight = curEditorH - leftHeight + 20
 						if ( curEditorY + curEditorH + lastBottomGap + SVG_BORDER_MB > PAPER_H) {
@@ -295,7 +305,8 @@
 					
 					// 如果vuex有保存 之前的文本内容 则渲染 否则按照默认只显示题号
 					let curSetting = this.hasEditorSetting(this.ids)
-					if (curSetting && curSetting.content) {
+					let hasVuexContent = curSetting && curSetting.content
+					if (hasVuexContent) {
 						this.myEditor.txt.append(curSetting.content);
 					}else{
 						this.myEditor.txt.append(addStr + brHtml);
@@ -695,6 +706,7 @@
 					document
 						.getElementById(curId)
 						.getElementsByClassName("w-e-toolbar")[0].style.display = "flex";
+					document.getElementById(curId + 'btn').style.display = "inline-flex";
 				};
 				editor.config.onblur = (html) => {
 					let scrollHeight = editor.$textElem.elems[0].scrollHeight
@@ -705,7 +717,8 @@
 						// this.$EventBus.$emit('doRefresh')
 					}
 					document.getElementById(curId) && (document.getElementById(curId).getElementsByClassName(
-						"w-e-toolbar")[0].style.display = "none");
+						"w-e-toolbar")[0].style.display = "none") && (document.getElementById(curId + 'btn').style.display = "none")
+							
 					this.$store.commit('setEditorHeight', {
 						id: curId,
 						height: editor.config.height,
@@ -757,21 +770,6 @@
 						);
 						this.curPropItem = this.type === "0" ? this.completeItems : n;
 						this.doRenderEditor(this.curPropItem);
-						if(this.type !== "0"){
-							// setTimeout(() => {
-							// 	if(n[0].maxWords > 0){
-							// 		console.log('语文作文',n.maxWords)
-							// 		this.wordCount = n[0].maxWords
-							// 		this.curModel = '3'
-							// 		this.doSelectModel()
-							// 	}else if(n[0].maxLines > 0){
-							// 		console.log('英语作文',n.maxLines)
-							// 		this.lineCount = n[0].maxLines
-							// 		this.curModel = '2'
-							// 		this.doSelectModel()
-							// 	}
-							// },3000)
-						}
 					}
 				},
 				immediate: true,
@@ -892,4 +890,23 @@
 		margin: 0 4px;
 		display: inline-block;
 	}
+
+	.sheet-fix-Editor{
+		position: relative;
+	}
+	.sheet-fix-Editor .btn-delete-fix{
+		position: absolute;
+		padding: 3px 10px;
+		border-radius: 4px;
+		right: 100px;
+		top: 10px;
+		font-size: 12px;
+		background-color: orangered;
+		display: inline-flex;
+		justify-content: center;
+		align-items: center;
+		color: #fff;
+		z-index: 99;
+		cursor: pointer;
+	}
 </style>

+ 2 - 1
TEAMModelOS/ClientApp/src/view/evaluation/bank/ExerciseList.vue

@@ -556,8 +556,9 @@
 					this.exerciseList = await this.$evTools.getFullItem(simpleList);
 					this.currentPage = page;
 					this.pageScrollTo(0);
+					this.onHandleToggle(true)
 				} catch (e) {
-					console.log(e);
+					this.$Message.error('Blob Error : ' + e)
 				}
 			},
 

+ 3 - 3
TEAMModelOS/ClientApp/src/view/evaluation/components/BaseFilter.vue

@@ -11,21 +11,21 @@
 		<div class="filter-item" v-show="(isShowSchoolBank || (filterOrigin === schoolCode)) &&  hasSchool">
 					<span class="filter-title">{{$t('evaluation.filter.period')}}:</span>
 					<RadioGroup v-model="filterPeriod" type="button" @on-change="filterPeriodChange">
-						<Radio v-for="(item, index) in periodList" :key="index" :label="index">{{ item.name }}<span class="filter-count"></span></Radio>
+						<Radio v-for="(item, index) in periodList" :key="index" :label="index">{{ item.name }}<span class="filter-count">({{ filterCounts.periodCountArr.length ? filterCounts.periodCountArr[index] : 0 }})</span></Radio>
 					</RadioGroup>
 				</div>
 				<div class="filter-item" v-show="(isShowSchoolBank || (filterOrigin === schoolCode)) &&  hasSchool">
 					<span class="filter-title">{{$t('evaluation.filter.grade')}}:</span>
 					<CheckboxGroup v-model="filterGrade" border @on-change="filterGradeChange">
 						<Checkbox lable="all">{{$t('evaluation.filter.all')}}</Checkbox>
-						<Checkbox v-for="(item, index) in gradeList" :key="index" :label="index">{{ item }}<span class="filter-count"></span></Checkbox>
+						<Checkbox v-for="(item, index) in gradeList" :key="index" :label="index">{{ item }}<span class="filter-count">({{ filterCounts.gradeCountArr.length ? filterCounts.gradeCountArr[index] : 0 }})</span></Checkbox>
 					</CheckboxGroup>
 				</div>
 				<div class="filter-item" v-show="(isShowSchoolBank || (filterOrigin === schoolCode)) &&  hasSchool">
 					<span class="filter-title">{{$t('evaluation.filter.subject')}}:</span>
 					<CheckboxGroup v-model="filterSubject" border @on-change="filterSubjectChange">
 						<Checkbox lable="all">{{$t('evaluation.filter.all')}}</Checkbox>
-						<Checkbox v-for="(item, index) in subjectList" :key="index" :label="item.id">{{ item.name }}<span class="filter-count"></span></Checkbox>
+						<Checkbox v-for="(item, index) in subjectList" :key="index" :label="item.id">{{ item.name }}<span class="filter-count">({{ filterCounts.subjectCountArr.length ? filterCounts.subjectCountArr[index] : 0 }})</span></Checkbox>
 					</CheckboxGroup>
 				</div>
 		<div class="filter-item">

+ 80 - 19
TEAMModelOS/ClientApp/src/view/settings/BaseApplyForm.vue

@@ -1,19 +1,29 @@
 <template>
 	<div>
 		<Form ref="applyForm" :model="applyForm" :rules="ruleValidate" label-position="top" class="apply-form">
-			<FormItem label="学校名称" prop="name">
-				<Input v-model="applyForm.name"></Input>
+			<FormItem :label="$t('settings.applyForm.name')" prop="name">
+				<Input v-model="applyForm.name" :placeholder="$t('settings.applyForm.place1')"></Input>
 			</FormItem>
-			<FormItem label="学校简码" prop="id">
+			<!-- <FormItem label="学校简码" prop="id">
 				<Input v-model="applyForm.id"></Input>
 			</FormItem>
 			<FormItem label="学校代码" prop="code">
 				<Input v-model="applyForm.code"></Input>
+			</FormItem> -->
+			<FormItem :label="$t('settings.applyForm.address')">
+				<BaseAreaPicker ref="areaPicker" v-if="isChinaSite"></BaseAreaPicker>
+				<div class="country-select" v-if="!isChinaSite">
+					<Select v-model="curCountry" filterable placeholder="选择学校所在地区">
+						<Option v-for="(country,index) in countryArr" :value="country.cn" :key="index" >{{ country.cn }}</Option>
+					</Select>
+				</div>
+				<Input type="textarea" :autosize="{minRows: 3,maxRows: 5}" v-model="applyForm.address" :placeholder="$t('settings.applyForm.place2')"></Input>
 			</FormItem>
-			<FormItem label="学校位置">
-				<!-- <Input v-model="applyForm.region"></Input> -->
-				<BaseAreaPicker ref="areaPicker"></BaseAreaPicker>
-				<Input type="textarea" :autosize="{minRows: 3,maxRows: 5}" v-model="applyForm.address"></Input>
+			<FormItem :label="$t('settings.applyForm.cellphone')" prop="cellphone">
+				<Input v-model="applyForm.cellphone" :placeholder="$t('settings.applyForm.place3')"></Input>
+			</FormItem>
+			<FormItem :label="$t('settings.applyForm.content')" prop="content">
+				<Input type="textarea" :autosize="{minRows: 3,maxRows: 5}" v-model="applyForm.content" :placeholder="$t('settings.applyForm.place4')"></Input>
 			</FormItem>
 			<!-- <FormItem label="学校图标">
 				<Upload v-if="!isPreview" ref="upload" :show-upload-list="false" :on-success="handleSuccess"
@@ -32,15 +42,19 @@
 				</div>
 			</FormItem> -->
 		</Form>
-		<Button style="background-color: #168794;width: 90%;margin-left: 5%;" @click="onSubmit">提交申请</Button>
+		<Button style="background-color: #168794;width: 90%;margin-left: 5%;" @click="onSubmit" :loading="isBtnLoading">{{ $t('settings.applyForm.submit') }}</Button>
 	</div>
 </template>
 
 <script>
+	import countries from '@/static/countries.js'
 	export default {
 		data() {
 			return {
+				isBtnLoading:false,
 				isPreview: false,
+				curCountry:'',
+				countryArr:[],
 				applyForm: {
 					id: '',
 					code: '',
@@ -49,7 +63,9 @@
 					province: '',
 					city: '',
 					picture: '',
-					address:''
+					address:'',
+					cellphone:'',
+					content:''
 				},
 				uploadList: [],
 				ruleValidate: {
@@ -68,21 +84,51 @@
 						message: '学校代码不能为空 ',
 						trigger: 'blur'
 					}],
+					cellphone: [{
+						required: true,
+						message: '联系方式不能为空 ',
+						trigger: 'blur'
+					}],
 				}
 			}
 		},
+		created() {
+			this.countryArr = countries
+		},
 		methods: {
+			// 提交建立学校申请
 			onSubmit() {
 				this.$refs.applyForm.validate((valid) => {
 					if (valid) {
 						let pickResult = this.$refs.areaPicker.pickResult
 						if(pickResult.province && pickResult.city && pickResult.area){
-							
+							this.isBtnLoading = true
+							let formInfo = this.applyForm
+							let params = {
+								name:formInfo.name,
+								area:pickResult.province + pickResult.city + pickResult.area + formInfo.address,
+								tmdname:this.$store.state.userInfo.name,
+								tmdid:this.$store.state.userInfo.TEAMModelId,
+								cellphone:formInfo.cellphone,
+								content:formInfo.content
+							}
+							this.$api.schoolSetting.applySchool(params).then(res => {
+								if(!res.error){
+									setTimeout(()=> {
+										this.isBtnLoading = false
+										this.$emit('applySuc')
+										this.$Message.success(this.$t('settings.applyForm.submitSuc'))
+									},1000)
+								}
+							}).catch(err => {
+								this.$Message.error(err)
+								this.isBtnLoading = false
+							})
 						}else{
-							this.$Message.error('请选择正确的省市区!');
+							this.$Message.error(this.$t('settings.applyForm.errTip1'));
 						}
 					} else {
-						this.$Message.error('请将信息填写完整!');
+						this.$Message.error(this.$t('settings.applyForm.errTip2'));
 					}
 				})
 			},
@@ -91,15 +137,20 @@
 				this.applyForm.picture = res.url
 				this.isPreview = true
 			},
-			handleFormatError(file) {
-				this.$Message.error('上传文件格式只能是jpg、jpeg、png!')
-			},
-			handleMaxSize(file) {
-				this.$Message.error('上传文件大小不能超过10M!')
-			},
+			// handleFormatError(file) {
+			// 	this.$Message.error('上传文件格式只能是jpg、jpeg、png!')
+			// },
+			// handleMaxSize(file) {
+			// 	this.$Message.error('上传文件大小不能超过10M!')
+			// },
 			handleBeforeUpload() {
 
 			}
+		},
+		computed:{
+			isChinaSite(){
+				return this.$store.state.config.srvAdr === 'China'
+			}
 		}
 	}
 </script>
@@ -107,6 +158,15 @@
 <style lang="less">
 	.apply-form {
 		padding: 50px 20px;
+		
+		.country-select{
+			width: 200px;
+			margin: 10px 0;
+		}
+		
+		.ivu-select-input{
+			color: #DDDDDD;
+		}
 
 		.ivu-form-item-label {
 			color: #bbb;
@@ -118,11 +178,12 @@
 			background: #575757;
 			border-color: transparent;
 			height: 35px;
+			padding: 10px;
 			color: #fff;
 		}
 
 		.ivu-input::-webkit-input-placeholder {
-			color: #808080;
+			color: #a8a8a8;
 		}
 
 		.ivu-select-single .ivu-select-selection {

+ 2 - 2
TEAMModelOS/ClientApp/src/view/settings/Index.vue

@@ -20,14 +20,14 @@
                         <Checkbox v-model="cloudSetting.isSystemLang" @on-change="onMenuStatusChange">{{ $t('settings.langCheck')}}</Checkbox>
                     </span>
                 </div>
-                <div class="normal-settings-item">
+                <!-- <div class="normal-settings-item">
                     <span class="item-title">{{ $t('settings.themeSetting')}}</span>
                     <span class="item-description">{{ $t('settings.themeTips')}}</span>
                     <span class="item-content">
                         <span :class="['color-item',cloudSetting.curTheme === 'dark' ?  'color-item-active' : '']" @click="onTips('dark')"></span>
                         <span :class="['color-item',cloudSetting.curTheme === 'light' ?  'color-item-active' : '']" @click="onTips('light')"></span>
                     </span>
-                </div>
+                </div> -->
                 <div class="normal-settings-item">
                     <span class="item-title">{{ $t('settings.menuSetting')}}</span>
                     <span class="item-description">{{ $t('settings.menuTips')}}</span>

+ 1 - 1
TEAMModelOS/ClientApp/src/view/settings/SchoolMgmt.vue

@@ -117,7 +117,7 @@
 
 		<Modal v-model="applyModal" class-name="go-school-modal" footer-hide width="500">
 			<span class="apply-title">申请建立学校</span>
-			<BaseApplyForm></BaseApplyForm>
+			<BaseApplyForm @applySuc="applyModal = false"></BaseApplyForm>
 		</Modal>
 
 	</div>

+ 1 - 1
TEAMModelOS/Controllers/Core/CoreController.cs

@@ -36,7 +36,7 @@ namespace TEAMModelOS.Controllers.Core
         [HttpPost("apply-school")]
         [RequestSizeLimit(100_000_000)] //最大100m左右
         public async Task<IActionResult> ApplySchool(ApplySchool request) {
-            await _dingDing.SendBotMsg($"有新学校申请。\n申请站点:{_option.Location}\n申请学校:{request.name}\n所在国家\\地区:{request.area}\n申请人:{request.tmdname}({request.tmdid})\n联系电话:{request.cellphone}\n备注:{request.content}", GroupNames.AI智慧學校申請通知群);
+            await _dingDing.SendBotMsg($"有新学校申请。\n申请站点:{_option.Location}\n申请学校:{request.name}\n所在国家\\地区:{request.area}\n申请人:{request.tmdname}({request.tmdid})\n联系电话:{request.cellphone}\n备注:{request.content}", GroupNames.成都开发測試群組);
             return Ok();
           
         }