index.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. <template>
  2. <NavHeader/>
  3. <bread-crumb/>
  4. <div class="w-1200px m-auto">
  5. <div class="relative -mt-40px flex justify-end">
  6. <button type="button" class="back-btn" @click="linkTo('process')">返回</button>
  7. </div>
  8. <div class="mt-10px w-full min-h-860px bg-hex-FFF pt-25px">
  9. <h3 class="text-18px text-center">新建考试计划</h3>
  10. <div class="mt-60px pl-250px">
  11. <el-form ref="ruleFormRef" :rules="rules" :model="createForm" label-width="120px" size="large" status-icon>
  12. <el-form-item label="考试名称" prop="ksmc" style="width: 620px">
  13. <el-input v-model="createForm.ksmc" placeholder="请输入考试名称" />
  14. </el-form-item>
  15. <el-form-item label="考试时间" prop="kssj" style="width: 620px">
  16. <el-date-picker v-model="createForm.kssj" type="daterange" range-separator="至" start-placeholder="考试开始时间"
  17. end-placeholder="考试结束时间" value-format="YYYY-MM-DD" />
  18. </el-form-item>
  19. <el-form-item label="考试类型" prop="kslx" style="width: 620px">
  20. <el-radio-group v-model="createForm.kslx">
  21. <el-radio v-for="item in type_list" :label="item.value">{{item.label}}</el-radio>
  22. </el-radio-group>
  23. </el-form-item>
  24. <el-form-item v-if="createForm.kslx === '7'" label="联考学校" prop="lkxx">
  25. <el-select v-model="createForm.lkxx" style="width: 500px" multiple placeholder="请选择联考学校">
  26. <el-option
  27. v-for="item in school_list"
  28. :label="item.schoolname"
  29. :value="{value:item.schoolid,label:item.schoolname}"
  30. />
  31. </el-select>
  32. </el-form-item>
  33. <el-form-item label="考试年级" prop="ksnj">
  34. <el-select v-model="createForm.ksnj" style="width: 500px" placeholder="请选择考试年级" @change="getSubjectList">
  35. <el-option
  36. v-for="item in grade_list"
  37. :label="item.gradename"
  38. :value="{label:item.gradename,value:item.grade}"
  39. />
  40. </el-select>
  41. </el-form-item>
  42. <el-form-item label="考试科目" prop="kskm">
  43. <el-select v-model="createForm.kskm" style="width: 500px" multiple placeholder="请选择考试科目">
  44. <el-option
  45. v-for="item in subject_list"
  46. :label="item.subject_name"
  47. :value="{label:item.subject_name,value:item.subject_id}"
  48. />
  49. </el-select>
  50. </el-form-item>
  51. <el-form-item label="阅卷流程" prop="yjlc" style="width: 620px">
  52. <el-radio-group v-model="createForm.yjlc">
  53. <el-radio v-for="item in process_type" :label="item.value">{{item.label}}</el-radio>
  54. </el-radio-group>
  55. </el-form-item>
  56. <el-form-item>
  57. <div class="mt-50px pl-50px">
  58. <el-button class="mr-20px" @click="linkTo('process')"><span class="px-40px">取消</span></el-button>
  59. <el-button type="primary" color="#003eee" @click="handleSubmit(ruleFormRef)"><span class="px-40px">确定</span></el-button>
  60. </div>
  61. </el-form-item>
  62. </el-form>
  63. </div>
  64. </div>
  65. </div>
  66. <commonFooter/>
  67. </template>
  68. <route lang="json">
  69. {
  70. "meta":{
  71. "title":"新建考试计划",
  72. "breadcrumb": true
  73. }
  74. }
  75. </route>
  76. <script setup>
  77. import { useRouter } from "vue-router";
  78. import request from "~/utils/request";
  79. import {user} from "~/store";
  80. const router = useRouter();
  81. const linkTo = (name) => {
  82. router.push({ name });
  83. };
  84. const rules = $ref({
  85. ksmc:[{ required: true, message: '请输入考试名称', trigger: 'blur' }],
  86. kssj:[{ required: true, message: "请选择考试时间", trigger: "blur" }],
  87. kslx: [{required: true, message: '请选择考试类型', trigger: 'change'}],
  88. ksnj: [{required: true, message: '请选择一个年级', trigger: 'change'}],
  89. kskm: [{required: true, message: '请至少选择一个科目', trigger: 'change'}],
  90. yjlc: [{required: true, message: '请选择阅卷流程', trigger: 'change'}],
  91. lkxx: [{required: true, message: '请至少选择一个学校', trigger: 'change'}],
  92. })
  93. const ruleFormRef = ref(null);
  94. let createForm = $ref({
  95. ksmc:'',
  96. kssj:'',
  97. kslx:'1',
  98. ksnj:'',
  99. kskm:[],
  100. yjlc:'1',
  101. lkxx:''
  102. })
  103. let type_list = [{
  104. value: '1',
  105. label: '周考'
  106. }, {
  107. value: '2',
  108. label: '月考'
  109. }, {
  110. value: '3',
  111. label: '期中'
  112. },{
  113. value: '4',
  114. label: '期末'
  115. }, {
  116. value: '5',
  117. label: '作业'
  118. }, {
  119. value: '6',
  120. label: '测试'
  121. },{
  122. value: '7',
  123. label: '联考'
  124. }]
  125. let grade_list = $ref([])
  126. let subject_list = $ref([])
  127. let process_type = [{
  128. value: '1',
  129. label: '先上传后划块'
  130. },{
  131. value: '2',
  132. label: '先划块后上传'
  133. }]
  134. let school_list = $ref([])
  135. const getSchool= () => {
  136. request({
  137. url:window.GLOBAL_CONFIG.uc + "/index.php",
  138. data: {
  139. mod:'school',
  140. action:'main',
  141. do:'index',
  142. page:'1',
  143. limit:'999'
  144. },
  145. }).then((res) => {
  146. if (res.code === "1") {
  147. school_list = res.data.page_data;
  148. }
  149. });
  150. }
  151. getSchool();
  152. function getGrade() {
  153. let data = {
  154. for_mistake:'1'
  155. }
  156. if(user.user_role_id < 72) {
  157. data.sm_id = user.sm_info.sm_id
  158. }
  159. request({
  160. url: window.GLOBAL_CONFIG.uc + '/index.php?mod=school&action=main&do=base_grade',
  161. data: data,
  162. }).then((res) => {
  163. if (res.code === "1") {
  164. grade_list = res.data;
  165. }
  166. });
  167. }
  168. getGrade();
  169. const getSubjectList = () => {
  170. for(let i in grade_list) {
  171. if(grade_list[i].grade === createForm.ksnj.value) {
  172. createForm.kskm = [];
  173. subject_list = grade_list[i].subjects;
  174. }
  175. }
  176. }
  177. const handleCancel = () => {
  178. router.back();
  179. }
  180. const handleSubmit = async (formEl) => {
  181. if (!formEl) return;
  182. formEl.validate(async (valid, fields) => {
  183. if (valid) {
  184. let kskm_label = [];
  185. let kskm_value = [];
  186. for(let i in createForm.kskm) {
  187. kskm_label.push(createForm.kskm[i].label);
  188. kskm_value.push(createForm.kskm[i].value);
  189. }
  190. let data = {
  191. issubmit:'1',
  192. yzy_ksjh:{
  193. ykj_ksrwmc:createForm.ksmc,
  194. ykj_ksrq:createForm.kssj[0],
  195. ykj_jsrq:createForm.kssj[1],
  196. ykj_kslx:createForm.kslx,
  197. ykj_ksnj:createForm.ksnj.value,
  198. ykj_ksnj_name:createForm.ksnj.label,
  199. ykj_kskm:kskm_value.join(','),
  200. ykj_kskm_name:kskm_label.join(','),
  201. ykj_yjlc:createForm.yjlc
  202. }
  203. }
  204. if(createForm.kslx === '7') {
  205. let lkxx_value = [];
  206. let lkxx_label = [];
  207. for(let j in createForm.lkxx) {
  208. lkxx_label.push(createForm.lkxx[j].label);
  209. lkxx_value.push(createForm.lkxx[j].value);
  210. }
  211. data.yzy_ksjh.ykj_lkxx = lkxx_value.join(',');
  212. data.yzy_ksjh.ykj_lkxx_name = lkxx_label.join(',');
  213. }
  214. request({
  215. url: '/yzy/ksjh/liankao_add',
  216. data: data,
  217. }).then((res) => {
  218. if (res.code === "1") {
  219. ElMessage.success("考试计划创建成功!");
  220. linkTo('process');
  221. }
  222. });
  223. } else {
  224. console.log("error submit!", fields);
  225. }
  226. });
  227. }
  228. </script>
  229. <style scoped>
  230. </style>