zhuf 2 years ago
parent
commit
d11ebb31a2
4 changed files with 72 additions and 328 deletions
  1. 5 1
      components.d.ts
  2. 60 320
      src/pages/xdjx/kbgl/kbcssz.vue
  3. 5 5
      src/pages/xdjx/kbgl/njkb/index.vue
  4. 2 2
      src/router/index.ts

+ 5 - 1
components.d.ts

@@ -7,17 +7,20 @@ declare module '@vue/runtime-core' {
   export interface GlobalComponents {
     AppLink: typeof import('./src/components/AppLink/index.vue')['default']
     ElButton: typeof import('element-plus/es')['ElButton']
+    ElCascader: typeof import('element-plus/es')['ElCascader']
     ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
     ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
     ElDialog: typeof import('element-plus/es')['ElDialog']
-    ElEmpty: typeof import('element-plus/es')['ElEmpty']
     ElForm: typeof import('element-plus/es')['ElForm']
     ElFormItem: typeof import('element-plus/es')['ElFormItem']
     ElInput: typeof import('element-plus/es')['ElInput']
+    ElLink: typeof import('element-plus/es')['ElLink']
     ElMenu: typeof import('element-plus/es')['ElMenu']
     ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
     ElOption: typeof import('element-plus/es')['ElOption']
     ElPagination: typeof import('element-plus/es')['ElPagination']
+    ElPopover: typeof import('element-plus/es')['ElPopover']
+    ElProgress: typeof import('element-plus/es')['ElProgress']
     ElRadio: typeof import('element-plus/es')['ElRadio']
     ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
     ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
@@ -25,6 +28,7 @@ declare module '@vue/runtime-core' {
     ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
     ElTable: typeof import('element-plus/es')['ElTable']
     ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
+    ElUpload: typeof import('element-plus/es')['ElUpload']
     FileLink: typeof import('./src/components/FileLink/index.vue')['default']
     FileUpload: typeof import('./src/components/FileUpload/index.vue')['default']
     ImportButton: typeof import('./src/components/ImportButton/index.vue')['default']

+ 60 - 320
src/pages/xdjx/kbgl/kbcssz.vue

@@ -1,324 +1,64 @@
-<script setup lang="ts">
-import { ref, getCurrentInstance, reactive } from "vue";
-import { useRouter } from "vue-router";
-import request, { download } from '~/utils/request';
-import { pick } from 'lodash-es';
-import { ElMessage } from 'element-plus'
-import type { FormInstance, FormRules } from 'element-plus'
-import type { AxiosRequestConfig } from 'axios'
-
-// #region (constant)
-const TABLE_KEY = 'xkk_id'
-const URL_CUT = '/xdjx/kbgl_kbcssz'
-const URL_CUT_REF = ref(URL_CUT)
-const URL_SUBMIT_KEY = URL_CUT.split('/').join('_').slice(1)
-const instance = getCurrentInstance()
-const router = useRouter()
-// #endregion
-
-// #region (variable)
-const loading_table = ref(true)
-let whichDialogSubmit:'add'|'edit'
-// #endregion
-
-// #region (type)
-type TYPE_TABLE_FIELD = {
-  [TABLE_KEY]: string;
-  'xkk_kblx': string; // 课表类型名称
-  'xkk_csmc': string; // 参数名称
-  'xkk_cjr': string; // 创建人
-}
-// #endregion
-
-// #region (props)
-// #endregion
-
-// #region (query row)
-const queryForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
-
-const handleQueryFormBtn_search = () => {
-      queryApi()
-    }
-const handleQueryFormBtn_clear = () => {
-      queryForm_Data.value = {}
-    }
-// #endregion
-
-// #region (table selection)
-const multipleSelection = ref<TYPE_TABLE_FIELD[]>([])
-const handleSelectionChange = (val:TYPE_TABLE_FIELD[]) => {
-  multipleSelection.value = val
-}
-// #endregion
-
-// #region (table row)
-const handleTableRowBtn_import = async ({ file }: { file: File }) => {
-      const res = await API_MAP['import']({ file })
-      if(res.code === '1'){
-        queryApi()
-        ElMessage.success(res.msg)
-      }
-    }
-const handleTableRowBtn_export = () => {
-      if(multipleSelection.value.length===0) return ElMessage.info('请先勾选导出文件');exportApi({[TABLE_KEY]:multipleSelection.value.map((item: TYPE_TABLE_FIELD)=>item[TABLE_KEY])?.join()})
-    }
-const handleTableRowBtn_add = () => {
-      whichDialogSubmit = 'add'
-      dialogForm_Data.value = {}
-      dialogVisible_addOrEdit.value = true
-    }
-const handleTableRowBtn_delete = async () => {
-      await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD)=>item[TABLE_KEY]))
-      queryApi()
-    }
-// #endregion
-
-// #region (table body)
-const tableData = ref<TYPE_TABLE_FIELD[]>([])
-const DetailName = '-KBGL-KBCSSZ'
-const DetailParam = 'aid'
-
-const handleTableColBtn_edit = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      const res = await detailApi(scope.row[TABLE_KEY])
-      dialogForm_Data.value = (res.data.one_info)
-      dialogVisible_addOrEdit.value = true
-    }
-const handleTableColBtn_audit = (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
-      dialogVisible_audit.value = true
-    }
-const handleTableColBtn_detail = (scope:{row:TYPE_TABLE_FIELD}) => {
-      router.push({ name:DetailName, params:{ [DetailParam]:scope.row[TABLE_KEY]} })
-    }
-const handleTableColBtn_delete = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      const resp = await deleteApi(scope.row[TABLE_KEY]);if(resp.code!=='1')return;ElMessage.success('删除成功');
-      queryApi()
-    }
-// #endregion
-
-// #region (pagination)
-const total = ref(0)
-const limit = ref(10)
-
-const currentPage=ref(1)
-function handleCurrentChange(){
-  queryApi()
-}
-// #endregion
-
-// #region (dialog base)
-const dialogForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
-
-const handleDialogFormBtn_submit = async (formRefKey:string, extendData?: Partial<TYPE_TABLE_FIELD>) => {
-      const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid:boolean) => valid)
-      if (isValid) {
-        const resp = await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({...dialogForm_Data.value,...extendData}))
-        if(resp.code!=='1')return;ElMessage.success('操作成功');handleDialogFormBtn_cancel()
-        queryApi()
-      }
-    }
-const handleDialogFormBtn_cancel = (formRefKey?:string) => {
-      dialogVisible_addOrEdit.value = false
-      dialogVisible_audit.value = false
-    }
-// #endregion
-
-// #region (dialog add/edit)
-const dialogVisible_addOrEdit = ref<boolean>(false)
-
-const dialogForm_Ref_addOrEdit= ref<FormInstance>()
-const dialogForm_Rules_addOrEdit = reactive({
-  'xkk_kblx':{required : true ,message:'课表类型名称不能为空', trigger: 'submit'},
-  'xkk_csmc':{required : true ,message:'参数名称不能为空', trigger: 'submit'},
-  'xkk_cjr':{required : true ,message:'创建人不能为空', trigger: 'submit'},
-})
-// #endregion
-
-// #region (dialog audit)
-const dialogVisible_audit = ref<boolean>(false)
-
-const dialogForm_Field_audit= reactive<{
-  FLAG:keyof TYPE_TABLE_FIELD,
-  REASON?:keyof TYPE_TABLE_FIELD
-}>({
-  FLAG:'xkk_id',
-  REASON:'xkk_id'
-})
-
-const dialogForm_Ref_audit= ref<FormInstance>()
-const dialogForm_Rules_audit = reactive<FormRules>({
-  'xkk_kblx':{required : true ,message:'课表类型名称不能为空', trigger: 'submit'},
-  'xkk_csmc':{required : true ,message:'参数名称不能为空', trigger: 'submit'},
-  'xkk_cjr':{required : true ,message:'创建人不能为空', trigger: 'submit'},
-})
-
-// #endregion
-
-// #region (request api):
-function queryApi(){
-  loading_table.value = true
-  return request({
-    url: URL_CUT + '/index',
-    data: {
-      ...queryForm_Data.value,
-      limit: limit.value,
-      page: currentPage.value
-    }
-  }).then((response:{data:{total_rows:string,page_data:TYPE_TABLE_FIELD[]}}) => {
-    const { data } = response
-    total.value = parseInt(data.total_rows)
-    tableData.value = data.page_data
-    return response
-  }).then(() => {
-    loading_table.value = false
-  })
-}
-
-function addApi(data:TYPE_TABLE_FIELD){
-  return request({
-    url: URL_CUT + '/add',
-    data: {
-      [URL_SUBMIT_KEY]:data,
-    }
-  })
-}
-
-function editApi(data:Partial<TYPE_TABLE_FIELD>){
-  return request({
-    url: URL_CUT + '/edit',
-    data: {
-      [TABLE_KEY]:data[TABLE_KEY],
-      [URL_SUBMIT_KEY]:pick(data,['xkk_kblx','xkk_csmc','xkk_cjr',]),
-    }
-  })
-}
-
-function deleteApi(id:string|string[]){
-  return request({
-    url: URL_CUT + '/delete',
-    data: {
-      [TABLE_KEY]:id,
-    }
-  })
-}
-
-function detailApi(id:string){
-  return request({
-    url: URL_CUT + '/detail',
-    data: {
-      [TABLE_KEY]:id,
-    }
-  })
-}
-
-function importApi(data:{file:File}){
-  return request({
-    $type: 'import',
-    url: URL_CUT + '/import',
-    data
-  } as AxiosRequestConfig)
-}
-
-function exportApi(d){
-  return download(URL_CUT + '/index', {...queryForm_Data.value,...d})
-}
-
-const API_MAP = {
-  query:queryApi,
-  add:addApi,
-  edit:editApi,
-  delete:deleteApi,
-  detail:detailApi,
-  import:importApi,
-  export:exportApi,
-}
-// #endregion
-
-// #region (page init)
-function init(){
-  queryApi()
-}
-init()
-// #endregion
+<script setup lang='ts'>
+
+// 周次可选值			年级可选值			班级可选值			学科可选值
+// 名称	填写值		名称	填写值		名称	填写值		语文	语文
+// 第1周	1		一年级	1		1班	1		数学	数学
+// 第2周	2		二年级	2		2班	2		外语	外语
+// 第3周	3		三年级	3		3班	3		政治	政治
+// 第4周	4		四年级	4		4班	4		物理	物理
+// 第5周	5		五年级	5		5班	5		生物	生物
+// 第6周	6		六年级	6		6班	6		地理	地理
+// 第7周	7		初一/七年级	7		7班	7		历史	历史
+// 第8周	8		初二/八年级	8		8班	8		化学	化学
+// 第9周	9		初三/九年级	9		9班	9		体育	体育
+// 第10周	10		高一	11		10班	10		音乐	音乐
+// 第11周	11		高二	12		11班	11		美术	美术
+// 第12周	12		高三	13		12班	12		信息技术	信息技术
+// 第13周	13		中职一	17		13班	13		科学	科学
+// 第14周	14		中职二	18		14班	14		社会	社会
+// 第15周	15		中职三	19		15班	15		心理与法制	心理与法制
+// ...	...		中职四	21		...	...		劳动	劳动
+// 第30周	30		大学	20		50班	50		通用技术	通用技术
+// 将上面数据转换成下面的格式
+const tableData = [
+  { zc_k: '第1周', zc_v: 1, nj_k: '一年级', nj_v: 1, bj_k: '1班', bj_v: 1, xk_k: '语文', xk_v: '语文' },
+  { zc_k: '第2周', zc_v: 2, nj_k: '二年级', nj_v: 2, bj_k: '2班', bj_v: 2, xk_k: '数学', xk_v: '数学' },
+  { zc_k: '第3周', zc_v: 3, nj_k: '三年级', nj_v: 3, bj_k: '3班', bj_v: 3, xk_k: '外语', xk_v: '外语' },
+  { zc_k: '第4周', zc_v: 4, nj_k: '四年级', nj_v: 4, bj_k: '4班', bj_v: 4, xk_k: '政治', xk_v: '政治' },
+  { zc_k: '第5周', zc_v: 5, nj_k: '五年级', nj_v: 5, bj_k: '5班', bj_v: 5, xk_k: '物理', xk_v: '物理' },
+  { zc_k: '第6周', zc_v: 6, nj_k: '六年级', nj_v: 6, bj_k: '6班', bj_v: 6, xk_k: '生物', xk_v: '生物' },
+  { zc_k: '第7周', zc_v: 7, nj_k: '初一/七年级', nj_v: 7, bj_k: '7班', bj_v: 7, xk_k: '地理', xk_v: '地理' },
+  { zc_k: '第8周', zc_v: 8, nj_k: '初二/八年级', nj_v: 8, bj_k: '8班', bj_v: 8, xk_k: '历史', xk_v: '历史' },
+  { zc_k: '第9周', zc_v: 9, nj_k: '初三/九年级', nj_v: 9, bj_k: '9班', bj_v: 9, xk_k: '化学', xk_v: '化学' },
+  { zc_k: '第10周', zc_v: 10, nj_k: '高一', nj_v: 11, bj_k: '10班', bj_v: 10, xk_k: '体育', xk_v: '体育' },
+  { zc_k: '第11周', zc_v: 11, nj_k: '高二', nj_v: 12, bj_k: '11班', bj_v: 11, xk_k: '音乐', xk_v: '音乐' },
+  { zc_k: '第12周', zc_v: 12, nj_k: '高三', nj_v: 13, bj_k: '12班', bj_v: 12, xk_k: '美术', xk_v: '美术' },
+  { zc_k: '第13周', zc_v: 13, nj_k: '中职一', nj_v: 17, bj_k: '13班', bj_v: 13, xk_k: '信息技术', xk_v: '信息技术' },
+  { zc_k: '第14周', zc_v: 14, nj_k: '中职二', nj_v: 18, bj_k: '14班', bj_v: 14, xk_k: '科学', xk_v: '科学' },
+  // { zc_k: '第15周', zc_v: 15, nj_k: '中职三', nj_v: 19, bj_k: '15班', bj_v: 15, xk_k: '社会', xk_v: '社会' },
+  { zc_k: '...', zc_v: '...', nj_k: '中职三', nj_v: 21, bj_k: '...', bj_v: '...', xk_k: '心理与法制', xk_v: '心理与法制' },
+  { zc_k: '第30周', zc_v: 30, nj_k: '大学', nj_v: 20, bj_k: '30班', bj_v: 30, xk_k: '劳动', xk_v: '劳动' },
+]
 
 </script>
 
 <template>
-  <div class="card flex-grow flex flex-col">
-    <el-form inline :model="queryForm_Data">
-      <el-form-item label="关键字"><el-input v-model="queryForm_Data.keyword" clearable /></el-form-item>
-      <!-- <el-form-item label="课表类型名称"><el-input v-model="queryForm_Data.xkk_kblx" clearable /></el-form-item>
-      <el-form-item label="参数名称"><el-input v-model="queryForm_Data.xkk_csmc" clearable /></el-form-item>
-      <el-form-item label="创建人"><el-input v-model="queryForm_Data.xkk_cjr" clearable /></el-form-item> -->
-      <el-form-item>
-        <el-button @click="handleQueryFormBtn_search" type="primary">搜索</el-button>
-        <el-button @click="handleQueryFormBtn_clear" type="warning">清空</el-button>
-      </el-form-item>
-    </el-form>
-    <div class="divider"></div>
-    <div>
-        <!-- <import-button @success="queryApi" :url="URL_CUT_REF"></import-button>
-        <el-button @click="handleTableRowBtn_export" type="success">导出</el-button> -->
-        <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
-        <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
-    </div>
-
-    <div class="divider"></div>
-    <div class="flex-auto">
-      <el-table :data="tableData" @selection-change="handleSelectionChange" v-loading="loading_table"
-        element-loading-background="#ffffff70">
-        <el-table-column type="selection"></el-table-column><el-table-column type="index" label="序号" width="60" :index="(i: number) => (currentPage - 1) * limit + i + 1" />
-        <el-table-column prop="xkk_csmc" label="参数名称" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xkk_cjr" label="创建人" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xkk_kblx" label="课表类型名称" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column label="操作" fixed="right">
-          <template #default="scope">
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary" >编辑</el-button>
-            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary" >审核</el-button> -->
-            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary" >详情</el-button> -->
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary" >删除</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-    </div>
-
-    <div class="flex justify-end mt-10 py-4">
-      <el-pagination :page-size="limit" v-model:current-page="currentPage" @current-change="handleCurrentChange"
-        background layout="total, prev, pager, next" :total="total" />
-    </div>
-  </div>
-
-  <el-dialog v-model="dialogVisible_addOrEdit" append-to-body destroy-on-close>
-    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit" label-width="120px">
-      <el-form-item label="参数名称" prop="xkk_csmc"><el-input v-model="dialogForm_Data.xkk_csmc" clearable /></el-form-item>
-      <el-form-item label="创建人" prop="xkk_cjr"><el-input v-model="dialogForm_Data.xkk_cjr" clearable /></el-form-item>
-      <el-form-item label="课表类型" prop="xkk_kblx">
-        <remote-dictionary-select to="KBLX" v-model="dialogForm_Data.xkk_kblx" clearable />
-        </el-form-item>
-      <div class="flex justify-center">
-        <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit')" type="primary">提交</el-button>
-        <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_addOrEdit')" type="default">取消</el-button>
-      </div>
-    </el-form>
-  </el-dialog>
-
-  <el-dialog v-model="dialogVisible_audit" append-to-body destroy-on-close>
-    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_audit" :rules="dialogForm_Rules_audit" label-width="120px">
-      <el-form-item label="状态">
-        <el-radio-group v-model="dialogForm_Data[dialogForm_Field_audit.FLAG]">
-          <el-radio label="1">通过</el-radio>
-          <el-radio label="2">未通过</el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <!-- <el-form-item label="原因" v-show="dialogForm_Data[dialogForm_Field_audit.FLAG] === '1'">
-        <el-input type="textarea" v-model="dialogForm_Data[dialogForm_Field_audit.REASON]" :rows="5" />
-      </el-form-item> -->
-      <div class="flex justify-center">
-        <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_audit')" type="primary">提交</el-button>
-        <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_audit')" type="default">取消</el-button>
-      </div>
-    </el-form>
-  </el-dialog>
-</template>
+  <el-table :data="tableData" style="width: 100%">
+    <el-table-column label="周次可选值">
+      <el-table-column prop="zc_k" label="名称" width="auto" />
+      <el-table-column prop="zc_v" label="填写值" width="auto" />
+    </el-table-column>
+    <el-table-column label="年级可选值">
+      <el-table-column prop="nj_k" label="名称" width="auto" />
+      <el-table-column prop="nj_v" label="填写值" width="auto" />
+    </el-table-column>
+    <el-table-column label="班级可选值">
+      <el-table-column prop="bj_k" label="名称" width="auto" />
+      <el-table-column prop="bj_v" label="填写值" width="auto" />
+    </el-table-column>
+    <el-table-column label="学科可选值">
+      <el-table-column prop="xk_k" label="名称" width="auto" />
+      <el-table-column prop="xk_v" label="填写值" width="auto" />
+    </el-table-column>
+  </el-table>
+</template>

+ 5 - 5
src/pages/xdjx/kbgl/njkb/index.vue

@@ -1,11 +1,11 @@
 <script setup lang="ts">
-import { ref, getCurrentInstance, reactive } from "vue";
+import type { AxiosRequestConfig } from 'axios';
+import type { FormInstance, FormRules } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { pick } from 'lodash-es';
+import { getCurrentInstance, reactive, ref } from "vue";
 import { useRouter } from "vue-router";
 import request, { download } from '~/utils/request';
-import { pick } from 'lodash-es';
-import { ElMessage } from 'element-plus'
-import type { FormInstance, FormRules } from 'element-plus'
-import type { AxiosRequestConfig } from 'axios'
 
 // #region (constant)
 const TABLE_KEY = 'xkn_id'

+ 2 - 2
src/router/index.ts

@@ -2,9 +2,9 @@ import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router';
 import { app_ready, app_routes } from '~/store/app';
 import { RouteRecordDetailRaw } from './routes.d';
 
-// import localRoutes,{title} from './routes/xdjx';
+import localRoutes, { title } from './routes/xdjx';
 // import localRoutes, { title } from './routes/xdjy';
-import localRoutes, { title } from './routes/xdhq';
+// import localRoutes, { title } from './routes/xdhq';
 
 document.title = title