From 46ecc4f96f978085e3ae014d77b33a8180c0a3c7 Mon Sep 17 00:00:00 2001 From: yangjun <1173114630@qq.com> Date: Sat, 1 Apr 2023 18:17:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=90=AC=E8=AF=BE=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/kc/tktj/kcTingke/KcTingke.api.ts | 72 +++++++ src/views/kc/tktj/kcTingke/KcTingke.data.ts | 116 +++++++++++ src/views/kc/tktj/kcTingke/KcTingkeList.vue | 168 ++++++++++++++++ .../tktj/kcTingke/components/KcTingkeForm.vue | 181 ++++++++++++++++++ .../kcTingke/components/KcTingkeModal.vue | 75 ++++++++ src/views/kc/tktj/kcTingke/kkdw.api.ts | 72 +++++++ src/views/kc/tktj/kcTingke/kkdw.data.ts | 94 +++++++++ src/views/kc/tktj/kcTingke/kkdw.vue | 167 ++++++++++++++++ src/views/kc/tktj/kcTingke/tkmx.api.ts | 72 +++++++ src/views/kc/tktj/kcTingke/tkmx.data.ts | 89 +++++++++ src/views/kc/tktj/kcTingke/tkmx.vue | 167 ++++++++++++++++ src/views/kc/tktj/kcTingke/tkrytj.vue | 17 ++ src/views/kc/tktj/tkfgl/tkfgl.vue | 69 +++++++ src/views/kc/tktj/tkfgl/tkfglTjt.vue | 109 +++++++++++ src/views/kc/tktj/tkmx/tkmx.api.ts | 72 +++++++ src/views/kc/tktj/tkmx/tkmx.data.ts | 79 ++++++++ src/views/kc/tktj/tkmx/tkmx.vue | 163 ++++++++++++++++ src/views/kc/tktj/tktjmain.vue | 41 ++++ src/views/kc/tktj/tkztj/tkztj.vue | 75 ++++++++ src/views/kc/tktj/tkztj/tkztjTjt.vue | 105 ++++++++++ src/views/kc/tktj/zxdt/zxdt.vue | 19 ++ 21 files changed, 2022 insertions(+) create mode 100644 src/views/kc/tktj/kcTingke/KcTingke.api.ts create mode 100644 src/views/kc/tktj/kcTingke/KcTingke.data.ts create mode 100644 src/views/kc/tktj/kcTingke/KcTingkeList.vue create mode 100644 src/views/kc/tktj/kcTingke/components/KcTingkeForm.vue create mode 100644 src/views/kc/tktj/kcTingke/components/KcTingkeModal.vue create mode 100644 src/views/kc/tktj/kcTingke/kkdw.api.ts create mode 100644 src/views/kc/tktj/kcTingke/kkdw.data.ts create mode 100644 src/views/kc/tktj/kcTingke/kkdw.vue create mode 100644 src/views/kc/tktj/kcTingke/tkmx.api.ts create mode 100644 src/views/kc/tktj/kcTingke/tkmx.data.ts create mode 100644 src/views/kc/tktj/kcTingke/tkmx.vue create mode 100644 src/views/kc/tktj/kcTingke/tkrytj.vue create mode 100644 src/views/kc/tktj/tkfgl/tkfgl.vue create mode 100644 src/views/kc/tktj/tkfgl/tkfglTjt.vue create mode 100644 src/views/kc/tktj/tkmx/tkmx.api.ts create mode 100644 src/views/kc/tktj/tkmx/tkmx.data.ts create mode 100644 src/views/kc/tktj/tkmx/tkmx.vue create mode 100644 src/views/kc/tktj/tktjmain.vue create mode 100644 src/views/kc/tktj/tkztj/tkztj.vue create mode 100644 src/views/kc/tktj/tkztj/tkztjTjt.vue create mode 100644 src/views/kc/tktj/zxdt/zxdt.vue diff --git a/src/views/kc/tktj/kcTingke/KcTingke.api.ts b/src/views/kc/tktj/kcTingke/KcTingke.api.ts new file mode 100644 index 0000000..c55155e --- /dev/null +++ b/src/views/kc/tktj/kcTingke/KcTingke.api.ts @@ -0,0 +1,72 @@ +import { defHttp } from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/kcTingke/kcTingke/list', + save='/kcTingke/kcTingke/add', + edit='/kcTingke/kcTingke/edit', + deleteOne = '/kcTingke/kcTingke/delete', + deleteBatch = '/kcTingke/kcTingke/deleteBatch', + importExcel = '/kcTingke/kcTingke/importExcel', + exportXls = '/kcTingke/kcTingke/exportXls', +} + +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; + +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; + +/** + * 列表接口 + * @param params + */ +export const list = (params) => defHttp.get({ url: Api.list, params }); + +/** + * 删除单个 + * @param params + * @param handleSuccess + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + +/** + * 批量删除 + * @param params + * @param handleSuccess + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} + +/** + * 保存或者更新 + * @param params + * @param isUpdate + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({ url: url, params }, { isTransformResponse: false }); +} diff --git a/src/views/kc/tktj/kcTingke/KcTingke.data.ts b/src/views/kc/tktj/kcTingke/KcTingke.data.ts new file mode 100644 index 0000000..6b6cfba --- /dev/null +++ b/src/views/kc/tktj/kcTingke/KcTingke.data.ts @@ -0,0 +1,116 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '行号', + align: "center", + dataIndex: '$no', + width: '50px', + customRender: (r) => { + return r.index+1; + } + }, + { + title: '职工号', + align: "center", + dataIndex: 'userid' + }, + { + title: '姓名', + align: "center", + dataIndex: 'username' + }, + { + title: '听课人所在单位', + align: "center", + dataIndex: 'tksf1' + }, + { + title: '听课身份', + align: "center", + dataIndex: 'tkyq' + }, + { + title: '听课要求', + align: "center", + dataIndex: 'sjtksl' + }, + { + title: '实际听课数', + align: "center", + dataIndex: 'mltksl' + }, + { + title: '其中马列教研室课程数', + align: "center", + dataIndex: 'tkdw' + }, +]; + +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; + +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '听课时间', + field: 'tingketime', + component: 'Input', + }, + { + label: '检查时间', + field: 'jianchatime', + component: 'Input', + }, + { + label: '课程表id', + field: 'kechengbiaoid', + component: 'Input', + }, + { + label: '用户id', + field: 'userid', + component: 'Input', + }, + { + label: '用户名', + field: 'username', + component: 'Input', + }, + { + label: '用户单位名称', + field: 'userdwmc', + component: 'Input', + }, + { + label: 'usertksf1', + field: 'usertksf1', + component: 'Input', + }, + { + label: 'usertksf2', + field: 'usertksf2', + component: 'Input', + }, + { + label: 'usertksfcode', + field: 'usertksfcode', + component: 'Input', + }, + { + label: 'usertkyq', + field: 'usertkyq', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false, + }, +]; diff --git a/src/views/kc/tktj/kcTingke/KcTingkeList.vue b/src/views/kc/tktj/kcTingke/KcTingkeList.vue new file mode 100644 index 0000000..df48f62 --- /dev/null +++ b/src/views/kc/tktj/kcTingke/KcTingkeList.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/src/views/kc/tktj/kcTingke/components/KcTingkeForm.vue b/src/views/kc/tktj/kcTingke/components/KcTingkeForm.vue new file mode 100644 index 0000000..11b65c6 --- /dev/null +++ b/src/views/kc/tktj/kcTingke/components/KcTingkeForm.vue @@ -0,0 +1,181 @@ + + + + + diff --git a/src/views/kc/tktj/kcTingke/components/KcTingkeModal.vue b/src/views/kc/tktj/kcTingke/components/KcTingkeModal.vue new file mode 100644 index 0000000..ddde086 --- /dev/null +++ b/src/views/kc/tktj/kcTingke/components/KcTingkeModal.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/views/kc/tktj/kcTingke/kkdw.api.ts b/src/views/kc/tktj/kcTingke/kkdw.api.ts new file mode 100644 index 0000000..7c2e7ef --- /dev/null +++ b/src/views/kc/tktj/kcTingke/kkdw.api.ts @@ -0,0 +1,72 @@ +import { defHttp } from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/kcTingke/kcTingke/getKkdwlist', + save='/kcTingke/kcTingke/add', + edit='/kcTingke/kcTingke/edit', + deleteOne = '/kcTingke/kcTingke/delete', + deleteBatch = '/kcTingke/kcTingke/deleteBatch', + importExcel = '/kcTingke/kcTingke/importExcel', + exportXls = '/kcTingke/kcTingke/exportXls', +} + +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; + +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; + +/** + * 列表接口 + * @param params + */ +export const list = (params) => defHttp.get({ url: Api.list, params }); + +/** + * 删除单个 + * @param params + * @param handleSuccess + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + +/** + * 批量删除 + * @param params + * @param handleSuccess + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} + +/** + * 保存或者更新 + * @param params + * @param isUpdate + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({ url: url, params }, { isTransformResponse: false }); +} diff --git a/src/views/kc/tktj/kcTingke/kkdw.data.ts b/src/views/kc/tktj/kcTingke/kkdw.data.ts new file mode 100644 index 0000000..22ba4c7 --- /dev/null +++ b/src/views/kc/tktj/kcTingke/kkdw.data.ts @@ -0,0 +1,94 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '行号', + align: "center", + dataIndex: '$no', + width: '50px', + customRender: (r) => { + return r.index+1; + } + }, + { + title: '开课单位', + align: "center", + dataIndex: 'kkdw' + }, + { + title: '开课课堂数', + align: "center", + dataIndex: 'kkkts' + }, + { + title: '听课课堂数', + children: [ + { + title: '总数', + dataIndex: 'tkkts', + key: 'tkkts', + }, + { + title: '本单位数', + dataIndex: 'bdwtks', + key: 'bdwtks', + }, + ], + }, + { + title: '评课课堂数', + children: [ + { + title: '总数', + dataIndex: 'pkkts', + key: 'pkkts', + }, + { + title: '本单位数', + dataIndex: 'bdwpks', + key: 'bdwpks', + }, + ], + }, + { + title: '听课人次数', + children: [ + { + title: '总人次数', + dataIndex: 'tkrcs', + key: 'tkrcs', + }, + { + title: '本单位人次数', + dataIndex: 'bdwtkrcs', + key: 'bdwtkrcs', + }, + ], + }, + { + title: '评课人次数', + children: [ + { + title: '总人次数', + dataIndex: 'pkrcs', + key: 'pkrcs', + }, + { + title: '本单位人次数', + dataIndex: 'bdwpkrcs', + key: 'bdwpkrcs', + }, + ], + }, +]; + +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; + +//表单数据 +export const formSchema: FormSchema[] = [ +]; diff --git a/src/views/kc/tktj/kcTingke/kkdw.vue b/src/views/kc/tktj/kcTingke/kkdw.vue new file mode 100644 index 0000000..5357612 --- /dev/null +++ b/src/views/kc/tktj/kcTingke/kkdw.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/src/views/kc/tktj/kcTingke/tkmx.api.ts b/src/views/kc/tktj/kcTingke/tkmx.api.ts new file mode 100644 index 0000000..c55155e --- /dev/null +++ b/src/views/kc/tktj/kcTingke/tkmx.api.ts @@ -0,0 +1,72 @@ +import { defHttp } from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/kcTingke/kcTingke/list', + save='/kcTingke/kcTingke/add', + edit='/kcTingke/kcTingke/edit', + deleteOne = '/kcTingke/kcTingke/delete', + deleteBatch = '/kcTingke/kcTingke/deleteBatch', + importExcel = '/kcTingke/kcTingke/importExcel', + exportXls = '/kcTingke/kcTingke/exportXls', +} + +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; + +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; + +/** + * 列表接口 + * @param params + */ +export const list = (params) => defHttp.get({ url: Api.list, params }); + +/** + * 删除单个 + * @param params + * @param handleSuccess + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + +/** + * 批量删除 + * @param params + * @param handleSuccess + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} + +/** + * 保存或者更新 + * @param params + * @param isUpdate + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({ url: url, params }, { isTransformResponse: false }); +} diff --git a/src/views/kc/tktj/kcTingke/tkmx.data.ts b/src/views/kc/tktj/kcTingke/tkmx.data.ts new file mode 100644 index 0000000..5d596c8 --- /dev/null +++ b/src/views/kc/tktj/kcTingke/tkmx.data.ts @@ -0,0 +1,89 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '行号', + align: "center", + dataIndex: '$no', + width: '50px', + customRender: (r) => { + return r.index+1; + } +}, + { + title: '开课单位', + align: "center", + dataIndex: 'userid' + }, + { + title: '开课课堂数', + children: [ + { + title: '总数', + dataIndex: 'userid', + key: 'userid', + }, + { + title: '本单位数', + dataIndex: 'userid', + key: 'userid', + }, + ], + }, + { + title: '评课课堂数', + children: [ + { + title: '总数', + dataIndex: 'userid', + key: 'userid', + }, + { + title: '本单位数', + dataIndex: 'userid', + key: 'userid', + }, + ], + }, + { + title: '听课人次数', + children: [ + { + title: '总人次数', + dataIndex: 'userid', + key: 'userid', + }, + { + title: '本单位人次数', + dataIndex: 'userid', + key: 'userid', + }, + ], + }, + { + title: '评课人次数', + children: [ + { + title: '总人次数', + dataIndex: 'userid', + key: 'userid', + }, + { + title: '本单位人次数', + dataIndex: 'userid', + key: 'userid', + }, + ], + }, +]; + +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; + +//表单数据 +export const formSchema: FormSchema[] = [ +]; diff --git a/src/views/kc/tktj/kcTingke/tkmx.vue b/src/views/kc/tktj/kcTingke/tkmx.vue new file mode 100644 index 0000000..19efd23 --- /dev/null +++ b/src/views/kc/tktj/kcTingke/tkmx.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/src/views/kc/tktj/kcTingke/tkrytj.vue b/src/views/kc/tktj/kcTingke/tkrytj.vue new file mode 100644 index 0000000..ba08349 --- /dev/null +++ b/src/views/kc/tktj/kcTingke/tkrytj.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/views/kc/tktj/tkfgl/tkfgl.vue b/src/views/kc/tktj/tkfgl/tkfgl.vue new file mode 100644 index 0000000..8c79a48 --- /dev/null +++ b/src/views/kc/tktj/tkfgl/tkfgl.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/views/kc/tktj/tkfgl/tkfglTjt.vue b/src/views/kc/tktj/tkfgl/tkfglTjt.vue new file mode 100644 index 0000000..abfd138 --- /dev/null +++ b/src/views/kc/tktj/tkfgl/tkfglTjt.vue @@ -0,0 +1,109 @@ + + diff --git a/src/views/kc/tktj/tkmx/tkmx.api.ts b/src/views/kc/tktj/tkmx/tkmx.api.ts new file mode 100644 index 0000000..8f0db23 --- /dev/null +++ b/src/views/kc/tktj/tkmx/tkmx.api.ts @@ -0,0 +1,72 @@ +import { defHttp } from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/kcTingke/kcTingke/getTkmxlist', + save='/kcTingke/kcTingke/add', + edit='/kcTingke/kcTingke/edit', + deleteOne = '/kcTingke/kcTingke/delete', + deleteBatch = '/kcTingke/kcTingke/deleteBatch', + importExcel = '/kcTingke/kcTingke/importExcel', + exportXls = '/kcTingke/kcTingke/exportXls', +} + +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; + +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; + +/** + * 列表接口 + * @param params + */ +export const list = (params) => defHttp.get({ url: Api.list, params }); + +/** + * 删除单个 + * @param params + * @param handleSuccess + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + +/** + * 批量删除 + * @param params + * @param handleSuccess + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} + +/** + * 保存或者更新 + * @param params + * @param isUpdate + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({ url: url, params }, { isTransformResponse: false }); +} diff --git a/src/views/kc/tktj/tkmx/tkmx.data.ts b/src/views/kc/tktj/tkmx/tkmx.data.ts new file mode 100644 index 0000000..6397341 --- /dev/null +++ b/src/views/kc/tktj/tkmx/tkmx.data.ts @@ -0,0 +1,79 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '行号', + align: "center", + dataIndex: '$no', + width: '50px', + customRender: (r) => { + return r.index+1; + } +}, + { + title: '工号', + align: "center", + dataIndex: 'userid' + }, + { + title: '姓名', + align: "center", + dataIndex: 'username' + }, + { + title: '所在单位', + align: "center", + dataIndex: 'college' + }, + { + title: '听课身份', + align: "center", + dataIndex: 'tksf' + }, + { + title: '开课单位', + align: "center", + dataIndex: 'kkdw' + }, + { + title: '课程名称', + align: "center", + dataIndex: 'kcmc' + }, + { + title: '课程性质', + align: "center", + dataIndex: 'kcxz' + }, + { + title: '任课教师', + align: "center", + dataIndex: 'skjs' + }, + { + title: '周次', + align: "center", + dataIndex: 'zc' + }, + { + title: '节次', + align: "center", + dataIndex: 'jc' + }, + { + title: '听课时间', + align: "center", + dataIndex: 'tingketime' + }, +]; + +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; + +//表单数据 +export const formSchema: FormSchema[] = [ +]; diff --git a/src/views/kc/tktj/tkmx/tkmx.vue b/src/views/kc/tktj/tkmx/tkmx.vue new file mode 100644 index 0000000..bd8e2cf --- /dev/null +++ b/src/views/kc/tktj/tkmx/tkmx.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/src/views/kc/tktj/tktjmain.vue b/src/views/kc/tktj/tktjmain.vue new file mode 100644 index 0000000..77efd26 --- /dev/null +++ b/src/views/kc/tktj/tktjmain.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/src/views/kc/tktj/tkztj/tkztj.vue b/src/views/kc/tktj/tkztj/tkztj.vue new file mode 100644 index 0000000..b7b42e1 --- /dev/null +++ b/src/views/kc/tktj/tkztj/tkztj.vue @@ -0,0 +1,75 @@ + + + diff --git a/src/views/kc/tktj/tkztj/tkztjTjt.vue b/src/views/kc/tktj/tkztj/tkztjTjt.vue new file mode 100644 index 0000000..f287224 --- /dev/null +++ b/src/views/kc/tktj/tkztj/tkztjTjt.vue @@ -0,0 +1,105 @@ + + diff --git a/src/views/kc/tktj/zxdt/zxdt.vue b/src/views/kc/tktj/zxdt/zxdt.vue new file mode 100644 index 0000000..32ad34a --- /dev/null +++ b/src/views/kc/tktj/zxdt/zxdt.vue @@ -0,0 +1,19 @@ + + + + +