zs il y a 4 mois
Parent
commit
f498b33edd

+ 1 - 0
src/lang/package/zh-cn/common.js

@@ -10,6 +10,7 @@ export default {
   detail: '详情',
   detail: '详情',
   exam: '审核',
   exam: '审核',
   dict: '字典数据',
   dict: '字典数据',
+  preliminary: '初赛信息',
   sign: '报名',
   sign: '报名',
   score: '分数',
   score: '分数',
   process: '流程',
   process: '流程',

+ 0 - 1
src/lang/package/zh-cn/menus.js

@@ -11,7 +11,6 @@ export default {
   // message: '站内消息',
   // message: '站内消息',
   // journal: '行研产研',
   // journal: '行研产研',
   // journal_notes: '期刊管理'
   // journal_notes: '期刊管理'
-
   // system_menus: '菜单设置',
   // system_menus: '菜单设置',
   // system_userMenus: '用户目录',
   // system_userMenus: '用户目录',
   // system_role: '角色设置',
   // system_role: '角色设置',

+ 1 - 0
src/lang/package/zh-cn/pages.js

@@ -215,6 +215,7 @@ export default {
     scoreDialogTitle: '分数管理',
     scoreDialogTitle: '分数管理',
     upDialogTitle: '修改赛事',
     upDialogTitle: '修改赛事',
     examDialogTitle: '审核赛事',
     examDialogTitle: '审核赛事',
+    limiDialogTitle: '初赛信息',
     name: '赛事名称',
     name: '赛事名称',
     tags: '标签',
     tags: '标签',
     type: '类型',
     type: '类型',

+ 40 - 0
src/store/api/platform/matchExt.js

@@ -0,0 +1,40 @@
+import { defineStore } from 'pinia'
+import { AxiosWrapper } from '@/utils/axios-wrapper'
+import { get } from 'lodash-es'
+const url = '/matchExt'
+const axios = new AxiosWrapper()
+
+export const MatchExtStore = defineStore('matchExt', () => {
+  const query = async ({ skip = 0, limit = undefined, ...info } = {}) => {
+    let cond = {}
+    if (skip) cond.skip = skip
+    if (limit) cond.limit = limit
+    cond = { ...cond, ...info }
+    const res = await axios.$get(`${url}`, cond)
+    return res
+  }
+  const fetch = async (payload) => {
+    const res = await axios.$get(`${url}/${payload}`)
+    return res
+  }
+  const create = async (payload) => {
+    const res = await axios.$post(`${url}`, payload)
+    return res
+  }
+  const update = async (payload) => {
+    const id = get(payload, 'id', get(payload, '_id'))
+    const res = await axios.$post(`${url}/${id}`, payload)
+    return res
+  }
+  const del = async (payload) => {
+    const res = await axios.$delete(`${url}/${payload}`)
+    return res
+  }
+  return {
+    query,
+    fetch,
+    create,
+    update,
+    del
+  }
+})

+ 40 - 0
src/store/api/platform/matchReg.js

@@ -0,0 +1,40 @@
+import { defineStore } from 'pinia'
+import { AxiosWrapper } from '@/utils/axios-wrapper'
+import { get } from 'lodash-es'
+const url = '/matchReg'
+const axios = new AxiosWrapper()
+
+export const MatchRegStore = defineStore('matchReg', () => {
+  const query = async ({ skip = 0, limit = undefined, ...info } = {}) => {
+    let cond = {}
+    if (skip) cond.skip = skip
+    if (limit) cond.limit = limit
+    cond = { ...cond, ...info }
+    const res = await axios.$get(`${url}`, cond)
+    return res
+  }
+  const fetch = async (payload) => {
+    const res = await axios.$get(`${url}/${payload}`)
+    return res
+  }
+  const create = async (payload) => {
+    const res = await axios.$post(`${url}`, payload)
+    return res
+  }
+  const update = async (payload) => {
+    const id = get(payload, 'id', get(payload, '_id'))
+    const res = await axios.$post(`${url}/${id}`, payload)
+    return res
+  }
+  const del = async (payload) => {
+    const res = await axios.$delete(`${url}/${payload}`)
+    return res
+  }
+  return {
+    query,
+    fetch,
+    create,
+    update,
+    del
+  }
+})

+ 200 - 0
src/views/information/parts/match/preliminary/index.vue

@@ -0,0 +1,200 @@
+<template>
+  <div class="main" v-loading="loading">
+    <el-col :span="24" class="one">
+      <el-table :data="list" style="width: 100%" size="large" :header-cell-style="{ backgroundColor: '#edf3ff' }">
+        <template #empty>
+          <el-empty description="暂无数据" />
+        </template>
+        <el-table-column prop="no" align="center" label="编号" width="100"> </el-table-column>
+        <el-table-column prop="user_name" align="center" label="用户"> </el-table-column>
+        <el-table-column prop="time" align="center" label="报名时间" />
+        <el-table-column prop="status" align="center" label="状态" width="100">
+          <template #default="scope">
+            <el-tag v-if="scope.row.status == '0'" type="success">符合要求</el-tag>
+            <el-tag v-else type="info">已退回</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="操作" width="180">
+          <template #default="{ row }">
+            <el-link v-if="row.status == '0'" :underline="false" type="warning" size="mini" @click="toView(row)" style="margin-right: 10px">审核</el-link>
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-col>
+    <el-col :span="24" class="two">
+      <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>
+    <el-dialog v-model="dialog.show" :title="dialog.title" :destroy-on-close="false" @close="toClose">
+      <el-descriptions title="报名信息" :column="1" border>
+        <template #extra>
+          <el-button type="danger" @click="toExam">退回报名申请</el-button>
+        </template>
+        <el-descriptions-item v-for="(item, index) in info" :key="index" :label="item.problem">
+          <div class="type" v-if="item.type == '0' || item.type == '2' || item.type == '3' || item.type == '4'">{{ item.reply || '暂无内容' }}</div>
+          <div class="type" v-if="item.type == '1'">{{ item.reply.join(',') }}</div>
+          <div class="type" v-if="item.type == '5'">
+            <div v-for="(as, img) in item.reply" :key="img">
+              <el-link :href="getUrl(as)" target="_blank">{{ as.name }}</el-link>
+            </div>
+          </div>
+          <div class="type" v-if="item.type == '6'">
+            <div class="list">
+              <div v-for="(aa, ina) in item.answer" :key="ina" class="name">{{ aa.text }}</div>
+            </div>
+            <div class="list" v-for="(gg, inx) in item.reply" :key="inx">
+              <div v-for="(aa, ina) in item.answer" :key="ina" class="input">
+                {{ gg[aa.text] }}
+              </div>
+            </div>
+          </div>
+          <div class="type" v-if="item.type == '7'">
+            <div v-for="(as, img) in item.answer" :key="img">
+              <el-link :href="getUrl(as)" target="_blank">{{ as.name }}</el-link>
+            </div>
+          </div>
+        </el-descriptions-item>
+      </el-descriptions>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import { get } from 'lodash-es'
+const $checkRes = inject('$checkRes')
+// 加载中
+const loading = ref(false)
+const id = ref('')
+const props = defineProps({
+  matchInfo: { type: Object }
+})
+const match = computed({
+  get() {
+    return props.matchInfo
+  }
+})
+// 接口
+import { MatchRegStore } from '@/store/api/platform/matchReg'
+const store = MatchRegStore()
+// 列表
+const list = ref([])
+let skip = 0
+let limit = inject('limit')
+const total = ref(0)
+const currentPage = ref(1)
+
+const info = ref([])
+
+const form = ref({})
+const dialog = ref({ type: '1', show: false, title: '审核报名信息' })
+
+const search = async (query = { skip, limit }) => {
+  skip = query.skip
+  limit = query.limit
+  const info = {
+    skip: query.skip,
+    limit: query.limit,
+    match_id: id.value
+  }
+  const res = await store.query(info)
+  if (res.errcode == '0') {
+    list.value = res.data
+    total.value = res.total
+  }
+}
+// 审核
+const toView = (data) => {
+  form.value = data
+  info.value = data.info
+  dialog.value = { type: '1', show: true, title: '审核报名信息' }
+}
+// 图片处理
+const getUrl = (e) => {
+  if (e) return `${import.meta.env.VITE_APP_HOST}${get(e, 'uri')}`
+}
+// 审核
+const toExam = () => {
+  ElMessageBox.confirm('确定将该报名信息退回?', '审核信息', {
+    confirmButtonText: '确认',
+    cancelButtonText: '取消',
+    type: 'warning'
+  })
+    .then(async () => {
+      const data = form.value
+      const res = await store.update({ id: data.id, status: '-1' })
+      if ($checkRes(res, true)) {
+        toClose()
+      }
+    })
+    .catch(() => {})
+}
+// 分页
+const changePage = (page = currentPage.value) => {
+  search({ skip: (page - 1) * limit, limit: limit })
+}
+const sizeChange = (limits) => {
+  limit = limits
+  currentPage.value = 1
+  search({ skip: 0, limit: limit })
+}
+const toClose = async () => {
+  form.value = {}
+  dialog.value = { show: false }
+  await search({ skip, limit })
+}
+watch(
+  match,
+  async (item) => {
+    id.value = item.id
+    loading.value = true
+    await search({ skip, limit })
+    loading.value = false
+  },
+  {
+    immediate: true //初始化立即执行
+  }
+)
+</script>
+<style scoped lang="scss">
+.main {
+  .two {
+    display: flex;
+    justify-content: center;
+    margin: 20px 0 0 0;
+  }
+  .type {
+    .image {
+      width: 100%;
+    }
+  }
+
+  .list {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    margin: 10px 0;
+
+    .name {
+      width: 50%;
+      text-align: center;
+    }
+
+    .input {
+      width: 50%;
+      margin: 0 5px 0 0;
+      border: 1px solid #e5e5e5;
+      border-radius: 5px;
+      text-align: center;
+
+      .name {
+        width: 50%;
+        text-align: center;
+        margin: 0 0 10px 0;
+      }
+    }
+  }
+  :deep(.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell) {
+    text-align: center;
+    width: 10px !important; /* 设置你想要的宽度 */
+  }
+}
+</style>

+ 194 - 8
src/views/information/parts/platform/match.vue

@@ -9,7 +9,22 @@
       </template>
       </template>
     </custom-search-bar>
     </custom-search-bar>
     <custom-button-bar :fields="buttonFields" @add="toAdd" @select="toMoreDelect"></custom-button-bar>
     <custom-button-bar :fields="buttonFields" @add="toAdd" @select="toMoreDelect"></custom-button-bar>
-    <custom-table :data="data" :fields="fields" @query="search" :total="total" :opera="opera" @score="toScore" @process="toProcess" @sign="toSign" @exam="toExam" @edit="toEdit" @delete="toDelete" @toSelect="toSelect" :select="false">
+    <custom-table
+      :data="data"
+      :fields="fields"
+      @query="search"
+      :total="total"
+      :opera="opera"
+      @score="toScore"
+      @preliminary="toPreliminary"
+      @process="toProcess"
+      @sign="toSign"
+      @exam="toExam"
+      @edit="toEdit"
+      @delete="toDelete"
+      @toSelect="toSelect"
+      :select="false"
+    >
       <template #is_use="{ row }">
       <template #is_use="{ row }">
         <el-tag v-if="row.is_use == '0'" type="success" @click="toUse(row, '1')">启用</el-tag>
         <el-tag v-if="row.is_use == '0'" type="success" @click="toUse(row, '1')">启用</el-tag>
         <el-tag v-else type="info" @click="toUse(row, '0')">禁用</el-tag>
         <el-tag v-else type="info" @click="toUse(row, '0')">禁用</el-tag>
@@ -146,6 +161,25 @@
               </template>
               </template>
             </custom-form>
             </custom-form>
           </el-tab-pane>
           </el-tab-pane>
+          <el-tab-pane label="调查问卷" name="fourth" v-if="form.form == '4'">
+            <el-col :span="24" class="add">
+              <el-button type="primary" @click="addInvest()">添加</el-button>
+            </el-col>
+            <el-table :data="investigateList" border>
+              <el-table-column type="index" label="序号" width="80" align="center"> </el-table-column>
+              <el-table-column prop="problem" label="问题" align="center"> </el-table-column>
+              <el-table-column label="操作" align="center" width="200">
+                <template #default="scope">
+                  <el-button size="mini" type="primary" @click="updateInvest(scope.row)">修改</el-button>
+                  <el-button size="mini" type="danger" @click="delInvest(scope.row)">删除</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+            <div class="button">
+              <el-button type="warning" @click="InvestSave('-2')">保存草稿</el-button>
+              <el-button type="primary" @click="InvestSave('0')">保存并提交审核</el-button>
+            </div>
+          </el-tab-pane>
         </el-tabs>
         </el-tabs>
       </el-col>
       </el-col>
       <el-col :span="24" v-if="dialog.type == '2'">
       <el-col :span="24" v-if="dialog.type == '2'">
@@ -162,8 +196,44 @@
       <el-col :span="24" v-if="dialog.type === '4'">
       <el-col :span="24" v-if="dialog.type === '4'">
         <score :matchInfo="matchInfo"></score>
         <score :matchInfo="matchInfo"></score>
       </el-col>
       </el-col>
+      <el-col :span="24" v-if="dialog.type === '5'">
+        <preliminary :matchInfo="matchInfo"></preliminary>
+      </el-col>
     </el-row>
     </el-row>
   </el-dialog>
   </el-dialog>
+  <el-dialog v-model="dialogVisible" title="调查问卷填写" width="800" :destroy-on-close="false" @close="toInvestClose">
+    <custom-form v-model="investigateForm" :fields="fourformFields" :rules="fourRules" @save="toInvestigateSave" submitText="保存" :DraftSave="false">
+      <template #type>
+        <el-option v-for="i in proTypeList" :key="i.value" :label="i.label" :value="i.value"></el-option>
+      </template>
+      <template #answer>
+        <div class="answer" v-if="investigateForm.type == '0' || investigateForm.type == '1' || investigateForm.type == '2' || investigateForm.type == '6'">
+          <el-col :span="24" class="add">
+            <el-button type="primary" @click="addAnswer()">添加</el-button>
+          </el-col>
+          <el-table :data="answerList" border>
+            <el-table-column type="index" label="序号" width="80" align="center"> </el-table-column>
+            <el-table-column prop="text" label="答案" align="center" width="500">
+              <template #default="scope">
+                <el-input v-model="scope.row.text" placeholder="请输入答案" />
+              </template>
+            </el-table-column>
+            <el-table-column label="操作" align="center" width="100">
+              <template #default="scope">
+                <el-button type="danger" @click="delAnswer(scope.row)">删除</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+        <div class="answer" v-if="investigateForm.type == '7'">
+          <custom-upload model="file" :list="answerFile" :limit="1" url="/files/web/cxyy_match/upload" @change="onaUpload"></custom-upload>
+        </div>
+      </template>
+      <template #is_must>
+        <el-radio v-for="i in isUseList" :key="i.id" :label="i.value">{{ i.label }}</el-radio>
+      </template>
+    </custom-form>
+  </el-dialog>
 </template>
 </template>
 
 
 <script setup>
 <script setup>
@@ -172,10 +242,12 @@ import moment from 'moment'
 import { cloneDeep, get } from 'lodash-es'
 import { cloneDeep, get } from 'lodash-es'
 const $checkRes = inject('$checkRes')
 const $checkRes = inject('$checkRes')
 const { t } = useI18n()
 const { t } = useI18n()
+const router = useRouter()
 // 组件
 // 组件
 import table1 from '../match/sign/table-1.vue'
 import table1 from '../match/sign/table-1.vue'
 import table2 from '../match/sign/table-2.vue'
 import table2 from '../match/sign/table-2.vue'
 import score from '../match/score/index.vue'
 import score from '../match/score/index.vue'
+import preliminary from '../match/preliminary/index.vue'
 // 接口
 // 接口
 import { MatchStore } from '@/store/api/platform/match'
 import { MatchStore } from '@/store/api/platform/match'
 import { ProcessStore } from '@/store/api/platform/process'
 import { ProcessStore } from '@/store/api/platform/process'
@@ -199,6 +271,7 @@ const fields = [
   { label: t('pages.match.status'), model: 'status', format: (i) => getDict(i, 'status') }
   { label: t('pages.match.status'), model: 'status', format: (i) => getDict(i, 'status') }
 ]
 ]
 const opera = [
 const opera = [
+  { label: t('common.preliminary'), method: 'preliminary', display: (i) => i.form === '4' },
   { label: t('common.score'), method: 'score', display: (i) => i.match_status == '2' && i.form != '3' },
   { label: t('common.score'), method: 'score', display: (i) => i.match_status == '2' && i.form != '3' },
   { label: t('common.sign'), method: 'sign', type: 'warning' },
   { label: t('common.sign'), method: 'sign', type: 'warning' },
   {
   {
@@ -295,6 +368,38 @@ const rulesFields = ref([
   { label: t('pages.match.rules11'), model: 'rules11', custom: true },
   { label: t('pages.match.rules11'), model: 'rules11', custom: true },
   { label: t('pages.match.rules12'), model: 'rules12', custom: true }
   { label: t('pages.match.rules12'), model: 'rules12', custom: true }
 ])
 ])
+// 调查问卷
+const investigateList = ref([])
+const investigateForm = ref({})
+const fourformFields = ref([
+  { label: '问题', model: 'problem' },
+  { label: '类型', model: 'type', type: 'select' },
+  {
+    label: '答案',
+    model: 'answer',
+    custom: true,
+    display: () => investigateForm.value.type == '0' || investigateForm.value.type == '1' || investigateForm.value.type == '2' || investigateForm.value.type == '6' || investigateForm.value.type == '7'
+  },
+  { label: '是否必填', model: 'is_must', type: 'radio' },
+  { label: '备注', model: 'remark', type: 'textarea' }
+])
+const fourRules = reactive({
+  problem: [{ required: true, message: '请输入问题', trigger: 'blur' }]
+})
+const dialogVisible = ref(false)
+const proTypeList = ref([
+  { value: '0', label: '单选' },
+  { value: '1', label: '多选' },
+  { value: '2', label: '下拉' },
+  { value: '3', label: '单行文本' },
+  { value: '4', label: '多行文本' },
+  { value: '5', label: '图片/文件' },
+  { value: '6', label: '数组' },
+  { value: '7', label: '附件模板' }
+])
+// 答案
+const answerList = ref([])
+const answerFile = ref([])
 // 请求
 // 请求
 onMounted(async () => {
 onMounted(async () => {
   loading.value = true
   loading.value = true
@@ -384,14 +489,19 @@ const toMoreDelect = () => {
 const toAdd = () => {
 const toAdd = () => {
   dialog.value = { type: '1', show: true, title: t('pages.match.addDialogTitle') }
   dialog.value = { type: '1', show: true, title: t('pages.match.addDialogTitle') }
 }
 }
+
 // 修改
 // 修改
 const toEdit = async (data) => {
 const toEdit = async (data) => {
-  data.time = [data.start_time, data.end_time]
-  if (!data.file) data.file = []
-  if (!data.video) data.video = []
-  form.value = data
-  await searchProcess()
-  dialog.value = { type: '1', show: true, title: t('pages.match.upDialogTitle') }
+  let res = await store.fetch(data.id)
+  if (res.errcode == '0') {
+    res.data.time = [data.start_time, data.end_time]
+    if (!res.data.file) res.data.file = []
+    if (!res.data.video) res.data.video = []
+    form.value = res.data
+    if (res.data.ext_info && res.data.ext_info.length > 0) investigateList.value = res.data.ext_info
+    await searchProcess()
+    dialog.value = { type: '1', show: true, title: t('pages.match.upDialogTitle') }
+  }
 }
 }
 // 报名管理
 // 报名管理
 const toSign = (data) => {
 const toSign = (data) => {
@@ -403,6 +513,11 @@ const toScore = (data) => {
   matchInfo.value = data
   matchInfo.value = data
   dialog.value = { type: '4', show: true, title: t('pages.match.scoreDialogTitle') }
   dialog.value = { type: '4', show: true, title: t('pages.match.scoreDialogTitle') }
 }
 }
+// 查看初赛信息
+const toPreliminary = (data) => {
+  matchInfo.value = data
+  dialog.value = { type: '5', show: true, title: t('pages.match.limiDialogTitle') }
+}
 // 删除
 // 删除
 const toDelete = async (data) => {
 const toDelete = async (data) => {
   const res = await store.del(data.id)
   const res = await store.del(data.id)
@@ -437,7 +552,7 @@ const toExamSave = async () => {
   const data = cloneDeep(examForm.value)
   const data = cloneDeep(examForm.value)
   let res = await store.update({ id: data.id, status: data.status })
   let res = await store.update({ id: data.id, status: data.status })
   if ($checkRes(res, true)) {
   if ($checkRes(res, true)) {
-    search({ skip, limit })
+    await search({ skip, limit })
     toClose()
     toClose()
   }
   }
 }
 }
@@ -491,6 +606,7 @@ const toReset = async () => {
 const toClose = () => {
 const toClose = () => {
   form.value = { rules: {}, video: [], file: [] }
   form.value = { rules: {}, video: [], file: [] }
   dialog.value = { show: false }
   dialog.value = { show: false }
+  investigateList.value = []
   activeName.value = 'first'
   activeName.value = 'first'
 }
 }
 // 上传图片
 // 上传图片
@@ -498,6 +614,69 @@ const onUpload = (e) => {
   const { model, value } = e
   const { model, value } = e
   form.value[model] = value
   form.value[model] = value
 }
 }
+// 调查问卷填写
+const addInvest = () => {
+  dialogVisible.value = true
+  investigateForm.value = { sid: moment().valueOf(), problem: '', type: '', is_must: '', reply: '', answer: '', remark: '' }
+}
+// 调查问卷修改
+const updateInvest = (e) => {
+  dialogVisible.value = true
+  if (e.answer && e.answer.length > 0) answerList.value = e.answer
+  investigateForm.value = e
+}
+// 删除调查问卷
+const delInvest = async (e) => {
+  let list = investigateList.value.filter((i) => i.sid != e.sid)
+  investigateList.value = list
+}
+// 保存
+const toInvestigateSave = (data) => {
+  if (answerList.value && answerList.value.length > 0) data.answer = answerList.value
+  else data.answer = answerFile.value
+  let investigate = investigateList.value.find((i) => i.sid == data.sid)
+  if (investigate) {
+    investigateList.value = investigateList.value.map((i) => {
+      if (i.sid == data.sid) return data
+      else return i
+    })
+  } else investigateList.value.push(data)
+  toInvestClose()
+}
+const toInvestClose = () => {
+  investigateForm.value = {}
+  answerList.value = []
+  dialogVisible.value = false
+}
+// 答案添加
+const addAnswer = () => {
+  let list = answerList.value || []
+  list.push({ sid: moment().valueOf(), text: '' })
+  answerList.value = list
+}
+//  答案删除
+const delAnswer = async (e) => {
+  let list = answerList.value.filter((i) => i.sid != e.sid)
+  answerList.value = list
+}
+//  保存并提交审核
+const InvestSave = async (status) => {
+  const data = cloneDeep(form.value)
+  const other = { status }
+  let res
+  if (get(data, 'id')) res = await store.update({ id: data.id, ext_info: investigateList.value, ...other, ...data })
+  else res = await store.create({ ext_info: investigateList.value, ...other, ...data })
+  if (res.errcode == 0) {
+    ElMessage({ message: `发布成功可以上历史发布查看`, type: 'success' })
+    await search({ skip, limit })
+    await toClose()
+  }
+}
+// 上传图片
+const onaUpload = (e) => {
+  const { value } = e
+  answerFile.value = value
+}
 </script>
 </script>
 <style scoped lang="scss">
 <style scoped lang="scss">
 .rules {
 .rules {
@@ -512,6 +691,13 @@ const onUpload = (e) => {
     margin-left: 0 !important;
     margin-left: 0 !important;
   }
   }
 }
 }
+.add {
+  margin: 0 0 10px 0;
+}
+.button {
+  text-align: center;
+  margin: 10px 0 0 0;
+}
 .tables {
 .tables {
   .tables_1 {
   .tables_1 {
     margin: 0 0 10px 0;
     margin: 0 0 10px 0;

+ 1 - 3
src/views/journal/index.vue

@@ -56,9 +56,7 @@ const opera = [
   { label: t('common.exam'), method: 'exam', type: 'warning', display: (i) => i.status === '0' },
   { label: t('common.exam'), method: 'exam', type: 'warning', display: (i) => i.status === '0' },
   { label: t('common.delete'), method: 'delete', confirm: true, type: 'danger', display: (i) => i.is_use === '1' }
   { label: t('common.delete'), method: 'delete', confirm: true, type: 'danger', display: (i) => i.is_use === '1' }
 ]
 ]
-const buttonFields = [
-  { label: t('common.create'), method: 'add' },
-]
+const buttonFields = [{ label: t('common.create'), method: 'add' }]
 let skip = 0
 let skip = 0
 let limit = inject('limit')
 let limit = inject('limit')
 const total = ref(0)
 const total = ref(0)