Prechádzať zdrojové kódy

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

CrazyIter_Bin 3 rokov pred
rodič
commit
62a3609d28

+ 5 - 1
TEAMModelBI/ClientApp/src/api/index.js

@@ -141,12 +141,16 @@ export default {
     getSpacetype(data) {
         return post('/homestatis/get-datatypestics', data)
     },
-
+    //各个模组的数据情况
+    getModuledata(data) {
+        return post('/product/get-allcount', data)
+    },
     //强制刷新人员名单(从DD服务器拉取)  ***
     getStaffList(data) {
         return post('/tabledd/get-dingdingusers', data)
     },
 
+
     //微能力点编辑
     //tree增加子节点 ***
     addChild(data) {

+ 3 - 1
TEAMModelBI/ClientApp/src/components/AbilityTree.vue

@@ -110,6 +110,8 @@
                 </div>
             </el-upload>
             <div class="upload-submitbtn">
+                <el-table v-loading="uploadBtn" empty-text="   " style="width: 100%" v-show="uploadBtn">
+                </el-table>
                 <el-button type="primary" @click="confirmUpload(),uploadBtn=true" :loading="uploadBtn">确认上传</el-button>
             </div>
         </el-dialog>
@@ -333,7 +335,7 @@ export default {
         function uploadResource(val) {
             console.log(val, '触发了')
             uploadFileData.value = val.raw
-            console.log(val.row.slice(0, 1000))
+            // console.log(val.row.slice(0, 1000))
             // fileList.value.push({ name: val.raw.name, size: val.raw.size, type: val.raw.type })
             // fileList.value.push(val)
             // return true

+ 22 - 13
TEAMModelBI/ClientApp/src/components/echarts/customBar.vue

@@ -2,7 +2,7 @@
     <div ref="myEcharts" :style="{ height, width }"></div>
 </template>
 <script>
-import { ref, onMounted } from 'vue'
+import { ref, onMounted, watch, nextTick } from 'vue'
 import * as echarts from 'echarts'
 export default {
     name: 'baseBar',
@@ -29,8 +29,17 @@ export default {
         const myEcharts = ref(null)
         const chart = new InitChart(props, myEcharts)
         onMounted(() => {
-            chart.init()
+            chart.init(props.mapData)
         })
+        watch(
+            props,
+            (nweProps) => {
+                nextTick(() => {
+                    chart.init(props.mapData)
+                })
+            },
+            { immediate: true, deep: true }
+        )
         return {
             myEcharts,
         }
@@ -45,17 +54,18 @@ class InitChart {
         }
     }
 
-    init() {
+    init(datas) {
+        console.log(datas, '调用得到的数据')
         this.state.chart && this.destory()
         this.state.chart = echarts.init(this.myEcharts.value)
-        const data = [15, 20, 10, 80, 15, 8]
-        const titlename = ['本月订单占比', '本月销售占比', '试用总量', '已处理', '申请中', '未处理']
-        const valdata = [702, 350, 610, 793, 664, 20]
+        const data = datas.data
+        const titlename = datas.legendData
+        const valdata = datas.data
         const myColor = ['#1089E7', '#F57474', '#56D0E3', '#F8B448', '#8B78F6', '#6c92E5']
 
         this.state.chart.setOption({
             title: {
-                text: '本月销售及订单处理',
+                text: '模组使用',
                 top: '2%',
                 x: 'center',
                 y: 'top',
@@ -93,7 +103,6 @@ class InitChart {
                     },
                     axisLabel: {
                         color: '#fff',
-
                         rich: {
                             lg: {
                                 backgroundColor: '#339911',
@@ -108,7 +117,7 @@ class InitChart {
                     },
                 },
                 {
-                    show: true,
+                    show: false,
                     inverse: true,
                     data: valdata,
                     axisLabel: {
@@ -126,7 +135,7 @@ class InitChart {
                     yAxisIndex: 0,
                     data: data,
                     barCategoryGap: 50,
-                    barWidth: 10,
+                    barWidth: 16,
                     itemStyle: {
                         normal: {
                             barBorderRadius: 20,
@@ -140,7 +149,7 @@ class InitChart {
                         normal: {
                             show: true,
                             position: 'inside',
-                            formatter: '{c}%',
+                            formatter: '{c}',
                         },
                     },
                 },
@@ -149,8 +158,8 @@ class InitChart {
                     type: 'bar',
                     yAxisIndex: 1,
                     barCategoryGap: 50,
-                    data: [100, 100, 100, 100, 100],
-                    barWidth: 15,
+                    data: data,
+                    barWidth: 16,
                     itemStyle: {
                         normal: {
                             color: 'none',

+ 27 - 1
TEAMModelBI/ClientApp/src/view/index/dashboard.vue

@@ -56,7 +56,7 @@
             <div class="column">
                 <div class="panel bar1">
                     <div class="chart">
-                        <CustomBar></CustomBar>
+                        <CustomBar :mapData="modelsData"></CustomBar>
                     </div>
                     <div class="panel-footer"></div>
                 </div>
@@ -90,6 +90,7 @@ import '../../until/china'
 import { getCurrentInstance, ref } from 'vue'
 import { useStore } from 'vuex'
 import router from '@/router/index.js'
+import { ElMessage } from 'element-plus'
 export default {
     components: {
         BaseBar,
@@ -139,6 +140,11 @@ export default {
             { name: '学生总人数', value: '' },
             { name: '空间总大小(GB)', value: '' },
         ])
+        //各个模组数据
+        let modelsData = ref({
+            legendData: [],
+            data: [],
+        })
         //处理url多余的参数内容
         let headerHost = window.location.href.split('/login?code')
         let zc = window.location.href.split('state=STATE')
@@ -417,10 +423,28 @@ export default {
         function skipbtn() {
             router.push({ path: '/home/teach' })
         }
+        //获取各个模组数据
+        function modulesdata() {
+            proxy.$api
+                .getModuledata({})
+                .then((res) => {
+                    console.log(res, '模组数据')
+                    res.state === 200 && res.productStatis.length
+                        ? res.productStatis.forEach((item) => {
+                              modelsData.value.legendData.push(item.prodName), modelsData.value.data.push(item.count)
+                          })
+                        : ElMessage.error('API返回数据异常')
+                    console.log(modelsData.value)
+                })
+                .catch((res) => {
+                    ElMessage.error('API访问异常')
+                })
+        }
         handleBarData()
         getEachTotal()
         getMapdata()
         getSpeacetypes()
+        modulesdata()
         return {
             proxy,
             store,
@@ -439,6 +463,8 @@ export default {
             skipbtn,
             getSpeacetypes,
             spaceTypsdata,
+            modulesdata,
+            modelsData,
         }
     },
 }

+ 13 - 6
TEAMModelBI/ClientApp/src/view/teachermanage/areamanage.vue

@@ -335,12 +335,19 @@ export default {
                 tmdId: user.tmdId,
                 tmdName: user.tmdName,
             }
-            proxy.$api.changeCutstandard(datas).then((res) => {
-                console.log(res, '切换返回')
-                res.state === 200 ? ElMessage({ type: 'success', message: '操作成功' }) : ElMessage({ type: 'error', message: '操作失败' })
-                loadingForm.value.cutAbility = false
-                CutNotarize.value = false
-            })
+            proxy.$api
+                .changeCutstandard(datas)
+                .then((res) => {
+                    console.log(res, '切换返回')
+                    res.state === 200 ? ElMessage({ type: 'success', message: '操作成功' }) : ElMessage({ type: 'error', message: '操作失败' })
+                    loadingForm.value.cutAbility = false
+                    CutNotarize.value = false
+                })
+                .catch((res) => {
+                    ElMessage({ type: 'error', message: '操作失败' })
+                    loadingForm.value.cutAbility = false
+                    CutNotarize.value = false
+                })
         }
         //提示用户谨慎操作,确认后修改微能力点方案
         function confirm() {

+ 76 - 48
TEAMModelBI/Controllers/BISchool/BatchSchoolController.cs

@@ -566,13 +566,8 @@ namespace TEAMModelBI.Controllers.BISchool
                 List<string> assistId = _assistId.ToObject<List<string>>();
                 List<string> periodS = period.ToObject<List<string>>();
 
-                SchoolAssist schoolAssist = new();
                 Dictionary<string, List<Dictionary<string, string>>> haveSchoolManger = new Dictionary<string, List<Dictionary<string, string>>>();
 
-                //操作记录
-                string blobOrTable = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
-
-
                 var cosmosClient = _azureCosmos.GetCosmosClient();
                 School tempShool = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>($"{_schoolId}", new PartitionKey("Base"));
                 if (tempShool != null)
@@ -590,6 +585,30 @@ namespace TEAMModelBI.Controllers.BISchool
                     //修改学校
                     await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<School>(tempShool, tempShool.id, new PartitionKey("Base"));
 
+                    string sqlTxt = $"SELECT value(c) From c WHERE ARRAY_CONTAINS(c.roles,'assist',true)";
+
+                    List<SchoolTeacher> schoolTeachers = new List<SchoolTeacher>();
+
+                    await foreach (var item in cosmosClient.GetContainer("TEAMModelOS", "School").GetItemQueryIterator<SchoolTeacher>(queryText: sqlTxt, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Teacher-{tempShool.id}") }))
+                    {
+                        if (!assistId.Contains(item.id)) 
+                        {
+                            if (item.roles.Contains("assist"))
+                            {
+                                item.roles.Remove("assist");
+                                if (item.roles.Count > 0)
+                                {
+                                    var tem = await cosmosClient.GetContainer("TEAMModelOS", "School").ReplaceItemAsync<SchoolTeacher>(item, item.id, new PartitionKey(item.code));
+                                }
+                                else
+                                {
+                                    var tems = await cosmosClient.GetContainer("TEAMModelOS", "School").DeleteItemAsync<SchoolTeacher>(item.id, new PartitionKey(item.code));
+                                }
+                            }
+                        }
+                        //bool temp = item.roles.Contains("assist");                        
+                    }
+
                     if (assistId.Count > 0)
                     {
                         foreach (var itemTeacher in assistId)
@@ -601,7 +620,15 @@ namespace TEAMModelBI.Controllers.BISchool
                                 if (haveTeacher != null)
                                 {
                                     //查询该教师是否存在该校
-                                    SchoolTeacher schoolTeacher = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<SchoolTeacher>($"{itemTeacher}", new PartitionKey($"Teacher-{tempShool.id}"));
+                                    SchoolTeacher schoolTeacher = null;
+                                    try
+                                    {
+                                        schoolTeacher = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<SchoolTeacher>($"{itemTeacher}", new PartitionKey($"Teacher-{tempShool.id}"));
+                                    }
+                                    catch
+                                    {
+                                    }
+
                                     if (schoolTeacher != null)
                                     {
                                         if (!schoolTeacher.roles.Contains("assist"))
@@ -626,7 +653,7 @@ namespace TEAMModelBI.Controllers.BISchool
                                             createTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
                                         };
                                         //添加学校顾问
-                                        await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<SchoolTeacher>(schoolTeacher, new PartitionKey($"Teacher-{tempShool.id}"));
+                                        await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<SchoolTeacher>(addSchoolTeacher, new PartitionKey($"Teacher-{tempShool.id}"));
                                     }
                                 }
                                 else
@@ -664,53 +691,54 @@ namespace TEAMModelBI.Controllers.BISchool
                         }
                     }
 
-                    schoolAssist.id = tempShool.id;
-                    schoolAssist.code = tempShool.code;
-                    schoolAssist.pk = tempShool.pk;
-                    schoolAssist.ttl = tempShool.ttl;
-                    schoolAssist.schoolCode = tempShool.schoolCode;
-                    schoolAssist.name = tempShool.name;
-                    schoolAssist.period = tempShool.period;
-                    schoolAssist.campuses = tempShool.campuses;
-                    schoolAssist.region = tempShool.region;
-                    schoolAssist.province = tempShool.province;
-                    schoolAssist.city = tempShool.city;
-                    schoolAssist.dist = tempShool.dist;
-                    schoolAssist.areaId = tempShool.areaId;
-                    schoolAssist.size = tempShool.size;
-                    schoolAssist.address = tempShool.address;
-                    schoolAssist.picture = tempShool.picture;
-                    schoolAssist.timeZone = tempShool.timeZone;
-                    schoolAssist.type = tempShool.type;
-                    schoolAssist.standard = tempShool.standard;
-                    schoolAssist.hpappraise = tempShool.hpappraise;
-
-                    List<Assist> assists = new List<Assist>();
-                    //查询学校的顾问
-                    string managerSql = $"SELECT DISTINCT REPLACE(c.code, 'Teacher-', '') AS schoolId, c.id, c.name FROM c WHERE ARRAY_CONTAINS(c.roles, 'assist', true) AND c.pk = 'Teacher' AND c.status = 'join' AND c.code = 'Teacher-{tempShool.id}'";
-                    var cosmosClent = _azureCosmos.GetCosmosClient();
-                    await foreach (var item in cosmosClent.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryStreamIterator(queryText: managerSql, requestOptions: new QueryRequestOptions() { }))
-                    {
-                        using var json = await JsonDocument.ParseAsync(item.ContentStream);
-                        foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
-                        {
-                            Assist assist = new Assist
-                            {
-                                tmdId = obj.GetProperty("id").GetString(),
-                                tmdName = obj.GetProperty("name").GetString()
-                            };
-                            assists.Add(assist);
-                        }
-                    }
-
-                    schoolAssist.assists = assists;
+                    //SchoolAssist schoolAssist = new();
+                    //schoolAssist.id = tempShool.id;
+                    //schoolAssist.code = tempShool.code;
+                    //schoolAssist.pk = tempShool.pk;
+                    //schoolAssist.ttl = tempShool.ttl;
+                    //schoolAssist.schoolCode = tempShool.schoolCode;
+                    //schoolAssist.name = tempShool.name;
+                    //schoolAssist.period = tempShool.period;
+                    //schoolAssist.campuses = tempShool.campuses;
+                    //schoolAssist.region = tempShool.region;
+                    //schoolAssist.province = tempShool.province;
+                    //schoolAssist.city = tempShool.city;
+                    //schoolAssist.dist = tempShool.dist;
+                    //schoolAssist.areaId = tempShool.areaId;
+                    //schoolAssist.size = tempShool.size;
+                    //schoolAssist.address = tempShool.address;
+                    //schoolAssist.picture = tempShool.picture;
+                    //schoolAssist.timeZone = tempShool.timeZone;
+                    //schoolAssist.type = tempShool.type;
+                    //schoolAssist.standard = tempShool.standard;
+                    //schoolAssist.hpappraise = tempShool.hpappraise;
+
+                    //List<Assist> assists = new List<Assist>();
+                    ////查询学校的顾问
+                    //string managerSql = $"SELECT DISTINCT REPLACE(c.code, 'Teacher-', '') AS schoolId, c.id, c.name FROM c WHERE ARRAY_CONTAINS(c.roles, 'assist', true) AND c.pk = 'Teacher' AND c.status = 'join' AND c.code = 'Teacher-{tempShool.id}'";
+                    //var cosmosClent = _azureCosmos.GetCosmosClient();
+                    //await foreach (var item in cosmosClent.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryStreamIterator(queryText: managerSql, requestOptions: new QueryRequestOptions() { }))
+                    //{
+                    //    using var json = await JsonDocument.ParseAsync(item.ContentStream);
+                    //    foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
+                    //    {
+                    //        Assist assist = new Assist
+                    //        {
+                    //            tmdId = obj.GetProperty("id").GetString(),
+                    //            tmdName = obj.GetProperty("name").GetString()
+                    //        };
+                    //        assists.Add(assist);
+                    //    }
+                    //}
+
+                    //schoolAssist.assists = assists;
                 }
 
                 //保存操作记录
                 await _azureStorage.SaveLog("TeacherRoles-update", $"{_tmdName}【{_tmdId}】修改学校功能,修改的学校:{_schoolId},{string.Join("|", periodS.ToArray())},{picture},{size},{string.Join("|", assistId.ToArray())}", _dingDing, httpContext: HttpContext);
 
 
-                return Ok(new { state = 200, schoolAssist });
+                return Ok(new { state = 200 });
             }
             catch (Exception ex)
             {

+ 3 - 3
TEAMModelOS.SDK/DI/AzureStorage/AzureStorageBlobExtensions.cs

@@ -299,11 +299,11 @@ namespace TEAMModelOS.SDK.DI
                 log.scope = scope;
                 host = !string.IsNullOrWhiteSpace($"{host}") ? $"{host}" : option?.Location != null ? $"{host}" : "Default";
                 log.url =$"{host}{httpContext?.Request.Path}" ;
-                if (!string.IsNullOrWhiteSpace(msg) && msg.Length > 100)
+                if (!string.IsNullOrWhiteSpace(msg) && msg.Length > 150)
                 {
                     log.saveMod = 1;
-                   
-                    _ = azureStorage.UploadFileByContainer("0-public", log.ToJsonString(), "optlog", $"{log.RowKey}-{log.PartitionKey}.json");
+                    log.jsonfile = $"/0-public/optlog/{log.RowKey}-{log.PartitionKey}.json";
+                    await azureStorage.UploadFileByContainer("0-public", log.ToJsonString(), "optlog", $"{log.RowKey}-{log.PartitionKey}.json");
                     log.msg = null;
                     await azureStorage.SaveOrUpdate<OptLog>(log);
                 }

+ 5 - 0
TEAMModelOS.SDK/Models/Table/OptLog.cs

@@ -29,6 +29,11 @@ namespace TEAMModelOS.SDK.Models.Table
         /// </summary>
         public string msg { get; set; }
 
+        /// <summary>
+        /// json文件地址
+        /// </summary>
+        public string jsonfile { get; set; }
+
         /// <summary>
         /// 日志类型: school-update school-del    名词-动词组合方式
         /// </summary>

+ 2 - 2
TEAMModelOS/ClientApp/public/index.html

@@ -29,7 +29,7 @@
 			};
 		</script>
 		<script type="text/javascript" id="MathJax-script" async
-			src="https://teammodelstorage.blob.core.chinacloudapi.cn/0-public/js/tex-mml-svg.js">
+			src="teammodelos.blob.core.chinacloudapi.cn/0-public/js/tex-mml-svg.js">
 		</script>
 		<script>
 			let cloudSetting = localStorage.getItem('cloudSetting')
@@ -43,7 +43,7 @@
 			// 判断是否为国际站
 			let isGlobalSite = window.location.origin === 'https://www.teammodel.net'
 			let blobHost = isGlobalSite ? 'https://teammodel.blob.core.windows.net' :
-				'https://teammodelstorage.blob.core.chinacloudapi.cn'
+				'https://teammodelos.blob.core.chinacloudapi.cn'
 			function LoadJS(id, fileUrl) {
 				var scriptTag = document.getElementById(id);
 				var oHead = document.getElementsByTagName('HEAD').item(0);