Kaynağa Gözat

Merge branch 'develop6.0-tmd' of http://52.130.252.100:10000/TEAMMODEL/TEAMModelOS into develop6.0-tmd

CrazyIter_Bin 3 yıl önce
ebeveyn
işleme
877cb3a44d
23 değiştirilmiş dosya ile 549 ekleme ve 261 silme
  1. 10 10
      TEAMModelBI/ClientApp/src/components/Ability.vue
  2. 7 6
      TEAMModelBI/ClientApp/src/language/i18n.js
  3. 120 1
      TEAMModelBI/ClientApp/src/language/lang/zh-cn.js
  4. 120 1
      TEAMModelBI/ClientApp/src/language/lang/zh-tw.js
  5. 34 28
      TEAMModelBI/ClientApp/src/view/created/created.vue
  6. 2 1
      TEAMModelBI/ClientApp/src/view/ddlogin.vue
  7. 2 2
      TEAMModelBI/ClientApp/src/view/login.vue
  8. 65 63
      TEAMModelBI/ClientApp/src/view/teachermanage/areamanage.vue
  9. 19 19
      TEAMModelBI/ClientApp/src/view/teachermanage/school.vue
  10. 84 56
      TEAMModelBI/Controllers/BIHome/HomeStatisController.cs
  11. 1 1
      TEAMModelBI/Controllers/BITest/TestController.cs
  12. 1 1
      TEAMModelBI/Controllers/DingDingStruc/DDStructController.cs
  13. 9 9
      TEAMModelBI/Controllers/DingDingStruc/TableDingDingInfoController.cs
  14. 3 3
      TEAMModelBI/Controllers/LoginController.cs
  15. 2 2
      TEAMModelOS.FunctionV4/CosmosDB/TriggerExam.cs
  16. 1 1
      TEAMModelOS.SDK/Models/Cosmos/BI/DingDingUserInfo.cs
  17. 1 1
      TEAMModelOS.SDK/Models/Cosmos/Common/ExamClassResult.cs
  18. 2 2
      TEAMModelOS.SDK/Models/Service/ActivityService.cs
  19. 16 6
      TEAMModelOS.SDK/Models/Service/FixDataService.cs
  20. 2 2
      TEAMModelOS/ClientApp/src/assets/student-web/component_styles/common.css
  21. 13 11
      TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/LessonTestReport.vue
  22. 34 34
      TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/PaperView.vue
  23. 1 1
      TEAMModelOS/Controllers/Third/DingDingController.cs

+ 10 - 10
TEAMModelBI/ClientApp/src/components/Ability.vue

@@ -3,7 +3,7 @@
         <div class="ability-d">
             <p class="abilitys-one">
                 <i class="dian"></i>
-                <span class="tabname">微能力点</span>
+                <span class="tabname">{{$t(`treeStructure.project`)}}</span>
             </p>
             <div class="abilitybox">
                 <div class="pointbox" v-for="(items,index) in abilityData" :key="index" :class="{'active':position===index}" @click="addClass(index,items)">
@@ -11,21 +11,21 @@
                     <p>
                         <span class="ability-num">{{items.no}}</span>
                         <span class="ability-name">{{items.name}}</span>
-                        <span class="ability-tag" v-if="items.currency ===3">选修</span>
-                        <span class="ability-must" v-if="items.currency ===1">必修</span>
+                        <span class="ability-tag" v-if="items.currency ===3">{{$t(`treeStructure.choose`)}}</span>
+                        <span class="ability-must" v-if="items.currency ===1">{{$t(`treeStructure.required`)}}</span>
                         <span v-if="items.currency ===0"></span>
                     </p>
                     <p>
-                    <div class="period">总学时:<span>{{items.hour}}</span></div>
-                    <div class="grow">成长值:<span>{{items.abilityCount}}</span></div>
-                    <div class="dimensionality">维度:<span>{{items.dimensionName}}</span></div>
+                    <div class="period">{{$t(`treeStructure.totalperiod`)}}:<span>{{items.hour}}</span></div>
+                    <div class="grow">{{$t(`treeStructure.grow`)}}:<span>{{items.abilityCount}}</span></div>
+                    <div class="dimensionality">{{$t(`treeStructure.dimensionality`)}}:<span>{{items.dimensionName}}</span></div>
                     </p>
                 </div>
             </div>
         </div>
         <div class="ability-tree">
             <div class="chapter">
-                <div style="display:inline-block">章节</div>
+                <div style="display:inline-block">{{$t(`treeStructure.chapter`)}}</div>
             </div>
             <div class="ztreebox">
                 <el-tree ref='treeRef' :data="treeDatas" :props="defaultProps" node-key="id" :highlight-current="true" :current-node-key="pitchNow" default-expand-all :expand-on-click-node="false" :render-content="renderContent" @node-click="handleNodeClick" />
@@ -33,7 +33,7 @@
         </div>
         <div class="ability-recoue">
             <div class="resource">
-                <div class="resource-title">关联资源</div>
+                <div class="resource-title">{{$t(`treeStructure.resource`)}}</div>
             </div>
             <div class="resourcebox" v-if="datais">
                 <div class="resource-item" v-for="(item,index) in curNode" :key="item.id">
@@ -56,7 +56,7 @@
                 </div>
             </div>
             <div class="none-data" v-else-if="datais ===false">
-                暂无数据
+                {{$t(`commonMsg.nodataTable`)}}
             </div>
         </div>
     </div>
@@ -195,7 +195,7 @@ export default {
             await proxy.$api.getAbilityDeatils(datas).then(async (res) => {
                 resultData = res.abilityTaskTreeNodes.length
                 console.log(res, '查询章节返回')
-                ;(res.state === 200) !== 0 ? await conductTree(res.abilityTaskTreeNodes) : ElMessage.error('章节数据API异常')
+                ;(res.state === 200) !== 0 ? await conductTree(res.abilityTaskTreeNodes) : ElMessage.error(proxy.$t(`commonMsg.chapterError`))
             })
             return resultData
         }

+ 7 - 6
TEAMModelBI/ClientApp/src/language/i18n.js

@@ -1,15 +1,16 @@
 import { createI18n } from 'vue-i18n'
 import messages from './index.js'
-
-const languageType = (JSON.parse(localStorage.language).toLowerCase()).indexOf('tw') != -1 ? 'zh_tw' : 'zh_cn'
-console.log(JSON.parse(localStorage.language).toLowerCase())
-console.log(languageType, '语言')
+console.log(localStorage.i18nextLng)
+    // const languageType = (JSON.parse(localStorage.i18nextLng).toLowerCase()).indexOf('tw') != -1 ? 'zh_tw' : 'zh_cn'
+    // const languageType = localStorage.i18nextLng && (localStorage.i18nextLng).toLowerCase().indexOf('tw') != -1 ? 'zh_tw' : 'zh_cn'
+    //     // console.log(JSON.parse(localStorage.i18nextLng).toLowerCase())
+    // console.log(languageType, '语言')
 const i18n = createI18n({
-    fallbackLocale: languageType,
+    fallbackLocale: localStorage.i18nextLng && (localStorage.i18nextLng).toLowerCase().indexOf('tw') != -1 ? 'zh_tw' : 'zh_cn',
     globalInjection: true,
     legacy: false, // you must specify 'legacy: false' option
     silentTranslationWarn: true,
-    locale: "zh_cn",
+    locale: localStorage.i18nextLng && (localStorage.i18nextLng).toLowerCase().indexOf('tw') != -1 ? 'zh_tw' : 'zh_cn',
     messages,
 });
 export default i18n

+ 120 - 1
TEAMModelBI/ClientApp/src/language/lang/zh-cn.js

@@ -81,11 +81,130 @@ const zh_cn = {
             isAdmin: '是否任命为系统管理员',
         }
     },
+    areaManages: {
+        selector: {
+            provinceName: '省',
+            cityName: '市',
+            provinceDefault: '省级',
+            cityDefault: '市/县',
+            areaName: '区域',
+            areaDefault: '区域选择'
+        },
+        areaTable: {
+            serialnum: '编号',
+            name: '名称',
+            Ids: 'ID编码',
+            province: '省份',
+            city: '城市',
+            affiliation: '所属机构',
+            project: '微能力点方案',
+            operate: '操作',
+        },
+        found: {
+            creation: '创建区域',
+        },
+        createdArea: {
+            title: '创建学区',
+            areaSelect: '地区选择',
+            notArea: '无地区限制',
+            notAreaname: '全国区域学区',
+            schoolAreaname: '学区',
+            name: '名称',
+            namehint: '地区名称',
+            affiliation: '所属机构',
+            affiliationhint: '填写所属机构',
+            project: '微能力点',
+            projecthint: '选择相应的微能力点方案',
+            createds: '创建',
+        },
+        operational: {
+            areaAddSchool: {
+                title: '区内增校',
+                schooltitle: '学校列表',
+                tabletitle: '区内所含学校',
+                schoolList: {
+                    name: '名称',
+                    grading: '学段',
+                    code: '简码',
+                    location: '地址'
+                },
+                tables: {
+                    serialnum: '编号',
+                    badge: '校徽',
+                    name: '名称',
+                    brevityCode: '学校简码',
+                    province: '省',
+                    city: '市',
+                    area: '区',
+                    operate: '操作',
+                    areaRemove: '移除区域'
+                },
+                addschoolHint: '是否将学校加入该区域',
+                add: '加入',
+                removeHint: '确认要将此学校移除区域内吗?',
+                cautious: '请谨慎操作',
+            },
+            abilitys: {
+                title: '微能力点方案',
+                now: '当前',
+                tables: {
+                    serialnum: '编号',
+                    name: '名称',
+                    source: '来源',
+                    affiliation: '所属机构',
+                },
+                cuthint: '此操作覆盖掉原方案里的内容,确定要执行吗?',
+                objdata: {
+                    name: '名称',
+                    project: '微能力方案',
+                    affiliation: '所属机构',
+                    areas: '地区',
+                },
+                cutTitle: '正在切换,请耐心等待...',
+                choiceHint: '请选择相应的替换方案',
+            }
+        }
+    },
+    schoolManages: {
+        createdtitle: '创建学校',
+        tables: {
+            serialnum: '编号',
+            badge: '校徽',
+            name: '名称',
+            scale: '规模版本',
+            brevityCode: '学校简码',
+            province: '省',
+            city: '市',
+            area: '区',
+            spacesize: '空间大小',
+            assis: '关联管家',
+            operate: '操作',
+            operatecontent: '编辑'
+        }
+    },
+    treeStructure: {
+        project: '微能力点',
+        chapter: '章节',
+        resource: '关联资源',
+        required: '必修',
+        choose: '选修',
+        totalperiod: '总学时',
+        grow: '成长值',
+        dimensionality: '维度',
+    },
     commonMsg: {
         operateSuccess: '操作成功!',
         operateError: '操作失败',
         notoperate: '无权限,无法操作!',
-        nonactivated: '账号未激活,无法操作'
+        nonactivated: '账号未激活,无法操作',
+        confirm: '确认',
+        closes: '取消',
+        nodataTable: '暂无数据',
+        areaCreatedSuccess: '学区创建成功',
+        areaCreatedError: '学区创建失败',
+        addschoolSuccess: '学校加入成功',
+        addschoolError: '学校加入失败',
+        chapterError: '章节API数据异常'
     }
 }
 export default zh_cn

+ 120 - 1
TEAMModelBI/ClientApp/src/language/lang/zh-tw.js

@@ -81,11 +81,130 @@ const zh_tw = {
             isAdmin: '是否任命為系統管理員',
         }
     },
+    areaManages: {
+        selector: {
+            provinceName: '省',
+            cityName: '市',
+            provinceDefault: '省級',
+            cityDefault: '市/縣',
+            areaName: '區域',
+            areaDefault: '區域選擇'
+        },
+        areaTable: {
+            serialnum: '編號',
+            name: '名稱',
+            Ids: 'ID編碼',
+            province: '省份',
+            city: '城市',
+            affiliation: '所屬機構',
+            project: '微能力點方案',
+            operate: '操作',
+        },
+        found: {
+            creation: '創建區域',
+        },
+        createdArea: {
+            title: '創建學區',
+            areaSelect: '地區選擇',
+            notArea: '無地區限制',
+            notAreaname: '全国区域学区',
+            schoolAreaname: '学区',
+            name: '名稱',
+            namehint: '地區名稱',
+            affiliation: '所屬機構',
+            affiliationhint: '填寫所屬機構',
+            project: '微能力點',
+            projecthint: '選擇相應的微能力點方案',
+            createds: '創建',
+        },
+        operational: {
+            areaAddSchool: {
+                title: '區內增校',
+                schooltitle: '學校列表',
+                tabletitle: '區內所含學校',
+                schoolList: {
+                    name: '名稱',
+                    grading: '學段',
+                    code: '簡碼',
+                    location: '地址'
+                },
+                tables: {
+                    serialnum: '編號',
+                    badge: '校徽',
+                    name: '名稱',
+                    brevityCode: '學校簡碼',
+                    province: '省',
+                    city: '市',
+                    area: '区',
+                    operate: '操作',
+                    areaRemove: '移除區域'
+                },
+                addschoolHint: '是否將學校加入該區域',
+                add: '加入',
+                removeHint: '確認要將此學校移除區域內嗎?',
+                cautious: '請謹慎操作'
+            },
+            abilitys: {
+                title: '微能力點方案',
+                now: '當前',
+                tables: {
+                    serialnum: '編號',
+                    name: '名稱',
+                    source: '來源',
+                    affiliation: '所屬機構',
+                },
+                cuthint: '此操作覆蓋掉原方案裡的內容,確定要執行嗎?',
+                objdata: {
+                    name: '名稱',
+                    project: '微能力方案',
+                    affiliation: '所屬機構',
+                    areas: '地區',
+                },
+                cutTitle: '正在切換,請耐心等待...',
+                choiceHint: '請選擇相應的替換方案',
+            }
+        }
+    },
+    schoolManages: {
+        createdtitle: '創建學校',
+        tables: {
+            serialnum: '編號',
+            badge: '校徽',
+            name: '名稱',
+            scale: '規模版本',
+            brevityCode: '學校簡碼',
+            province: '省',
+            city: '市',
+            area: '区',
+            spacesize: '空間大小',
+            assis: '關聯管家',
+            operate: '操作',
+            operatecontent: '編輯'
+        }
+    },
+    treeStructure: {
+        project: '微能力點',
+        chapter: '章節',
+        resource: '關聯資源',
+        required: '必修',
+        choose: '選修',
+        totalperiod: '總學時',
+        grow: '成長值',
+        dimensionality: '維度',
+    },
     commonMsg: {
         operateSuccess: '操作成功!',
         operateError: '操作失敗',
         notoperate: '無權限,無法操作!',
-        nonactivated: '賬號未激活,無法操作'
+        nonactivated: '賬號未激活,無法操作',
+        confirm: '確認',
+        closes: '取消',
+        nodataTable: '暫無數據',
+        areaCreatedSuccess: '學區創建成功',
+        areaCreatedError: '學區創建失敗',
+        addschoolSuccess: '學校加入成功',
+        addschoolError: '學校加入失敗',
+        chapterError: '章節API數據異常'
     }
 }
 export default zh_tw

+ 34 - 28
TEAMModelBI/ClientApp/src/view/created/created.vue

@@ -1,6 +1,6 @@
 <template>
     <!--列表选单-->
-    <div class="selectbtn" v-if="model==='choice'">
+    <!-- <div class="selectbtn" v-if="model==='choice'">
         <div class="selecttitle">
             <p>请选择创建范围</p>
         </div>
@@ -37,32 +37,32 @@
                 <span class="text">创建学校</span>
             </a>
         </div>
-    </div>
+    </div> -->
     <!--列表选单end-->
     <!--创区选单-->
-    <div v-else-if="model=='areaC'">
+    <div v-if="model=='areaC'">
         <div class="areabox">
-            <p class="aera-title">创建学区</p>
+            <p class="aera-title">{{$t(`areaManages.createdArea.title`)}}</p>
             <el-form :label-position="labelPosition" label-width="100px" :model="formArea">
-                <el-form-item label="地区选择:">
+                <el-form-item :label="$t(`areaManages.createdArea.areaSelect`)+':'">
                     <div class="select-area" v-show="formArea.areaselect.state ===false">
                         <div class="province-box">
-                            <span>:</span>
-                            <el-select v-model="provinceOptions.provinceValue" placeholder="省级" @change="areaSelctChange(provinceOptions.provinceValue,'province')">
+                            <span>{{$t(`areaManages.selector.provinceName`)}}:</span>
+                            <el-select v-model="provinceOptions.provinceValue" :placeholder="$t(`areaManages.selector.provinceDefault`)" @change="areaSelctChange(provinceOptions.provinceValue,'province')">
                                 <el-option v-for="item in provinceOptions.optionInfo" :key="item.code" :label="item.name" :value="item.name">
                                 </el-option>
                             </el-select>
                         </div>
                         <div class="city-box">
-                            <span>:</span>
-                            <el-select v-model="cityOptions.cityValue" placeholder="市/县" @change="areaSelctChange(cityOptions.cityValue,'city')">
+                            <span>{{$t(`areaManages.selector.cityName`)}}:</span>
+                            <el-select v-model="cityOptions.cityValue" :placeholder="$t(`areaManages.selector.cityDefault`)" @change="areaSelctChange(cityOptions.cityValue,'city')">
                                 <el-option v-for="item in cityOptions.cityInfo" :key="item.code" :label="item.name" :value="item.name">
                                 </el-option>
                             </el-select>
                         </div>
                         <div class="dist-box">
-                            <span>区域:</span>
-                            <el-select v-model="distOptions.distValue" allow-create default-first-option placeholder="区域选择" @change="areaSelctChange(distOptions.distValue,'dist')">
+                            <span>{{$t(`areaManages.selector.areaName`)}}:</span>
+                            <el-select v-model="distOptions.distValue" allow-create default-first-option :placeholder="$t(`areaManages.selector.areaDefault`)" @change="areaSelctChange(distOptions.distValue,'dist')">
                                 <el-option v-for="item in distOptions.distInfo" :key="item.code" :label="item.name" :value="item.name">
                                 </el-option>
                             </el-select>
@@ -70,47 +70,47 @@
                     </div>
                     <div class="select-area" v-show="formArea.areaselect.state ===true">
                         <div class="province-box">
-                            <span>:</span>
-                            <el-select v-model="provinceOptions.provinceValue" placeholder="省级" disabled>
+                            <span>{{$t(`areaManages.selector.provinceName`)}}:</span>
+                            <el-select v-model="provinceOptions.provinceValue" :placeholder="$t(`areaManages.selector.provinceDefault`)" disabled>
                                 <el-option v-for="item in provinceOptions.optionInfo" :key="item.code" :label="item.name" :value="item.name">
                                 </el-option>
                             </el-select>
                         </div>
                         <div class="city-box">
-                            <span>:</span>
-                            <el-select v-model="cityOptions.cityValue" placeholder="市/县" disabled>
+                            <span>{{$t(`areaManages.selector.cityName`)}}:</span>
+                            <el-select v-model="cityOptions.cityValue" :placeholder="$t(`areaManages.selector.cityDefault`)" disabled>
                                 <el-option v-for="item in cityOptions.cityInfo" :key="item.code" :label="item.name" :value="item.name">
                                 </el-option>
                             </el-select>
                         </div>
                         <div class="dist-box">
-                            <span>区域:</span>
-                            <el-select v-model="distOptions.distValue" filterable placeholder="区域选择" disabled>
+                            <span>{{$t(`areaManages.selector.areaName`)}}:</span>
+                            <el-select v-model="distOptions.distValue" filterable :placeholder="$t(`areaManages.selector.areaDefault`)" disabled>
                                 <el-option v-for="item in distOptions.distInfo" :key="item.code" :label="item.name" :value="item.name">
                                 </el-option>
                             </el-select>
                         </div>
                     </div>
                     <div class="nonearea">
-                        <el-checkbox v-model="formArea.areaselect.state" label="无地区限制" border size="mini" @change="changnone"></el-checkbox>
+                        <el-checkbox v-model="formArea.areaselect.state" :label="$t(`areaManages.createdArea.notArea`)" border size="mini" @change="changnone"></el-checkbox>
                     </div>
                 </el-form-item>
-                <el-form-item label="名称:" class="special">
+                <el-form-item :label="$t(`areaManages.createdArea.name`)+':'" class="special">
                     <div class="areanames">
-                        <el-input v-model="formArea.areaname.value" disabled placeholder="地区名称" v-show="formArea.areaname.state ==false" size="medium" />
+                        <el-input v-model="formArea.areaname.value" disabled :placeholder="$t(`areaManages.createdArea.namehint`)" v-show="formArea.areaname.state ==false" size="medium" />
                         <el-input v-model="formArea.areaname.value" focus v-show="formArea.areaname.state ==true" @blur="formArea.areaname.state = false" size="medium" />
                     </div>
                     <div class="areanames-btn">
                         <el-button type="primary" icon="el-icon-edit" v-if="formArea.areaname.state ==false && formArea.areaname.value" @click="formArea.areaname.state = true"></el-button>
                     </div>
                 </el-form-item>
-                <el-form-item label="所属机构:" class="belong">
+                <el-form-item :label="$t(`areaManages.createdArea.affiliation`)+':'" class="belong">
                     <div class="institutionbox">
-                        <el-input v-model="formArea.institution" placeholder="填写所属机构" />
+                        <el-input v-model="formArea.institution" :placeholder="$t(`areaManages.createdArea.affiliationhint`)" />
                     </div>
                 </el-form-item>
-                <el-form-item label="微能力点:" class="capacity-box">
-                    <el-select v-model="formArea.capacityvalue" placeholder="选择相应的微能力点方案">
+                <el-form-item :label="$t(`areaManages.createdArea.project`)+':'" class="capacity-box">
+                    <el-select v-model="formArea.capacityvalue" :placeholder="$t(`areaManages.createdArea.projecthint`)">
                         <el-option v-for="item in formArea.options" :key="item.id" :label="item.name+'——'+item.standardName" :value="item.id">
                         </el-option>
                     </el-select>
@@ -118,8 +118,8 @@
             </el-form>
         </div>
         <div class="submitbtn">
-            <el-button type="success" @click="createdArea();createdLoading=true" :loading="createdLoading">创建</el-button>
-            <el-button type="info" @click="closeandreturn('close','area')">取消</el-button>
+            <el-button type="success" @click="createdArea();createdLoading=true" :loading="createdLoading">{{$t(`areaManages.createdArea.createds`)}}</el-button>
+            <el-button type="info" @click="closeandreturn('close','area')">{{$t(`commonMsg.closes`)}}</el-button>
         </div>
     </div>
     <!--创区选单end-->
@@ -379,7 +379,7 @@ export default {
             console.log(schoolForm.value)
         }
         function changnone(val) {
-            val ? (formArea.value.areaname.value = '全国区域学区') : (formArea.value.areaname.value = '')
+            val ? (formArea.value.areaname.value = proxy.$t(`areaManages.createdArea.notAreaname`)) : (formArea.value.areaname.value = '')
             //上传数据为空
             formArea.value.areaselect.province = ''
             formArea.value.areaselect.provincevalue = ''
@@ -425,7 +425,13 @@ export default {
                 tmdName: users.tmdName,
             }
             console.log(createdParame, '创区数据')
-            proxy.$api.createAreas(createdParame).then((res) => (res.state === 200 ? (ElMessage.success('学区创建成功'), router.push({ path: '/home/areamanage' })) : ElMessage.error('学区创建失败')))
+            proxy.$api
+                .createAreas(createdParame)
+                .then((res) =>
+                    res.state === 200
+                        ? (ElMessage.success(proxy.$t(`commonMsg.areaCreatedSuccess`)), router.push({ path: '/home/areamanage' }))
+                        : ElMessage.error(proxy.$t(`commonMsg.areaCreatedError`))
+                )
             createdArea.value = false
         }
         onMounted(() => {

+ 2 - 1
TEAMModelBI/ClientApp/src/view/ddlogin.vue

@@ -5,6 +5,7 @@
 </template>
  
 <script>
+const hosts = window.location.host === 'localhost:5001' ? 'localhost:5001' : 'bitest.teammodel.cn'
 import axios from 'axios'
 export default {
     name: 'App',
@@ -12,7 +13,7 @@ export default {
     data() {
         return {
             appid: 'dingrucgsnt8p13rfbgd',
-            redirectUrl: 'https://' + JSON.parse(localStorage.getItem('Host')) + '/login',
+            redirectUrl: 'https://' + hosts + '/login',
             // apiUrl: '/common/login/DingLogin',
             dingCodeConfig: {
                 id: 'login_container',

+ 2 - 2
TEAMModelBI/ClientApp/src/view/login.vue

@@ -54,6 +54,8 @@ export default {
         bind,
     },
     setup() {
+        var types = navigator.language
+        localStorage.setItem('language', JSON.stringify(types))
         let user = ref('')
         let pwd = ref('')
         let loginModel = ref(true)
@@ -82,8 +84,6 @@ export default {
                 console.log(userCode)
                 editState(userCode)
             }
-            var types = navigator.language
-            localStorage.setItem('language', JSON.stringify(types))
             localStorage.setItem('Host', JSON.stringify(window.location.host))
         })
         //处理登录icon变化

+ 65 - 63
TEAMModelBI/ClientApp/src/view/teachermanage/areamanage.vue

@@ -3,15 +3,15 @@
         <div class="nowtitle">
             <div class="select-List">
                 <div class="province-box">
-                    <span>:</span>
-                    <el-select v-model="provinceOptions.provinceValue" placeholder="省级" @change="areaSelctChange(provinceOptions.provinceValue,'province')">
+                    <span>{{$t('areaManages.selector.provinceName')}}:</span>
+                    <el-select v-model="provinceOptions.provinceValue" :placeholder="$t('areaManages.selector.provinceDefault')" @change="areaSelctChange(provinceOptions.provinceValue,'province')">
                         <el-option v-for="item in provinceOptions.optionInfo" :key="item.code" :label="item.name" :value="item.name">
                         </el-option>
                     </el-select>
                 </div>
                 <div class="city-box">
-                    <span>:</span>
-                    <el-select v-model="cityOptions.cityValue" placeholder="市/县" @change="areaSelctChange(cityOptions.cityValue,'city')">
+                    <span>{{$t('areaManages.selector.cityName')}}:</span>
+                    <el-select v-model="cityOptions.cityValue" :placeholder="$t('areaManages.selector.cityDefault')" @change="areaSelctChange(cityOptions.cityValue,'city')">
                         <el-option v-for="item in cityOptions.cityInfo" :key="item.code" :label="item.name" :value="item.name">
                         </el-option>
                     </el-select>
@@ -42,22 +42,22 @@
                             </svg>
                         </span>
                     </div>
-                    <span class="text">创建区域</span>
+                    <span class="text">{{$t(`areaManages.found.creation`)}}</span>
                 </a>
             </div>
         </div>
         <div class="traitfrom">
-            <el-table :data="optionData" style="width: 100%" :highlight-current-row="true" height="74vh" v-loading="loading" empty-text='暂无数据'>
-                <el-table-column prop="index" label="编号" type=index sortable align="center" />
-                <el-table-column prop="name" label="名称" align="center" />
-                <el-table-column prop="id" label="ID编码" align="center" />
-                <el-table-column prop="provName" label="省份" align="center" />
-                <el-table-column prop="cityName" label="城市" align="center" />
-                <el-table-column prop="institution" label="所属机构" align="center" />
-                <el-table-column prop="standardName" label="微能力点方案" align="center" />
-                <el-table-column label="操作" align="center" v-if="PowerShow">
+            <el-table :data="optionData" style="width: 100%" :highlight-current-row="true" height="74vh" v-loading="loading" :empty-text='$t(`commonMsg.nodataTable`)'>
+                <el-table-column prop="index" :label="$t(`areaManages.areaTable.serialnum`)" type=index sortable align="center" />
+                <el-table-column prop="name" :label="$t(`areaManages.areaTable.name`)" align="center" />
+                <el-table-column prop="id" :label="$t(`areaManages.areaTable.Ids`)" align="center" />
+                <el-table-column prop="provName" :label="$t(`areaManages.areaTable.province`)" align="center" />
+                <el-table-column prop="cityName" :label="$t(`areaManages.areaTable.city`)" align="center" />
+                <el-table-column prop="institution" :label="$t(`areaManages.areaTable.affiliation`)" align="center" />
+                <el-table-column prop="standardName" :label="$t(`areaManages.areaTable.project`)" align="center" />
+                <el-table-column :label="$t(`areaManages.areaTable.operate`)" align="center" v-if="PowerShow">
                     <template #default="scope">
-                        <el-button size="mini" @click="operation(scope.$index, scope.row,true)">操作</el-button>
+                        <el-button size="mini" @click="operation(scope.$index, scope.row,true)">{{$t(`areaManages.areaTable.operate`)}}</el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -65,22 +65,22 @@
         <div class="adjustmentDialog" v-if="PowerShow">
             <el-dialog v-model="adjustmentbox" title="" width="85%" @close="closeInfo" center>
                 <el-tabs v-model="activeName">
-                    <el-tab-pane label="区内增校" name="add">
+                    <el-tab-pane :label="$t(`areaManages.operational.areaAddSchool.title`)" name="add">
                         <div class="haveSchool">
                             <div class="schoolLeft" v-if="notjoinSchool.length !==0">
-                                <p>学校列表</p>
+                                <p>{{$t(`areaManages.operational.areaAddSchool.schooltitle`)}}</p>
                                 <ul>
                                     <li class="details-list-school" v-for="(item,index) in notjoinSchool" :key="item.id" :class="{'active':position===index}">
                                         <div class="list-school-logo">
                                             <el-image style="width: 60px; height: 60px" :src="item.picture" :fit="fill"></el-image>
                                         </div>
                                         <div class="list-school-name">
-                                            <div>名称:<span>{{item.name}}</span></div>
-                                            <div>学段:<span>{{item.period[0]}}</span></div>
-                                            <div>简码:<span>{{item.id}}</span></div>
-                                            <div>地址:<span>{{item.province}}{{item.city}}{{item.dist}}</span></div>
+                                            <div>{{$t(`areaManages.operational.areaAddSchool.schoolList.name`)}}:<span>{{item.name}}</span></div>
+                                            <div>{{$t(`areaManages.operational.areaAddSchool.schoolList.grading`)}}:<span>{{item.period[0]}}</span></div>
+                                            <div>{{$t(`areaManages.operational.areaAddSchool.schoolList.code`)}}:<span>{{item.id}}</span></div>
+                                            <div>{{$t(`areaManages.operational.areaAddSchool.schoolList.location`)}}:<span>{{item.province}}{{item.city}}{{item.dist}}</span></div>
                                         </div>
-                                        <el-popconfirm confirm-button-text="加入" cancel-button-text="取消" title="是否将学校加入该区域" @confirm="areaAddschool(item.schoolCode,$event)" @cancel="position=''">
+                                        <el-popconfirm :confirm-button-text="$t(`areaManages.operational.areaAddSchool.add`)" :cancel-button-text="$t(`commonMsg.closes`)" :title="$t(`areaManages.operational.areaAddSchool.addschoolHint`)" @confirm="areaAddschool(item.schoolCode,$event)" @cancel="position=''">
                                             <template #reference>
                                                 <div class="addiconsx" @click="changeStyle(index)">
                                                     <svg class="areaaddschool" aria-hidden="true">
@@ -93,27 +93,27 @@
                                 </ul>
                             </div>
                             <div class="noData" v-else>
-                                <div>暂无数据</div>
+                                <div>{{$t(`commonMsg.nodataTable`)}}</div>
                             </div>
                             <div class="schoolRight">
-                                <div class="schoolRight-title">区级拥有学校</div>
+                                <div class="schoolRight-title">{{$t(`areaManages.operational.areaAddSchool.tabletitle`)}}</div>
                                 <div class="schoolRight-table">
                                     <el-table :data="tableDatas" style="width: 100%" max-height="500">
-                                        <el-table-column prop="index" label="编号" width="100" type="index" />
-                                        <el-table-column label="校徽" width="100" align="center">
+                                        <el-table-column prop="index" :label="$t(`areaManages.operational.areaAddSchool.tables.serialnum`)" width="100" type="index" />
+                                        <el-table-column :label="$t(`areaManages.operational.areaAddSchool.tables.badge`)" width="100" align="center">
                                             <template #default="scope">
                                                 <el-image style="width: 70px; height: 70px" :src="scope.row.picture" fit="fill"></el-image>
                                             </template>
                                         </el-table-column>
-                                        <el-table-column prop="name" label="名称" width="170" align="center" />
-                                        <el-table-column prop="id" label="学校简码" width="120" align="center" />
-                                        <el-table-column prop="province" label="省" width="100" align="center" />
-                                        <el-table-column prop="city" label="市" width="100" align="center" />
-                                        <el-table-column prop="dist" label="区" width="100" align="center" />
-                                        <el-table-column fixed="right" label="操作" width="100">
+                                        <el-table-column prop="name" :label="$t(`areaManages.operational.areaAddSchool.tables.name`)" width="170" align="center" />
+                                        <el-table-column prop="id" :label="$t(`areaManages.operational.areaAddSchool.tables.brevityCode`)" width="120" align="center" />
+                                        <el-table-column prop="province" :label="$t(`areaManages.operational.areaAddSchool.tables.province`)" width="100" align="center" />
+                                        <el-table-column prop="city" :label="$t(`areaManages.operational.areaAddSchool.tables.city`)" width="100" align="center" />
+                                        <el-table-column prop="dist" :label="$t(`areaManages.operational.areaAddSchool.tables.area`)" width="100" align="center" />
+                                        <el-table-column fixed="right" :label="$t(`areaManages.operational.areaAddSchool.tables.operate`)" width="100">
                                             <template #default="scope">
                                                 <el-button type="text" size="small" @click.prevent="deleteRow(scope.$index, scope.row)">
-                                                    移除区域
+                                                    {{$t(`areaManages.operational.areaAddSchool.tables.areaRemove`)}}
                                                 </el-button>
                                             </template>
                                         </el-table-column>
@@ -122,17 +122,17 @@
                             </div>
                         </div>
                     </el-tab-pane>
-                    <el-tab-pane label="微能力方案" name="adjust">
+                    <el-tab-pane :label="$t(`areaManages.operational.abilitys.title`)" name="adjust">
                         <div class="areaAbilitys" v-if="abilityModel ===true">
                             <Ability :selectObject="currentlySelect.standard"></Ability>
                         </div>
                         <div class="cuttable" v-else-if="abilityModel ===false">
-                            <div class="nowAbility"><i class="diansInfo"></i><span class="now-title">当前:</span><span class="contents">{{currentlySelect.name}}—{{currentlySelect.standardName}}—{{currentlySelect.institution}}</span></div>
+                            <div class="nowAbility"><i class="diansInfo"></i><span class="now-title">{{$t(`areaManages.operational.abilitys.now`)}}:</span><span class="contents">{{currentlySelect.name}}—{{currentlySelect.standardName}}—{{currentlySelect.institution}}</span></div>
                             <el-table :data="tableData" style="width: 100%" :highlight-current-row="true" @row-click="cutpitch">
-                                <el-table-column prop="index" label="编号" width="180" type=index align="center" />
-                                <el-table-column prop="standardName" label="名称" width="180" align="center" />
-                                <el-table-column prop="name" label="来源" align="center" />
-                                <el-table-column prop="institution" label="所属机构" align="center" />
+                                <el-table-column prop="index" :label="$t(`areaManages.operational.abilitys.tables.serialnum`)" width="180" type=index align="center" />
+                                <el-table-column prop="standardName" :label="$t(`areaManages.operational.abilitys.tables.name`)" width="180" align="center" />
+                                <el-table-column prop="name" :label="$t(`areaManages.operational.abilitys.tables.source`)" align="center" />
+                                <el-table-column prop="institution" :label="$t(`areaManages.operational.abilitys.tables.affiliation`)" align="center" />
                                 <el-table-column label="" width="100" align="center">
                                     <template #default="scope">
                                         <svg class="cuticon" aria-hidden="true" v-show="scope.row.laterPitch">
@@ -142,8 +142,8 @@
                                 </el-table-column>
                             </el-table>
                             <div class="cuttable-btn">
-                                <el-button type="primary" @click="confirm">确定</el-button>
-                                <el-button @click="adjustmentbox = false">取消</el-button>
+                                <el-button type="primary" @click="confirm">{{$t(`commonMsg.confirm`)}}</el-button>
+                                <el-button @click="adjustmentbox = false">{{$t(`commonMsg.closes`)}}</el-button>
                             </div>
                         </div>
                     </el-tab-pane>
@@ -158,14 +158,14 @@
                 </div>
             </el-dialog>
             <el-dialog v-model="CutNotarize" width="50%" :before-close="handleClose">
-                <div class="reminder">注意:<span>此操作覆盖掉方案里的内容,确定是要执行吗?</span></div>
+                <div class="reminder">注意:<span>{{$t(`areaManages.operational.abilitys.cuthint`)}}</span></div>
                 <div class="cutboxs">
                     <div class="now">
-                        <p><span class="cutbox-title">名称:</span><span class="cutbox-name">{{currentlySelect.name}}</span></p>
+                        <p><span class="cutbox-title">{{$t(`areaManages.operational.abilitys.objdata.name`)}}:</span><span class="cutbox-name">{{currentlySelect.name}}</span></p>
                         <div class="restbox">
-                            <div><span class="general-title">微能力点方案:</span><span class="general-content">{{currentlySelect.standardName}}</span></div>
-                            <div><span class="general-title">所属机构:</span><span class="general-content">{{currentlySelect.institution}}</span></div>
-                            <div><span class="general-title">地区:</span><span class="general-content">{{currentlySelect.provName}}{{currentlySelect.cityName}}</span></div>
+                            <div><span class="general-title">{{$t(`areaManages.operational.abilitys.objdata.project`)}}:</span><span class="general-content">{{currentlySelect.standardName}}</span></div>
+                            <div><span class="general-title">{{$t(`areaManages.operational.abilitys.objdata.affiliation`)}}:</span><span class="general-content">{{currentlySelect.institution}}</span></div>
+                            <div><span class="general-title">{{$t(`areaManages.operational.abilitys.objdata.areas`)}}:</span><span class="general-content">{{currentlySelect.provName}}{{currentlySelect.cityName}}</span></div>
                         </div>
                     </div>
                     <div class="cutpastIcon" :loading="true">
@@ -174,26 +174,26 @@
                         </svg>
                     </div>
                     <div class="now">
-                        <p><span class="cutbox-title">名称:</span><span class="cutbox-name">{{replaceProject.name}}</span></p>
+                        <p><span class="cutbox-title">{{$t(`areaManages.operational.abilitys.objdata.name`)}}:</span><span class="cutbox-name">{{replaceProject.name}}</span></p>
                         <div class="restbox">
-                            <div><span class="general-title">微能力点方案:</span><span class="general-content">{{replaceProject.standardName}}</span></div>
-                            <div><span class="general-title">所属机构:</span><span class="general-content">{{replaceProject.institution}}</span></div>
-                            <div><span class="general-title">地区:</span><span class="general-content">{{replaceProject.provName}}{{replaceProject.city}}</span></div>
+                            <div><span class="general-title">{{$t(`areaManages.operational.abilitys.objdata.project`)}}:</span><span class="general-content">{{replaceProject.standardName}}</span></div>
+                            <div><span class="general-title">{{$t(`areaManages.operational.abilitys.objdata.affiliation`)}}:</span><span class="general-content">{{replaceProject.institution}}</span></div>
+                            <div><span class="general-title">{{$t(`areaManages.operational.abilitys.objdata.areas`)}}:</span><span class="general-content">{{replaceProject.provName}}{{replaceProject.city}}</span></div>
                         </div>
                     </div>
                 </div>
                 <template #footer>
                     <div class="hint" v-show="loadingForm.cutAbility">
-                        <p>正在切换,请耐心等待...</p>
+                        <p>{{$t(`areaManages.operational.abilitys.cutTitle`)}}</p>
                         <el-table v-loading="loadingForm.cutAbility" empty-text="   " style="width: 100%">
                         </el-table>
                     </div>
                     <div class="cut-footer">
                         <span class="dialog-footer">
-                            <el-button @click="CutNotarize = false" v-if="loadingForm.cutAbility===false">取消</el-button>
-                            <el-button disabled v-else>取消</el-button>
+                            <el-button @click="CutNotarize = false" v-if="loadingForm.cutAbility===false">{{$t(`commonMsg.closes`)}}</el-button>
+                            <el-button disabled v-else>{{$t(`commonMsg.closes`)}}</el-button>
                             <!-- <el-button type="primary" @click="loadingForm.cutAbility=true" :loading="loadingForm.cutAbility">确认</el-button> -->
-                            <el-button type="primary" @click="notarizeAbility(),loadingForm.cutAbility=true" :loading="loadingForm.cutAbility">确认</el-button>
+                            <el-button type="primary" @click="notarizeAbility(),loadingForm.cutAbility=true" :loading="loadingForm.cutAbility">{{$t(`commonMsg.confirm`)}}</el-button>
                         </span>
                     </div>
                 </template>
@@ -312,7 +312,7 @@ export default {
             }
             proxy.$api.areaAddSchool(data).then((res) => {
                 console.log(res, '区域加入学校返回')
-                res.state === 200 ? (ElMessage.success('学校加入成功'), getNotjoin(), getAreaschool()) : ElMessage.error('学校添加失败')
+                res.state === 200 ? (ElMessage.success(proxy.$t(`commonMsg.addschoolSuccess`)), getNotjoin(), getAreaschool()) : ElMessage.error(proxy.$t(`commonMsg.addschoolError`))
             })
             position.value = ''
         }
@@ -339,12 +339,12 @@ export default {
                 .changeCutstandard(datas)
                 .then((res) => {
                     console.log(res, '切换返回')
-                    res.state === 200 ? ElMessage({ type: 'success', message: '操作成功' }) : ElMessage({ type: 'error', message: '操作失败' })
+                    res.state === 200 ? ElMessage({ type: 'success', message: proxy.$t(`commonMsg.operateSuccess`) }) : ElMessage({ type: 'error', message: proxy.$t(`commonMsg.operateError`) })
                     loadingForm.value.cutAbility = false
                     CutNotarize.value = false
                 })
                 .catch((res) => {
-                    ElMessage({ type: 'error', message: '操作失败' })
+                    ElMessage({ type: 'error', message: proxy.$t(`commonMsg.operateError`) })
                     loadingForm.value.cutAbility = false
                     CutNotarize.value = false
                 })
@@ -356,7 +356,7 @@ export default {
                 return item.laterPitch === true
             })
             console.log(result)
-            result ? ((replaceProject.value = result), (CutNotarize.value = true)) : ElMessage.info('请选择相应的替换方案')
+            result ? ((replaceProject.value = result), (CutNotarize.value = true)) : ElMessage.info(proxy.$t(`areaManages.operational.abilitys.choiceHint`))
             // ElMessageBox.confirm('此操作覆盖掉方案里的内容,确定是要执行吗?', '注意:', {
             //     confirmButtonText: '确认',
             //     cancelButtonText: '取消',
@@ -387,12 +387,14 @@ export default {
             console.log(index, data)
             let datas = data
             let user = JSON.parse(localStorage.getItem('userData'))
+            let removehint = proxy.$t(`areaManages.operational.areaAddSchool.removeHint`)
+            let removecautious = proxy.$t(`areaManages.operational.areaAddSchool.cautious`)
             ElMessageBox({
                 title: '注意:',
-                message: h('p', null, [h('span', null, '确认要将此学校移除区域内吗?'), h('span', { style: 'color: red' }, '请谨慎操作')]),
+                message: h('p', null, [h('span', null, removehint), h('span', { style: 'color: red' }, removecautious)]),
                 showCancelButton: true,
-                confirmButtonText: '确认',
-                cancelButtonText: '取消',
+                confirmButtonText: proxy.$t(`commonMsg.confirm`),
+                cancelButtonText: proxy.$t(`commonMsg.closes`),
                 beforeClose: (action, instance, done) => {
                     if (action === 'confirm') {
                         instance.confirmButtonLoading = true
@@ -400,7 +402,7 @@ export default {
                         let data = { tmdId: user.tmdId, tmdName: user.tmdName, schoolId: datas.id }
                         proxy.$api.areaDeleSchool(data).then((res) => {
                             console.log(res, '移除返回')
-                            res.state !== 200 ? ElMessage.error('移除失败,请稍后再试') : getAreaschool(), getNotjoin()
+                            res.state !== 200 ? ElMessage.error(proxy.$t(`commonMsg.operateError`)) : getAreaschool(), getNotjoin()
                         })
                         done()
                         instance.confirmButtonLoading = false
@@ -411,7 +413,7 @@ export default {
             }).then((action) => {
                 ElMessage({
                     type: 'success',
-                    message: `学校移除成功`,
+                    message: proxy.$t(`commonMsg.operateSuccess`),
                 })
             })
         }

+ 19 - 19
TEAMModelBI/ClientApp/src/view/teachermanage/school.vue

@@ -3,22 +3,22 @@
     <div class="schoolbox" v-show="models==='default'">
         <div class="select-List">
             <div class="province-box">
-                <span>:</span>
-                <el-select v-model="provinceOptions.provinceValue" placeholder="省级" @change="areaSelctChange(provinceOptions.provinceValue,'province')">
+                <span>{{$t(`areaManages.selector.provinceName`)}}:</span>
+                <el-select v-model="provinceOptions.provinceValue" :placeholder="$t(`areaManages.selector.provinceDefault`)" @change="areaSelctChange(provinceOptions.provinceValue,'province')">
                     <el-option v-for="item in provinceOptions.optionInfo" :key="item.code" :label="item.name" :value="item.name">
                     </el-option>
                 </el-select>
             </div>
             <div class="city-box">
-                <span>:</span>
-                <el-select v-model="cityOptions.cityValue" placeholder="市/县" @change="areaSelctChange(cityOptions.cityValue,'city')">
+                <span>{{$t(`areaManages.selector.cityName`)}}:</span>
+                <el-select v-model="cityOptions.cityValue" :placeholder="$t(`areaManages.selector.cityDefault`)" @change="areaSelctChange(cityOptions.cityValue,'city')">
                     <el-option v-for="item in cityOptions.cityInfo" :key="item.code" :label="item.name" :value="item.name">
                     </el-option>
                 </el-select>
             </div>
             <div class="dist-box">
-                <span>区域:</span>
-                <el-select v-model="distOptions.distValue" filterable allow-create default-first-option placeholder="区域选择" @change="areaSelctChange(distOptions.distValue,'dist')">
+                <span>{{$t(`areaManages.selector.areaName`)}}:</span>
+                <el-select v-model="distOptions.distValue" filterable allow-create default-first-option :placeholder="$t(`areaManages.selector.areaDefault`)" @change="areaSelctChange(distOptions.distValue,'dist')">
                     <el-option v-for="item in distOptions.distInfo" :key="item.code" :label="item.name" :value="item.name">
                     </el-option>
                 </el-select>
@@ -42,45 +42,45 @@
                         </svg>
                     </span>
                 </div>
-                <span class="text">创建学校</span>
+                <span class="text">{{$t(`schoolManages.createdtitle`)}}</span>
             </a>
         </div>
         <div class="school-list">
             <el-table :data="tableData" style="width: 100%" height="75vh" v-loading="loading" element-loading-text="加载中...">
-                <el-table-column prop="index" label="编号" type="index" sortable align="center" />
-                <el-table-column label="头像" width="150" align="center">
+                <el-table-column prop="index" :label="$t(`schoolManages.tables.serialnum`)" type="index" sortable align="center" />
+                <el-table-column :label="$t(`schoolManages.tables.badge`)" width="150" align="center">
                     <template #default="scope">
                         <el-image style="width: 70px; height: 70px" :src="scope.row.picture" fit="fill"></el-image>
                     </template>
                 </el-table-column>
-                <el-table-column prop="name" label="名称" sortable align="center" />
+                <el-table-column prop="name" :label="$t(`schoolManages.tables.name`)" sortable align="center" />
                 <!-- <el-table-column label="学段" width="150" align="center">
                     <template #default="scope">
                         <span>{{scope.row.period[0].name}}</span>
                     </template>
                 </el-table-column> -->
-                <el-table-column label="规模版本:" class="school-table-edition" align="center">
+                <el-table-column :label="$t(`schoolManages.tables.scale`)" class="school-table-edition" align="center">
                     <template #default="scope">
                         <el-image style="width: 80px; height: 80px" :src="imgData.basics" fit="fill" v-if="scope.row.scale ===0"></el-image>
                         <el-image style="width: 80px; height: 80px" :src="imgData.standard" fit="fill" v-else-if="scope.row.scale ===500 && scope.row.hard ===0 && scope.row.serial ===0 && scope.row.service ===0"></el-image>
                         <el-image style="width: 80px; height: 80px" :src="imgData.specialty" fit="fill" v-else-if="scope.row.scale ===500 && (scope.row.hard !=0 || scope.row.serial !=0 || scope.row.service !=0)"></el-image>
                     </template>
                 </el-table-column>
-                <el-table-column prop="id" label="学校简码" align="center" />
-                <el-table-column prop="province" label="省" align="center" />
-                <el-table-column prop="city" label="市" align="center" />
-                <el-table-column prop="dist" label="区" align="center" />
-                <el-table-column prop="size" label="空间容量" align="center" />
-                <el-table-column label="关联管家" align="center">
+                <el-table-column prop="id" :label="$t(`schoolManages.tables.brevityCode`)" align="center" />
+                <el-table-column prop="province" :label="$t(`schoolManages.tables.province`)" align="center" />
+                <el-table-column prop="city" :label="$t(`schoolManages.tables.city`)" align="center" />
+                <el-table-column prop="dist" :label="$t(`schoolManages.tables.area`)" align="center" />
+                <el-table-column prop="size" :label="$t(`schoolManages.tables.spacesize`)" align="center" />
+                <el-table-column :label="$t(`schoolManages.tables.assis`)" align="center">
                     <template #default="scope">
                         <div v-if="scope.row.assisName">{{scope.row.assisName}}</div>
                         <div v-else>暂无</div>
                     </template>
                 </el-table-column>
                 <!-- <el-table-column prop="state" label="状态" width="110" align="center" /> -->
-                <el-table-column label="操作" align="center" v-if="PowerShow">
+                <el-table-column :label="$t(`schoolManages.tables.operate`)" align="center" v-if="PowerShow">
                     <template #default="scope">
-                        <el-button type="text" size="small" @click.prevent="deleteRow(scope.$index, scope.row)">编辑</el-button>
+                        <el-button type="text" size="small" @click.prevent="deleteRow(scope.$index, scope.row)">{{$t(`schoolManages.tables.operatecontent`)}}</el-button>
                     </template>
                 </el-table-column>
             </el-table>

+ 84 - 56
TEAMModelBI/Controllers/BIHome/HomeStatisController.cs

@@ -189,13 +189,14 @@ namespace TEAMModelBI.Controllers.BIHome
             try
             {
                 var cosmosClient = _azureCosmos.GetCosmosClient();
-                List<SticsCity> standards = new List<SticsCity>();
-                StringBuilder stringBuder = new StringBuilder("select c.name,c.provName,c.cityName,c.standard from c");
+                List<SticsCity> standards = new();
+                StringBuilder stringBuder = new("select c.id,c.name,c.provName,c.cityName,c.standard from c");
                 //查询省份区域
                 await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Normal").GetItemQueryIterator<Area>(queryText: stringBuder.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base-Area") }))
                 {
-                    SticsCity sticsCity = new SticsCity
+                    SticsCity sticsCity = new()
                     {
+                        areaId = item.id,
                         provName = item.provName,
                         cityName = item.cityName,
                         distName = item.name,
@@ -203,20 +204,21 @@ namespace TEAMModelBI.Controllers.BIHome
                     };
                     standards.Add(sticsCity);
                 }
-                List<SticsDist> sticsDists = new List<SticsDist>();
+                List<SticsDist> sticsDists = new();
 
                 //查询所有下面的学校数量
-                foreach (var itemStandrds in standards) 
+                foreach (var itemStandrds in standards)
                 {
-                    SticsDist sticsDist = new SticsDist();
-
-                    sticsDist.provName = itemStandrds.provName;
-                    sticsDist.cityName = itemStandrds.cityName;
-                    sticsDist.distName = itemStandrds.distName;
-                    sticsDist.standard = itemStandrds.standard;
+                    SticsDist sticsDist = new()
+                    {
+                        provName = itemStandrds.provName,
+                        cityName = itemStandrds.cityName,
+                        distName = itemStandrds.distName,
+                        standard = itemStandrds.standard,
+                    };
 
                     //查询区级下的学校ID
-                    string sqlTxt = $"select c.id from c where c.standard='{itemStandrds.standard}'";
+                    string sqlTxt = $"select c.id from c where c.areaId='{itemStandrds.areaId}' and c.standard='{itemStandrds.standard}'";
                     List<string> schoolIds = await CommonFind.FindSchoolIds(cosmosClient, sqlTxt, "Base");
 
                     sticsDist.schoolCount = schoolIds.Count;
@@ -266,7 +268,7 @@ namespace TEAMModelBI.Controllers.BIHome
                 if(!jsonElement.TryGetProperty("cityCode", out JsonElement _cityCode))  return BadRequest();
 
                 var cosmosClient = _azureCosmos.GetCosmosClient();
-                List<string> areaStandard = new List<string>();
+                List<string> areaStandard = new();
                 //查询省份区域
                 await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Normal").GetItemQueryIterator<Area>(queryText: $"select c.name,c.cityName,c.standard from c where c.cityCode='{_cityCode}'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base-Area") }))
                 {
@@ -314,7 +316,7 @@ namespace TEAMModelBI.Controllers.BIHome
             try
             {
                 var cosmosClient = _azureCosmos.GetCosmosClient();
-                List<ProvinceStandard> standards = new List<ProvinceStandard>();
+                List<ProvinceStandard> standards = new();
                 await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Normal").GetItemQueryStreamIterator(queryText: $"select c.provCode,c.provName,c.standard from c", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("Base-Area") }))
                 {
                     using var json = await JsonDocument.ParseAsync(item.ContentStream);
@@ -324,7 +326,7 @@ namespace TEAMModelBI.Controllers.BIHome
                         while (accounts.MoveNext())
                         {
                             JsonElement account = accounts.Current;
-                            ProvinceStandard provinceStandard = new ProvinceStandard
+                            ProvinceStandard provinceStandard = new()
                             {
                                 provCode = account.GetProperty("provCode").GetString(),
                                 provName = account.GetProperty("provName").GetString(),
@@ -335,10 +337,10 @@ namespace TEAMModelBI.Controllers.BIHome
                     }
                 }
 
-                List<ProvinceStics> provinceStics = new List<ProvinceStics>();
+                List<ProvinceStics> provinceStics = new();
                 foreach (var itemStandard in standards) 
                 {
-                    ProvinceStics tempProvinceStics = new ProvinceStics();
+                    ProvinceStics tempProvinceStics = new();
                     //ProvinceStics tempCode = new ProvinceStics();
                     var tempCode = provinceStics.Find(x => x.provCode == itemStandard.provCode);
                     if (tempCode != null)
@@ -420,12 +422,13 @@ namespace TEAMModelBI.Controllers.BIHome
             {
                 var cosmosClient = _azureCosmos.GetCosmosClient();
 
-                List<CityStandard> standards = new List<CityStandard>();
+                List<CityStandard> standards = new();
                 //查询省份区域
-                await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Normal").GetItemQueryIterator<Area>(queryText: $"select c.cityCode,c.cityName,c.standard from c", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base-Area") }))
+                await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Normal").GetItemQueryIterator<Area>(queryText: $"select c.id,c.cityCode,c.cityName,c.standard from c", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base-Area") }))
                 {
                     CityStandard Citystics = new CityStandard
                     {
+                        areaId = item.id,
                         cityCode = item.cityCode,
                         cityName = item.cityName,
                         standard = item.standard
@@ -433,14 +436,15 @@ namespace TEAMModelBI.Controllers.BIHome
                     standards.Add(Citystics);
                 }
 
-                List<CitySchool> citySchools = new List<CitySchool>();  //返回数量
+                List<CitySchool> citySchools = new();  //返回数量
                 foreach (var itemStandrd in standards)
                 {
-                    CitySchool citySchool = new CitySchool();
+                    CitySchool citySchool = new();
                     var tempCode = citySchools.Find(x => x.cityCode == itemStandrd.cityCode);
                     if (tempCode != null)
                     {
-                        string sqlTxt = $"select count(c.id) totals from c where c.standard='{itemStandrd.standard}'";
+                        //string sqlTxt = $"select count(c.id) totals from c where c.standard='{itemStandrd.standard}'";
+                        string sqlTxt = $"select count(c.id) totals from c where c.areaId='{itemStandrd.areaId}' and c.standard='{itemStandrd.standard}'";
                         tempCode.schoolCount += await CommonFind.FindTotals(cosmosClient, sqlTxt, "School", "Base");
 
                         var tempModel = citySchools.Where(x => x.cityCode == tempCode.cityCode).FirstOrDefault();
@@ -454,7 +458,8 @@ namespace TEAMModelBI.Controllers.BIHome
                         citySchool.cityCode = itemStandrd.cityCode;
                         citySchool.cityName = itemStandrd.cityName;
 
-                        string sqlTxt = $"select count(c.id) totals from c where c.standard='{itemStandrd.standard}'";
+                        //string sqlTxt = $"select count(c.id) totals from c where c.standard='{itemStandrd.standard}'";
+                        string sqlTxt = $"select count(c.id) totals from c where c.areaId='{itemStandrd.areaId}' and c.standard='{itemStandrd.standard}'";
                         citySchool.schoolCount += await CommonFind.FindTotals(cosmosClient, sqlTxt, "School", "Base");
 
                         citySchools.Add(citySchool);
@@ -483,12 +488,13 @@ namespace TEAMModelBI.Controllers.BIHome
                 if (!jsonElement.TryGetProperty("cityCode", out JsonElement _cityCode)) return BadRequest();
                 var cosmosClient = _azureCosmos.GetCosmosClient();
 
-                List<DistrictStandard> districtStandards = new List<DistrictStandard>();
+                List<DistrictStandard> districtStandards = new();
                 //查询省份区域
-                await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Normal").GetItemQueryIterator<Area>(queryText: $"select c.name,c.cityName,c.standard from c where c.cityCode='{_cityCode}'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base-Area") }))
+                await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Normal").GetItemQueryIterator<Area>(queryText: $"select c.id,c.name,c.cityName,c.standard from c where c.cityCode='{_cityCode}'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base-Area") }))
                 {
-                    DistrictStandard districtStandard = new DistrictStandard
+                    DistrictStandard districtStandard = new()
                     {
+                        id = item.id,
                         cityName = item.cityName,
                         distName = item.name,
                         standard = item.standard
@@ -497,19 +503,21 @@ namespace TEAMModelBI.Controllers.BIHome
                     districtStandards.Add(districtStandard);
                 }
 
-                List<DistrictStics> districtSticss = new List<DistrictStics>(); //返回数据
+                List<DistrictStics> districtSticss = new(); //返回数据
 
                 foreach (var itemStandrd in districtStandards)
                 {
-                    DistrictStics districtStics = new DistrictStics();
-                    districtStics.cityName = itemStandrd.cityName;
-                    districtStics.distName = itemStandrd.distName;
+                    DistrictStics districtStics = new()
+                    {
+                        cityName = itemStandrd.cityName,
+                        distName = itemStandrd.distName
+                    };
 
-                    string sqlTxt = $"select c.id from c where c.standard='{itemStandrd.standard}'";
+                    //string sqlTxt = $"select c.id from c where c.standard='{itemStandrd.standard}'";
+                    string sqlTxt = $"select c.id from c where c.areaId='{itemStandrd.id}' and c.standard='{itemStandrd.standard}'";
                     List<string> schoolIds = await CommonFind.FindSchoolIds(cosmosClient,sqlTxt, "Base");
                     districtStics.schoolCount += schoolIds.Count;
 
-
                     if (schoolIds.Count > 0) 
                     {
                         foreach (var itemSchool in schoolIds)
@@ -551,12 +559,13 @@ namespace TEAMModelBI.Controllers.BIHome
             try
             {
                 var cosmosClient = _azureCosmos.GetCosmosClient();
-                List<AllCityStics> tempAllCityStics = new List<AllCityStics>();
+                List<AllCityStics> tempAllCityStics = new();
                 //查询省份区域
-                await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Normal").GetItemQueryIterator<Area>(queryText: $"select c.name,c.cityCode,c.cityName,c.standard from c", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base-Area") }))
+                await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Normal").GetItemQueryIterator<Area>(queryText: $"select c.id,c.name,c.cityCode,c.cityName,c.standard from c", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base-Area") }))
                 {
-                    AllCityStics Citystics = new AllCityStics
+                    AllCityStics Citystics = new()
                     {
+                        id = item.id,
                         cityCode = item.cityCode,
                         cityName = item.cityName,
                         distName = item.name,
@@ -565,14 +574,15 @@ namespace TEAMModelBI.Controllers.BIHome
                     tempAllCityStics.Add(Citystics);
                 }
 
-                List<SticsCitys> sticsCitys = new List<SticsCitys>();
+                List<SticsCitys> sticsCitys = new();
                 foreach(var itemStandrd in tempAllCityStics)
                 {
-                    SticsCitys citySchool = new SticsCitys();
+                    SticsCitys citySchool = new();
                     var tempCode = sticsCitys.Find(x => (x.cityCode) == (itemStandrd.cityCode));
                     if (tempCode != null)
                     {
-                        List<string> schoolIds = await CommonFind.FindSchoolIds(cosmosClient, $"select c.id from c where c.standard='{itemStandrd.standard}'", "Base");
+                        //List<string> schoolIds = await CommonFind.FindSchoolIds(cosmosClient, $"select c.id from c where c.standard='{itemStandrd.standard}'", "Base");
+                        List<string> schoolIds = await CommonFind.FindSchoolIds(cosmosClient, $"select c.id from c where c.areaId='{itemStandrd.id}'", "Base");
                         tempCode.schoolCount += schoolIds.Count;
 
                         var tempModel = sticsCitys.Where(x => x.cityCode == tempCode.cityCode).FirstOrDefault();
@@ -581,10 +591,12 @@ namespace TEAMModelBI.Controllers.BIHome
                             tempModel.schoolCount = tempCode.schoolCount;
                         }
 
-                        DistrictStics districtStics = new DistrictStics();
-                        districtStics.cityName = itemStandrd.cityName;
-                        districtStics.distName = itemStandrd.distName;
-                        districtStics.schoolCount = schoolIds.Count;
+                        DistrictStics districtStics = new()
+                        {
+                            cityName = itemStandrd.cityName,
+                            distName = itemStandrd.distName,
+                            schoolCount = schoolIds.Count
+                        };
 
                         if (schoolIds.Count > 0)
                         {
@@ -613,19 +625,21 @@ namespace TEAMModelBI.Controllers.BIHome
                         List<string> schoolIds = await CommonFind.FindSchoolIds(cosmosClient, $"select c.id from c where c.standard='{itemStandrd.standard}'","Base");
                         citySchool.schoolCount += schoolIds.Count;
 
-                        List<DistrictStics> tempDistrictStics = new List<DistrictStics>();
+                        List<DistrictStics> tempDistrictStics = new();
                         if (schoolIds.Count > 0)
                         {
-                            DistrictStics districtStics = new DistrictStics();
-                            districtStics.cityName = itemStandrd.cityName;
-                            districtStics.distName= itemStandrd.distName;
-                            districtStics.schoolCount = schoolIds.Count;
+                            DistrictStics districtStics = new()
+                            {
+                                cityName = itemStandrd.cityName,
+                                distName = itemStandrd.distName,
+                                schoolCount = schoolIds.Count
+                            };
+
                             foreach (var itemSchool in schoolIds)
                             {
                                 //查询学校教师人数
                                 districtStics.teacherCount += await CommonFind.FindTotals(cosmosClient, $"select count(c.id) as totals from c join a1 in c.schools where a1.schoolId='{itemSchool}'", "Teacher", "Base");
 
-
                                 //查询学校学生人数
                                 districtStics.studentCount += await CommonFind.FindTotals(cosmosClient, $"select count(c.id) as totals from c", "Student","Base");
 
@@ -657,15 +671,15 @@ namespace TEAMModelBI.Controllers.BIHome
         {
             try
             {
-                Dictionary<string, object> dic = new Dictionary<string, object> { { "PartitionKey", "authority-bi" } };
+                Dictionary<string, object> dic = new() { { "PartitionKey", "authority-bi" } };
                 var table = _azureStorage.GetCloudTableClient().GetTableReference("SchoolSetting");
                 List<Authority> authorityBIList = await table.FindListByDict<Authority>(dic);
 
                 var cosmosClient = _azureCosmos.GetCosmosClient();
-                List<PowerStics> powerStics = new List<PowerStics>(); 
+                List<PowerStics> powerStics = new(); 
                 foreach (var temp in authorityBIList)
                 {
-                    PowerStics tempPowerStics = new PowerStics();
+                    PowerStics tempPowerStics = new();
                     tempPowerStics.powerName = temp.Discription;
 
                     //查询学校权限
@@ -702,8 +716,8 @@ namespace TEAMModelBI.Controllers.BIHome
                 long totalSize = 0; //总空间
                 long useSize = 0; //已使用空间                
                 long teach = 0;  //学校已经分配给所有教师的空间大小GB。
-                Dictionary<string, long> typeStics = new Dictionary<string, long>(); //所有类型
-                Dictionary<string, double?> typeStics1 = new Dictionary<string, double?>(); //所有类型
+                Dictionary<string, long> typeStics = new(); //所有类型
+                Dictionary<string, double?> typeStics1 = new(); //所有类型
 
                 List<string> schoolId = new List<string>();
                 var cosmosClient = _azureCosmos.GetCosmosClient();
@@ -735,7 +749,7 @@ namespace TEAMModelBI.Controllers.BIHome
                         }
                     }
 
-                    Dictionary<string, double?> schoolStics = new Dictionary<string, double?>(); //学校空间
+                    Dictionary<string, double?> schoolStics = new(); //学校空间
                     long blobsize = 0;
                     RedisValue value = default;
                     value = _azureRedis.GetRedisClient(8).HashGet($"Blob:Record", itemId);
@@ -956,8 +970,8 @@ namespace TEAMModelBI.Controllers.BIHome
             {
                 long teacheSize = 0; //教师空间
                 long sizeT = 0; //教师空间
-                List<string> teacherId = new List<string>(); //教师Id集合
-                Dictionary<string, long> typeStics = new Dictionary<string, long>(); //所有类型
+                List<string> teacherId = new(); //教师Id集合
+                Dictionary<string, long> typeStics = new(); //所有类型
                 var cosmosClient = _azureCosmos.GetCosmosClient();
 
                 //查询教师的大小和教师集合信息
@@ -1134,6 +1148,10 @@ namespace TEAMModelBI.Controllers.BIHome
         /// </summary>
         public record AllCityStics
         {
+            /// <summary>
+            /// 区域ID
+            /// </summary>
+            public string id { get; set; }
             /// <summary>
             /// 城市Code
             /// </summary>
@@ -1190,6 +1208,11 @@ namespace TEAMModelBI.Controllers.BIHome
         /// </summary>
         public record DistrictStandard() 
         {
+            /// <summary>
+            /// 区域标准
+            /// </summary>
+            public string id { get; set; }
+
             /// <summary>
             /// 市名称
             /// </summary>
@@ -1232,6 +1255,7 @@ namespace TEAMModelBI.Controllers.BIHome
         /// </summary>
         public record CityStandard
         {
+            public string areaId { get; set; }
             /// <summary>
             /// 城市Code
             /// </summary>
@@ -1253,6 +1277,10 @@ namespace TEAMModelBI.Controllers.BIHome
         /// </summary>
         public record SticsCity
         {
+            /// <summary>
+            /// 区域Id
+            /// </summary>
+            public string areaId { get; set; }
             /// <summary>
             /// 省份
             /// </summary>

+ 1 - 1
TEAMModelBI/Controllers/BITest/TestController.cs

@@ -306,7 +306,7 @@ namespace TEAMModelBI.Controllers.BITest
         [HttpPost("set-rolesorperm")]
         public async Task<IActionResult> SetRolesOrPermissions() 
         {
-            var table = _azureStorage.GetCloudTableClient().GetTableReference("DDUserInfo");
+            var table = _azureStorage.GetCloudTableClient().GetTableReference("BIDDUserInfo");
             List<DingDingUserInfo> ddUserId = await table.FindListByDict<DingDingUserInfo>(new Dictionary<string, object> { { "PartitionKey", "continent" } });
             List<string> read = new() { "abilitystandard-read", "batcharea-read", "batchschool-read", "orgusers-read" };
             List<DingDingUserInfo> tempUserInfo = new();

+ 1 - 1
TEAMModelBI/Controllers/DingDingStruc/DDStructController.cs

@@ -281,7 +281,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
 
                 List<DingDingUserInfo> ddUserInfos = new();
 
-                var tabledd = _azureStorage.GetCloudTableClient().GetTableReference("DDUserInfo");                
+                var tabledd = _azureStorage.GetCloudTableClient().GetTableReference("BIDDUserInfo");                
                 if (rspV2UserList1.Result.List != null)
                 {
                     foreach (var itemUser in rspV2UserList1.Result.List)

+ 9 - 9
TEAMModelBI/Controllers/DingDingStruc/TableDingDingInfoController.cs

@@ -68,7 +68,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
                 var (_tmdId, _tmdName, pic, did, dname, dpic) = HttpJwtAnalysis.JwtXAuthBI(HttpContext.GetXAuth("AuthToken"), _option);
 
                 HttpClient httpClient = _http.CreateClient();
-                var table = _azureStorage.GetCloudTableClient().GetTableReference("DDUserInfo");
+                var table = _azureStorage.GetCloudTableClient().GetTableReference("BIDDUserInfo");
                 string url = _configuration.GetValue<string>("HaBookAuth:CoreId:userinfo");
 
                 //获取access_token
@@ -184,7 +184,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
         {
             try
             {
-                var table = _azureStorage.GetCloudTableClient().GetTableReference("DDUserInfo");
+                var table = _azureStorage.GetCloudTableClient().GetTableReference("BIDDUserInfo");
                 string divide = _configuration["CustomParam:SiteScope"];
                 Dictionary<string, object> dic = new Dictionary<string, object> { { "PartitionKey", $"{divide}" } };
                 List<DingDingUserInfo> ddUserInfoList = await table.FindListByDict<DingDingUserInfo>(dic);
@@ -239,7 +239,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
         {
             try
             {
-                var table = _azureStorage.GetCloudTableClient().GetTableReference("DDUserInfo");
+                var table = _azureStorage.GetCloudTableClient().GetTableReference("BIDDUserInfo");
 
                 string appKey = _configuration["DingDingAuth:appKey"];
                 string appSecret = _configuration["DingDingAuth:appSecret"];
@@ -312,7 +312,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
         {
             try
             {
-                var table = _azureStorage.GetCloudTableClient().GetTableReference("DDUserInfo");
+                var table = _azureStorage.GetCloudTableClient().GetTableReference("BIDDUserInfo");
 
                 string appKey = _configuration["DingDingAuth:appKey"];
                 string appSecret = _configuration["DingDingAuth:appSecret"];
@@ -379,7 +379,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
                 if (!jsonElement.TryGetProperty("permissions", out JsonElement _permissions)) return BadRequest();
                 var (_tmdId, _tmdName, pic, did, dname, dpic) = HttpJwtAnalysis.JwtXAuthBI(HttpContext.GetXAuth("AuthToken"), _option);
 
-                var table = _azureStorage.GetCloudTableClient().GetTableReference("DDUserInfo");
+                var table = _azureStorage.GetCloudTableClient().GetTableReference("BIDDUserInfo");
                 StringBuilder stringBuilder = new($"{_tmdName}【{_tmdId}】醍摩豆账号");
                 List<DingDingUserInfo> ddUserInfo = new();
                 var tempUser = await table.FindListByDict<DingDingUserInfo>(new Dictionary<string, object> { { "PartitionKey", $"{partitionKey}" }, { "RowKey", $"{userId}" } });
@@ -437,7 +437,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
                 string divide = _configuration["CustomParam:SiteScope"];
 
                 Dictionary<string, object> dic = new Dictionary<string, object> { { "PartitionKey", $"{divide}" } };
-                var table = _azureStorage.GetCloudTableClient().GetTableReference("DDUserInfo");
+                var table = _azureStorage.GetCloudTableClient().GetTableReference("BIDDUserInfo");
                 List<DingDingUserInfo> tempUserInfos = await table.FindListByDict<DingDingUserInfo>(dic);
 
                 List<DingDingUserInfo> userInfo = new();
@@ -571,7 +571,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
                 if (!jsonElement.TryGetProperty("mobile", out JsonElement mobile)) return BadRequest();
 
                 var (_tmdId, _tmdName, pic, did, dname, dpic) = HttpJwtAnalysis.JwtXAuthBI(HttpContext.GetXAuth("AuthToken"), _option);
-                var table = _azureStorage.GetCloudTableClient().GetTableReference("DDUserInfo");
+                var table = _azureStorage.GetCloudTableClient().GetTableReference("BIDDUserInfo");
 
                 List<DingDingUserInfo> tempddUsers = null;
                 List<DingDingUserInfo> ddUsers = new();
@@ -658,7 +658,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
                 if (!jsonElement.TryGetProperty("isAdmin", out JsonElement isAdmin)) return BadRequest();
 
                 var (_tmdId, _tmdName, pic, did, dname, dpic) = HttpJwtAnalysis.JwtXAuthBI(HttpContext.GetXAuth("AuthToken"), _option);
-                var table = _azureStorage.GetCloudTableClient().GetTableReference("DDUserInfo");
+                var table = _azureStorage.GetCloudTableClient().GetTableReference("BIDDUserInfo");
                 var tempUser = await table.FindListByDict<DingDingUserInfo>(new Dictionary<string, object> { { "PartitionKey", $"{partitionKey}" }, { "RowKey", $"{rowKey}" } });
                 
                 List<DDUserInfo> ddUserInfos = new();
@@ -762,7 +762,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
                     var tempInfo = ddUserInfos.Find(x => x.RowKey.Equals(itemUser.Unionid));
                     if (string.IsNullOrEmpty($"{tempInfo}"))
                     {
-                        var table = _azureStorage.GetCloudTableClient().GetTableReference("DDUserInfo");
+                        var table = _azureStorage.GetCloudTableClient().GetTableReference("BIDDUserInfo");
                         var users = await table.FindListByDict<DingDingUserInfo>(new Dictionary<string, object> { { "RowKey", $"{itemUser.Userid}" }, { "unionId", $"{itemUser.Unionid}" } });
                         if (users.Count > 0)
                         {

+ 3 - 3
TEAMModelBI/Controllers/LoginController.cs

@@ -461,7 +461,7 @@ namespace TEAMModelBI.Controllers
                     return Ok(new { state = 0, message = "扫码登录失败" });
                 }
 
-                var table = _azureStorage.GetCloudTableClient().GetTableReference("DDUserInfo");
+                var table = _azureStorage.GetCloudTableClient().GetTableReference("BIDDUserInfo");
                 List<DingDingUserInfo> ddusers = await table.FindListByDict<DingDingUserInfo>(new Dictionary<string, object>() { { "RowKey", $"{v2GetResponse.Result.Userid}" }, { "unionId", $"{v2GetResponse.Result.Unionid}" } });
 
                 if (ddusers.Count > 0)
@@ -559,7 +559,7 @@ namespace TEAMModelBI.Controllers
 
                 if (responseMessage.StatusCode == HttpStatusCode.OK)
                 {
-                    var table = _azureStorage.GetCloudTableClient().GetTableReference("DDUserInfo");
+                    var table = _azureStorage.GetCloudTableClient().GetTableReference("BIDDUserInfo");
                     var temp = await responseMessage.Content.ReadAsStringAsync();
                     if (temp.Length > 0)
                     {
@@ -615,7 +615,7 @@ namespace TEAMModelBI.Controllers
                 if (!jsonElement.TryGetProperty("mobile", out JsonElement moile)) return BadRequest();
                 if (!jsonElement.TryGetProperty("partitionKey", out JsonElement partitionKey)) return BadRequest();
                 if (!jsonElement.TryGetProperty("rowKey", out JsonElement userId)) return BadRequest();
-                var table = _azureStorage.GetCloudTableClient().GetTableReference("DDUserInfo");
+                var table = _azureStorage.GetCloudTableClient().GetTableReference("BIDDUserInfo");
                 var tempUser = await table.FindListByDict<DingDingUserInfo>(new Dictionary<string, object> { { "PartitionKey", $"{partitionKey}" }, { "RowKey", $"{userId}" } });
 
                 List<string> roles = new();//角色列表

+ 2 - 2
TEAMModelOS.FunctionV4/CosmosDB/TriggerExam.cs

@@ -153,7 +153,7 @@ namespace TEAMModelOS.FunctionV4
                                                 classCode = "ExamClassResult-" + info.school;
                                             }
                                             cname = members.Where(m => m.id.Equals(cla)).FirstOrDefault()?.name;
-                                            ExamClassResult result = new ExamClassResult
+                                            ExamClassResult result = new()
                                             {
                                                 code = classCode,
                                                 examId = info.id,
@@ -280,7 +280,7 @@ namespace TEAMModelOS.FunctionV4
                                             {
                                                 result.mark.Add(marks);
                                                 result.studentIds.Add(sId);
-                                                result.scIds.Add(scode ?? "");
+                                                //result.scIds.Add(scode ?? "");
                                                 result.studentAnswers.Add(ans);
                                                 result.studentScores.Add(ansPoint);
                                                 result.ans.Add(anses);

+ 1 - 1
TEAMModelOS.SDK/Models/Cosmos/BI/DingDingUserInfo.cs

@@ -6,7 +6,7 @@ using TEAMModelOS.SDK.Context.Attributes.Azure;
 
 namespace TEAMModelOS.SDK.Models.Cosmos.BI
 {
-    [TableName(Name = ("DDUserInfo"))]
+    [TableName(Name = ("BIDDUserInfo"))]
     public class DingDingUserInfo : TableEntity
     {
         ///// <summary>

+ 1 - 1
TEAMModelOS.SDK/Models/Cosmos/Common/ExamClassResult.cs

@@ -34,7 +34,7 @@ namespace TEAMModelOS.SDK.Models
         public List<List<List<string>>> ans { get; set; }
         public List<List<double>> studentScores { get; set; }
         //记录学生原始学校ID
-        public List<string> scIds { get; set; } = new List<string>();
+        //public List<string> scIds { get; set; } = new List<string>();
         //继续学生作答状态
         public List<int> status { get; set; } = new List<int>();
         //批注

+ 2 - 2
TEAMModelOS.SDK/Models/Service/ActivityService.cs

@@ -495,7 +495,7 @@ namespace TEAMModelOS.SDK
                                 item.studentScores.Add(ansPoint);
                                 item.studentAnswers.Add(new List<string>());
                                 item.sum.Add(0);
-                                item.scIds.Add(member.code??"");
+                                //item.scIds.Add(member.code??"");
                                 item.status.Add(0);
                             }
                             else
@@ -506,7 +506,7 @@ namespace TEAMModelOS.SDK
                                 item.studentScores.RemoveAt(index);
                                 item.studentAnswers.RemoveAt(index);
                                 item.sum.RemoveAt(index);
-                                item.scIds.RemoveAt(index);
+                                //item.scIds.RemoveAt(index);
                                 item.status.RemoveAt(index);
                             }
                             try

+ 16 - 6
TEAMModelOS.SDK/Models/Service/FixDataService.cs

@@ -516,7 +516,7 @@ namespace TEAMModelOS.SDK.Models.Service
             List<Task<ItemResponse<ExamClassResult>>> tasks = new List<Task<ItemResponse<ExamClassResult>>>();
             try
             {
-                await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<ExamClassResult>(queryText: $"SELECT value(c) FROM c where c.pk = 'ExamClassResult' and c._ts > 1640966400"))
+                await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<ExamClassResult>(queryText: $"SELECT value(c) FROM c where c.pk = 'ExamClassResult' and c.scIds <> []"))
                 {
                     results.Add(item);
                     //await Task.WhenAll(tasks);
@@ -525,8 +525,8 @@ namespace TEAMModelOS.SDK.Models.Service
                 {
                     ids.Add(item.id);
                     List<int> status = new List<int>();
-                    List<string> classIds = new List<string>();
-                    classIds.Add(item.info.id);
+                    //List<string> classIds = new List<string>();
+                    //classIds.Add(item.info.id);
                     if (item.status.Count == 0)
                     {
                         if (item.studentAnswers.Count > 0)
@@ -535,7 +535,7 @@ namespace TEAMModelOS.SDK.Models.Service
                             {
                                 if (answer.Count == 0)
                                 {
-                                    item.status.Add(-2);
+                                    item.status.Add(1);
                                 }
                                 else
                                 {
@@ -544,7 +544,17 @@ namespace TEAMModelOS.SDK.Models.Service
                             }
                         }
                     }
-                    if (!string.IsNullOrEmpty(item.info.id) && item.scIds.Count == 0)
+                    else
+                    {
+                        List<int> vs = new();
+                        foreach (int st in item.status)
+                        {
+                            var ans = (st == -2) ? 1 : 0;
+                            vs.Add(ans);
+                        }
+                        item.status = vs;
+                    }
+                    /*if (!string.IsNullOrEmpty(item.info.id) && item.scIds.Count == 0)
                     {
                         string school = string.Empty;
                         if (item.scope.Equals("school"))
@@ -573,7 +583,7 @@ namespace TEAMModelOS.SDK.Models.Service
                             }
 
                         }
-                    }
+                    }*/
                     tasks.Add(client.GetContainer(Constant.TEAMModelOS, "Common").ReplaceItemAsync<ExamClassResult>(item, item.id, new PartitionKey(item.code)));
                 }
                 await Task.WhenAll(tasks);

+ 2 - 2
TEAMModelOS/ClientApp/src/assets/student-web/component_styles/common.css

@@ -399,11 +399,11 @@ body,
 }
 @media screen and (max-width: 991px) {
   .base-info li {
-    margin-right: 10px;
+    /* margin-right: 10px; */
   }
 }
 .base-info li:last-child {
-  margin-right: 3px;
+  /* margin-right: 3px; */
 }
 .base-info-icon {
   position: relative;

+ 13 - 11
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/LessonTestReport.vue

@@ -78,11 +78,11 @@
                 </i-col>
             </Row>
         </div>
-        <div class="QAsheet" v-if="testState === 3 && getItemTitle.progress === 'finish'">
+        <div class="QAsheet" v-if="testState === 3">
             <div class='title-rect-group '>
                 <h2 class="title-rect-name">{{$t("studentWeb.exam.report.answerBack")}}</h2>
             </div>
-            <div class="filterBtn">
+            <div class="filterBtn" v-if="getItemTitle.progress === 'finish'">
                 <CheckboxGroup v-model="checkedAns">
                     <Checkbox label="right" :disabled="checkedAns.length === 2 && checkedAns.includes('right')">
                         {{$t("studentWeb.exam.report.right")}}: {{rightAns.right}}
@@ -127,7 +127,7 @@
                     <div v-for="(exam, indexs) in item.exam" :key="indexs" style="display: flex; margin-bottom: 40px;"
                         v-show="checkedAnsFilter(index, indexs) || (exam.type === 'compose' && ((checkedAns.includes('right') && exam.rightNum) || (checkedAns.includes('wrong') && !exam.rightNum)))"
                     >
-                        <div style="width: 6%;">
+                        <div style="width: 6%;" v-if="getItemTitle.progress === 'finish'">
                             <p>
                                 <span @click="changeStar(!exam.star, index, indexs, exam)" style="margin-right: 10px; cursor: pointer;">
                                     <Icon custom="iconfont icon-shoucang1" size="25" v-show="!exam.star" />
@@ -154,7 +154,7 @@
                                     style="margin-bottom: 40px; margin-left: 20px; display: flex;"
                                     v-show="checkedAnsFilter(index, indexs, indexC)"
                                 >
-                                    <div style="margin-right: 5px;">
+                                    <div style="margin-right: 5px;" v-if="getItemTitle.progress === 'finish'">
                                         <Icon type="md-close-circle" color="#FF5508" size="25" v-show="children.getScore != children.score" />
                                         <Icon type="md-checkmark-circle" color="#00AD6C" size="25" v-show="children.getScore === children.score" />
                                     </div>
@@ -291,7 +291,7 @@
                                             </div>
                                         </div>
                                     </div>
-                                    <div style="width: 8%;">
+                                    <div style="width: 8%;" v-if="getItemTitle.progress === 'finish'">
                                         <span style="font-size: 20px; color:#00ad6c;">{{ children.getScore }}</span>
                                             / <span style="font-size: 12px;">{{ children.score }}{{ $t("studentWeb.exam.score111") }}</span>
                                         <span v-show="children.open" @click="closeDetail(index, indexs, indexC)">
@@ -417,7 +417,7 @@
                                 </div>
                             </div>
                         </div>
-                        <div style="width: 10%;">
+                        <div style="width: 10%;" v-if="getItemTitle.progress === 'finish'">
                             <span style="font-size: 20px; color:#00ad6c;">{{ exam.getScore }}</span> / 
                             <span style="font-size: 12px;">{{ exam.score }}{{ $t("studentWeb.exam.score111") }}</span>
                             <span v-if="exam.type !== 'compose'">
@@ -961,12 +961,14 @@
             },
             // 控制收缩试卷的按钮
             closeDetail(typeIndex, parentIndex, childIndex) {
-                if(childIndex === undefined) {
-                    this.newPaperData[typeIndex].exam[parentIndex].open = !this.newPaperData[typeIndex].exam[parentIndex].open
-                } else {
-                    this.newPaperData[typeIndex].exam[parentIndex].children[childIndex].open = !this.newPaperData[typeIndex].exam[parentIndex].children[childIndex].open
+                if(this.getItemTitle.progress === 'finish') {
+                    if(childIndex === undefined) {
+                        this.newPaperData[typeIndex].exam[parentIndex].open = !this.newPaperData[typeIndex].exam[parentIndex].open
+                    } else {
+                        this.newPaperData[typeIndex].exam[parentIndex].children[childIndex].open = !this.newPaperData[typeIndex].exam[parentIndex].children[childIndex].open
+                    }
+                    this.$forceUpdate()
                 }
-                this.$forceUpdate()
             },
             openExam(index) {
                 this.preIndex = index

+ 34 - 34
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/PaperView.vue

@@ -12,46 +12,46 @@
             </div> -->
             <Loading v-show="isLoad" bgColor="rgba(0, 0, 0, 0.3)"></Loading>
             <EventBasicInfo :info="nowActive" :paper="paperData" />
+            <!--多學科試卷-->
+            <div v-if="paperData.length ">
+                <div class="item-box" style="margin-bottom: 25px">
+                    <div v-for="(item, index) in paperData"
+                        :key="index"
+                        style="display: inline-flex;"
+                        @click="opentestWithSubject(item, index)"
+                    >
+                        <div v-if="getItemTitle.owner === 'school'" :class="['paper-item-school', index === activeIndex ? 'paper-choose-school' : '']">
+                            <span>{{ item.subject.name }}</span>
+                            <span>
+                                {{ item.subject.name }}{{ $t('studentWeb.exam.isSubject') }}
+                                <Icon type="md-checkmark-circle-outline"
+                                    v-if="item.stuAns != undefined && item.stuAns.length != 0"
+                                    color="#00ad6c"
+                                    size="18"
+                                    style="margin-left: 5px;"
+                                />
+                            </span>
+                        </div>
+                        <div v-else :class="['paper-item', index === activeIndex ? 'paper-choose' : '']">
+                            <svg-icon icon-class="test" class="title-icon" />
+                            <span style="margin-top:5px">{{ item.subject.name }}</span>
+                            <div v-show="item.stuAns != undefined && item.stuAns.length != 0">
+                                <div style="margin-left: 10px; margin-top: 5px; margin-right: 10px;">
+                                <!-- <div :class="{ unfinished: item.stuAns.length === 0 ,finished: item.stuAns.length != 0 }"> -->
+                                    <Icon type="md-checkmark-circle-outline" size="23" />
+                                    <!-- <Icon style="margin-top: -10px; margin-left: -8px;" type="ios-checkmark" size="36" /> -->
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
             <Tabs :value="selectTab" v-if="paperData.length">
                 <!-- 评测内容 -->
                 <TabPane :label='$t("studentWeb.exam.examData")' name="test">
                     <!-- <div class="title-rect-group">
                         <h2 class="title-rect-name">{{$t("studentWeb.exam.examLink")}}</h2>
                     </div> -->
-                    <!--多學科試卷-->
-                    <div v-if="paperData.length ">
-                        <div class="item-box" style="margin-top: 25px">
-                            <div v-for="(item, index) in paperData"
-                                 :key="index"
-                                 style="display: inline-flex;"
-                                 @click="opentestWithSubject(item, index)"
-                            >
-                                <div v-if="getItemTitle.owner === 'school'" :class="['paper-item-school', index === activeIndex ? 'paper-choose-school' : '']">
-                                    <span>{{ item.subject.name }}</span>
-                                    <span>
-                                        {{ item.subject.name }}{{ $t('studentWeb.exam.isSubject') }}
-                                        <Icon type="md-checkmark-circle-outline"
-                                            v-if="item.stuAns != undefined && item.stuAns.length != 0"
-                                            color="#00ad6c"
-                                            size="18"
-                                            style="margin-left: 5px;"
-                                        />
-                                    </span>
-                                </div>
-                                <div v-else :class="['paper-item', index === activeIndex ? 'paper-choose' : '']">
-                                    <svg-icon icon-class="test" class="title-icon" />
-                                    <span style="margin-top:5px">{{ item.subject.name }}</span>
-                                    <div v-show="item.stuAns != undefined && item.stuAns.length != 0">
-                                        <div style="margin-left: 10px; margin-top: 5px; margin-right: 10px;">
-                                        <!-- <div :class="{ unfinished: item.stuAns.length === 0 ,finished: item.stuAns.length != 0 }"> -->
-                                            <Icon type="md-checkmark-circle-outline" size="23" />
-                                            <!-- <Icon style="margin-top: -10px; margin-left: -8px;" type="ios-checkmark" size="36" /> -->
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
                     <div class="title-rect-group">
                         <div v-if="chooseData.subject !== undefined">
                             <!-- <div class="title-rect" /> -->

+ 1 - 1
TEAMModelOS/Controllers/Third/DingDingController.cs

@@ -141,7 +141,7 @@ namespace TEAMModelOS.Controllers.Third
 
                 if (byunionidResponse.IsError  || byunionidResponse.Errcode == 60121)
                 {
-                    var table = _azureStorage.GetCloudTableClient().GetTableReference("DDUserInfo");
+                    var table = _azureStorage.GetCloudTableClient().GetTableReference("BIDDUserInfo");
                     ddusers = await table.FindListByDict<DingDingUserInfo>(new Dictionary<string, object>() { { "RowKey", $"{Unionid}" }, { "PartitionKey", "DDUserInfo-IES5" } });
                     //是企业外部用户 
                     return Ok(new { state = 0, message = byunionidResponse.Errmsg });