Browse Source

Merge branch 'master' into bzkf30

bzkf30 1 year ago
parent
commit
e1aa9161cb

BIN
src/assets/index/jylb.png


BIN
src/assets/index/xclb.png


+ 1 - 20
src/pages/administrativeService/teacherTempGoOut/index.vue

@@ -39,25 +39,6 @@ const onSubmit = () => {
     }
   })
 };
-
-const dateResult = ref('');
-const showDatePicker = ref(false);
-const onDateConfirm = ({ selectedValues }) => {
-  dateResult.value = selectedValues.join('/');
-  showDatePicker.value = false;
-  showTimePicker.value = true
-};
-
-const currentTime = ref(['12', '00', '00']);
-const columnsType = ['hour', 'minute', 'second'];
-
-const timeResult = ref('');
-const showTimePicker = ref(false);
-const onTimeConfirm = ({ selectedValues }) => {
-  timeResult.value = selectedValues.join(':');
-  showTimePicker.value = false;
-};
-
 let userList = $ref([])
 const { dept_id } = userInfo;
 request({
@@ -125,7 +106,7 @@ const onSprUserConfirm = ({ selectedValues, selectedOptions }) => {
         </van-popup>
 
       </van-cell-group>
-      <div style="margin: 16px;">
+      <div style="margin:16px;">
         <van-button round block type="primary" native-type="submit">
           提交
         </van-button>

+ 173 - 0
src/pages/borrowReceive/borrowList/index.vue

@@ -0,0 +1,173 @@
+<script setup>
+import { userInfo } from '~/store/user'
+import { showConfirmDialog, showLoadingToast, showToast, closeToast, } from "vant";
+const { uo_type } = userInfo
+
+const isBureau = ref(false)// 当前用户是否局端
+isBureau.value = uo_type === '1'
+const list = ref([])
+const loading = ref(false)
+const finished = ref(false)
+let page = 1
+const param = $ref({
+  keyword: '',
+  xhj_zcmc: '',
+  xhj_zcbh: '',
+  xhj_jlr: '',
+  xhj_pzr: ''
+})
+function onLoad() {
+  loading.value = true
+  request({
+    url: '/xdhq/hqgl_jyly/index',
+    method: 'post',
+    data: {
+      ...param,
+      page,
+      limit: 20,
+      xhj_jlxz: '1',
+    },
+  }).then((res) => {
+    const data = res.data
+    list.value = [...list.value, ...data.page_data]
+    finished.value = data.total_page === page
+    page++
+    loading.value = false
+  })
+}
+function onClickSearch() {
+  reGetList()
+}
+const itemRef1 = ref(null)
+const itemRef2 = ref(null)
+const itemRef3 = ref(null)
+const itemRef4 = ref(null)
+function onConfirm(num) {
+  let temp = [itemRef1, itemRef2, itemRef3, itemRef4]
+  temp[num].value.toggle()
+  reGetList()
+}
+function reGetList() {
+  page = 1
+  list.value = []
+  finished.value = false
+  onLoad()
+}
+
+function giveBack(item) {
+  showConfirmDialog({
+    title: "提示",
+    message: "确认归还?",
+  }).then(() => {
+    showLoadingToast({
+      message: "提交中...",
+      forbidClick: true,
+    });
+    request({
+      url: "/xdhq/hqgl_jyly/edit",
+      data: {
+        xhj_id: item.xhj_id,
+        xdhq_hqgl_jyly: {
+          xhj_zt: '3'
+        },
+      },
+    }).then((res) => {
+      closeToast();
+      if (res.code == 1) {
+        showToast(res.msg);
+        list.value = [];
+        page = 1;
+        onLoad();
+      }
+    });
+  });
+}
+</script>
+
+<template>
+  <div v-show="isBureau">
+    <div style="width: 100%;text-align: center;"><span style="font-size: 20px;">本功能仅对校端用户开放</span></div>
+  </div>
+  <div class="index" v-show="!isBureau">
+    <van-search v-model="param.keyword" :clearable="false" show-action placeholder="请输入搜索关键词" @search="onClickSearch">
+      <template #action>
+        <div @click="onClickSearch">
+          搜索
+        </div>
+      </template>
+    </van-search>
+    <van-dropdown-menu>
+      <van-dropdown-item ref="itemRef1" title="资产名称">
+        <van-cell-group inset>
+          <van-field v-model="param.xhj_zcmc" placeholder="请输入资产名称" />
+        </van-cell-group>
+        <div style="padding: 5px 16px;">
+          <van-button type="primary" block round @click="onConfirm(0)">
+            确认
+          </van-button>
+        </div>
+      </van-dropdown-item>
+      <van-dropdown-item ref="itemRef2" title="资产编号">
+        <van-cell-group inset>
+          <van-field v-model="param.xhj_zcbh" placeholder="请输入资产编号" />
+        </van-cell-group>
+        <div style="padding: 5px 16px;">
+          <van-button type="primary" block round @click="onConfirm(1)">
+            确认
+          </van-button>
+        </div>
+      </van-dropdown-item>
+      <van-dropdown-item ref="itemRef3" title="借领人">
+        <van-cell-group inset>
+          <van-field v-model="param.xhj_jlr" placeholder="请输入借领人" />
+        </van-cell-group>
+        <div style="padding: 5px 16px;">
+          <van-button type="primary" block round @click="onConfirm(2)">
+            确认
+          </van-button>
+        </div>
+      </van-dropdown-item>
+      <van-dropdown-item ref="itemRef4" title="批准人">
+        <van-cell-group inset>
+          <van-field v-model="param.xhj_pzr" placeholder="请输入批准人" />
+        </van-cell-group>
+        <div style="padding: 5px 16px;">
+          <van-button type="primary" block round @click="onConfirm(3)">
+            确认
+          </van-button>
+        </div>
+      </van-dropdown-item>
+    </van-dropdown-menu>
+    <van-list v-model:loading="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
+      <van-cell v-for="item in list" :key="item">
+        <template #title>
+          <span>{{ `${item.xhj_zcmc}\u00A0\u00A0\u00A0 ${item.xhj_zcbh}` }}</span>
+        </template>
+        <template #value>
+          <van-button class="w-60px" v-if="(item.xhj_zt_option_k != 3)" type="primary" size="small"
+            @click="giveBack(item)">归还</van-button>
+          <span v-else-if="item.xhj_zt_option_k == 3">已归还</span>
+        </template>
+        <template #label>
+          <div><span>所属部门:{{ item.xhj_ssbm }}</span></div>
+          <div style="color: black;">
+            <div><span>{{ `借领人:${item.xhj_jlr}\u00A0\u00A0\u00A0批准人${item.xhj_pzr}` }}</span></div>
+            <div><span>借领时间:{{ item.xhj_jlsj }}</span></div>
+          </div>
+        </template>
+      </van-cell>
+    </van-list>
+  </div>
+</template>
+
+<style lang="scss" scoped>
+:deep(.van-cell__title) {
+  width: 70% !important;
+  flex: auto
+}
+
+:deep(.van-cell__value) {
+  width: 30% !important;
+  flex: auto
+}
+</style>

+ 56 - 0
src/pages/borrowReceive/schoolPropertyList/borrowFrom/dateTImePicker.vue

@@ -0,0 +1,56 @@
+<script setup>
+
+const props = defineProps({
+  label: {
+    type: String,
+    default: '',
+  },
+})
+
+defineExpose({
+  getResult
+})
+function getResult() {
+  return result
+}
+let result = $ref('')
+let showDatePicker = $ref(false)
+let showTimePicker = $ref(false)
+
+const onDateConfirm = ({ selectedValues }) => {
+  result = selectedValues.join('/');
+  showDatePicker = false;
+  showTimePicker = true
+};
+const onTimeConfirm = ({ selectedValues }) => {
+  result = result + ' ' + selectedValues.join(':');
+  showTimePicker = false;
+};
+
+let oldResult = ''
+const clickPop = () => {
+  oldResult = result
+  showDatePicker = true
+}
+const clickCancel = () => {
+  result = oldResult
+  showDatePicker = false
+  showTimePicker = false
+
+}
+const currentTime = ref(['12', '00', '00']);
+const columnsType = ['hour', 'minute', 'second'];
+
+const minDate = new Date(2020, 0, 1)
+</script>
+<template>
+  <van-field v-model="result" is-link readonly name="datePicker" :label='props.label' placeholder="点击选择时间"
+    @click="clickPop" :rules="[{ required: true, message: '请选择时间' }]" />
+  <van-popup v-model:show="showDatePicker" position="bottom">
+    <van-date-picker :min-date="minDate" @confirm="onDateConfirm" @cancel="clickCancel" />
+  </van-popup>
+  <van-popup v-model:show="showTimePicker" position="bottom">
+    <van-time-picker @confirm="onTimeConfirm" @cancel="clickCancel" v-model="currentTime" title="选择时间"
+      :columns-type="columnsType" />
+  </van-popup>
+</template>

+ 85 - 0
src/pages/borrowReceive/schoolPropertyList/borrowFrom/index.vue

@@ -0,0 +1,85 @@
+<script setup>
+import { userInfo } from "~/store/user";
+import { showFailToast, showToast } from 'vant'
+import dateTimePicker from './dateTImePicker.vue'
+
+const { uo_type } = userInfo;
+const isBureau = ref(false); // 当前用户是否局端
+isBureau.value = uo_type === "1";
+
+const router = useRouter()
+
+let transParams = $ref({
+  xhj_zcmc: '',
+  xhj_zcbh: '',
+  xhj_ssbm: '',
+  xhj_jlxz: '',
+  xhj_jlr: '',
+  xhj_jlsj: '',
+  xhj_pzr: ''
+})
+const jlsjRef = $ref()
+const onSubmit = () => {
+  transParams.xhj_jlsj = jlsjRef.getResult()
+  request({ url: '/xdhq/hqgl_jyly/add', data: { xdhq_hqgl_jyly: transParams } }).then(res => {
+    if (res.code == '1') {
+      showToast(res.msg);
+      router.go(-1)
+    } else {
+      showFailToast(res.msg);
+    }
+  })
+};
+const cancel = () => {
+  router.go(-1)
+}
+
+const { currentRoute } = useRouter()
+request({
+  url: '/xdhq/hqgl_xcgl/detail',
+  data: {
+    xhx_id: currentRoute.value.query.xhx_id,
+  }
+}).then(res => {
+  if (res.code == 1) {
+    transParams.xhj_zcmc = res.data.one_info.xhx_zcmc
+    transParams.xhj_zcbh = res.data.one_info.xhx_zcbh
+  }
+})
+</script>
+<template>
+  <div v-show="isBureau">
+    <div style="width: 100%;text-align: center;"><span style="font-size: 20px;">本功能仅对校端用户开放</span></div>
+  </div>
+  <div v-show="!isBureau">
+    <van-form @submit="onSubmit">
+      <van-cell-group inset>
+        <van-field v-model="transParams.xhj_zcmc" readonly name="资产名称" label="资产名称" placeholder="请输入资产名称" />
+        <van-field v-model="transParams.xhj_zcbh" readonly name="资产编号" label="资产编号" placeholder="请输入资产名称" />
+        <van-field v-model="transParams.xhj_ssbm" name="所属部门" label="所属部门" placeholder="请输入所属部门"
+          :rules="[{ required: true, message: '请输入所属部门' }]" />
+        <van-field name="radio" label="借领性质" :rules="[{ required: true, message: '请选择借领性质' }]">
+          <template #input>
+            <van-radio-group v-model="transParams.xhj_jlxz" direction="horizontal">
+              <van-radio name="1">借用</van-radio>
+              <van-radio name="2">领用</van-radio>
+            </van-radio-group>
+          </template>
+        </van-field>
+        <van-field v-model="transParams.xhj_jlr" name="借领人" label="借领人" placeholder="请输入借领人"
+          :rules="[{ required: true, message: '请输入借领人' }]" />
+        <dateTimePicker ref="jlsjRef" label="借领时间" />
+        <van-field v-model="transParams.xhj_pzr" name="批准人" label="批准人" placeholder="请输入批准人"
+          :rules="[{ required: true, message: '请输入批准人' }]" />
+      </van-cell-group>
+      <div style="margin: 16px;">
+        <van-button round block type="primary" native-type="submit">
+          提交
+        </van-button>
+        <van-button style="margin-top: 10px;" round block type="default" @click="cancel()">
+          取消
+        </van-button>
+      </div>
+    </van-form>
+  </div>
+</template>

+ 143 - 0
src/pages/borrowReceive/schoolPropertyList/index.vue

@@ -0,0 +1,143 @@
+<script setup>
+import { userInfo } from '~/store/user'
+const { uo_type } = userInfo
+
+const isBureau = ref(false)// 当前用户是否局端
+isBureau.value = uo_type === '1'
+const list = ref([])
+const loading = ref(false)
+const finished = ref(false)
+let page = 1
+const param = $ref({
+  keyword: '',
+  xhx_zcmc: '',
+  xhx_zt: '',
+  xhx_zcfl: '',
+  xhx_spr: ''
+})
+function onLoad() {
+  loading.value = true
+  request({
+    url: '/xdhq/hqgl_xcgl/index',
+    method: 'post',
+    data: {
+      ...param,
+      page,
+      limit: 20,
+    },
+  }).then((res) => {
+    const data = res.data
+    list.value = [...list.value, ...data.page_data]
+    finished.value = data.total_page === page
+    page++
+    loading.value = false
+  })
+}
+function onClickSearch() {
+  reGetList()
+}
+const itemRef1 = ref(null)
+const itemRef2 = ref(null)
+const itemRef3 = ref(null)
+const itemRef4 = ref(null)
+function onConfirm(num) {
+  let temp = [itemRef1, itemRef2, itemRef3, itemRef4]
+  temp[num].value.toggle()
+  reGetList()
+}
+function reGetList() {
+  page = 1
+  list.value = []
+  finished.value = false
+  onLoad()
+}
+const router = useRouter()
+function canBorrow(item) {
+  router.push({
+    path: "/borrowReceive/schoolPropertyList/borrowFrom",
+    query: { xhx_id: item.xhx_id },
+  });
+}
+const statusOption = $ref([{ text: '状态', value: '' }, { text: '可借', value: '1' }, { text: '不可借', value: '2' }])
+function dropItemChange() {
+  reGetList()
+}
+</script>
+
+<template>
+  <div v-show="isBureau">
+    <div style="width: 100%;text-align: center;"><span style="font-size: 20px;">本功能仅对校端用户开放</span></div>
+  </div>
+  <div class="index" v-show="!isBureau">
+    <van-search v-model="param.keyword" :clearable="false" show-action placeholder="请输入搜索关键词" @search="onClickSearch">
+      <template #action>
+        <div @click="onClickSearch">
+          搜索
+        </div>
+      </template>
+    </van-search>
+    <van-dropdown-menu>
+      <van-dropdown-item ref="itemRef1" title="资产名称">
+        <van-cell-group inset>
+          <van-field v-model="param.xhx_zcmc" placeholder="请输入资产名称" />
+        </van-cell-group>
+        <div style="padding: 5px 16px;">
+          <van-button type="primary" block round @click="onConfirm(0)">
+            确认
+          </van-button>
+        </div>
+      </van-dropdown-item>
+      <van-dropdown-item v-model="param.xhx_zt" :options="statusOption" @change="dropItemChange" />
+      <van-dropdown-item ref="itemRef3" title="资产分类">
+        <van-cell-group inset>
+          <van-field v-model="param.xhx_zcfl" placeholder="请输入资产分类" />
+        </van-cell-group>
+        <div style="padding: 5px 16px;">
+          <van-button type="primary" block round @click="onConfirm(2)">
+            确认
+          </van-button>
+        </div>
+      </van-dropdown-item>
+      <van-dropdown-item ref="itemRef4" title="审批人">
+        <van-cell-group inset>
+          <van-field v-model="param.xhx_spr" placeholder="请输入审批人" />
+        </van-cell-group>
+        <div style="padding: 5px 16px;">
+          <van-button type="primary" block round @click="onConfirm(3)">
+            确认
+          </van-button>
+        </div>
+      </van-dropdown-item>
+    </van-dropdown-menu>
+    <van-list v-model:loading="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
+      <van-cell v-for="item in list" :key="item">
+        <template #title>
+          <span>{{ `${item.xhx_zcmc}\u00A0\u00A0\u00A0 ${item.xhx_zcbh}` }}</span>
+        </template>
+        <template #value>
+          <van-button class="w-60px" v-if="(item.xhx_zt_option_k != 2)" type="primary" size="small"
+            @click="canBorrow(item)">可借</van-button>
+        </template>
+        <template #label>
+          <div><span>资产分类:{{ item.xhx_zcfl }}</span></div>
+          <div style="color: black;">
+            <div><span>{{ `状态:${item.xhx_zt}\u00A0\u00A0\u00A0单价${item.xhx_dj}` }}</span></div>
+            <div><span>审批人:{{ item.xhx_spr }}</span></div>
+          </div>
+        </template>
+      </van-cell>
+    </van-list>
+  </div>
+</template>
+
+<style lang="scss" scoped>
+:deep(.van-cell__title) {
+  width: 70% !important;
+  flex: auto
+}
+
+:deep(.van-cell__value) {
+  width: 30% !important;
+  flex: auto
+}
+</style>

+ 0 - 0
src/pages/equipmentWarranty/equipmentWarranty/index.vue


+ 22 - 0
src/pages/menuData.js

@@ -72,6 +72,14 @@ export const menuList = [
       { icon: getAssetsImages('index/jslswc.png'), menuName: '教师临时外出', path: '/administrativeService/teacherTempGoOut' },
     ],
   },
+  {
+    tag: 'jyly',
+    title: '借用领用',
+    list: [
+      { icon: getAssetsImages('index/xclb.png'), menuName: '校产列表', path: '/borrowReceive/schoolPropertyList' },
+      { icon: getAssetsImages('index/jylb.png'), menuName: '借用列表', path: '/borrowReceive/borrowList' },
+    ],
+  },
   // {
   //   title: '学生竞赛管理',
   //   list: [
@@ -85,4 +93,18 @@ export const menuList = [
   //     { icon: getAssetsImages('index/tjtj.png'), menuName: '提交统计' },
   //   ],
   // },
+   {
+    tag: 'cjxt',
+    title: '晨检系统',
+    list: [
+      { icon: getAssetsImages('index/xmlcgl.png'), menuName: '体检登记', path: '/morningInspectionSystem/medicalExaminationRegistration' },
+    ],
+  },
+    {
+    tag: 'sbbx',
+    title: '设备保修',
+    list: [
+      { icon: getAssetsImages('index/xmlcgl.png'), menuName: '设备保修', path: '/equipmentWarranty/equipmentWarranty' },
+    ],
+  },
 ]

+ 217 - 0
src/pages/morningInspectionSystem/medicalExaminationRegistration/index.vue

@@ -0,0 +1,217 @@
+<script setup>
+import { userInfo } from "~/store/user";
+const router = useRouter();
+const { uo_type, uo_name } = userInfo;
+
+const isBureau = ref(false); // 当前用户是否局端
+isBureau.value = uo_type === "1";
+const list = ref([]);
+const loading = ref(false);
+const finished = ref(false);
+const gradeList = ref([]);
+const gradeOption = $ref([{ text: "年级", value: "" }]);
+let page = 1;
+const firstForm = $ref({
+     grade: "",
+     type: "",
+     time: "",
+});
+ function  getTimeFormat() {
+      var date = new Date();
+      var month = date.getMonth() + 1;
+      var strDate = date.getDate();
+      if (month >= 1 && month <= 9) {
+        month = "0" + month;
+      }
+      if (strDate >= 0 && strDate <= 9) {
+        strDate = "0" + strDate;
+      }
+    let time = [
+        date.getFullYear() + "-" + month + "-" + strDate,
+        date.getFullYear() + "-" + month + "-" + strDate,
+      ];
+       firstForm.time = time[0] + " - " + time[1];
+console.log((firstForm.time));
+     
+    }
+    getTimeFormat()
+  function onLoad() {
+  loading.value = true;
+  request({
+    url: "/xddy/dygl_cjxt_nj/index",
+    data: {
+      page,
+      limit: 20,
+       grade_id: firstForm.grade,
+       xdcbj_tjlx: firstForm.type, 
+     xdcbj_tjrq:firstForm.time
+    },
+
+  }).then((res) => {
+    const data = res.data;
+    list.value = [...list.value, ...data.page_data];
+    finished.value = data.total_page === page;
+    page++;
+    loading.value = false;
+  });
+}
+function getGradeData() {
+  loading.value = true;
+  request({
+    url: "/jcxx/grade/index",
+    data: {
+      page: 1,
+      limit: 999,
+    },
+  }).then((res) => {
+    if (res.code == 1) {
+      gradeList.value = res.data.page_data;
+      loading.value = false;
+      gradeList.value.map((item) => {
+        gradeOption.push({ text: item.grade_name, value: item.grade_id });
+      });
+    }
+  });
+}
+getGradeData();
+const typeOption = $ref([
+  { text: "类别", value: "" },
+
+  {
+    text: "晨检",
+    value: 1,
+  },
+  {
+    text: "午检",
+    value: 2,
+  },
+]);
+
+const date = ref("");
+const show = ref(false);
+const formatDate = (date) =>
+  `${date.getFullYear()}-${((date.getMonth() + 1)>=1&&(date.getMonth() + 1)<=9)?'0'+(date.getMonth() + 1):date.getMonth() + 1}-${(date.getDate()>=0&&date.getDate()<=9)?'0'+date.getDate():date.getDate()}`;
+const onConfirm = (values) => {
+  const [start, end] = values;
+  show.value = false;
+  firstForm.time = `${formatDate(start)} - ${formatDate(end)}`;
+  console.log(firstForm.time,typeof(firstForm.time), " firstForm.time  ");
+  dropItemChange()
+};
+const minDate = new Date(2010, 0, 1);
+const maxDate = new Date(2010, 0, 31);
+function dropItemChange() {
+  page = 1;
+  list.value = [];
+  finished.value = false;
+  onLoad();
+}
+function toClass(grade_id) {
+  router.push({
+    path: "/morningInspectionSystem/medicalExaminationRegistration/toClass",
+    query: { grade_id },
+  });
+}
+
+</script>
+
+<template>
+  <div class="index">
+    <div class="flex">
+      <van-dropdown-menu>
+        <van-dropdown-item
+          v-model="firstForm.grade"
+          :options="gradeOption"
+          @change="dropItemChange"
+        />
+        <van-dropdown-item
+          v-model="firstForm.type"
+          :options="typeOption"
+          @change="dropItemChange"
+        />
+
+      </van-dropdown-menu>
+
+      <van-cell
+        class="dateSearch"
+        title="日期:"
+        :value="firstForm.time"
+        @click="show = true"
+      /><van-calendar
+        v-model:show="show"
+        type="range"
+        :min-date="new Date('1970/01/01')"
+        :max-date="new Date('2099/01/31')"
+        @confirm="onConfirm"
+        allow-same-day
+      />
+    </div>
+    <van-list
+      v-model:loading="loading"
+      :finished="finished"
+      finished-text="没有更多了"
+      @load="onLoad"
+    >
+      <van-cell v-for="item in list" :key="item"  @click="toClass(item.grade_id)">
+        <template #title>
+          <div
+            style="display: flex; justify-content: space-between; color: black"
+          >
+            <span>{{
+              `${item.xdcbj_tjlx}\u00A0\u00A0\u00A0\u00A0\u00A0${item.grade_name}`
+            }}</span>
+            <span style="color: black">{{ item.xdcbj_tjrq }}</span>
+          </div>
+        </template>
+
+        <template #label>
+          <div>
+            <span class="mr-50px">应到:{{ item.xdcbj_ydrs }}人</span>
+            <span>实到:{{ item.xdcbj_sdrs }}人 </span>
+            <span></span>
+          </div>
+
+          <div
+            style="display: flex; justify-content: space-between; color: black"
+          >
+            <div>
+              <span>因病缺勤:{{ item.xdcbj_ybqqrs }}人 </span>
+            </div>
+            <div>
+              <span>因事缺勤:{{ item.xdcbj_ysqqrs }}人 </span>
+            </div>
+            <div>
+              <span>异常学生:{{ item.xdcbj_ysqqrs }}人 </span>
+            </div>
+          </div>
+        </template>
+      </van-cell>
+    </van-list>
+  </div>
+</template>
+
+<style lang="scss" scoped>
+.search {
+  box-shadow: 0 0.05333rem 0.32rem rgba(100, 101, 102, 0.12);
+}
+:deep(.van-dropdown-menu) {
+  width: 45%;
+}
+:deep(.van-dropdown-menu__item) {
+  flex: none;
+  padding: 0 10px;
+}
+::v-deep .dateSearch {
+  font-size: 15.4px;
+  padding: 10.4px 5px;
+}
+::v-deep .dateSearch .van-cell__title {
+  width: 20%;
+  flex: auto;
+}
+::v-deep .dateSearch .van-cell__value {
+  width: 80%;
+  font-size: 12px;
+  flex: auto;
+}
+</style>

+ 219 - 0
src/pages/morningInspectionSystem/medicalExaminationRegistration/toClass.vue

@@ -0,0 +1,219 @@
+<script setup>
+import { userInfo } from "~/store/user";
+const router = useRouter();
+const { uo_type, uo_name } = userInfo;
+const { currentRoute } = useRouter()
+const route = currentRoute.value
+const grade_id = route.query.grade_id
+const isBureau = ref(false); // 当前用户是否局端
+isBureau.value = uo_type === "1";
+const list = ref([]);
+const loading = ref(false);
+const finished = ref(false);
+const classList = ref([]);
+const classOption = $ref([{ text: "班级", value: "" }]);
+let page = 1;
+const firstForm = $ref({
+     class: "",
+     type: "",
+     time: "",
+});
+ function  getTimeFormat() {
+      var date = new Date();
+      var month = date.getMonth() + 1;
+      var strDate = date.getDate();
+      if (month >= 1 && month <= 9) {
+        month = "0" + month;
+      }
+      if (strDate >= 0 && strDate <= 9) {
+        strDate = "0" + strDate;
+      }
+    let time = [
+        date.getFullYear() + "-" + month + "-" + strDate,
+        date.getFullYear() + "-" + month + "-" + strDate,
+      ];
+       firstForm.time = time[0] + " - " + time[1];
+console.log((firstForm.time));
+     
+    }
+    getTimeFormat()
+  function onLoad() {
+  loading.value = true;
+  request({
+    url: "/xddy/dygl_cjxt_bj/index",
+    data: {
+      page,
+      limit: 20,
+       class_id: firstForm.class,
+       xdcbj_tjlx: firstForm.type, 
+       xdcbj_tjrq:firstForm.time
+    },
+  }).then((res) => {
+    const data = res.data;
+    list.value = [...list.value, ...data.page_data];
+    finished.value = data.total_page === page;
+    page++;
+    loading.value = false;
+  });
+}
+function getClassData() {
+  loading.value = true;
+  request({
+    url: "/jcxx/class/index",
+    data: {
+      page: 1,
+      limit: 999,
+      grade_id: grade_id,
+    },
+  }).then((res) => {
+    if (res.code == 1) {
+      classList.value = res.data.page_data;
+      loading.value = false;
+      classList.value.map((item) => {
+        classOption.push({ text: item.class_name, value: item.class_num });
+      });
+    }
+  });
+}
+getClassData();
+const typeOption = $ref([
+  { text: "类别", value: "" },
+
+  {
+    text: "晨检",
+    value: 1,
+  },
+  {
+    text: "午检",
+    value: 2,
+  },
+]);
+
+const date = ref("");
+const show = ref(false);
+const formatDate = (date) =>
+  `${date.getFullYear()}-${((date.getMonth() + 1)>=1&&(date.getMonth() + 1)<=9)?'0'+(date.getMonth() + 1):date.getMonth() + 1}-${(date.getDate()>=0&&date.getDate()<=9)?'0'+date.getDate():date.getDate()}`;
+const onConfirm = (values) => {
+  const [start, end] = values;
+  show.value = false;
+  firstForm.time = `${formatDate(start)} - ${formatDate(end)}`;
+  console.log(firstForm.time,typeof(firstForm.time), " firstForm.time  ");
+  dropItemChange()
+};
+const minDate = new Date(2010, 0, 1);
+const maxDate = new Date(2010, 0, 31);
+function dropItemChange() {
+  page = 1;
+  list.value = [];
+  finished.value = false;
+  onLoad();
+}
+function toClass(item) {
+  router.push({
+    path: "/morningInspectionSystem/medicalExaminationRegistration/toStudent",
+    query: { grade_id: item.grade_id, class_id: item.class_id  },
+  });
+}
+
+</script>
+
+<template>
+  <div class="index">
+    <div class="flex">
+      <van-dropdown-menu>
+        <van-dropdown-item
+          v-model="firstForm.class"
+          :options="classOption"
+          @change="dropItemChange"
+        />
+        <van-dropdown-item
+          v-model="firstForm.type"
+          :options="typeOption"
+          @change="dropItemChange"
+        />
+    
+      </van-dropdown-menu>
+
+      <van-cell
+        class="dateSearch"
+        title="日期:"
+        :value="firstForm.time"
+        @click="show = true"
+      /><van-calendar
+        v-model:show="show"
+        type="range"
+        :min-date="new Date('1970/01/01')"
+        :max-date="new Date('2099/01/31')"
+        @confirm="onConfirm"
+        allow-same-day
+      />
+    </div>
+    <van-list
+      v-model:loading="loading"
+      :finished="finished"
+      finished-text="没有更多了"
+      @load="onLoad"
+    >
+      <van-cell v-for="item in list" :key="item"  @click="toClass(item)">
+        <template #title>
+          <div
+            style="display: flex; justify-content: space-between; color: black"
+          >
+            <span>{{
+              `${item.xdcbj_tjlx}\u00A0\u00A0\u00A0\u00A0\u00A0${item.class_name}`
+            }}</span>
+            <span style="color: black">{{ item.xdcbj_tjrq }}</span>
+          </div>
+        </template>
+
+        <template #label>
+          <div>
+            <span class="mr-50px">应到:{{ item.xdcbj_ydrs }}人</span>
+            <span>实到:{{ item.xdcbj_sdrs }}人 </span>
+            <span></span>
+          </div>
+
+          <div
+            style="display: flex; justify-content: space-between; color: black"
+          >
+            <div>
+              <span>因病缺勤:{{ item.xdcbj_ybqqrs }}人 </span>
+            </div>
+            <div>
+              <span>因事缺勤:{{ item.xdcbj_ysqqrs }}人 </span>
+            </div>
+            <div>
+              <span>异常学生:{{ item.xdcbj_ysqqrs }}人 </span>
+            </div>
+          </div>
+        </template>
+      </van-cell>
+    </van-list>
+  </div>
+</template>
+
+<style lang="scss" scoped>
+.search {
+  box-shadow: 0 0.05333rem 0.32rem rgba(100, 101, 102, 0.12);
+}
+:deep(.van-dropdown-menu) {
+//   width: 50%;
+}
+:deep(.van-dropdown-menu__item) {
+  flex: none;
+  padding: 0 10px;
+}
+::v-deep .dateSearch {
+  font-size: 15.4px;
+  padding: 10.4px 5px;
+}
+::v-deep .dateSearch .van-cell__title {
+  width: 20%;
+  flex: auto;
+}
+::v-deep .dateSearch .van-cell__value {
+  width: 80%;
+  font-size: 12px;
+  flex: auto;
+}
+</style>

+ 372 - 0
src/pages/morningInspectionSystem/medicalExaminationRegistration/toStudent.vue

@@ -0,0 +1,372 @@
+<script setup>
+import { userInfo } from "~/store/user";
+const router = useRouter();
+const { uo_type, uo_name } = userInfo;
+const { currentRoute } = useRouter();
+const route = currentRoute.value;
+const grade_id = route.query.grade_id;
+const class_id = route.query.class_id;
+const isBureau = ref(false); // 当前用户是否局端
+isBureau.value = uo_type === "1";
+const list = ref([]);
+const loading = ref(false);
+const finished = ref(false);
+let page = 1;
+const firstForm = $ref({
+  xsxm: "",
+  xsxh: "",
+  tjjg: "",
+  tjlx: "",
+  time: "",
+});
+function getTimeFormat() {
+  var date = new Date();
+  var month = date.getMonth() + 1;
+  var strDate = date.getDate();
+  if (month >= 1 && month <= 9) {
+    month = "0" + month;
+  }
+  if (strDate >= 0 && strDate <= 9) {
+    strDate = "0" + strDate;
+  }
+  let time = [
+    date.getFullYear() + "-" + month + "-" + strDate,
+    date.getFullYear() + "-" + month + "-" + strDate,
+  ];
+  firstForm.time = time[0] + " - " + time[1];
+  console.log(firstForm.time);
+}
+getTimeFormat();
+function onLoad() {
+  loading.value = true;
+  request({
+    url: "/xddy/dygl_cjxt_tjdj/index",
+    data: {
+      page,
+      limit: 20,
+      grade_id: grade_id,
+      class_id: class_id,
+      xdct_xsxm: firstForm.xsxm,
+      xdct_xsxh: firstForm.xsxh,
+      xdct_tjjg: firstForm.tjjg,
+      xdct_xslx: firstForm.tjlx,
+      xdct_tjrq: firstForm.time,
+    },
+  }).then((res) => {
+    const data = res.data;
+    list.value = [...list.value, ...data.page_data];
+    finished.value = data.total_page === page;
+    page++;
+    loading.value = false;
+  });
+}
+
+const resultOption = $ref([
+  { text: "结果", value: "" },
+  {
+    text: "良好",
+    value: 1,
+  },
+  {
+    text: "及格",
+    value: 2,
+  },
+  {
+    text: "异常",
+    value: 3,
+  },
+]);
+const typeOption = $ref([
+  { text: "类别", value: "" },
+
+  {
+    text: "晨检",
+    value: 1,
+  },
+  {
+    text: "午检",
+    value: 2,
+  },
+]);
+
+const date = ref("");
+const show = ref(false);
+const formatDate = (date) =>
+  `${date.getFullYear()}-${
+    date.getMonth() + 1 >= 1 && date.getMonth() + 1 <= 9
+      ? "0" + (date.getMonth() + 1)
+      : date.getMonth() + 1
+  }-${
+    date.getDate() >= 0 && date.getDate() <= 9
+      ? "0" + date.getDate()
+      : date.getDate()
+  }`;
+const onConfirm = (values) => {
+  const [start, end] = values;
+  show.value = false;
+  firstForm.time = `${formatDate(start)} - ${formatDate(end)}`;
+  console.log(firstForm.time, typeof firstForm.time, " firstForm.time  ");
+  dropItemChange();
+};
+const minDate = new Date(2010, 0, 1);
+const maxDate = new Date(2010, 0, 31);
+function dropItemChange() {
+  page = 1;
+  list.value = [];
+  finished.value = false;
+  onLoad();
+}
+function onClickSearch() {
+  dropItemChange();
+}
+let checkForm = $ref({
+  xdct_id: "",
+  xdct_xslx: 1,
+  grade_id: "",
+  grade_name: "",
+  class_id: "",
+  class_name: "",
+  xdct_xsxm: "",
+  xdct_xsxh: "",
+  xdct_sffb: "",
+  xdct_tjxx_tl: "",
+  xdct_tjxx_sg: "",
+  xdct_tjxx_tz: "",
+  xdct_tjxx_xw: "",
+  xdct_tjxx_fhl: "",
+  xdct_tjxx_xy: "",
+  xdct_tjxx_mb: "",
+  xdct_tjxx_sl: "",
+  xdct_qtzz: "",
+});
+let dialogShow = $ref(false);
+function checkPop(item) {
+  dialogShow = true;
+   checkForm = {
+      xdct_id: item.xdct_id,
+      xdct_xslx: Number(item.xdct_xslx_option_k),
+      grade_id: item.grade_id,
+      grade_name: item.grade_name,
+      class_id: item.class_id,
+      class_name: item.class_name,
+      xdct_xsxm: item.xdct_xsxm,
+      xdct_xsxh: item.xdct_xsxh,
+      xdct_sffb: Number(item.xdct_sffb_option_k),
+      xdct_tjxx_tl: item.xdct_tjxx_tl,
+      xdct_tjxx_sg: item.xdct_tjxx_sg,
+      xdct_tjxx_tz: item.xdct_tjxx_tz,
+      xdct_tjxx_xw: item.xdct_tjxx_xw,
+      xdct_tjxx_fhl: item.xdct_tjxx_fhl,
+      xdct_tjxx_xy: item.xdct_tjxx_xy,
+      xdct_tjxx_mb: item.xdct_tjxx_mb,
+      xdct_tjxx_sl: item.xdct_tjxx_sl,
+      xdct_qtzz: item.xdct_qtzz,
+    };
+}
+</script>
+
+<template>
+  <div class="index">
+    <div class="flex">
+      <van-search
+        v-model="firstForm.xsxm"
+        :clearable="false"
+        show-action
+        placeholder="请输入学生姓名"
+        @search="onClickSearch"
+      >
+        <template #action>
+          <!-- <div @click="onClickSearch"></div> -->
+        </template>
+      </van-search>
+      <van-search
+        v-model="firstForm.xsxh"
+        :clearable="false"
+        show-action
+        placeholder="请输入姓名"
+        @search="onClickSearch"
+      >
+        <template #action>
+          <div @click="onClickSearch">搜索</div>
+        </template>
+      </van-search>
+    </div>
+    <div class="flex">
+      <van-dropdown-menu>
+        <van-dropdown-item
+          v-model="firstForm.tjjg"
+          :options="resultOption"
+          @change="dropItemChange"
+        />
+        <van-dropdown-item
+          v-model="firstForm.tjlx"
+          :options="typeOption"
+          @change="dropItemChange"
+        />
+      </van-dropdown-menu>
+
+      <van-cell
+        class="dateSearch"
+        title="日期:"
+        :value="firstForm.time"
+        @click="show = true"
+      /><van-calendar
+        v-model:show="show"
+        type="range"
+        :min-date="new Date('1970/01/01')"
+        :max-date="new Date('2099/01/31')"
+        @confirm="onConfirm"
+        allow-same-day
+      />
+    </div>
+    <van-button class="w-full" type="primary" size="large">一键签到</van-button>
+    <van-list
+      v-model:loading="loading"
+      :finished="finished"
+      finished-text="没有更多了"
+      @load="onLoad"
+    >
+      <van-cell v-for="item in list" :key="item">
+        <template #title>
+          <div
+            style="display: flex; justify-content: space-between; color: black"
+          >
+            <span>{{
+              `${item.xdct_xslx}\u00A0\u00A0\u00A0\u00A0\u00A0${item.class_name}\u00A0\u00A0\u00A0\u00A0\u00A0${item.xdct_tjrq}`
+            }}</span>
+            <span style="color: #4351ff" @click="checkPop(item)">体检登记</span>
+            <span style="color: #4351ff" v-if="item.xdct_sfqd_option_k != 1"
+              >签到</span
+            >
+            <span style="color: #c0c4cc" v-else disabled>已签</span>
+            <!-- <van-button
+          class="w-66px "
+         
+          type="primary"
+          size="small"
+          @click="handleAudit(item.xm_id)"
+          >体检登记</van-button
+        >
+           <van-button
+          class="w-45px "
+         
+          type="primary"
+          size="small"
+          @click="handleAudit(item.xm_id)"
+          >签到</van-button
+        > -->
+          </div>
+        </template>
+
+        <template #label>
+          <div>
+            <span class="mr-50px">{{ item.xdct_xsxm }}</span>
+            <span>{{ item.xdct_xsxh }} </span>
+          </div>
+          <div
+            style="display: flex; justify-content: space-between; color: black"
+          >
+            <span>性别:{{ item.xdct_xsxb }}</span>
+            <span> 年龄:{{ item.xdct_nl }} </span>
+            <span
+              >体检结果:
+              <span v-if="item.xdct_tjjg_option_k == 0">--</span>
+              <span v-if="item.xdct_tjjg_option_k == 1">良好</span>
+              <span v-if="item.xdct_tjjg_option_k == 2">及格</span>
+              <span v-if="item.xdct_tjjg_option_k == 3" class="color-red"
+                >异常</span
+              >
+            </span>
+          </div>
+        </template>
+      </van-cell>
+    </van-list>
+  </div>
+  <van-dialog
+    v-model:show="dialogShow"
+    title="体检登记"
+    show-cancel-button
+    :before-close="onBeforeClose"
+  >
+    <van-radio-group class="mb-10px mt-20px" v-model="checkForm.xdct_xslx" direction="horizontal">
+      <span class="ml-30px ">体检类型:</span>
+      <van-radio name="1"  icon-size="16px">晨检</van-radio>
+      <van-radio name="2"  icon-size="16px">午检</van-radio>
+    </van-radio-group>
+    <van-cell-group inset>
+      <van-field
+        v-model="checkForm.xdct_xsxm"
+        label="学生姓名"
+        size="large"
+        placeholder="请输入学生姓名"
+      />
+      <van-field v-model="checkForm.xdct_xsxh" size="large" label="学籍号" placeholder="请输入学籍号" />
+      <van-field
+        v-model="checkForm.xdct_tjxx_sg"
+        size="large"
+        label="身高"
+        placeholder="请输入身高"
+      /><van-field
+        v-model="checkForm.xdct_tjxx_tz"
+        size="large"
+        label="体重"
+        placeholder="请输入体重"
+      /><van-field
+        v-model="checkForm.xdct_tjxx_xw"
+        size="large"
+        label="胸围"
+        placeholder="请输入胸围"
+      /><van-field v-model="checkForm.xdct_tjxx_fhl" label="肺活量" placeholder="请输入肺活量" />
+      <van-field
+        v-model="checkForm.xdct_tjxx_xy"
+        label="血压"
+        size="large"
+        placeholder="请输入血压"
+      /><van-field
+        size="large"
+        v-model="checkForm.xdct_tjxx_mb"
+        label="脉搏"
+        placeholder="请输入脉搏"
+      /><van-field
+        v-model="checkForm.xdct_tjxx_sl"
+        size="large"
+        label="视力"
+        placeholder="请输入视力"
+      /><van-field v-model="checkForm.xdct_tjxx_tl" size="large" label="听力" placeholder="请输入听力" />
+    </van-cell-group>
+     <van-radio-group v-model="checkForm.xdct_sffb" direction="horizontal">
+      <span class="ml-30px">是否发病:</span>
+      <van-radio name="1" icon-size="16px">是</van-radio>
+      <van-radio name="2" icon-size="16px">否</van-radio>
+    </van-radio-group>
+  </van-dialog>
+</template>
+
+<style lang="scss" scoped>
+.search {
+  box-shadow: 0 0.05333rem 0.32rem rgba(100, 101, 102, 0.12);
+}
+:deep(.van-dropdown-menu) {
+  width: 70%;
+}
+:deep(.van-dropdown-menu__item) {
+  flex: none;
+  padding: 0 10px;
+}
+::v-deep .dateSearch {
+  font-size: 15.4px;
+  padding: 10.4px 5px;
+}
+::v-deep .dateSearch .van-cell__title {
+  width: 20%;
+  flex: auto;
+}
+::v-deep .dateSearch .van-cell__value {
+  width: 80%;
+  font-size: 13px;
+  flex: auto;
+}
+::v-deep .van-radio-group {
+display: flex;
+}
+</style>

+ 229 - 0
src/pages/morningInspectionSystem/toStudent.vue

@@ -0,0 +1,229 @@
+<script setup>
+import { userInfo } from "~/store/user";
+const router = useRouter();
+const { uo_type, uo_name } = userInfo;
+const { currentRoute } = useRouter()
+const route = currentRoute.value
+const grade_id = route.query.grade_id
+const isBureau = ref(false); // 当前用户是否局端
+isBureau.value = uo_type === "1";
+const list = ref([]);
+const loading = ref(false);
+const finished = ref(false);
+const classList = ref([]);
+const classOption = $ref([{ text: "班级", value: "" }]);
+let page = 1;
+const firstForm = $ref({
+     class: "",
+     type: "",
+     time: "",
+});
+ function  getTimeFormat() {
+      var date = new Date();
+      var month = date.getMonth() + 1;
+      var strDate = date.getDate();
+      if (month >= 1 && month <= 9) {
+        month = "0" + month;
+      }
+      if (strDate >= 0 && strDate <= 9) {
+        strDate = "0" + strDate;
+      }
+    let time = [
+        date.getFullYear() + "-" + month + "-" + strDate,
+        date.getFullYear() + "-" + month + "-" + strDate,
+      ];
+       firstForm.time = time[0] + " - " + time[1];
+console.log((firstForm.time));
+     
+    }
+    getTimeFormat()
+  function onLoad() {
+  loading.value = true;
+  request({
+    url: "/xddy/dygl_cjxt_bj/index",
+    data: {
+      page,
+      limit: 20,
+       class_id: firstForm.class,
+       xdcbj_tjlx: firstForm.type, 
+       xdcbj_tjrq:firstForm.time
+    },
+  }).then((res) => {
+    const data = res.data;
+    list.value = [...list.value, ...data.page_data];
+    finished.value = data.total_page === page;
+    page++;
+    loading.value = false;
+  });
+}
+function getClassData() {
+  loading.value = true;
+  request({
+    url: "/jcxx/class/index",
+    data: {
+      page: 1,
+      limit: 999,
+        grade_id: grade_id,
+    },
+  }).then((res) => {
+    if (res.code == 1) {
+      classList.value = res.data.page_data;
+      loading.value = false;
+      classList.value.map((item) => {
+        classOption.push({ text: item.class_name, value: item.class_num });
+      });
+    }
+  });
+}
+getClassData();
+const resultOption = $ref([
+     { text: "结果", value: "" },
+     {
+          text: "良好",
+          value: 1,
+        },
+        {
+          text: "及格",
+          value: 2,
+        },
+        {
+          text: "异常",
+          value: 3,
+        },
+]);
+const typeOption = $ref([
+  { text: "类别", value: "" },
+
+  {
+    text: "晨检",
+    value: 1,
+  },
+  {
+    text: "午检",
+    value: 2,
+  },
+]);
+
+const date = ref("");
+const show = ref(false);
+const formatDate = (date) =>
+  `${date.getFullYear()}-${((date.getMonth() + 1)>=1&&(date.getMonth() + 1)<=9)?'0'+(date.getMonth() + 1):date.getMonth() + 1}-${(date.getDate()>=0&&date.getDate()<=9)?'0'+date.getDate():date.getDate()}`;
+const onConfirm = (values) => {
+  const [start, end] = values;
+  show.value = false;
+  firstForm.time = `${formatDate(start)} - ${formatDate(end)}`;
+  console.log(firstForm.time,typeof(firstForm.time), " firstForm.time  ");
+  dropItemChange()
+};
+const minDate = new Date(2010, 0, 1);
+const maxDate = new Date(2010, 0, 31);
+function dropItemChange() {
+  page = 1;
+  list.value = [];
+  finished.value = false;
+  onLoad();
+}
+
+
+</script>
+
+<template>
+  <div class="index">
+    <div class="flex">
+      <van-dropdown-menu>
+        <van-dropdown-item
+          v-model="firstForm.class"
+          :options="classOption"
+          @change="dropItemChange"
+        />
+        <van-dropdown-item
+          v-model="firstForm.type"
+          :options="typeOption"
+          @change="dropItemChange"
+        />
+    
+      </van-dropdown-menu>
+
+      <van-cell
+        class="dateSearch"
+        title="日期:"
+        :value="firstForm.time"
+        @click="show = true"
+      /><van-calendar
+        v-model:show="show"
+        type="range"
+        :min-date="new Date('1970/01/01')"
+        :max-date="new Date('2099/01/31')"
+        @confirm="onConfirm"
+        allow-same-day
+      />
+    </div>
+    <van-list
+      v-model:loading="loading"
+      :finished="finished"
+      finished-text="没有更多了"
+      @load="onLoad"
+    >
+      <van-cell v-for="item in list" :key="item" >
+        <template #title>
+          <div
+            style="display: flex; justify-content: space-between; color: black"
+          >
+            <span>{{
+              `${item.xdcbj_tjlx}\u00A0\u00A0\u00A0\u00A0\u00A0${item.class_name}`
+            }}</span>
+            <span style="color: black">{{ item.xdcbj_tjrq }}</span>
+          </div>
+        </template>
+
+        <template #label>
+          <div>
+            <span class="mr-50px">应到:{{ item.xdcbj_ydrs }}人</span>
+            <span>实到:{{ item.xdcbj_sdrs }}人 </span>
+            <span></span>
+          </div>
+
+          <div
+            style="display: flex; justify-content: space-between; color: black"
+          >
+            <div>
+              <span>因病缺勤:{{ item.xdcbj_ybqqrs }}人 </span>
+            </div>
+            <div>
+              <span>因事缺勤:{{ item.xdcbj_ysqqrs }}人 </span>
+            </div>
+            <div>
+              <span>异常学生:{{ item.xdcbj_ysqqrs }}人 </span>
+            </div>
+          </div>
+        </template>
+      </van-cell>
+    </van-list>
+  </div>
+</template>
+
+<style lang="scss" scoped>
+.search {
+  box-shadow: 0 0.05333rem 0.32rem rgba(100, 101, 102, 0.12);
+}
+:deep(.van-dropdown-menu) {
+//   width: 50%;
+}
+:deep(.van-dropdown-menu__item) {
+  flex: none;
+  padding: 0 10px;
+}
+::v-deep .dateSearch {
+  font-size: 15.4px;
+  padding: 10.4px 5px;
+}
+::v-deep .dateSearch .van-cell__title {
+  width: 20%;
+  flex: auto;
+}
+::v-deep .dateSearch .van-cell__value {
+  width: 80%;
+  font-size: 12px;
+  flex: auto;
+}
+</style>

+ 1 - 3
src/pages/projectManager/projectFlowManger/detail/index.vue

@@ -1,9 +1,7 @@
 <script setup>
 import { closeToast, showLoadingToast } from 'vant'
 
-const { currentRoute } = useRouter()
-const route = currentRoute.value
-const lc_id = route.query.lc_id
+
 const detailData = ref({})
 showLoadingToast({
   message: '加载中...',

+ 172 - 0
src/pages/tdk/wdkb.vue

@@ -0,0 +1,172 @@
+<script setup lang='ts'>
+import { user } from '~/store/user'
+
+const skzc = ref(1)
+
+const WeekMap = '一二三四五六日'
+const tableData2 = ref<any>({})
+const loading_table2 = ref(false)
+
+async function queryApi2() {
+  loading_table2.value = true
+  tableData2.value = {}
+  await request({
+    url: '/xdjx/kbgl_jskbmx/index',
+    data: { limit: 100, xjj_xm: user.real_name, skzc: skzc.value },
+  }).then((res) => {
+    const d = res.data.page_data
+    // tableData2.value = (Array.from({ length: 8 }).map((_, i) => Array.from({ length: 7 }).map((_, j) => (null))))
+
+    d.forEach((el: any) => {
+      const { skjc, skxq } = el
+      tableData2.value[skjc] = tableData2.value[skjc] ?? {}
+      tableData2.value[skjc][skxq] = el
+    })
+    // alert(JSON.stringify(tableData2.value));
+  }).catch((err) => {
+    console.error(err)
+  }).finally(() => {
+    loading_table2.value = false
+  })
+}
+
+queryApi2()
+
+const columns = Array.from({ length: 8 }).map((_, i) => ({ text: `第${i + 1}周`, value: (i + 1) }))
+const fieldValue = ref('第1周')
+
+const showPicker = ref(false)
+
+function onConfirm({ selectedOptions }) {
+  showPicker.value = false
+  fieldValue.value = selectedOptions[0].text
+  skzc.value = selectedOptions[0].value
+
+  queryApi2()
+}
+</script>
+
+<template>
+  <div class="px-2px mb-32px">
+    <van-field v-model="fieldValue" is-link readonly label="周次" placeholder="选择城市" @click="showPicker = true" />
+  </div>
+
+  <van-popup v-model:show="showPicker" round position="bottom">
+    <van-picker :columns="columns" @cancel="showPicker = false" @confirm="onConfirm" />
+  </van-popup>
+  <div v-if="loading_table2" class="flex_center py-4">
+    <van-loading />
+  </div>
+
+  <div v-else class="my_table">
+    <div class="thead divide-x divide-hex-ccc">
+      <div v-for="i in [1, 2, 3, 4, 5, 6, 7, 8]" :key="i" class="flex_center">
+        {{ i === 1 ? '' : `周${WeekMap[(i - 2)]}` }}
+      </div>
+    </div>
+
+    <div v-loading="loading_table2" class="tbody">
+      <div v-for="(i) in 8" :key="i" class="trow divide-x divide-hex-ccc">
+        <div v-for="j in 8" :key="j" class="tcell h-full">
+          <div v-if="j === 1" class="w-full h-full flex_center">
+            第{{ i }}节
+          </div>
+          <div v-else-if="tableData2?.[i]?.[j - 1]">
+            <div
+              class="h-full px-4px py-2px flex flex-col"
+              :class="tableData2[i][j - 1]?.tkzt_option_k === '3' ? 'text-hex-c0c4cc' : 'text-hex-606266'"
+            >
+              <div class="flex w-full mb-3px">
+                <div class="flex-auto font-bold">
+                  {{ tableData2[i][j - 1]?.subject_name }}
+                </div>
+              </div>
+              <div class="flex-none">
+                <div>{{ tableData2[i][j - 1]?.grade_name }}</div>
+                <div>{{ tableData2[i][j - 1]?.class_name }}</div>
+              </div>
+              <div v-show="tableData2[i][j - 1]?.tkzt_option_k !== '1'" class="flex-none text-10px">
+                {{ tableData2[i][j - 1]?.tkzt }}
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<style lang="scss" scoped>
+.flex_center {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.my_table {
+  font-size: 14px;
+  width: 100%;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  overflow: hidden;
+
+  .thead {
+    padding: 0 4px;
+    border-top: 1px solid #ccc;
+    border-bottom: 1px solid #ccc;
+    flex: none;
+    width: 100%;
+    height: 60px;
+    // background: rgba(102, 255, 255, 0.20);
+    // color: #66FFFF;
+    display: flex;
+    justify-content: space-around;
+    align-items: center;
+    font-weight: bold;
+
+    &>div {
+      width: 12.5%;
+      height: 100%;
+    }
+  }
+
+  .tbody {
+    padding: 0 4px;
+    font-size: 14px;
+
+    flex: auto;
+    // color: #fff;
+
+    .trow {
+      display: flex;
+      justify-content: space-around;
+      align-items: center;
+      height: 68px;
+      border-bottom: 1px solid #ccc;
+
+      .tcell {
+        width: 12.5%;
+        height: 100%;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+
+        div {
+          font-size: 12px;
+          line-height: 12px;
+        }
+      }
+
+      // &:nth-of-type(2n) {
+      //   background: rgba(102, 255, 255, 0.10);
+      // }
+
+      // &:nth-of-type(2n+1) {
+      //   background: rgba(0, 0, 0, 0.10);
+      // }
+    }
+
+  }
+}
+</style>

+ 1 - 1
src/store/local/la.js

@@ -98,4 +98,4 @@ export default
           "uo_id": "386",
           "uo_name": "督导室"
       }
-  ]}
+  ]}