Переглянути джерело

Merge branch 'luohl'

* luohl:
  考试计划创建编辑
luohailiang 2 роки тому
батько
коміт
85ff6c08cc

+ 95 - 85
src/pages/process/create/index.vue

@@ -13,8 +13,8 @@
             <el-input v-model="createForm.ksmc" placeholder="请输入考试名称" />
           </el-form-item>
           <el-form-item label="考试时间" prop="kssj" style="width: 620px">
-            <el-date-picker  v-model="createForm.kssj" type="datetimerange" range-separator="至" start-placeholder="考试开始时间"
-                            end-placeholder="考试结束时间" value-format="YYYY-MM-DD hh:mm:ss" />
+            <el-date-picker  v-model="createForm.kssj" type="daterange" range-separator="至" start-placeholder="考试开始时间"
+                            end-placeholder="考试结束时间" value-format="YYYY-MM-DD" />
           </el-form-item>
           <el-form-item label="考试类型" prop="kslx" style="width: 620px">
             <el-radio-group v-model="createForm.kslx">
@@ -25,17 +25,17 @@
             <el-select v-model="createForm.lkxx" style="width: 500px" multiple placeholder="请选择联考学校">
               <el-option
                 v-for="item in school_list"
-                :label="item.label"
-                :value="item.value"
+                :label="item.schoolname"
+                :value="{value:item.schoolid,label:item.schoolname}"
               />
             </el-select>
           </el-form-item>
           <el-form-item label="考试年级" prop="ksnj">
-            <el-select v-model="createForm.ksnj" style="width: 500px" multiple placeholder="请选择考试年级">
+            <el-select v-model="createForm.ksnj" style="width: 500px" placeholder="请选择考试年级" @change="getSubjectList">
               <el-option
                 v-for="item in grade_list"
-                :label="item.label"
-                :value="item.value"
+                :label="item.gradename"
+                :value="{label:item.gradename,value:item.grade}"
               />
             </el-select>
           </el-form-item>
@@ -43,8 +43,8 @@
             <el-select v-model="createForm.kskm" style="width: 500px" multiple placeholder="请选择考试科目">
               <el-option
                 v-for="item in subject_list"
-                :label="item.label"
-                :value="item.value"
+                :label="item.subject_name"
+                :value="{label:item.subject_name,value:item.subject_id}"
               />
             </el-select>
           </el-form-item>
@@ -77,6 +77,8 @@
 </route>
 <script setup>
 import { useRouter } from "vue-router";
+import request from "~/utils/request";
+import {user} from "~/store";
 const router = useRouter();
 const linkTo = (name) => {
   router.push({ name });
@@ -85,7 +87,7 @@ const rules = $ref({
   ksmc:[{ required: true, message: '请输入考试名称', trigger: 'blur' }],
   kssj:[{ required: true, message: "请选择考试时间", trigger: "blur" }],
   kslx: [{required: true, message: '请选择考试类型', trigger: 'change'}],
-  ksnj: [{required: true, message: '请至少选择一个年级', trigger: 'change'}],
+  ksnj: [{required: true, message: '请选择一个年级', trigger: 'change'}],
   kskm: [{required: true, message: '请至少选择一个科目', trigger: 'change'}],
   yjlc: [{required: true, message: '请选择阅卷流程', trigger: 'change'}],
   lkxx: [{required: true, message: '请至少选择一个学校', trigger: 'change'}],
@@ -122,62 +124,8 @@ let type_list = [{
   value: '7',
   label: '联考'
 }]
-let grade_list = [{
-  value: '1',
-  label: '一年级'
-}, {
-  value: '2',
-  label: '二年级'
-}, {
-  value: '3',
-  label: '三年级'
-},{
-  value: '4',
-  label: '四年级'
-}, {
-  value: '5',
-  label: '五年级'
-}, {
-  value: '6',
-  label: '六年级'
-},{
-  value: '7',
-  label: '初一'
-},{
-  value: '8',
-  label: '初二'
-},{
-  value: '9',
-  label: '初三'
-},{
-  value: '10',
-  label: '高一'
-},{
-  value: '11',
-  label: '高二'
-},{
-  value: '12',
-  label: '搞三'
-}]
-let subject_list = [{
-  value: '1',
-  label: '语文'
-}, {
-  value: '2',
-  label: '数学'
-}, {
-  value: '3',
-  label: '英语'
-},{
-  value: '4',
-  label: '物理'
-}, {
-  value: '5',
-  label: '生物'
-}, {
-  value: '6',
-  label: '化学'
-}]
+let grade_list = $ref([])
+let subject_list = $ref([])
 let process_type = [{
   value: '1',
   label: '先上传后划块'
@@ -185,25 +133,48 @@ let process_type = [{
   value: '2',
   label: '先划块后上传'
 }]
-let school_list = [{
-  value: '1',
-  label: '蒙阴市第一小学'
-},{
-  value: '2',
-  label: '蒙阴市第二小学'
-},{
-  value: '3',
-  label: '蒙阴市第三小学'
-},{
-  value: '4',
-  label: '蒙阴市第一中学'
-},{
-  value: '5',
-  label: '蒙阴市第二中学'
-},{
-  value: '6',
-  label: '蒙阴市第三中学'
-}]
+let school_list = $ref([])
+const getSchool= () => {
+  request({
+    url:window.GLOBAL_CONFIG.uc + "/index.php",
+    data: {
+      mod:'school',
+      action:'main',
+      do:'index',
+      page:'1',
+      limit:'999'
+    },
+  }).then((res) => {
+    if (res.code === "1") {
+      school_list = res.data.page_data;
+    }
+  });
+}
+getSchool();
+function getGrade() {
+  let data = {
+    for_mistake:'1'
+  }
+  if(user.user_role_id < 72) {
+    data.sm_id = user.sm_info.sm_id
+  }
+  request({
+    url: window.GLOBAL_CONFIG.uc + '/index.php?mod=school&action=main&do=base_grade',
+    data: data,
+  }).then((res) => {
+    if (res.code === "1") {
+      grade_list = res.data;
+    }
+  });
+}
+getGrade();
+const getSubjectList = () => {
+  for(let i in grade_list) {
+    if(grade_list[i].grade === createForm.ksnj.value) {
+      subject_list = grade_list[i].subjects;
+    }
+  }
+}
 const handleCancel = () => {
   router.back();
 }
@@ -213,7 +184,46 @@ const handleSubmit = async (formEl) => {
 
   formEl.validate(async (valid, fields) => {
     if (valid) {
+      let kskm_label = [];
+      let kskm_value = [];
+      for(let i in createForm.kskm) {
+        kskm_label.push(createForm.kskm[i].label);
+        kskm_value.push(createForm.kskm[i].value);
+      }
 
+      let data = {
+        issubmit:'1',
+        yzy_ksjh:{
+          ykj_ksrwmc:createForm.ksmc,
+          ykj_ksrq:createForm.kssj[0],
+          ykj_jsrq:createForm.kssj[1],
+          ykj_kslx:createForm.kslx,
+          ykj_ksnj:createForm.ksnj.value,
+          ykj_ksnj_name:createForm.ksnj.label,
+          ykj_kskm:kskm_value.join(','),
+          ykj_kskm_name:kskm_label.join(','),
+          ykj_yjlc:createForm.yjlc
+        }
+      }
+      if(createForm.kslx === '7') {
+        let lkxx_value = [];
+        let lkxx_label = [];
+        for(let j in createForm.lkxx) {
+          lkxx_label.push(createForm.lkxx[j].label);
+          lkxx_value.push(createForm.lkxx[j].value);
+        }
+        data.yzy_ksjh.ykj_lkxx = lkxx_value.join(',');
+        data.yzy_ksjh.ykj_lkxx_name  = lkxx_label.join(',');
+      }
+      request({
+        url: '/yzy/ksjh/liankao_add',
+        data: data,
+      }).then((res) => {
+        if (res.code === "1") {
+          ElMessage.success("考试计划创建成功!");
+          linkTo('process');
+        }
+      });
     } else {
       console.log("error submit!", fields);
     }

+ 0 - 1
src/pages/process/detail/[id].vue

@@ -90,7 +90,6 @@ function getDetail() {
     },
   }).then((res) => {
     if (res.code === "1") {
-      console.log(res.data.one_info,887)
       ykj_detail= res.data.one_info;
     }
   });

+ 280 - 0
src/pages/process/edit/[id].vue

@@ -0,0 +1,280 @@
+<template>
+  <NavHeader/>
+  <bread-crumb/>
+  <div class="w-1200px m-auto">
+    <div class="relative -mt-40px flex justify-end">
+      <button type="button" class="back-btn" @click="linkTo('process')">返回</button>
+    </div>
+    <div class="mt-10px w-full min-h-860px bg-hex-FFF pt-25px">
+      <h3 class="text-18px text-center">新建考试计划</h3>
+      <div class="mt-60px pl-250px">
+        <el-form ref="ruleFormRef" :rules="rules" :model="createForm" label-width="120px" size="large" status-icon>
+          <el-form-item label="考试名称" prop="ksmc" style="width: 620px">
+            <el-input v-model="createForm.ksmc" placeholder="请输入考试名称" />
+          </el-form-item>
+          <el-form-item label="考试时间" prop="kssj" style="width: 620px">
+            <el-date-picker  v-model="createForm.kssj" type="daterange" range-separator="至" start-placeholder="考试开始时间"
+                            end-placeholder="考试结束时间" value-format="YYYY-MM-DD" />
+          </el-form-item>
+          <el-form-item label="考试类型" prop="kslx" style="width: 620px">
+            <el-radio-group v-model="createForm.kslx">
+              <el-radio v-for="item in type_list" :label="item.value">{{item.label}}</el-radio>
+            </el-radio-group>
+          </el-form-item>
+          <el-form-item v-if="createForm.kslx === '7'" label="联考学校" prop="lkxx">
+            <el-select v-model="createForm.lkxx" style="width: 500px" multiple placeholder="请选择联考学校">
+              <el-option
+                v-for="item in school_list"
+                :label="item.schoolname"
+                :value="{value:item.schoolid,label:item.schoolname}"
+              />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="考试年级" prop="ksnj">
+            <el-select v-model="createForm.ksnj" style="width: 500px" placeholder="请选择考试年级" @change="getSubjectList">
+              <el-option
+                v-for="item in grade_list"
+                :label="item.gradename"
+                :value="{label:item.gradename,value:item.grade}"
+              />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="考试科目" prop="kskm">
+            <el-select v-model="createForm.kskm" style="width: 500px" multiple placeholder="请选择考试科目">
+              <el-option
+                v-for="item in subject_list"
+                :label="item.subject_name"
+                :value="{label:item.subject_name,value:item.subject_id}"
+              />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="阅卷流程" prop="yjlc" style="width: 620px">
+            <el-radio-group v-model="createForm.yjlc">
+              <el-radio v-for="item in process_type" :label="item.value">{{item.label}}</el-radio>
+            </el-radio-group>
+          </el-form-item>
+          <el-form-item>
+            <div class="mt-50px pl-50px">
+              <el-button class="mr-20px" @click="linkTo('process')"><span class="px-40px">取消</span></el-button>
+              <el-button type="primary" color="#003eee" @click="handleSubmit(ruleFormRef)"><span class="px-40px">确定</span></el-button>
+            </div>
+
+
+          </el-form-item>
+        </el-form>
+      </div>
+    </div>
+  </div>
+  <commonFooter/>
+</template>
+<route lang="json">
+{
+"meta":{
+"title":"编辑考试计划",
+"breadcrumb": true
+}
+}
+</route>
+<script setup>
+import { useRouter } from "vue-router";
+import request from "~/utils/request";
+import {user} from "~/store";
+const router = useRouter();
+const route = useRoute();
+const linkTo = (name) => {
+  router.push({ name });
+};
+const rules = $ref({
+  ksmc:[{ required: true, message: '请输入考试名称', trigger: 'blur' }],
+  kssj:[{ required: true, message: "请选择考试时间", trigger: "blur" }],
+  kslx: [{required: true, message: '请选择考试类型', trigger: 'change'}],
+  ksnj: [{required: true, message: '请选择一个年级', trigger: 'change'}],
+  kskm: [{required: true, message: '请至少选择一个科目', trigger: 'change'}],
+  yjlc: [{required: true, message: '请选择阅卷流程', trigger: 'change'}],
+  lkxx: [{required: true, message: '请至少选择一个学校', trigger: 'change'}],
+})
+const ruleFormRef = ref(null);
+let createForm = $ref({
+  ksmc:'',
+  kssj:'',
+  kslx:'1',
+  ksnj:'',
+  kskm:[],
+  yjlc:'1',
+  lkxx:[]
+})
+let type_list = [{
+  value: '1',
+  label: '周考'
+}, {
+  value: '2',
+  label: '月考'
+}, {
+  value: '3',
+  label: '期中'
+},{
+  value: '4',
+  label: '期末'
+}, {
+  value: '5',
+  label: '作业'
+}, {
+  value: '6',
+  label: '测试'
+},{
+  value: '7',
+  label: '联考'
+}]
+let grade_list = $ref([])
+let subject_list = $ref([])
+let process_type = [{
+  value: '1',
+  label: '先上传后划块'
+},{
+  value: '2',
+  label: '先划块后上传'
+}]
+let school_list = $ref([])
+const getSchool= () => {
+  request({
+    url:window.GLOBAL_CONFIG.uc + "/index.php",
+    data: {
+      mod:'school',
+      action:'main',
+      do:'index',
+      page:'1',
+      limit:'999'
+    },
+  }).then((res) => {
+    if (res.code === "1") {
+      school_list = res.data.page_data;
+    }
+  });
+}
+getSchool();
+function getGrade() {
+  let data = {
+    for_mistake:'1'
+  }
+  if(user.user_role_id < 72) {
+    data.sm_id = user.sm_info.sm_id
+  }
+  request({
+    url: window.GLOBAL_CONFIG.uc + '/index.php?mod=school&action=main&do=base_grade',
+    data: data,
+  }).then((res) => {
+    if (res.code === "1") {
+      grade_list = res.data;
+    }
+  });
+}
+getGrade();
+const getSubjectList = () => {
+  for(let i in grade_list) {
+    if(grade_list[i].grade === createForm.ksnj.value) {
+      subject_list = grade_list[i].subjects;
+    }
+  }
+}
+const handleCancel = () => {
+  router.back();
+}
+
+const handleSubmit = async (formEl) => {
+  if (!formEl) return;
+
+  formEl.validate(async (valid, fields) => {
+    if (valid) {
+      let kskm_label = [];
+      let kskm_value = [];
+      for(let i in createForm.kskm) {
+        kskm_label.push(createForm.kskm[i].label);
+        kskm_value.push(createForm.kskm[i].value);
+      }
+
+      let data = {
+        issubmit:'1',
+        ykj_id:ykj_id,
+        yzy_ksjh:{
+          ykj_ksrwmc:createForm.ksmc,
+          ykj_ksrq:createForm.kssj[0],
+          ykj_jsrq:createForm.kssj[1],
+          ykj_kslx:createForm.kslx,
+          ykj_ksnj:createForm.ksnj.value,
+          ykj_ksnj_name:createForm.ksnj.label,
+          ykj_kskm:kskm_value.join(','),
+          ykj_kskm_name:kskm_label.join(','),
+          ykj_yjlc:createForm.yjlc
+        }
+      }
+      if(createForm.kslx === '7') {
+        let lkxx_value = [];
+        let lkxx_label = [];
+        for(let j in createForm.lkxx) {
+          lkxx_label.push(createForm.lkxx[j].label);
+          lkxx_value.push(createForm.lkxx[j].value);
+        }
+        data.yzy_ksjh.ykj_lkxx = lkxx_value.join(',');
+        data.yzy_ksjh.ykj_lkxx_name  = lkxx_label.join(',');
+      }
+      request({
+        url: '/yzy/ksjh/liankao_edit',
+        data: data,
+      }).then((res) => {
+        if (res.code === "1") {
+          ElMessage.success("考试计划创建成功!");
+          linkTo('process');
+        }
+      });
+    } else {
+      console.log("error submit!", fields);
+    }
+  });
+}
+let ykj_id = $ref('');
+function getDetail() {
+  request({
+    url: "/yzy/ksjh/detail",
+    data: {
+      ykj_id: ykj_id,
+    },
+  }).then((res) => {
+    if (res.code === "1") {
+      // createForm= res.data.one_info;
+      createForm.ksmc = res.data.one_info.ykj_ksrwmc;
+      createForm.kssj = [res.data.one_info.ykj_ksrq,res.data.one_info.ykj_jsrq];
+      createForm.kslx = res.data.one_info.ykj_kslx;
+      createForm.ksnj = {
+        label:res.data.one_info.ykj_ksnj_name,
+        value:res.data.one_info.ykj_ksnj
+      }
+      createForm.yjlc = res.data.one_info.ykj_yjlc;
+      for(let i in res.data.one_info.ykj_kskm.split(',')) {
+        let obj = {
+          value:res.data.one_info.ykj_kskm.split(',')[i],
+          label:res.data.one_info.ykj_kskm_name.split(',')[i]
+        }
+        createForm.kskm.push(obj);
+      }
+      if(res.data.one_info.ykj_kslx === '7') {
+        for(let j in res.data.one_info.ykj_lkxx.split(',')) {
+          let ob = {
+            value:res.data.one_info.ykj_lkxx.split(',')[j],
+            label:res.data.one_info.ykj_lkxx_name.split(',')[j]
+          }
+          createForm.lkxx.push(ob);
+        }
+      }
+    }
+  });
+}
+
+if (route.params.id) {
+  ykj_id = route.params.id;
+  getDetail();
+}
+</script>
+
+<style scoped>
+
+</style>

+ 1 - 1
src/pages/process/index.vue

@@ -79,7 +79,7 @@
               </div>
               <div class="w-220px text-left">{{item.ykj_ksrq}}~{{item.ykj_jsrq}}</div>
               <div class="w-300px">
-                <button type="button" class="op-btn">编辑</button>
+                <button type="button" class="op-btn" @click="linkTo({name:'process-edit-id',params:{id:item.ykj_id}})">编辑</button>
                 <button type="button" class="op-btn ml-10px" @click="linkTo({name:'process-detail-id',params:{id:item.ykj_id}})">详情</button>
                 <div class="ml-10px relative op-btn cursor-pointer">
                   <span class="inline-block align-middle leading-28px">更多</span>