Browse Source

修改可选认知任务

plg 3 months ago
parent
commit
9c7ab86d3a

+ 34 - 0
src/api/plan.ts

@@ -31,6 +31,15 @@ const getCurrentTimeUrl = '/system/getSystemTime'
 const saveETBUrl = '/record/saveEmotionRecord'
 
 const saveStroopUrl = '/record/saveEmotionRecord2'
+
+// 可选认知任务接口
+const querySelectTask = '/userExtend/chooseExtendScale'
+
+//新增可选认知任务
+const addExtendTaskUrl = '/userExtend/saveExtendScale'
+
+//可选认知任务
+const updateTaskUrl = '/planUser/updateOptional'
 //首页API
 export const homeApi = (val: any) => {
     return http<any>(
@@ -177,5 +186,30 @@ export const saveStroopApi = (val: any) => {
 
 }
 
+//查询可选任务
+export const querySelectTaskApi = (val: any) => {
+    return http<any>({
+        method: 'get',
+        url: `${querySelectTask}?planId=${val}&template=studentContent`
+    })
+}
+
+//查询用户扩展任务
+export const addExtendTaskApi = (val: any) => {
+    return http<any>({
+        method: 'post',
+        url: addExtendTaskUrl,
+        data: { ...val }
+    })
+}
+
+//更新认知任务状态
+export const updateTaskApi = (val: any) => {
+    return http<any>({
+        method: 'get',
+        url: `${updateTaskUrl}?planId=${val}`
+    })
+}
+
 
 

+ 1 - 1
src/components/CpdmMessageV2.vue

@@ -1,11 +1,11 @@
 <script lang="ts" setup>
+
 import { ref, defineExpose } from 'vue'
 import { useRouter } from 'vue-router'
 import { userInfoStore } from '@/stores'
 import { ElMessage } from 'element-plus';
 import { pubMsgApi } from '@/api/plan';
 const router = useRouter()
-
 //获取缓存用户信息
 const userInfo = userInfoStore();
 //留言显示的标志

+ 225 - 0
src/components/CpdmTask.vue

@@ -0,0 +1,225 @@
+<script lang="ts" setup>
+import CpdmMessage from '../components/CpdmMessage.vue'
+import { addExtendTaskApi, querySelectTaskApi, updateTaskApi } from '@/api/plan';
+import { ElMessage } from 'element-plus';
+import { useRouter } from 'vue-router'
+import { ref } from 'vue'
+import { getUnread, planNumGet } from '@/utils/test';
+import { userInfoStore } from '@/stores'
+const userInfo = userInfoStore()
+const router = useRouter()
+//打开弹出框的标志
+const taskVisible = ref<boolean>(false)
+//打开页面--接收参数planId
+const planId = ref<string>('')
+
+const taskList = ref<any>();
+
+const selectCheck = ref<string>('')
+
+const cpdmMe = ref<any>()
+
+const open = (val: string) => {
+    //获取得到的参数planId
+    //根据plaId查询可选的认知任务
+    planId.value = val;
+    taskVisible.value = true;
+
+    //调用方法根据planId查询
+    querySelectTask()
+}
+
+const querySelectTask = async () => {
+    //根据任务进行查询
+    const res: any = await querySelectTaskApi(planId.value)
+
+    if (res.code == '200') {
+        taskList.value = res.data
+
+    } else {
+        ElMessage({
+            type: 'error',
+            message: res.msg
+        })
+    }
+
+}
+//放弃
+const giveUp = () => {
+    //点击放弃则开始调用评论的插件
+    planNumGet()
+    getUnread()
+    updateTaskApi(planId.value)
+    cpdmMe.value.open()
+}
+//确定按钮
+const statusLock = ref<boolean>(false)
+const comFun = async () => {
+    if (statusLock.value) {
+        return
+    }
+    statusLock.value = true
+    //则跳转到测试计划页面
+    if (selectCheck.value == '') {
+        ElMessage({
+            type: 'warning',
+            message: '尚未选择'
+        })
+        return
+    }
+    //新增用户可选扩展量表
+    let params = {
+        flag: selectCheck.value,
+        planId: planId.value,
+        type: '1',
+        userNo: userInfo.userInfo.userNo
+    }
+    let res: any = await addExtendTaskApi(params)
+    statusLock.value = false
+    if (res.code == '200') {
+        router.push({ name: 'plan' })
+
+    } else {
+        ElMessage({
+            type: 'error',
+            message: res.msg
+        })
+    }
+
+
+}
+
+defineExpose({ open })
+</script>
+<template>
+
+    <div>
+        <el-dialog v-model="taskVisible" style="border-radius: 40px;" width="60%" top="15vh" @closed="giveUp">
+            <template #header="{ close, titleId, titleClass }">
+                <div class="com_title">选做题</div>
+                <div class="select_min">
+
+                    <el-radio-group v-model="selectCheck">
+                        <!-- works when >=2.6.0, recommended ✔️ not work when <2.6.0 ❌ -->
+                        <el-radio-button :value="item.flag" v-for="item in taskList " size="large" border>{{ item.name
+                            }}</el-radio-button>
+                        <!-- works when <2.6.0, deprecated act as value when >=3.0.0 -->
+                        < </el-radio-group>
+
+                </div>
+
+                <div class="home_mid_plan_button">
+                    <div class="pub_button" @click="giveUp"> 不做了
+                    </div>
+                    <div class="pub_button" @click="comFun"> 确定
+                    </div>
+                </div>
+            </template>
+
+        </el-dialog>
+        <CpdmMessage ref="cpdmMe" />
+    </div>
+</template>
+<style lang="scss" scoped>
+:deep(.el-progress-bar__outer) {
+    background-color: #f3f3f3;
+    border-radius: 100px;
+    height: 6px;
+    overflow: hidden;
+    position: relative;
+    vertical-align: middle;
+}
+
+:deep(.el-radio-group) {
+    align-items: center;
+    display: flex;
+    flex-wrap: wrap;
+    font-size: 0;
+    flex-direction: row;
+    justify-content: center;
+}
+
+:deep(.el-radio-button) {
+    display: inline-block;
+    outline: none;
+    position: relative;
+    margin: 6px;
+    // width: 80% !important;
+}
+
+:deep(.el-radio-button__inner) {
+    // width: 100%;
+    border-radius: 40px !important;
+    margin-top: 10px;
+    border: 4px solid #B2F2D2;
+    border-left: 4px solid #B2F2D2 !important;
+    padding: 10px 10px;
+    font-size: 14px;
+    font-weight: 700;
+    text-align: left;
+
+}
+
+:deep(.el-radio-button__inner:hover) {
+    // width: 100%;
+    border-radius: 40px !important;
+    margin-top: 10px;
+    border: 4px solid #B2F2D2;
+    border-left: 4px solid #B2F2D2 !important;
+    padding: 10px 10px;
+    font-size: 14px;
+    font-weight: 700;
+    text-align: left;
+
+    color: #000000;
+    background-color: #48D68E;
+    color: #ffffff;
+
+}
+
+// :deep().el-radio-button__original-radio:checked+.el-radio-button__inner {
+//     background-color: #48D68E !important;
+//     border-color: #B2F2D2 !important;
+//     box-shadow: 0 0 0 0 var(--el-radio-button-checked-border-color, var(--el-color-primary)) !important;
+//     color: var(--el-radio-button-checked-text-color, var(--el-color-white));
+// }
+
+:deep().el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner {
+    background-color: #48D68E !important;
+    border-color: #B2F2D2 !important;
+    box-shadow: 0 0 0 0 var(--el-radio-button-checked-border-color, var(--el-color-primary)) !important;
+    color: var(--el-radio-button-checked-text-color, var(--el-color-white));
+}
+
+.com_title {
+    text-align: center;
+}
+
+.select_min {
+    text-align: center;
+    margin-top: 10px;
+}
+
+.home_mid_plan_button {
+    width: 100%;
+    display: flex;
+    flex-direction: row;
+    justify-content: space-around;
+    margin-top: 40px;
+
+    // text-align: right;
+    .pub_button {
+        cursor: pointer;
+        // width: 100px;
+        border-radius: 12px;
+        border: 3px solid #48D68E;
+        color: #ffffff;
+        background-color: #000000;
+
+        padding: 8px 30px;
+        cursor: pointer;
+        display: flex;
+        align-items: center;
+    }
+}
+</style>

+ 3 - 3
src/components/CpmdHeader.vue

@@ -130,9 +130,9 @@ const leaveFun = () => {
                         <div class="update_pass" @click="updatePassFun">
                             修改密码
                         </div>
-                        <div class="exit_login" @click="leaveFun">
+                        <!-- <div class="exit_login" @click="leaveFun">
                             我的请假
-                        </div>
+                        </div> -->
                         <div class="exit_login" @click="exitFun">
                             退出登录
                         </div>
@@ -327,7 +327,7 @@ const leaveFun = () => {
                 position: absolute;
                 background-color: #ffffff;
                 // bottom: -105px;
-                bottom: -145px;
+                bottom: -105px;
                 margin-left: calc(10% - 20px);
                 z-index: 200;
                 color: #000000;

+ 2 - 2
src/utils/http.ts

@@ -24,7 +24,7 @@ const menuStatus = menuStatusStore()
 // const base_url = 'http://10.113.248.4:8089/'
 
 //少锋本地 版本2
-// const base_url = 'http://10.113.248.4:8090/'
+const base_url = 'http://10.113.248.4:8090/'
 //30
 // const base_url = 'http://43.143.198.30:8089/'
 //红朵
@@ -35,7 +35,7 @@ const menuStatus = menuStatusStore()
 //新服务器
 // const base_url = 'http://123.57.18.29:8089'
 //第二个版本
-const base_url = 'http://123.57.18.29:8090'
+// const base_url = 'http://123.57.18.29:8090'
 
 
 //设置axios 默认访问路径

+ 16 - 5
src/views/CognizeFaceDot.vue

@@ -1,15 +1,19 @@
 <script setup lang="ts">
 
+import CpdmTask from '../components/CpdmTask.vue'
 import CpdmMessage from '../components/CpdmMessage.vue'
 import { ElMessage, ElLoading } from 'element-plus';
 import { onMounted, onUnmounted, ref } from 'vue'
 import { useRoute, useRouter } from 'vue-router';
 import { userInfoStore } from '@/stores'
 import { format } from 'date-fns/format';
-import { getCurrentTimeApi, saveFaceDotApi } from '@/api/plan';
+import { getCurrentTimeApi, querySelectTaskApi, saveFaceDotApi } from '@/api/plan';
 import { userPlanDetailApi } from '@/api/home';
 import { getUnread, planNumGet } from '@/utils/test';
 const userInfo = userInfoStore()
+
+const cpdmTask = ref<any>()
+
 const route = useRoute()
 const router = useRouter()
 const flag1 = ref<string>('')
@@ -511,7 +515,6 @@ const submitData = async () => {
     if (scoreFin > 60) {
         userInfo.saveIspass('FDOT')
     }
-    console.log(scoreFin)
     if (!currentType.value) {
         ElMessage({
             message: `正确率为${(scoreFin).toFixed(2)}%`,
@@ -607,9 +610,16 @@ const submitData = async () => {
                 //把弹出框的内容   及用户信息 进行处理 进行发布
                 //这是测试完了--测试完成后调用测试记录
 
-                cpdmMe.value.open()
-                planNumGet()
-                getUnread()
+                let res: any = await querySelectTaskApi(planId.value)
+
+                if (res.data.length == 0) {
+                    cpdmMe.value.open()
+                    planNumGet()
+                    getUnread()
+                } else {
+                    cpdmTask.value.open(planId.value)
+                }
+
                 // this.$router.push({ name: 'testRecord' })
             }
 
@@ -990,6 +1000,7 @@ const userClick = (param: any) => {
                     ..</span>,请点击鼠标<span class="font_two_sub sbclass">右键</span></span>
         </div>
         <CpdmMessage ref="cpdmMe" />
+        <CpdmTask ref="cpdmTask" />
     </div>
 </template>
 <style scoped>

+ 30 - 6
src/views/ETBexperiment_new.vue

@@ -40,18 +40,20 @@
             </div>
         </div>
         <CpdmMessage ref="cpdmMe" />
+        <CpdmTask ref="cpdmTask" />
     </div>
 </template>
 
 <script lang="ts" setup>
 import CpdmMessage from '../components/CpdmMessage.vue'
+import CpdmTask from '../components/CpdmTask.vue'
 import { format as formatTime } from 'date-fns/format';
 import { ref, onMounted, onUnmounted, computed } from 'vue';
 import { ElButton, ElProgress, ElMessage } from 'element-plus';
 import { oSessionStorage, preloader } from '@/utils/utils';
 import { useRoute, useRouter } from 'vue-router';
 import { userInfoStore } from '@/stores';
-import { getCurrentTimeApi, saveETBApi } from '@/api/plan';
+import { getCurrentTimeApi, querySelectTaskApi, saveETBApi } from '@/api/plan';
 import { userPlanDetailApi } from '@/api/home';
 import { getUnread, planNumGet } from '@/utils/test';
 const userInfo = userInfoStore()
@@ -73,6 +75,8 @@ interface ResultDataItem {
 }
 const cpdmMe = ref<any>()
 
+const cpdmTask = ref<any>()
+
 const testMode = ref<number | null>(null);
 const buttonShowTime = ref<number>(2000);
 const cycles = ref<number>(71);
@@ -117,7 +121,7 @@ const planName = ref<string>('')
 const flag = ref<string>('');
 const flagName = ref<string>('');
 const formalTest = ref<string>('')
-onMounted(() => {
+onMounted(async () => {
     planId.value = route.params.planId as string;
 
     planName.value = route.params.planName as string;
@@ -134,7 +138,7 @@ onMounted(() => {
     //测试模式
     testMode.value = parseInt(route.params.formalTest as string);
     // testMode.value = parseInt((window as any).$route.query.testMode || '0', 10);
-
+    // debugger;
     if (testMode.value === 0) {
         buttonShowTime.value = 20000000;
         cycles.value = 6;
@@ -610,9 +614,29 @@ const submitData = async () => {
             //把弹出框的内容   及用户信息 进行处理 进行发布
             //这是测试完了--测试完成后调用测试记录
 
-            cpdmMe.value.open()
-            planNumGet()
-            getUnread()
+
+            //当测试完了以后需要调用接口查询
+            //查询需要测试----可选择的认知任务
+            //将planId 当为参数传输过去
+            //
+            //查询是否需要调用弹出可选的问题
+
+            //查询 是否还需要有做的可选的量表
+
+
+            let res: any = await querySelectTaskApi(planId.value)
+
+            if (res.data.length == 0) {
+                cpdmMe.value.open()
+                planNumGet()
+                getUnread()
+            } else {
+                cpdmTask.value.open(planId.value)
+            }
+
+            //根据id查询已完成--量表
+
+
             // this.$router.push({ name: 'testRecord' })
         }
         //判断后边还有其他认知任务吗,如果有---则跳转到测试计划页面

+ 30 - 0
src/views/Plan.vue

@@ -156,8 +156,12 @@ const planNumGet = async () => {
             }
             let temp: any = await userPlanDetailApi(params)
             planList.value[i].list = temp.data
+
+            //应该再这里再掉用一个数据?
         }
 
+
+
         //-------------处理SCL90的完成状态----------------
         for (let i = 0; i < planList.value.length; i++) {
             //
@@ -219,6 +223,7 @@ const planNumGet = async () => {
         //抽出需要展示的认知任务--放入数组
 
     }
+
     isFinshed.value = true
 }
 
@@ -297,6 +302,8 @@ onUnmounted(() => {
                                                     <div class="isCompleted" v-show="subItem.isCompleted == '1'">
                                                         <div class='isCompleted_status'> 已完成</div>
                                                     </div>
+                                                    <div class="isMust" v-show="subItem.isRequired == '1'">必做</div>
+                                                    <div class="isChoosable" v-show="subItem.isRequired == '0'">选做</div>
                                                 </div>
                                             </div>
                                         </div>
@@ -322,6 +329,8 @@ onUnmounted(() => {
                                                     <div class="isCompleted" v-show="subItem.isCompleted == '1'">
                                                         <div class='isCompleted_status'> 已完成</div>
                                                     </div>
+                                                    <div class="isMust" v-show="subItem.isRequired == '1'">必做</div>
+                                                    <div class="isChoosable" v-show="subItem.isRequired == '0'">选做</div>
                                                 </div>
                                             </div>
                                         </div>
@@ -700,6 +709,7 @@ onUnmounted(() => {
                                         align-items: center;
 
                                         .task_content {
+                                            position: relative;
                                             height: 80px;
                                             margin-left: 10px;
                                             display: flex;
@@ -756,6 +766,26 @@ onUnmounted(() => {
                                                     background-color: #48D68E;
                                                 }
                                             }
+
+                                            .isMust {
+                                                position: absolute;
+                                                right: 0;
+                                                background-color: #48D68E;
+                                                font-size: 10px;
+                                                color: #ffffff;
+                                                padding: 2px 6px;
+                                                border-radius: 10px;
+                                            }
+
+                                            .isChoosable {
+                                                position: absolute;
+                                                right: 0;
+                                                background-color: #EDEDED;
+                                                font-size: 10px;
+                                                color: #222222;
+                                                padding: 2px 6px;
+                                                border-radius: 10px;
+                                            }
                                         }
                                     }
                                 }

+ 15 - 5
src/views/Stroop.vue

@@ -1,14 +1,15 @@
 <script lang="ts" setup>
 import { onMounted, onUnmounted, ref } from 'vue'
+import CpdmTask from '../components/CpdmTask.vue'
 import CpdmMessage from '../components/CpdmMessage.vue'
 import { useRoute, useRouter } from 'vue-router';
 import { userInfoStore } from '@/stores'
 import { arMA } from 'date-fns/locale';
-import { getCurrentTimeApi, saveStroopApi } from '@/api/plan';
+import { getCurrentTimeApi, querySelectTaskApi, saveStroopApi } from '@/api/plan';
 import { userPlanDetailApi } from '@/api/home';
 import { getUnread, planNumGet } from '@/utils/test';
 import { ElMessage } from 'element-plus';
-
+const cpdmTask = ref<any>()
 const route = useRoute()
 const router = useRouter()
 //获取个人信息
@@ -365,9 +366,17 @@ const clickColor = async (val: string) => {
                 if (listP.length > 0) {
                     router.push({ name: 'plan' })
                 } else {
-                    cpdmMe.value.open()
-                    planNumGet()
-                    getUnread()
+
+                    let res: any = await querySelectTaskApi(planId.value)
+
+                    if (res.data.length == 0) {
+                        cpdmMe.value.open()
+                        planNumGet()
+                        getUnread()
+                    } else {
+                        cpdmTask.value.open(planId.value)
+                    }
+
                 }
             } else {
                 ElMessage({
@@ -539,6 +548,7 @@ const formatterData = () => {
         </div>
     </div>
     <CpdmMessage ref="cpdmMe" />
+    <CpdmTask ref="cpdmTask" />
 </template>