Selaa lähdekoodia

Merge branch 'cmy/develop-bi' into develop

chenmy 2 vuotta sitten
vanhempi
commit
ea717e0388

+ 1 - 1
TEAMModelBI/ClientApp/public/index.html

@@ -12,7 +12,7 @@
     </title>
 </head>
 <script src="https://g.alicdn.com/dingding/dinglogin/0.0.5/ddLogin.js"></script>
-<script src="https://at.alicdn.com/t/c/font_2934132_4vipfasewod.js"></script>
+<script src="https://at.alicdn.com/t/c/font_2934132_hjp4n73l6ug.js"></script>
 <script src="../src/access/iconfont.js"></script>
 
 <body>

+ 2 - 2
TEAMModelBI/ClientApp/src/until/http.js

@@ -6,6 +6,7 @@ axios.interceptors.request.use(
     config => {
         // const token = getCookie('名称');
         config.data = JSON.stringify(config.data);
+        console.log(config, '访问内容')
         if (config.url.indexOf('biabilitymgmt') != -1 ||
             config.url.indexOf('biabilitytask') != -1 ||
             config.url.indexOf('area') != -1 ||
@@ -18,8 +19,7 @@ axios.interceptors.request.use(
             config.url.indexOf('biservers') != -1 ||
             config.url.indexOf('business') != -1 ||
             config.url.indexOf('bizconfig') != -1 ||
-            config.url.indexOf('paper')
-        ) {
+            config.url.indexOf('paper') != -1) {
             config.headers = {
                 'Content-Type': 'application/json',
                 'x-auth-authtoken': JSON.parse(localStorage.id_token),

+ 26 - 5
TEAMModelBI/ClientApp/src/view/created/created.vue

@@ -671,6 +671,7 @@ export default {
       state: false,
       pass: false,
     })
+    let timer = ref('')
     onMounted(() => {
       formArea.value = JSON.parse(JSON.stringify(areaData))
       console.log(formArea, '初步的数据')
@@ -1368,7 +1369,12 @@ export default {
     //搜索学校(bb数据)
     function verifyInbb () {
       searchLoading.value = true
-      let data = { regionId: "CN" }
+      let verifycn = new RegExp("[\u4E00-\u9FA5]");
+      let verifycode = new RegExp("[A-Za-z]");
+      let state = verifycn.test(searchSchoolvalue.value) ? 'name' : verifycode.test(searchSchoolvalue.value) ? 'code' : ''
+      // let data = { regionId: "CN" }
+      let data = state === 'name' ? { regionId: "CN", name: searchSchoolvalue.value, nameFuzzy: true } : state === 'code' ? { regionId: "CN", shortCode: searchSchoolvalue.value, shortCodeFuzzy: false } : { regionId: "CN" }
+      console.log(data, '查询提交数据')
       proxy.$api.verifyDatainbb(data).then((res) => {
         console.log(res, '成功返回')
         res.length !== 0 ? resultschool.value = res : ''
@@ -1662,6 +1668,12 @@ export default {
         ElMessage.error('API异常,数据回报失败')
       })
     }
+    function debounce (fn, wait) {
+      if (timer.value !== null) {
+        clearTimeout(timer.value)
+      }
+      timer.value = setTimeout(fn, wait)
+    }
     getAllschool()
     getCapacitys()
     let a = isRepeat()
@@ -1672,7 +1684,10 @@ export default {
     watch(searchSchoolvalue, (newvalues) => {
       console.log(newvalues, '监听')
       // newvalues && resultschool.value.length ===0 ? resultschool.value.push({name: '成都市银都紫藤小学',time: '2019-08-15',ord:'王区管' }):''
-      newvalues && resultschool.value.length === 0 ? verifyInbb() : ''
+      //  newvalues && resultschool.value.length === 0 ? verifyInbb() : ''
+      // if (newvalues.trim().length !== 0) {
+      debounce(verifyInbb, 500)
+      // }
     })
     return {
       model,
@@ -1744,7 +1759,8 @@ export default {
       batchSuccessback,
       codeShow,
       backstatus,
-      phaselist
+      phaselist,
+      timer
     }
   },
 }
@@ -2101,14 +2117,15 @@ export default {
   width: 100%;
   height: 100%;
   background-color: #ececec;
-  border: 1px solid #ececec;
+  border: 2px solid #ececec;
   border-radius: 0px 0px 3px 3px;
-  overflow: auto;
+  /* overflow: auto; */
 }
 .noisdata {
   width: 100%;
   height: 100%;
   position: relative;
+  z-index: 999;
 }
 .notdatas {
   width: 100%;
@@ -2254,6 +2271,10 @@ export default {
 .bringbox button {
   padding: 5px 8px;
 }
+.result-data .el-table--fit {
+  z-index: 999;
+}
+
 .radios-check .el-checkbox {
   margin-right: 20px;
 }

+ 40 - 2
TEAMModelBI/ClientApp/src/view/participation/copy.vue

@@ -62,6 +62,7 @@
 <script setup>
 import { ref, getCurrentInstance, defineProps, watch, defineExpose, onMounted, } from 'vue'
 import { ElMessageBox, ElMessage } from 'element-plus'
+import jwt_decode from 'jwt-decode'
 import { Document } from '@element-plus/icons-vue'
 const props = defineProps({
   paperdata: String,
@@ -80,17 +81,20 @@ let targetData = ref([
 ])
 let areaList = ref([])
 const propsdata = { value: 'id', label: 'name', children: 'child' }
+const initCopy = jwt_decode(JSON.parse(localStorage.getItem('id_token')))
+initCopy.roles.includes('admin') || initCopy.roles.includes('leader') ? initdata() : getschoolList()
 async function initdata () {
   drawerloading.value = true
   await getArealist()
   proxy.$api.getschoolIntegration({}).then((res) => {
     console.log(res, '所有学校列表')
+    console.log(proxy.$parent.paperdata, '是否是当前学校的数据')
     if (res.state === 200) {
       areaList.value.forEach((item) => {
         let areaId = item.id
         item.child = []
         for (let i of res.scBriefs) {
-          i.areaId === areaId ? item.child.push(i) : ''
+          i.id !== proxy.$parent.paperdata.schoolcode && i.id !== "hbcn" ? i.areaId === areaId ? item.child.push(i) : '' : ''
         }
       })
       targetData.value[0].listdata = areaList.value
@@ -106,6 +110,40 @@ async function getArealist () {
     ElMessage.error('获取学区学校数据失败,API异常')
   })
 }
+//获取关联的学校列表
+async function getschoolList () {
+  drawerloading.value = true
+  await getArealist()
+  let user = jwt_decode(JSON.parse(localStorage.getItem('id_token')))
+  let roleA = ''
+  if (user.roles.length > 1) {
+    user.roles.includes('admin') ? roleA = 'admin' :
+      user.roles.includes('leader') ? roleA = 'leader' :
+        user.roles.includes('assist') ? roleA = 'assist' :
+          user.roles.includes('sales') ? roleA = 'sales' :
+            user.roles.includes('rdc') ? roleA = 'rdc' : ''
+  } else {
+    roleA = user.roles[0]
+  }
+  let data = roleA === 'admin' || roleA === 'leader' ? {} : { tmdId: JSON.parse(localStorage.getItem('userData')).tmdId, role: roleA }
+  let notAreaL = { id: 'not', name: '未归区学校', child: [] }
+  proxy.$api.getSchooldata(data).then((res) => {
+    if (res.state === 200) {
+      areaList.value.forEach((item) => {
+        let areaId = item.id
+        item.child = []
+        for (let i of res.schoolAssists) {
+          i.id !== proxy.$parent.paperdata.schoolcode && i.id !== "hbcn" ? i.areaId === areaId ? item.child.push(i) : '' : ''
+        }
+      })
+      notAreaL.child = res.schoolAssists.filter(i => i.areaId === "")
+      areaList.value.push(notAreaL)
+      let disposedata = areaList.value.filter((item) => { return item.child.length > 0 })
+      targetData.value[0].listdata = disposedata
+    }
+    drawerloading.value = false
+  })
+}
 //处理学校选择
 function cascaderchange (val) {
   console.log(val, '123123')
@@ -170,7 +208,7 @@ function eliminate () {
   })
   drawer.value = false
 }
-initdata()
+// initdata()
 defineExpose({ drawer });
 </script>
 <style scoped>

+ 3 - 0
TEAMModelBI/ClientApp/src/view/participation/examination.vue

@@ -271,12 +271,15 @@ export default {
         for (let p of nowperiod.value) {
           p.id === value ? (filters.value.subject.option = p.subjects, filters.value.grade.option = ([...['全部'], ...p.grades]), pahseids = value, subjects = p.subjects[0].id) : ''
         }
+        clickNum.value.subject = 0
+        clickNum.value.grade = 0
       } else if (state === 'subject') {
         clickNum.value.subject = index
         let data = nowperiod.value[clickNum.value.pahse]
         filters.value.grade.option = []
         filters.value.grade.option = ([...['全部'], ...data.grades])
         subjects = value; pahseids = nowperiod.value[clickNum.value.pahse].id
+        clickNum.value.grade = 0
       } else if (state === 'grade') {
         // clickNum.value.grade = value !== '全部' ? Number(index) + 1 : index
         clickNum.value.grade = index

+ 25 - 13
TEAMModelBI/ClientApp/src/view/participation/paper.vue

@@ -27,7 +27,7 @@
               {{unfoldAll.text}}
             </el-button>
           </div>
-          <div>
+          <div v-if="userShow.roles.includes('admin') || userShow.roles.includes('assist')">
             <el-button type="primary" size="small" @click="copyPapers">
               <el-icon>
                 <DocumentCopy />
@@ -97,7 +97,7 @@
             </p>
             <p>
               <span class="spreadbox-title">【答案】</span>
-              <span v-if="checkHtml(item.exercise.answer)" v-html="item.exercise.answer" class="spreadbox-title-contents"></span>
+              <span v-if="checkHtml(item.exercise.answer)  " v-html="item.exercise.answer" class="spreadbox-title-contents"></span>
               <span v-else v-for="answer in item.exercise.answer">{{answer ? answer:'暂无'}}</span>
             </p>
             <p>
@@ -108,13 +108,15 @@
             <p>
               <span class="spreadbox-title">【知识点】</span>
               <span v-if="checkHtml(item.exercise.knowledge)" v-html="item.exercise.knowledge" :class="[item.exercise.knowledge ? 'knowledge':'']"></span>
-              <span :class="[item.exercise.knowledge ? 'knowledge':'']" v-for="itemK in item.exercise.knowledge">
+              <span v-else-if="!item.exercise.hasOwnProperty('knowledge')">暂无</span>
+              <span v-else :class="[item.exercise.knowledge ? 'knowledge':'']" v-for="itemK in item.exercise.knowledge">
                 {{itemK ? itemK:'暂无'}}
               </span>
+              <!-- <span v-else-if="item.exercise.knowledge.length ===0">暂无</span> -->
             </p>
             <p>
               <span class="spreadbox-title">【认知层次】</span>
-              <span>应用</span>
+              <span>暂无</span>
             </p>
             <p>
               <span class="spreadbox-title">【补救资源】</span>
@@ -177,14 +179,16 @@
               </p>
               <p>
                 <span class="spreadbox-title">【知识点】</span>
-                <span v-if="checkHtml(item.exercise.knowledge)" v-html="item.exercise.knowledge" :class="[item.exercise.knowledge ? 'knowledge':'']"></span>
-                <span :class="[item.exercise.knowledge ? 'knowledge':'']" v-for="itemK in item.exercise.knowledge">
-                  {{itemK ? itemK:'暂无'}}
+                <span v-if="checkHtml(item.exercise.knowledge) " v-html="item.exercise.knowledge" :class="[item.exercise.knowledge ? 'knowledge':'']"></span>
+                <span v-else-if="!item.exercise.hasOwnProperty('knowledge')">暂无</span>
+                <span v-else :class="[item.exercise.knowledge ? 'knowledge':'']" v-for="itemK in item.exercise.knowledge">
+                  {{itemK || itemK}}'暂无'
                 </span>
+                <!-- <span v-else-if="item.exercise.knowledge.length ===0">暂无</span> -->
               </p>
               <p>
                 <span class="spreadbox-title">【认知层次】</span>
-                <span>应用</span>
+                <span>暂无</span>
               </p>
               <p>
                 <span class="spreadbox-title">【补救资源】</span>
@@ -259,14 +263,15 @@
                     <p>
                       <span class="spreadbox-title">【知识点】</span>
                       <span v-if="checkHtml(itemC.exercise.knowledge)" v-html="itemC.exercise.knowledge" :class="[itemC.exercise.knowledge ? 'knowledge':'']"></span>
-                      <span v-if="checkHtml(itemC.exercise.knowledge)" v-html="itemC.exercise.knowledge" :class="[itemC.exercise.knowledge ? 'knowledge':'']"></span>
-                      <span :class="[itemC.exercise.knowledge ? 'knowledge':'']" v-for="itemK in itemC.exercise.knowledge">
-                        {{itemK ? itemK:'暂无'}}
+                      <span v-else-if="!itemC.exercise.hasOwnProperty('knowledge') || itemC.exercise.knowledge.length ===0">暂无</span>
+                      <span v-else-if="itemC.exercise.knowledge.length >0" :class="[itemC.exercise.knowledge ? 'knowledge':'']" v-for="(itemK,indexK) in itemC.exercise.knowledge" :key="indexK">
+                        {{itemK}}
                       </span>
+                      <span v-else-if="itemC.exercise.knowledge.length ===0">暂无</span>
                     </p>
                     <p>
                       <span class="spreadbox-title">【认知层次】</span>
-                      <span>应用</span>
+                      <span>暂无</span>
                     </p>
                     <p>
                       <span class="spreadbox-title">【补救资源】</span>
@@ -305,6 +310,7 @@ import { ref, watch, getCurrentInstance, onMounted } from 'vue'
 import { useStore } from 'vuex'
 import { DocumentCopy, Back } from '@element-plus/icons-vue'
 import Copy from './copy.vue'
+import jwt_decode from 'jwt-decode'
 export default ({
   props: {
     paperInfo: {
@@ -316,9 +322,13 @@ export default ({
     DocumentCopy, Back, Copy
   },
   setup (props, context) {
+    const { proxy } = getCurrentInstance()
     const store = useStore()
     let paper = ref("若CE=1,EB=3,求⊙O的半径;")
     let backImg = require('@/assets/img/backtop.png')
+    let PowerShow = proxy.$access.identifyPosition(JSON.parse(localStorage.getItem('id_token')))
+    let userShow = jwt_decode(JSON.parse(localStorage.getItem('id_token')))
+    console.log(PowerShow, userShow.roles, userShow.roles.includes('admin'), '身份')
     let paperdata = ref({
       totalnum: 0,
       difficulty: 0,
@@ -548,7 +558,9 @@ export default ({
       affiliateUnfold,
       copypaper,
       copyPapers,
-      copyiconLoding
+      copyiconLoding,
+      userShow,
+      PowerShow
     }
   },
 })

+ 24 - 1
TEAMModelBI/ClientApp/src/view/teachermanage/manage.vue

@@ -37,7 +37,16 @@
   </div>
   <div class="manage-table">
     <el-table :data="tableData" style="width: 100%" height="85vh" v-loading="loading" element-loading-text="数据加载中..." class="customer-table" :empty-text='$t(`personnelManagement.personnelTable.nodatas`)'>
-      <el-table-column prop="id" :label="$t(`personnelManagement.personnelTable.serialnum`)" sortable align="center" />
+      <el-table-column prop="id" :label="$t(`personnelManagement.personnelTable.serialnum`)" sortable align="center" class="tables-numstate" />
+      <el-table-column width="40">
+        <template #default="scope">
+          <div class="tables-state" title="更新同步该人员信息" v-show="scope.row.tmdMobile !== scope.row.mobile && (scope.row.tmdMobile && scope.row.mobile)">
+            <svg class="areaaddschool" aria-hidden="true">
+              <use xlink:href="#icon-NMStubiao-1"></use>
+            </svg>
+          </div>
+        </template>
+      </el-table-column>
       <el-table-column :label="$t(`personnelManagement.personnelTable.headportrait`)" align="center">
         <template #default="scope">
           <el-image style="width: 50px; height: 50px;border-radius:50%" :src="scope.row.avatar" fit="fill" v-if="scope.row.avatar !=='' "></el-image>
@@ -794,6 +803,16 @@ export default {
   margin-left: 5px;
   font-weight: 600;
 }
+.areaaddschool {
+  width: 20px !important;
+  height: 20px !important;
+  vertical-align: -5px !important;
+  fill: currentColor !important;
+  overflow: hidden !important;
+}
+.tables-state {
+  cursor: pointer;
+}
 </style>
 <style>
 .manatips .el-dialog__header,
@@ -862,4 +881,8 @@ export default {
   min-height: 20px;
   padding: 5px 8px;
 }
+.cell .tables-num,
+.cell .tables-state {
+  display: inline-block;
+}
 </style>