Kaynağa Gözat

修改必填项

zs 1 ay önce
ebeveyn
işleme
ac8ab3e9b7
3 değiştirilmiş dosya ile 201 ekleme ve 47 silme
  1. 18 3
      src/views/home/index.vue
  2. 72 21
      src/views/match/thr.vue
  3. 111 23
      src/views/match/two.vue

+ 18 - 3
src/views/home/index.vue

@@ -28,7 +28,7 @@
         </div>
         <div class="content">
           <one v-if="info.ext_status == '0' || info.ext_status == '1'" :info="info" @toExamtion="toExamtion" @toExport="toExport" @toStep2="toStep2"></one>
-          <two v-if="info.ext_status == '2' || info.ext_status == '3' || info.ext_status == '4'" :info="info" @stepFill="stepFill" @toStep3="toStep3" @toStep4="toStep4" @toExport="toExport" @step4Score="step4Score" @toStep5="toStep5" @toFinals="toFinals"></two>
+          <two v-if="info.ext_status == '2' || info.ext_status == '3' || info.ext_status == '4'" :info="info" @stepFill="stepFill" @toStep3="toStep3" @toStep4="toStep4" @toExport="toExport" @step4Score="step4Score" @toStep5="toStep5" @toFinals="toFinals" @updateSTime="updateSTime"></two>
           <thr
             v-if="info.ext_status == '5' || info.ext_status == '6' || info.ext_status == '7' || info.ext_status == '8'"
             :info="info"
@@ -156,7 +156,7 @@ const toStep2 = () => {
 }
 // 补充初审时间
 const stepFill = (data) => {
-  ElMessageBox.confirm('是否确定补充选择用户的初审时间?', '组织初审', {
+  ElMessageBox.confirm('是否确认设置用户初审时间??', '初审时间', {
     confirmButtonText: '确认',
     cancelButtonText: '取消',
     type: 'warning'
@@ -215,7 +215,7 @@ const step4Score = async (data) => {
 }
 // 进入决赛的名单
 const toFinals = async (data) => {
-  ElMessageBox.confirm('是否确定选择报名信息进入决赛名单?', '决赛名单', {
+  ElMessageBox.confirm('是否确定选择报名信息进入决赛名单?', '决赛名单', {
     confirmButtonText: '确认',
     cancelButtonText: '取消',
     type: 'warning'
@@ -393,6 +393,21 @@ const onStatus = (data) => {
     })
     .catch(() => {})
 }
+// 单独修改初审时间
+const updateSTime = (data) => {
+  ElMessageBox.confirm('是否确定修改初审时间?', '初审时间', {
+    confirmButtonText: '确认',
+    cancelButtonText: '取消',
+    type: 'warning'
+  })
+    .then(async () => {
+      const res = await matchRegStore.update(data)
+      if ($checkRes(res, true)) {
+        search()
+      }
+    })
+    .catch(() => {})
+}
 provide('extList', extList)
 provide('isUseList', isUseList)
 </script>

+ 72 - 21
src/views/match/thr.vue

@@ -1,22 +1,8 @@
 <template>
   <div class="main">
-    <el-row class="one" v-if="info.ext_status == '5'">
-      <el-col :span="10">
-        <el-form ref="ruleFormRef" :model="timeForm" :rules="rules" label-width="auto" class="form" label-position="left">
-          <el-form-item label="设置决赛时间" prop="start_time">
-            <el-date-picker format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="timeForm.start_time" type="datetime" placeholder="请选择决赛时间" style="width: 90%" />
-          </el-form-item>
-        </el-form>
-      </el-col>
-      <el-col :span="14">
-        <el-button type="primary" :disabled="selectionList && selectionList.length > 0 ? false : true" v-if="info.ext_status == '5'" @click="submitForm(ruleFormRef)">补充决赛时间</el-button>
-      </el-col>
-      <el-col :span="24">
-        <el-alert title="请设置决赛时间并选择要填写决赛时间的用户!" type="warning" :closable="false" />
-      </el-col>
-    </el-row>
     <el-col :span="14" class="export">
       <div class="one_left" @click="toExport">导出</div>
+      <div class="one_left" @click="toStart" v-if="info.ext_status == '5'">分配决赛时间</div>
       <div class="one_left" @click="toMessage" v-if="info.ext_status == '5'">发送消息提示</div>
       <div class="one_left" @click="toSupplement" v-if="info.ext_status == '5'">补充决赛人员</div>
     </el-col>
@@ -93,7 +79,7 @@
         </el-table-column>
         <el-table-column align="center" label="操作" width="160">
           <template #default="{ row }">
-            <el-link :underline="false" type="primary" size="mini" @click="toView(row, true)" style="margin-right: 10px">查看</el-link>
+            <el-link :underline="false" type="primary" size="mini" @click="toView(row)" style="margin-right: 10px">查看</el-link>
             <el-link :underline="false" v-if="info.ext_status == '5' && row.status == '2'" type="primary" size="mini" @click="toStatus(row)" style="margin-right: 10px">修改报名状态</el-link>
             <el-link :underline="false" v-if="info.ext_status == '5' && row.final_confirm == '0'" type="primary" size="mini" @click="toLink(row)" style="margin-right: 10px">排序</el-link>
             <el-link :underline="false" v-if="info.ext_status == '7'" type="primary" size="mini" @click="toScore(row)" style="margin-right: 10px">上传决赛分数</el-link>
@@ -227,6 +213,66 @@
           </div>
         </el-form>
       </div>
+      <div v-else-if="dialog.type == '8'">
+        <el-col :span="24" class="one">
+          <el-form ref="ruleFormRef" :model="timeForm" :rules="rules" label-width="auto" class="form" label-position="left">
+            <el-form-item label="设置决赛时间" prop="start_time">
+              <el-date-picker format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="timeForm.start_time" type="datetime" placeholder="请选择决赛时间" style="width: 90%" />
+            </el-form-item>
+          </el-form>
+        </el-col>
+        <el-col :span="24" class="two">
+          <el-table :data="list" style="width: 100%" size="large" :header-cell-style="{ backgroundColor: '#edf3ff' }" @selection-change="timeChange">
+            <template #empty>
+              <el-empty description="暂无数据" />
+            </template>
+            <el-table-column type="selection" width="55"> </el-table-column>
+            <el-table-column prop="no" align="center" label="编号" width="100">
+              <template #default="scope">
+                {{ scope.row.no || '——' }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="user_name" align="center" label="用户">
+              <template #default="scope">
+                {{ scope.row.user_name || '——' }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="project_name" align="center" label="项目名称">
+              <template #default="scope">
+                {{ scope.row.project_name || '——' }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="person_unit" align="center" label="单位名称">
+              <template #default="scope">
+                {{ scope.row.person_unit || '——' }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="final_start_time" align="center" label="决赛时间">
+              <template #default="scope">
+                {{ scope.row.final_start_time || '——' }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="ext_status" align="center" label="流程状态">
+              <template #default="scope">
+                {{ getDict(scope.row.ext_status, 'ext_status') || '暂无' }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="status" align="center" label="状态" width="100">
+              <template #default="scope">
+                <el-tag v-if="scope.row.status == '0'" type="primary">待审核</el-tag>
+                <el-tag v-else-if="scope.row.status == '1'" type="success">已通过</el-tag>
+                <el-tag v-else type="info">已退回</el-tag>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-col>
+        <el-col :span="24" class="thr">
+          <el-pagination background layout="prev, pager, next" :total="total" :page-size="limit" v-model:current-page="currentPage" @current-change="changePage" @size-change="sizeChange" />
+        </el-col>
+        <div class="button">
+          <el-button type="primary" :disabled="timeList && timeList.length > 0 ? false : true" @click="submitForm(ruleFormRef)">保存决赛时间</el-button>
+        </div>
+      </div>
     </el-dialog>
     <el-dialog v-model="dialogVisible" title="分数信息填写" width="800" :destroy-on-close="false" @close="toSclose">
       <el-form ref="scoreFormRef" :model="scoreForm" :rules="scoreRules" label-width="auto" class="form" label-position="left">
@@ -300,7 +346,7 @@ const isUseList = inject('isUseList')
 
 // 批量导出
 const selectionList = ref([])
-const is_look = ref(false)
+const timeList = ref([])
 
 // 上传分数
 const scoreForm = ref({ details: [] })
@@ -381,6 +427,13 @@ const getDict = (data, model) => {
 const handleSelectionChange = (val) => {
   selectionList.value = val
 }
+const timeChange = (val) => {
+  timeList.value = val
+}
+// 分配决赛时间
+const toStart = () => {
+  dialog.value = { type: '8', show: true, title: '分配决赛时间' }
+}
 // 补充决赛时间
 const submitForm = async (formEl) => {
   if (!formEl) return
@@ -389,7 +442,7 @@ const submitForm = async (formEl) => {
       const data = {
         start_time: timeForm.value.start_time,
         id: id.value,
-        ids: selectionList.value.map((i) => {
+        ids: timeList.value.map((i) => {
           return i.id
         })
       }
@@ -417,8 +470,7 @@ const onsubmitOrder = async (formEl) => {
   })
 }
 // 审核
-const toView = (data, is_no) => {
-  is_look.value = is_no
+const toView = (data) => {
   form.value = data
   extInfo.value = data.info
   dialog.value = { type: '1', show: true, title: '报名信息' }
@@ -553,7 +605,6 @@ const toPerson = (data) => {
   toClose()
 }
 const toClose = async () => {
-  is_look.value = false
   form.value = {}
   totalForm.value = {}
   detailsList.value = []

+ 111 - 23
src/views/match/two.vue

@@ -1,22 +1,8 @@
 <template>
   <div class="main">
-    <el-row class="one" v-if="info.ext_status == '2'">
-      <el-col :span="10">
-        <el-form ref="ruleFormRef" :model="timeForm" :rules="rules" label-width="auto" class="form" label-position="left">
-          <el-form-item label="设置初审时间" prop="start_time">
-            <el-date-picker format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="timeForm.start_time" type="datetime" placeholder="请选择初审时间" style="width: 90%" />
-          </el-form-item>
-        </el-form>
-      </el-col>
-      <el-col :span="14">
-        <el-button type="primary" :disabled="selectionList && selectionList.length > 0 ? false : true" v-if="info.ext_status == '2'" @click="submitForm(ruleFormRef)">补充初审时间</el-button>
-      </el-col>
-      <el-col :span="24">
-        <el-alert title="请设置初审时间并选择要填写初审时间的用户!" type="warning" :closable="false" />
-      </el-col>
-    </el-row>
     <el-col :span="6" class="export">
       <div class="one_left" @click="toExport">导出</div>
+      <div class="one_left" v-if="info.ext_status == '2'" @click="toStart">分配初审时间</div>
       <div class="one_left" v-if="info.ext_status == '4'" :disabled="selectionList && selectionList.length > 0 ? false : true" @click="toFinals">选择决赛名单</div>
     </el-col>
     <el-col :span="24" class="two">
@@ -67,7 +53,8 @@
         </el-table-column>
         <el-table-column align="center" label="操作" width="160">
           <template #default="{ row }">
-            <el-link :underline="false" type="primary" size="mini" @click="toView(row, true)" style="margin-right: 10px">查看</el-link>
+            <el-link :underline="false" type="primary" size="mini" @click="toView(row)" style="margin-right: 10px">查看</el-link>
+            <el-link :underline="false" v-if="info.ext_status == '2'" type="primary" size="mini" @click="toTime(row)" style="margin-right: 10px">设置初审时间</el-link>
             <el-link :underline="false" v-if="info.ext_status == '4'" type="primary" size="mini" @click="toScore(row)">上传初审分数</el-link>
           </template>
         </el-table-column>
@@ -129,6 +116,81 @@
           </div>
         </el-form>
       </div>
+      <div v-else-if="dialog.type == '3'">
+        <el-col :span="24" class="one">
+          <el-form ref="ruleFormRef" :model="timeForm" :rules="rules" label-width="auto" class="form" label-position="left">
+            <el-form-item label="设置初审时间" prop="start_time">
+              <el-date-picker format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="timeForm.start_time" type="datetime" placeholder="请选择初审时间" style="width: 90%" />
+            </el-form-item>
+          </el-form>
+        </el-col>
+        <el-col :span="24" class="two">
+          <el-table :data="list" style="width: 100%" size="large" :header-cell-style="{ backgroundColor: '#edf3ff' }" @selection-change="timeChange">
+            <template #empty>
+              <el-empty description="暂无数据" />
+            </template>
+            <el-table-column type="selection" width="55"> </el-table-column>
+            <el-table-column prop="no" align="center" label="编号" width="100">
+              <template #default="scope">
+                {{ scope.row.no || '——' }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="user_name" align="center" label="用户">
+              <template #default="scope">
+                {{ scope.row.user_name || '——' }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="project_name" align="center" label="项目名称">
+              <template #default="scope">
+                {{ scope.row.project_name || '——' }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="person_unit" align="center" label="单位名称">
+              <template #default="scope">
+                {{ scope.row.person_unit || '——' }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="time" align="center" label="报名时间">
+              <template #default="scope">
+                {{ scope.row.time || '——' }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="start_time" align="center" label="初审时间">
+              <template #default="scope">
+                {{ scope.row.start_time || '——' }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="ext_status" align="center" label="流程状态">
+              <template #default="scope">
+                {{ getDict(scope.row.ext_status, 'ext_status') || '暂无' }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="status" align="center" label="状态" width="100">
+              <template #default="scope">
+                <el-tag v-if="scope.row.status == '0'" type="primary">待审核</el-tag>
+                <el-tag v-else-if="scope.row.status == '1'" type="success">已通过</el-tag>
+                <el-tag v-else type="info">已退回</el-tag>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-col>
+        <el-col :span="24" class="thr">
+          <el-pagination background layout="prev, pager, next" :total="total" :page-size="limit" v-model:current-page="currentPage" @current-change="changePage" @size-change="sizeChange" />
+        </el-col>
+        <div class="button">
+          <el-button type="primary" :disabled="timeList && timeList.length > 0 ? false : true" @click="submitForm(ruleFormRef)">保存初审时间</el-button>
+        </div>
+      </div>
+      <div v-else-if="dialog.type == '4'">
+        <el-form ref="ruleFormRef" :model="timeForm" :rules="rules" label-width="auto" class="form" label-position="left">
+          <el-form-item label="设置初审时间" prop="start_time">
+            <el-date-picker format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="timeForm.start_time" type="datetime" placeholder="请选择初审时间" style="width: 90%" />
+          </el-form-item>
+          <div style="text-align: center">
+            <el-button type="primary" @click="ontimeSubmit(ruleFormRef)">保存初审时间</el-button>
+          </div>
+        </el-form>
+      </div>
     </el-dialog>
   </div>
 </template>
@@ -174,8 +236,7 @@ const isUseList = inject('isUseList')
 
 // 批量导出
 const selectionList = ref([])
-const is_look = ref(false)
-
+const timeList = ref([])
 // 上传分数
 const scoreForm = ref({})
 // 表单
@@ -184,7 +245,7 @@ const scoreRules = reactive({
   score: [{ required: true, message: '请输入初审分数', trigger: 'blur' }]
 })
 
-const emits = defineEmits(['toStep2', 'stepFill', 'toExport', 'toStep3', 'toStep4', 'step4Score', 'toFinals', 'toStep5'])
+const emits = defineEmits(['toStep2', 'stepFill', 'toExport', 'toStep3', 'toStep4', 'step4Score', 'toFinals', 'toStep5', 'updateSTime'])
 
 const search = async (query = { skip, limit }) => {
   skip = query.skip
@@ -213,6 +274,9 @@ const getDict = (data, model) => {
 const handleSelectionChange = (val) => {
   selectionList.value = val
 }
+const timeChange = (val) => {
+  timeList.value = val
+}
 // 补充初审时间
 const submitForm = async (formEl) => {
   if (!formEl) return
@@ -221,7 +285,7 @@ const submitForm = async (formEl) => {
       const data = {
         start_time: timeForm.value.start_time,
         match_id: id.value,
-        ids: selectionList.value.map((i) => {
+        ids: timeList.value.map((i) => {
           return i.id
         })
       }
@@ -231,9 +295,25 @@ const submitForm = async (formEl) => {
     }
   })
 }
+// 修改初审时间
+const ontimeSubmit = async (formEl) => {
+  if (!formEl) return
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      const data = {
+        start_time: timeForm.value.start_time,
+        id: timeForm.value.id
+      }
+      emits('updateSTime', data)
+      toClose()
+    } else {
+      console.log('error submit!', fields)
+    }
+  })
+}
+
 // 审核
-const toView = (data, is_no) => {
-  is_look.value = is_no
+const toView = (data) => {
   form.value = data
   extInfo.value = data.info
   dialog.value = { type: '1', show: true, title: '报名信息' }
@@ -243,6 +323,15 @@ const toScore = (data) => {
   scoreForm.value = data
   dialog.value = { type: '2', show: true, title: '上传初审分数' }
 }
+// 分配初审时间
+const toStart = () => {
+  dialog.value = { type: '3', show: true, title: '分配初审时间' }
+}
+// 单独设置初审时间
+const toTime = (data) => {
+  timeForm.value = data
+  dialog.value = { type: '4', show: true, title: '设置初审时间' }
+}
 // 图片处理
 const getUrl = (e) => {
   if (e) return `${import.meta.env.VITE_APP_HOST}${get(e, 'uri')}`
@@ -304,7 +393,6 @@ const toFinals = () => {
   }
 }
 const toClose = async () => {
-  is_look.value = false
   form.value = {}
   scoreForm.value = {}
   dialog.value = { show: false }