瀏覽代碼

部分页面改为iframe

zhuf 5 月之前
父節點
當前提交
8c93a456a4

+ 21 - 11
index.html

@@ -1,14 +1,24 @@
 <!DOCTYPE html>
 <html lang="zh-CN">
-  <head>
-    <meta charset="UTF-8" />
-    <!-- <link rel="icon" type="image/svg+xml" href="/vite.svg" /> -->
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" />
-    <title>蒙阴县教育数字平台</title>
-  </head>
-  <body>
-    <div id="app"></div>
-    <script src="/config.js"></script>
-    <script type="module" src="/src/main.ts"></script>
-  </body>
+
+<head>
+  <meta charset="UTF-8" />
+  <!-- <link rel="icon" type="image/svg+xml" href="/vite.svg" /> -->
+  <meta name="viewport"
+    content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" />
+  <title>蒙阴县教育数字平台</title>
+  <script>
+    oldLog = window.console.log.bind(window.console)
+    window.console.log = (...args) => {
+      oldLog('[蒙阴]', ...args)
+    }
+  </script>
+</head>
+
+<body>
+  <div id="app"></div>
+  <script src="/config.js"></script>
+  <script type="module" src="/src/main.ts"></script>
+</body>
+
 </html>

+ 9 - 1
public/config.js

@@ -52,4 +52,12 @@ function isWhich() {
         return local
     }
 }
-window.GLOBAL_CONFIG = isWhich()
+window.GLOBAL_CONFIG = {
+    web_pc: 'https://myxjyszptxweb.bozedu.net/',
+
+    origin: window.location.origin,
+    api: 'https://openapi.bozedu.net/',
+    oss: 'https://openapi.bozedu.net/',
+    uc: 'https://uc.bozedu.net/',
+    myxjyszptx: 'https://myxjyszptxapi.bozedu.net/',
+}

+ 3 - 205
src/pages/ptsz/bjgl/index.vue

@@ -1,210 +1,8 @@
 <template>
-  <div class="card h-full">
-    <div class="flex justify-between mt-5 mb-7">
-      <el-form
-        ref="ruleFormRef"
-        label-position="top"
-        :inline="true"
-        label-width="100px"
-      >
-        <el-form-item label="年级" prop="area_id">
-          <el-select clearable>
-            <el-option value="无" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="班级" prop="uo_id_1">
-          <el-select clearable>
-            <el-option value="无" />
-          </el-select>
-        </el-form-item>
-      </el-form>
-      <div>
-        <el-button class="_" size="small" type="primary" @click="initData">
-          查询
-        </el-button>
-        <br />
-        <el-button
-          size="small"
-          type="primary"
-          plain
-          class="mt-10px _"
-          @click="handleReset(ruleFormRef)"
-        >
-          重置
-        </el-button>
-      </div>
-    </div>
-
-    <div class="flex justify-between mt-5 mb-7">
-      <div>
-        <el-button class="_" type="primary" @click="addShow = true">
-          新增
-        </el-button>
-        <el-button class="_" type="primary"> 导出 </el-button>
-      </div>
-      <div class="flex items-center space-x-4">
-        <el-dropdown trigger="click">
-          <span class="el-dropdown-link">
-            <img class="w-28px cursor-pointer" :src="img1" alt="" />
-          </span>
-          <template #dropdown>
-            <el-dropdown-menu>
-              <el-dropdown-item>导出Csv文件</el-dropdown-item>
-              <el-dropdown-item>导出Excel文件</el-dropdown-item>
-              
-            </el-dropdown-menu>
-          </template>
-        </el-dropdown>
-        <el-dropdown trigger="click">
-          <span class="el-dropdown-link">
-            <img class="w-28px cursor-pointer" :src="img2" alt="" />
-          </span>
-          <template #dropdown>
-            <el-dropdown-menu>
-              <el-dropdown-item
-                ><el-checkbox class="mr-10px" /> 编号</el-dropdown-item
-              >
-              <el-dropdown-item
-                ><el-checkbox class="mr-10px" />班级名称</el-dropdown-item
-              >
-              <el-dropdown-item
-                ><el-checkbox class="mr-10px" />专业</el-dropdown-item
-              >
-              <el-dropdown-item
-                ><el-checkbox class="mr-10px" />专业</el-dropdown-item
-              >
-              <el-dropdown-item
-                ><el-checkbox class="mr-10px" />邀请码</el-dropdown-item
-              >
-              <el-dropdown-item
-                ><el-checkbox class="mr-10px" />学生数</el-dropdown-item
-              >
-            </el-dropdown-menu>
-          </template>
-        </el-dropdown>
-
-        <el-button class="_" type="danger"> 删除 </el-button>
-      </div>
-    </div>
-
-    <el-table :data="tableData" style="width: 100%">
-      <el-table-column type="selection" width="55" />
-      <el-table-column prop="id" label="编号" show-overflow-tooltip />
-      <el-table-column
-        prop="grade"
-        label="年级"
-        show-overflow-tooltip
-        width="auto"
-      />
-      <el-table-column prop="class" label="班级" show-overflow-tooltip />
-      <el-table-column prop="time" label="创建时间" show-overflow-tooltip />
-      <el-table-column prop="year" label="入学年份" show-overflow-tooltip />
-      <el-table-column prop="master" label="班主任" show-overflow-tooltip />
-      <el-table-column prop="stu_num" label="学生数" show-overflow-tooltip />
-      <el-table-column label="操作" width="150">
-        <template #default="{ row }">
-          <div class="flex items-center space-x-4">
-            <img class="cursor-pointer" src="/images/edit.png"  @click="addShow = true"/>
-            <img class="cursor-pointer" src="/images/delete.png" />
-          </div>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <div class="flex_center mt-6">
-      <el-pagination
-        v-model:current-page="form_query.page"
-        v-model:page-size="form_query.limit"
-        layout="total, prev, pager, next, jumper"
-        :total="total"
-        :prev-icon="PrevIcon"
-        :next-icon="NextIcon"
-        @current-change="handleQuery"
-      />
-    </div>
-    <el-dialog v-model="addShow" width="40%" title="新增/编辑">
-      <div class="w-full text-center">
-        <img class="px-10 w-full" :src="imgSrc" alt="" />
-      </div>
-    </el-dialog> 
+  <div class="card h-full w-full">
+    <iframe class="w-full h-full" :src="thirdLink" frameborder="0"></iframe>
   </div>
 </template>
 <script setup>
-import imgSrc from "@/assets/img/staticImg/add.png";
-import img1 from "@/assets/img/staticImg/export.png";
-import img2 from "@/assets/img/staticImg/code.png";
-import PrevIcon from "@/components/EpPagination/PrevIcon.vue";
-import NextIcon from "@/components/EpPagination/NextIcon.vue";
-const form_query = reactive({
-  page: 1,
-  limit: 5,
-});
-
-let total = $ref(100);
-let tableData = $ref([
-  {
-    id: "26511234",
-    grade: "一年级",
-    class: "一班",
-    time: "2011-12-23 11:12",
-    year: "2011",
-    master: "黄书",
-    stu_num: "21",
-  },
-  {
-    id: "26511234",
-    grade: "一年级",
-    class: "二班",
-    time: "2011-12-23 11:12",
-    year: "2011",
-    master: "陈飞",
-    stu_num: "21",
-  },
-  {
-    id: "26511234",
-    grade: "一年级",
-    class: "三班",
-    time: "2011-12-23 11:12",
-    year: "2011",
-    master: "沈教师",
-    stu_num: "21",
-  },
-  {
-    id: "26511234",
-    grade: "一年级",
-    class: "四班",
-    time: "2011-12-23 11:12",
-    year: "2011",
-    master: "菜菜",
-    stu_num: "21",
-  },
-  {
-    id: "26511234",
-    grade: "一年级",
-    class: "五班",
-    time: "2011-12-23 11:12",
-    year: "2011",
-    master: "缓缓",
-    stu_num: "21",
-  },
-]);
-
-let addShow = $ref(false);
+const thirdLink = getThirdFrameLink('https://qqyxtweb.bozedu.net/#/basedata/classmanager')
 </script>
-<style lang="scss" scoped>
-@use "~/styles/input-search.scss";
-@use "~/styles/button.scss";
-@use "~/styles/table.scss";
-@use "~/styles/message-box.scss";
-@use "~/styles/dialog.scss";
-@use "~/styles/pagination.scss";
-.el-button--small {
-  height: 34px;
-  padding: 6px 22px;
-  border-radius: 10px;
-  &.is-plain {
-    background: none;
-    color: #3f8cff;
-  }
-}
-</style>

+ 215 - 0
src/pages/ptsz/bjgl/indexcopy.vue

@@ -0,0 +1,215 @@
+<template>
+  <div class="card h-full w-full">
+    <iframe class="w-full h-full" :src="thirdLink" frameborder="0"></iframe>
+    <!-- <div class="flex justify-between mt-5 mb-7">
+      <el-form
+        ref="ruleFormRef"
+        label-position="top"
+        :inline="true"
+        label-width="100px"
+      >
+        <el-form-item label="年级" prop="area_id">
+          <el-select clearable>
+            <el-option value="无" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="班级" prop="uo_id_1">
+          <el-select clearable>
+            <el-option value="无" />
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div>
+        <el-button class="_" size="small" type="primary" @click="initData">
+          查询
+        </el-button>
+        <br />
+        <el-button
+          size="small"
+          type="primary"
+          plain
+          class="mt-10px _"
+          @click="handleReset(ruleFormRef)"
+        >
+          重置
+        </el-button>
+      </div>
+    </div>
+
+    <div class="flex justify-between mt-5 mb-7">
+      <div>
+        <el-button class="_" type="primary" @click="addShow = true">
+          新增
+        </el-button>
+        <el-button class="_" type="primary"> 导出 </el-button>
+      </div>
+      <div class="flex items-center space-x-4">
+        <el-dropdown trigger="click">
+          <span class="el-dropdown-link">
+            <img class="w-28px cursor-pointer" :src="img1" alt="" />
+          </span>
+          <template #dropdown>
+            <el-dropdown-menu>
+              <el-dropdown-item>导出Csv文件</el-dropdown-item>
+              <el-dropdown-item>导出Excel文件</el-dropdown-item>
+
+            </el-dropdown-menu>
+          </template>
+</el-dropdown>
+<el-dropdown trigger="click">
+  <span class="el-dropdown-link">
+    <img class="w-28px cursor-pointer" :src="img2" alt="" />
+  </span>
+  <template #dropdown>
+            <el-dropdown-menu>
+              <el-dropdown-item
+                ><el-checkbox class="mr-10px" /> 编号</el-dropdown-item
+              >
+              <el-dropdown-item
+                ><el-checkbox class="mr-10px" />班级名称</el-dropdown-item
+              >
+              <el-dropdown-item
+                ><el-checkbox class="mr-10px" />专业</el-dropdown-item
+              >
+              <el-dropdown-item
+                ><el-checkbox class="mr-10px" />专业</el-dropdown-item
+              >
+              <el-dropdown-item
+                ><el-checkbox class="mr-10px" />邀请码</el-dropdown-item
+              >
+              <el-dropdown-item
+                ><el-checkbox class="mr-10px" />学生数</el-dropdown-item
+              >
+            </el-dropdown-menu>
+          </template>
+</el-dropdown>
+
+<el-button class="_" type="danger"> 删除 </el-button>
+</div>
+</div>
+
+<el-table :data="tableData" style="width: 100%">
+  <el-table-column type="selection" width="55" />
+  <el-table-column prop="id" label="编号" show-overflow-tooltip />
+  <el-table-column
+    prop="grade"
+    label="年级"
+    show-overflow-tooltip
+    width="auto" />
+  <el-table-column prop="class" label="班级" show-overflow-tooltip />
+  <el-table-column prop="time" label="创建时间" show-overflow-tooltip />
+  <el-table-column prop="year" label="入学年份" show-overflow-tooltip />
+  <el-table-column prop="master" label="班主任" show-overflow-tooltip />
+  <el-table-column prop="stu_num" label="学生数" show-overflow-tooltip />
+  <el-table-column label="操作" width="150">
+    <template #default="{ row }">
+          <div class="flex items-center space-x-4">
+            <img class="cursor-pointer" src="/images/edit.png"  @click="addShow = true"/>
+            <img class="cursor-pointer" src="/images/delete.png" />
+          </div>
+        </template>
+  </el-table-column>
+</el-table>
+
+<div class="flex_center mt-6">
+  <el-pagination
+    v-model:current-page="form_query.page"
+    v-model:page-size="form_query.limit"
+    layout="total, prev, pager, next, jumper"
+    :total="total"
+    :prev-icon="PrevIcon"
+    :next-icon="NextIcon"
+    @current-change="handleQuery" />
+</div>
+<el-dialog v-model="addShow" width="40%" title="新增/编辑">
+  <div class="w-full text-center">
+    <img class="px-10 w-full" :src="imgSrc" alt="" />
+  </div>
+</el-dialog> -->
+  </div>
+</template>
+<script setup>
+import imgSrc from "@/assets/img/staticImg/add.png";
+import img1 from "@/assets/img/staticImg/export.png";
+import img2 from "@/assets/img/staticImg/code.png";
+import PrevIcon from "@/components/EpPagination/PrevIcon.vue";
+import NextIcon from "@/components/EpPagination/NextIcon.vue";
+
+import { user } from '~/store/index'
+const thirdLink = getThirdFrameLink('https://qqyxtweb.bozedu.net/#/basedata/classmanager')
+
+const form_query = reactive({
+  page: 1,
+  limit: 5,
+});
+
+let total = $ref(100);
+let tableData = $ref([
+  {
+    id: "26511234",
+    grade: "一年级",
+    class: "一班",
+    time: "2011-12-23 11:12",
+    year: "2011",
+    master: "黄书",
+    stu_num: "21",
+  },
+  {
+    id: "26511234",
+    grade: "一年级",
+    class: "二班",
+    time: "2011-12-23 11:12",
+    year: "2011",
+    master: "陈飞",
+    stu_num: "21",
+  },
+  {
+    id: "26511234",
+    grade: "一年级",
+    class: "三班",
+    time: "2011-12-23 11:12",
+    year: "2011",
+    master: "沈教师",
+    stu_num: "21",
+  },
+  {
+    id: "26511234",
+    grade: "一年级",
+    class: "四班",
+    time: "2011-12-23 11:12",
+    year: "2011",
+    master: "菜菜",
+    stu_num: "21",
+  },
+  {
+    id: "26511234",
+    grade: "一年级",
+    class: "五班",
+    time: "2011-12-23 11:12",
+    year: "2011",
+    master: "缓缓",
+    stu_num: "21",
+  },
+]);
+
+let addShow = $ref(false);
+</script>
+<style lang="scss" scoped>
+@use "~/styles/input-search.scss";
+@use "~/styles/button.scss";
+@use "~/styles/table.scss";
+@use "~/styles/message-box.scss";
+@use "~/styles/dialog.scss";
+@use "~/styles/pagination.scss";
+
+.el-button--small {
+  height: 34px;
+  padding: 6px 22px;
+  border-radius: 10px;
+
+  &.is-plain {
+    background: none;
+    color: #3f8cff;
+  }
+}
+</style>

+ 5 - 369
src/pages/yhzx/jsxx/index.vue

@@ -1,372 +1,8 @@
-<script setup>
-import form_data from './config.js'
-import AddAndEdit from './components/AddAndEdit.vue'
-import DetailInfo from './components/DetailInfo.vue'
-import { area_list, base_list, grade_list, school_list, user_list } from './api'
-import PrevIcon from '@/components/EpPagination/PrevIcon.vue'
-import NextIcon from '@/components/EpPagination/NextIcon.vue'
-import { user } from '@/store/index'
-const formData = ref(form_data)
-
-const ruleFormRef = ref(null)
-const ruleForm = ref({
-  area_id: '',
-  sm_id: '',
-  grade_id: '',
-  cm_id: '',
-  subject_id: '',
-})
-
-const handleReset = (formEl) => {
-  if (!formEl)
-    return
-  formEl.resetFields()
-  initData()
-}
-
-const schoolData = ref([])
-const areaData = ref([])
-const gradeData = ref([])
-const classData = ref([])
-const subjectData = ref([])
-
-initKeyData()
-async function initKeyData() {
-  const res = await school_list({ area_id: '2615', limit: '100' })
-  if (res.code == 1)
-    schoolData.value = res.data.page_data
-
-  const res1 = await area_list({ pid: '2615' })
-  if (res1.code == 1)
-    areaData.value = res1.data.area
-}
-
-async function handleKeyChange(key) {
-  if (key == 'sm_id') {
-    ruleForm.value.grade_id = ''
-    ruleForm.value.cm_id = ''
-    ruleForm.value.subject_id = ''
-    gradeData.value = [];
-    classData.value = [];
-    subjectData.value = [];
-
-    // 年级学科
-    const res2 = await base_list({ sm_id: ruleForm.value.sm_id, token: '' })
-    const arr1 = []
-    if (res2.code == 1) {
-      for (const key in res2.data)
-        arr1.push(res2.data[key])
-    }
-
-    if(!ruleForm.value.sm_id) {
-      return
-    }
-
-    // 年级班级
-    const res3 = await grade_list({ sm_id: ruleForm.value.sm_id })
-    let arr2 = []
-    if (res3.code == 1)
-      arr2 = [...res3.data]
-
-    arr1.map((item) => {
-      arr2.map((val) => {
-        if (item.grade == val.grade) {
-          const obj = {
-            grade: item.grade,
-            gradename: item.gradename,
-            subjects: item.subjects,
-            classes: val.classes,
-          }
-          gradeData.value.push(obj)
-        }
-      })
-    })
-  }
-  else if (key == 'grade_id') {
-    ruleForm.value.cm_id = '';
-    ruleForm.value.subject_id = '';
-    classData.value = [];
-    subjectData.value = [];
-    gradeData.value.map((item) => {
-      if (ruleForm.value.grade_id == item.grade) {
-        classData.value = item.classes
-        subjectData.value = item.subjects
-      }
-    })
-  }
-}
-
-const searchKey = ref('')
-const initSearchKey = (val) => {
-  searchKey.value = val
-  initData()
-}
-
-const columnData = ref([
-  {
-    name: 'ID',
-    key: 'user_id',
-  },
-  {
-    name: '姓名',
-    key: 'user_realname',
-  },
-  {
-    name: '账号',
-    key: 'user_name',
-  },
-  {
-    name: '联系电话',
-    key: 'ue_user_phone',
-  },
-  {
-    name:'创建人',
-    value:'管理员',
-    hidden: true,
-  },
-  {
-    name:'创建时间',
-    value:'2023-01-01',
-    hidden:  true,
-  },
-  {
-    name:'身份权限',
-    value:'教师',
-    hidden: true,
-  },
-  {
-    name: '班主任',
-    key: 'manage',
-  },
-  {
-    name: '年级班级/学科',
-    key: 'njbjxk',
-  },
-])
-const tableData = ref([])
-
-const total = ref(0)
-const limit = ref(10)
-const currentPage = ref(1)
-initData()
-async function initData() {
-  const obj = {
-    keyword: searchKey.value,
-    limit: limit.value,
-    page: currentPage.value,
-    user_role_id: '75',
-    sm_id: ruleForm.value.sm_id,
-    schoolid: ruleForm.value.sm_id,
-    gradeid: ruleForm.value.grade_id,
-    classid: ruleForm.value.cm_id,
-    subject_id: ruleForm.value.subject_id,
-  }
-  const res = await user_list(obj)
-  if (res.code == 1) {
-    tableData.value = []
-    res.data.page_data.map((item) => {
-      const arr = []
-      item.cm_info.map((val) => {
-        arr.push(`${val.cm_name}/${val.subject_name}`)
-      })
-      const obj = {
-        user_id: item.user_id,
-        user_realname: item.user_realname,
-        user_name: item.user_name,
-        ue_user_phone: item.user_ext.ue_user_phone,
-        njbjxk: arr.join(','),
-      }
-      const manageData = []
-      item.cm_info.map((item) => {
-        if (item.is_manage == 1)
-          manageData.push('')
-      })
-      obj.manage = manageData.length == 0 ? '否' : '是'
-      tableData.value.push(obj)
-    })
-    total.value = parseInt(res.data.total_rows)
-  }
-}
-
-function handleCurrentChange(val) {
-  currentPage.value = val
-  initData()
-}
-
-const dialogVisible = ref(false)
-const dialogTitle = ref('')
-const dialogType = ref('')
-const userId = ref('')
-const handleAdd = () => {
-  dialogVisible.value = true
-  dialogTitle.value = '新增'
-  dialogType.value = 1
-}
-
-const handleEdit = (val) => {
-  dialogVisible.value = true
-  dialogTitle.value = '编辑'
-  dialogType.value = 1
-  userId.value = val.user_id
-}
-
-const handleClose = (type) => {
-  dialogVisible.value = false
-  dialogTitle.value = ''
-  dialogType.value = ''
-
-  if (type == 1)
-    initData()
-}
-
-const handleDetail = (val) => {
-  dialogVisible.value = true
-  dialogType.value = 2
-  userId.value = val.user_id
-}
-
-let multipleSelection = $ref([])
-const handleSelect = (val) => {
-  multipleSelection = []
-  val.forEach((i) => {
-    multipleSelection.push(i.user_id)
-  })
-}
-
-const handleExport = () => {
-  const link = `${window.GLOBAL_CONFIG.uc}/user/main/index?user_role_id=75&api=xls&page=1&site=myxjyszptx&limit=10000&token=${user.value.token}&uid=${multipleSelection}`
-
-  window.open(link, '_blank')
-}
-
-let timevalue = $ref()
-</script>
-
 <template>
-  <div class="jsxxContent card h-full">
-    <div class="searchDiv flex justify-between">
-      <el-form ref="ruleFormRef" label-position="top" :model="ruleForm" :inline="true" label-width="100px">
-        <el-form-item label="区域" prop="area_id">
-          <el-select v-model="ruleForm.area_id" filterable clearable>
-            <el-option v-for="(item, index) in areaData" :key="index" :label="item.name" :value="item.id" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="学校" prop="sm_id">
-          <el-select v-model="ruleForm.sm_id" filterable clearable @change="handleKeyChange('sm_id')">
-            <el-option v-for="(item, index) in schoolData" :key="index" :label="item.sm_name" :value="item.sm_id" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="年级" prop="grade_id">
-          <el-select v-model="ruleForm.grade_id" clearable @change="handleKeyChange('grade_id')">
-            <el-option v-for="(item, index) in gradeData" :key="index" :label="item.gradename" :value="item.grade" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="班级" prop="cm_id">
-          <el-select v-model="ruleForm.cm_id">
-            <el-option v-for="(item, index) in classData" :key="index" :label="item.cm_name" :value="item.cm_id" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="科目" prop="subject_id">
-          <el-select v-model="ruleForm.subject_id">
-            <el-option v-for="(item, index) in subjectData" :key="index" :label="item.subject_name" :value="item.subject_id" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="是否为班主任" prop="" >
-          <el-select>
-            <el-option label="是" value="1" />
-            <el-option label="否" value="2" />
-          </el-select>
-        </el-form-item>
-         <el-form-item label="时间" prop="">
-          <el-date-picker
-            v-model="timevalue"
-            type="datetime"
-            placeholder="请选择时间"
-          />
-        </el-form-item>
-      </el-form>
-      <div>
-        <el-button size="small" type="primary" @click="initData">
-          查询
-        </el-button>
-        <br>
-        <el-button size="small" type="primary" plain class="mt-10px" @click="handleReset(ruleFormRef)">
-          重置
-        </el-button>
-      </div>
-    </div>
-    <div class="content">
-      <div class="flex justify-between mt-20px mb-20px">
-        <div>
-          <!-- <el-button class="_" type="primary">批量导入</el-button> -->
-          <el-button class="_" type="primary" @click="handleAdd" >新增</el-button>
-          <el-button class="_" type="primary" @click="handleExport">
-            导出
-          </el-button>
-          <el-button type="primary" class="_" >
-            <slot name="text">批量导入</slot>
-          </el-button>
-          <el-button type="primary" link >
-            <slot name="download">点击下载模板</slot>
-          </el-button>
-        </div>
-        <div class="flex items-center space-x-4">
-          <search-keys @init="initSearchKey" />
-          <el-button class="_" type="danger" >删除</el-button>
-        </div>
-      </div>
-
-      <table-column :column-data="columnData" :table-data="tableData" :delete-btn="false" @select="handleSelect" @edit="handleEdit" @detail="handleDetail" />
-
-      <div class="flex_center mt-6 pb-12">
-        <el-pagination v-model:current-page="currentPage" v-model:page-size="limit" layout="total, prev, pager, next, jumper" :total="total" :prev-icon="PrevIcon" :next-icon="NextIcon" @current-change="handleCurrentChange" />
-      </div>
-    </div>
-
-    <el-dialog v-model="dialogVisible" :title="dialogTitle" :width="dialogType == 1 ? '680px' : '1100px'" :class="dialogType == 1 ? '_' : 'detailDialog'" :close-on-click-modal="dialogType == 1 ? false : true" @close="handleClose">
-      <AddAndEdit v-if="dialogType == 1" :data="formData" :user-id="userId" :school-data="schoolData" show-type="jsxx" @close="handleClose" />
-      <DetailInfo v-if="dialogType == 2" :data="formData" :user-id="userId" show-type="jsxx" />
-    </el-dialog>
+  <div class="card h-full w-full">
+    <iframe class="w-full h-full" :src="thirdLink" frameborder="0"></iframe>
   </div>
 </template>
-
-<style lang="scss" scoped>
-@use "~/styles/button.scss";
-@use "~/styles/dialog.scss";
-@use "~/styles/pagination.scss";
-.searchDiv {
-  border-bottom: 1px solid #ebf3ff;
-  :deep(.el-form) {
-    .el-form-item__label {
-      font-size: 14px;
-      color: #3f3f44;
-      font-weight: 600;
-      margin-bottom: 5px;
-    }
-    .el-form-item__content {
-      .el-input,
-      .el-input__wrapper {
-        width: 100%;
-        box-shadow: none;
-        outline: none;
-        border-radius: 8px;
-      }
-      .el-input {
-        border: 1px solid #ebf3ff;
-      }
-    }
-  }
-  .el-button--small {
-    height: 34px;
-    padding: 6px 22px;
-    border-radius: 10px;
-    &.is-plain {
-      background: none;
-      color: #3f8cff;
-    }
-  }
-}
-:deep(.detailDialog) {
-  border-radius: 16px;
-}
-</style>
+<script setup>
+const thirdLink = getThirdFrameLink('https://qqyxtweb.bozedu.net/#/basedata/accountmanager',{user_role_id:75})
+</script>

+ 372 - 0
src/pages/yhzx/jsxx/indexcopy.vue

@@ -0,0 +1,372 @@
+<script setup>
+import form_data from './config.js'
+import AddAndEdit from './components/AddAndEdit.vue'
+import DetailInfo from './components/DetailInfo.vue'
+import { area_list, base_list, grade_list, school_list, user_list } from './api.js'
+import PrevIcon from '@/components/EpPagination/PrevIcon.vue'
+import NextIcon from '@/components/EpPagination/NextIcon.vue'
+import { user } from '@/store/index'
+const formData = ref(form_data)
+
+const ruleFormRef = ref(null)
+const ruleForm = ref({
+  area_id: '',
+  sm_id: '',
+  grade_id: '',
+  cm_id: '',
+  subject_id: '',
+})
+
+const handleReset = (formEl) => {
+  if (!formEl)
+    return
+  formEl.resetFields()
+  initData()
+}
+
+const schoolData = ref([])
+const areaData = ref([])
+const gradeData = ref([])
+const classData = ref([])
+const subjectData = ref([])
+
+initKeyData()
+async function initKeyData() {
+  const res = await school_list({ area_id: '2615', limit: '100' })
+  if (res.code == 1)
+    schoolData.value = res.data.page_data
+
+  const res1 = await area_list({ pid: '2615' })
+  if (res1.code == 1)
+    areaData.value = res1.data.area
+}
+
+async function handleKeyChange(key) {
+  if (key == 'sm_id') {
+    ruleForm.value.grade_id = ''
+    ruleForm.value.cm_id = ''
+    ruleForm.value.subject_id = ''
+    gradeData.value = [];
+    classData.value = [];
+    subjectData.value = [];
+
+    // 年级学科
+    const res2 = await base_list({ sm_id: ruleForm.value.sm_id, token: '' })
+    const arr1 = []
+    if (res2.code == 1) {
+      for (const key in res2.data)
+        arr1.push(res2.data[key])
+    }
+
+    if(!ruleForm.value.sm_id) {
+      return
+    }
+
+    // 年级班级
+    const res3 = await grade_list({ sm_id: ruleForm.value.sm_id })
+    let arr2 = []
+    if (res3.code == 1)
+      arr2 = [...res3.data]
+
+    arr1.map((item) => {
+      arr2.map((val) => {
+        if (item.grade == val.grade) {
+          const obj = {
+            grade: item.grade,
+            gradename: item.gradename,
+            subjects: item.subjects,
+            classes: val.classes,
+          }
+          gradeData.value.push(obj)
+        }
+      })
+    })
+  }
+  else if (key == 'grade_id') {
+    ruleForm.value.cm_id = '';
+    ruleForm.value.subject_id = '';
+    classData.value = [];
+    subjectData.value = [];
+    gradeData.value.map((item) => {
+      if (ruleForm.value.grade_id == item.grade) {
+        classData.value = item.classes
+        subjectData.value = item.subjects
+      }
+    })
+  }
+}
+
+const searchKey = ref('')
+const initSearchKey = (val) => {
+  searchKey.value = val
+  initData()
+}
+
+const columnData = ref([
+  {
+    name: 'ID',
+    key: 'user_id',
+  },
+  {
+    name: '姓名',
+    key: 'user_realname',
+  },
+  {
+    name: '账号',
+    key: 'user_name',
+  },
+  {
+    name: '联系电话',
+    key: 'ue_user_phone',
+  },
+  {
+    name:'创建人',
+    value:'管理员',
+    hidden: true,
+  },
+  {
+    name:'创建时间',
+    value:'2023-01-01',
+    hidden:  true,
+  },
+  {
+    name:'身份权限',
+    value:'教师',
+    hidden: true,
+  },
+  {
+    name: '班主任',
+    key: 'manage',
+  },
+  {
+    name: '年级班级/学科',
+    key: 'njbjxk',
+  },
+])
+const tableData = ref([])
+
+const total = ref(0)
+const limit = ref(10)
+const currentPage = ref(1)
+initData()
+async function initData() {
+  const obj = {
+    keyword: searchKey.value,
+    limit: limit.value,
+    page: currentPage.value,
+    user_role_id: '75',
+    sm_id: ruleForm.value.sm_id,
+    schoolid: ruleForm.value.sm_id,
+    gradeid: ruleForm.value.grade_id,
+    classid: ruleForm.value.cm_id,
+    subject_id: ruleForm.value.subject_id,
+  }
+  const res = await user_list(obj)
+  if (res.code == 1) {
+    tableData.value = []
+    res.data.page_data.map((item) => {
+      const arr = []
+      item.cm_info.map((val) => {
+        arr.push(`${val.cm_name}/${val.subject_name}`)
+      })
+      const obj = {
+        user_id: item.user_id,
+        user_realname: item.user_realname,
+        user_name: item.user_name,
+        ue_user_phone: item.user_ext.ue_user_phone,
+        njbjxk: arr.join(','),
+      }
+      const manageData = []
+      item.cm_info.map((item) => {
+        if (item.is_manage == 1)
+          manageData.push('')
+      })
+      obj.manage = manageData.length == 0 ? '否' : '是'
+      tableData.value.push(obj)
+    })
+    total.value = parseInt(res.data.total_rows)
+  }
+}
+
+function handleCurrentChange(val) {
+  currentPage.value = val
+  initData()
+}
+
+const dialogVisible = ref(false)
+const dialogTitle = ref('')
+const dialogType = ref('')
+const userId = ref('')
+const handleAdd = () => {
+  dialogVisible.value = true
+  dialogTitle.value = '新增'
+  dialogType.value = 1
+}
+
+const handleEdit = (val) => {
+  dialogVisible.value = true
+  dialogTitle.value = '编辑'
+  dialogType.value = 1
+  userId.value = val.user_id
+}
+
+const handleClose = (type) => {
+  dialogVisible.value = false
+  dialogTitle.value = ''
+  dialogType.value = ''
+
+  if (type == 1)
+    initData()
+}
+
+const handleDetail = (val) => {
+  dialogVisible.value = true
+  dialogType.value = 2
+  userId.value = val.user_id
+}
+
+let multipleSelection = $ref([])
+const handleSelect = (val) => {
+  multipleSelection = []
+  val.forEach((i) => {
+    multipleSelection.push(i.user_id)
+  })
+}
+
+const handleExport = () => {
+  const link = `${window.GLOBAL_CONFIG.uc}/user/main/index?user_role_id=75&api=xls&page=1&site=myxjyszptx&limit=10000&token=${user.value.token}&uid=${multipleSelection}`
+
+  window.open(link, '_blank')
+}
+
+let timevalue = $ref()
+</script>
+
+<template>
+  <div class="jsxxContent card h-full">
+    <div class="searchDiv flex justify-between">
+      <el-form ref="ruleFormRef" label-position="top" :model="ruleForm" :inline="true" label-width="100px">
+        <el-form-item label="区域" prop="area_id">
+          <el-select v-model="ruleForm.area_id" filterable clearable>
+            <el-option v-for="(item, index) in areaData" :key="index" :label="item.name" :value="item.id" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="学校" prop="sm_id">
+          <el-select v-model="ruleForm.sm_id" filterable clearable @change="handleKeyChange('sm_id')">
+            <el-option v-for="(item, index) in schoolData" :key="index" :label="item.sm_name" :value="item.sm_id" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="年级" prop="grade_id">
+          <el-select v-model="ruleForm.grade_id" clearable @change="handleKeyChange('grade_id')">
+            <el-option v-for="(item, index) in gradeData" :key="index" :label="item.gradename" :value="item.grade" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="班级" prop="cm_id">
+          <el-select v-model="ruleForm.cm_id">
+            <el-option v-for="(item, index) in classData" :key="index" :label="item.cm_name" :value="item.cm_id" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="科目" prop="subject_id">
+          <el-select v-model="ruleForm.subject_id">
+            <el-option v-for="(item, index) in subjectData" :key="index" :label="item.subject_name" :value="item.subject_id" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="是否为班主任" prop="" >
+          <el-select>
+            <el-option label="是" value="1" />
+            <el-option label="否" value="2" />
+          </el-select>
+        </el-form-item>
+         <el-form-item label="时间" prop="">
+          <el-date-picker
+            v-model="timevalue"
+            type="datetime"
+            placeholder="请选择时间"
+          />
+        </el-form-item>
+      </el-form>
+      <div>
+        <el-button size="small" type="primary" @click="initData">
+          查询
+        </el-button>
+        <br>
+        <el-button size="small" type="primary" plain class="mt-10px" @click="handleReset(ruleFormRef)">
+          重置
+        </el-button>
+      </div>
+    </div>
+    <div class="content">
+      <div class="flex justify-between mt-20px mb-20px">
+        <div>
+          <!-- <el-button class="_" type="primary">批量导入</el-button> -->
+          <el-button class="_" type="primary" @click="handleAdd" >新增</el-button>
+          <el-button class="_" type="primary" @click="handleExport">
+            导出
+          </el-button>
+          <el-button type="primary" class="_" >
+            <slot name="text">批量导入</slot>
+          </el-button>
+          <el-button type="primary" link >
+            <slot name="download">点击下载模板</slot>
+          </el-button>
+        </div>
+        <div class="flex items-center space-x-4">
+          <search-keys @init="initSearchKey" />
+          <el-button class="_" type="danger" >删除</el-button>
+        </div>
+      </div>
+
+      <table-column :column-data="columnData" :table-data="tableData" :delete-btn="false" @select="handleSelect" @edit="handleEdit" @detail="handleDetail" />
+
+      <div class="flex_center mt-6 pb-12">
+        <el-pagination v-model:current-page="currentPage" v-model:page-size="limit" layout="total, prev, pager, next, jumper" :total="total" :prev-icon="PrevIcon" :next-icon="NextIcon" @current-change="handleCurrentChange" />
+      </div>
+    </div>
+
+    <el-dialog v-model="dialogVisible" :title="dialogTitle" :width="dialogType == 1 ? '680px' : '1100px'" :class="dialogType == 1 ? '_' : 'detailDialog'" :close-on-click-modal="dialogType == 1 ? false : true" @close="handleClose">
+      <AddAndEdit v-if="dialogType == 1" :data="formData" :user-id="userId" :school-data="schoolData" show-type="jsxx" @close="handleClose" />
+      <DetailInfo v-if="dialogType == 2" :data="formData" :user-id="userId" show-type="jsxx" />
+    </el-dialog>
+  </div>
+</template>
+
+<style lang="scss" scoped>
+@use "~/styles/button.scss";
+@use "~/styles/dialog.scss";
+@use "~/styles/pagination.scss";
+.searchDiv {
+  border-bottom: 1px solid #ebf3ff;
+  :deep(.el-form) {
+    .el-form-item__label {
+      font-size: 14px;
+      color: #3f3f44;
+      font-weight: 600;
+      margin-bottom: 5px;
+    }
+    .el-form-item__content {
+      .el-input,
+      .el-input__wrapper {
+        width: 100%;
+        box-shadow: none;
+        outline: none;
+        border-radius: 8px;
+      }
+      .el-input {
+        border: 1px solid #ebf3ff;
+      }
+    }
+  }
+  .el-button--small {
+    height: 34px;
+    padding: 6px 22px;
+    border-radius: 10px;
+    &.is-plain {
+      background: none;
+      color: #3f8cff;
+    }
+  }
+}
+:deep(.detailDialog) {
+  border-radius: 16px;
+}
+</style>

+ 5 - 344
src/pages/yhzx/xsxx/index.vue

@@ -1,347 +1,8 @@
-<script setup>
-import form_data from './config.js'
-import AddAndEdit from './components/AddAndEdit.vue'
-import DetailInfo from './components/DetailInfo.vue'
-
-import {
-  area_list,
-  base_list,
-  grade_class,
-  school_list,
-  user_list,
-} from './components/api'
-import { user } from '@/store/index'
-import PrevIcon from '@/components/EpPagination/PrevIcon.vue'
-import NextIcon from '@/components/EpPagination/NextIcon.vue'
-const formData = ref(form_data)
-const ruleFormRef = ref(null)
-const ruleForm = ref({
-  area_id4: '',
-  sm_id: '',
-  grade_id: '',
-  cm_id: '',
-})
-
-const total = ref(0)
-const limit = ref(10)
-const currentPage = ref(1)
-const tableData = ref([])
-const searchKey = ref('')
-const initSearchKey = (val) => {
-  searchKey.value = val
-  initData()
-}
-function initData() {
-  const obj = {
-    keyword: searchKey.value,
-    limit: limit.value,
-    page: currentPage.value,
-    user_role_id: '76',
-    area_id4: ruleForm.value.area_id4,
-    sm_id: ruleForm.value.sm_id,
-    schoolid: ruleForm.value.sm_id,
-    gradeid: ruleForm.value.grade_id,
-    classid: ruleForm.value.cm_id,
-  }
-  user_list(obj).then((res) => {
-    if (res.code == 1)
-      tableData.value = []
-    res.data.page_data.map((item) => {
-      const obj = {
-        user_id: item.user_id,
-        user_realname: item.user_realname,
-        user_name: item.user_name,
-        ue_user_phone: item.user_ext.ue_user_phone,
-        sm_name: item.sm_info.sm_name,
-        grade_name: item.user_ext.grade_name,
-        jc_name: item.user_ext.jc_name,
-      }
-      tableData.value.push(obj)
-    })
-    total.value = parseInt(res.data.total_rows)
-  })
-}
-function handleCurrentChange(val) {
-  currentPage.value = val
-  initData()
-}
-
-initData()
-
-const handleReset = (formEl) => {
-  if (!formEl)
-    return
-  formEl.resetFields()
-  initData()
-}
-const schoolData = ref([])
-const areaData = ref([])
-const gradeData = ref([])
-const classData = ref([])
-initKeyData()
-async function initKeyData() {
-  const res = await school_list({ area_id: '2615', limit: '100' })
-  if (res.code == 1)
-    schoolData.value = res.data.page_data
-
-  const res1 = await area_list({ pid: '2615' })
-  if (res1.code == 1)
-    areaData.value = res1.data.area
-}
-
-async function handleKeyChange(key) {
-  if (key == 'sm_id') {
-    ruleForm.value.grade_id = ''
-    ruleForm.value.cm_id = ''
-    gradeData.value = [];
-    classData.value = [];
-
-    // 年级学科
-    const res2 = await base_list({ sm_id: ruleForm.value.sm_id, token: '' })
-    const arr1 = []
-    if (res2.code == 1)
-      for (const key in res2.data) arr1.push(res2.data[key])
-
-    if(!ruleForm.value.sm_id) {
-      return
-    }
-
-    // 年级班级
-    const res3 = await grade_class({ sm_id: ruleForm.value.sm_id })
-    let arr2 = []
-    if (res3.code == 1)
-      arr2 = [...res3.data]
-
-    arr1.map((item) => {
-      arr2.map((val) => {
-        if (item.grade == val.grade) {
-          const obj = {
-            grade: item.grade,
-            gradename: item.gradename,
-            subjects: item.subjects,
-            classes: val.classes,
-          }
-          gradeData.value.push(obj)
-        }
-      })
-    })
-  }
-  else if (key == 'grade_id') {
-    ruleForm.value.cm_id = '';
-    classData.value = [];
-    gradeData.value.map((item) => {
-      if (ruleForm.value.grade_id == item.grade)
-        classData.value = item.classes
-    })
-  }
-}
-
-const columnData = ref([
-  {
-    name: 'ID',
-    key: 'user_id',
-  },
-  {
-    name: '姓名',
-    key: 'user_realname',
-  },
-  {
-    name: '账号',
-    key: 'user_name',
-  },
-  {
-    name: '联系电话',
-    key: 'ue_user_phone',
-  },
-  {
-    name:'创建人',
-    value:'管理员',
-    hidden: true,
-  },
-  {
-    name:'创建时间',
-    value:'2023-01-01',
-    hidden: true,
-  },
-  {
-    name:'身份权限',
-    value:'学生',
-    hidden: true,
-  },
-  {
-    name: '所属学校',
-    key: 'sm_name',
-  },
-  {
-    name: '年级',
-    key: 'grade_name',
-  },
-  {
-    name: '班级',
-    key: 'jc_name',
-  },
-])
-const form_query = reactive({
-  page: 1,
-  limit: 10,
-})
-const userId = ref('')
-const dialogVisible = ref(false)
-const dialogTitle = ref('')
-const dialogType = ref('')
-const handleAdd = () => {
-  dialogVisible.value = true
-  dialogTitle.value = '新增'
-  dialogType.value = 1
-}
-
-const handleEdit = (val) => {
-  dialogVisible.value = true
-  dialogTitle.value = '编辑'
-  dialogType.value = 1
-  userId.value = val.user_id
-}
-
-const handleClose = (type) => {
-  dialogVisible.value = false
-  dialogTitle.value = ''
-  dialogType.value = ''
-
-  if (type == 1)
-    initData()
-}
-
-let multipleSelection = $ref([])
-const handleSelect = (val) => {
-  multipleSelection = []
-  val.forEach((i) => {
-    multipleSelection.push(i.user_id)
-  })
-}
-
-const handleExport = () => {
-  const link = `${window.GLOBAL_CONFIG.uc}/user/main/index?user_role_id=76&api=xls&page=1&site=myxjyszptx&limit=10000&token=${user.value.token}&uid=${multipleSelection}`
-
-  window.open(link, '_blank')
-  console.log(link, 345)
-}
-const handleDetail = (val) => {
-  dialogVisible.value = true
-  dialogType.value = 2
-  userId.value = val.user_id
-  console.log(val, 1111)
-}
-</script>
-
 <template>
-  <div class="xsxxContent card h-full">
-    <div class="searchDiv flex justify-between">
-      <el-form ref="ruleFormRef" label-position="top" :model="ruleForm" :inline="true" label-width="100px">
-        <el-form-item label="区域" prop="area_id4">
-          <el-select v-model="ruleForm.area_id4" filterable clearable>
-            <el-option v-for="(item, index) in areaData" :key="index" :label="item.name" :value="item.id" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="学校" prop="sm_id">
-          <el-select v-model="ruleForm.sm_id" filterable clearable @change="handleKeyChange('sm_id')">
-            <el-option v-for="(item, index) in schoolData" :key="index" :label="item.sm_name" :value="item.sm_id" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="年级" prop="grade_id">
-          <el-select v-model="ruleForm.grade_id" clearable @change="handleKeyChange('grade_id')">
-            <el-option v-for="(item, index) in gradeData" :key="index" :label="item.gradename" :value="item.grade" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="班级" prop="cm_id">
-          <el-select v-model="ruleForm.cm_id">
-            <el-option v-for="(item, index) in classData" :key="index" :label="item.cm_name" :value="item.cm_id" />
-          </el-select>
-        </el-form-item>
-      </el-form>
-      <div>
-        <el-button size="small" type="primary" @click="initData">
-          查询
-        </el-button>
-        <br>
-        <el-button size="small" type="primary" plain class="mt-10px" @click="handleReset(ruleFormRef)">
-          重置
-        </el-button>
-      </div>
-    </div>
-    <div class="content">
-      <div class="flex justify-between mt-20px mb-20px">
-        <div>
-          <!-- <el-button class="_" type="primary">
-            批量导入
-          </el-button> -->
-          <el-button class="_" type="primary" @click="handleAdd" >新增</el-button>
-          <el-button class="_" type="primary" @click="handleExport">
-            导出
-          </el-button>
-          <el-button type="primary" class="_" >
-            <slot name="text">批量导入</slot>
-          </el-button>
-          <el-button type="primary" link >
-            <slot name="download">点击下载模板</slot>
-          </el-button>
-        </div>
-        <div class="flex items-center space-x-4">
-          <search-keys @init="initSearchKey" />
-          <el-button class="_" type="danger">
-            删除
-          </el-button>
-        </div>
-      </div>
-
-      <table-column :column-data="columnData" :table-data="tableData" :delete-btn="false" @select="handleSelect" @edit="handleEdit" @detail="handleDetail" />
-
-      <div class="flex_center mt-6 pb-12">
-        <el-pagination v-model:current-page="currentPage" v-model:page-size="limit" layout="total, prev, pager, next, jumper" :total="total" :prev-icon="PrevIcon" :next-icon="NextIcon" @current-change="handleCurrentChange" />
-      </div>
-    </div>
-    <el-dialog v-model="dialogVisible" :title="dialogTitle" :width="dialogType == 1 ? '680px' : '1100px'" :class="dialogType == 1 ? '_' : 'detailDialog'" :close-on-click-modal="dialogType == 1 ? false : true" @close="handleClose">
-      <AddAndEdit v-if="dialogType == 1" :data="formData" :user-id="userId" :school-data="schoolData" :grade-data="gradeData" :class-data="classData" @close="handleClose" />
-      <DetailInfo v-if="dialogType == 2" :data="formData" :user-id="userId" />
-    </el-dialog>
+  <div class="card h-full w-full">
+    <iframe class="w-full h-full" :src="thirdLink" frameborder="0"></iframe>
   </div>
 </template>
-
-<style lang="scss" scoped>
-@use "~/styles/button.scss";
-@use "~/styles/dialog.scss";
-.searchDiv {
-  border-bottom: 1px solid #ebf3ff;
-  :deep(.el-form) {
-    .el-form-item__label {
-      font-size: 14px;
-      color: #3f3f44;
-      font-weight: 600;
-      margin-bottom: 5px;
-    }
-    .el-form-item__content {
-      .el-input,
-      .el-input__wrapper {
-        width: 100%;
-        box-shadow: none;
-        outline: none;
-        border-radius: 8px;
-      }
-      .el-input {
-        border: 1px solid #ebf3ff;
-      }
-    }
-  }
-  .el-button--small {
-    height: 34px;
-    padding: 6px 22px;
-    border-radius: 10px;
-    &.is-plain {
-      background: none;
-      color: #3f8cff;
-    }
-  }
-}
-:deep(.detailDialog) {
-  border-radius: 16px;
-}
-</style>
+<script setup>
+const thirdLink = getThirdFrameLink('https://qqyxtweb.bozedu.net/#/basedata/accountmanager',{user_role_id:76})
+</script>

+ 347 - 0
src/pages/yhzx/xsxx/indexcopy.vue

@@ -0,0 +1,347 @@
+<script setup>
+import form_data from './config.js'
+import AddAndEdit from './components/AddAndEdit.vue'
+import DetailInfo from './components/DetailInfo.vue'
+
+import {
+  area_list,
+  base_list,
+  grade_class,
+  school_list,
+  user_list,
+} from './components/api.js'
+import { user } from '@/store/index'
+import PrevIcon from '@/components/EpPagination/PrevIcon.vue'
+import NextIcon from '@/components/EpPagination/NextIcon.vue'
+const formData = ref(form_data)
+const ruleFormRef = ref(null)
+const ruleForm = ref({
+  area_id4: '',
+  sm_id: '',
+  grade_id: '',
+  cm_id: '',
+})
+
+const total = ref(0)
+const limit = ref(10)
+const currentPage = ref(1)
+const tableData = ref([])
+const searchKey = ref('')
+const initSearchKey = (val) => {
+  searchKey.value = val
+  initData()
+}
+function initData() {
+  const obj = {
+    keyword: searchKey.value,
+    limit: limit.value,
+    page: currentPage.value,
+    user_role_id: '76',
+    area_id4: ruleForm.value.area_id4,
+    sm_id: ruleForm.value.sm_id,
+    schoolid: ruleForm.value.sm_id,
+    gradeid: ruleForm.value.grade_id,
+    classid: ruleForm.value.cm_id,
+  }
+  user_list(obj).then((res) => {
+    if (res.code == 1)
+      tableData.value = []
+    res.data.page_data.map((item) => {
+      const obj = {
+        user_id: item.user_id,
+        user_realname: item.user_realname,
+        user_name: item.user_name,
+        ue_user_phone: item.user_ext.ue_user_phone,
+        sm_name: item.sm_info.sm_name,
+        grade_name: item.user_ext.grade_name,
+        jc_name: item.user_ext.jc_name,
+      }
+      tableData.value.push(obj)
+    })
+    total.value = parseInt(res.data.total_rows)
+  })
+}
+function handleCurrentChange(val) {
+  currentPage.value = val
+  initData()
+}
+
+initData()
+
+const handleReset = (formEl) => {
+  if (!formEl)
+    return
+  formEl.resetFields()
+  initData()
+}
+const schoolData = ref([])
+const areaData = ref([])
+const gradeData = ref([])
+const classData = ref([])
+initKeyData()
+async function initKeyData() {
+  const res = await school_list({ area_id: '2615', limit: '100' })
+  if (res.code == 1)
+    schoolData.value = res.data.page_data
+
+  const res1 = await area_list({ pid: '2615' })
+  if (res1.code == 1)
+    areaData.value = res1.data.area
+}
+
+async function handleKeyChange(key) {
+  if (key == 'sm_id') {
+    ruleForm.value.grade_id = ''
+    ruleForm.value.cm_id = ''
+    gradeData.value = [];
+    classData.value = [];
+
+    // 年级学科
+    const res2 = await base_list({ sm_id: ruleForm.value.sm_id, token: '' })
+    const arr1 = []
+    if (res2.code == 1)
+      for (const key in res2.data) arr1.push(res2.data[key])
+
+    if(!ruleForm.value.sm_id) {
+      return
+    }
+
+    // 年级班级
+    const res3 = await grade_class({ sm_id: ruleForm.value.sm_id })
+    let arr2 = []
+    if (res3.code == 1)
+      arr2 = [...res3.data]
+
+    arr1.map((item) => {
+      arr2.map((val) => {
+        if (item.grade == val.grade) {
+          const obj = {
+            grade: item.grade,
+            gradename: item.gradename,
+            subjects: item.subjects,
+            classes: val.classes,
+          }
+          gradeData.value.push(obj)
+        }
+      })
+    })
+  }
+  else if (key == 'grade_id') {
+    ruleForm.value.cm_id = '';
+    classData.value = [];
+    gradeData.value.map((item) => {
+      if (ruleForm.value.grade_id == item.grade)
+        classData.value = item.classes
+    })
+  }
+}
+
+const columnData = ref([
+  {
+    name: 'ID',
+    key: 'user_id',
+  },
+  {
+    name: '姓名',
+    key: 'user_realname',
+  },
+  {
+    name: '账号',
+    key: 'user_name',
+  },
+  {
+    name: '联系电话',
+    key: 'ue_user_phone',
+  },
+  {
+    name:'创建人',
+    value:'管理员',
+    hidden: true,
+  },
+  {
+    name:'创建时间',
+    value:'2023-01-01',
+    hidden: true,
+  },
+  {
+    name:'身份权限',
+    value:'学生',
+    hidden: true,
+  },
+  {
+    name: '所属学校',
+    key: 'sm_name',
+  },
+  {
+    name: '年级',
+    key: 'grade_name',
+  },
+  {
+    name: '班级',
+    key: 'jc_name',
+  },
+])
+const form_query = reactive({
+  page: 1,
+  limit: 10,
+})
+const userId = ref('')
+const dialogVisible = ref(false)
+const dialogTitle = ref('')
+const dialogType = ref('')
+const handleAdd = () => {
+  dialogVisible.value = true
+  dialogTitle.value = '新增'
+  dialogType.value = 1
+}
+
+const handleEdit = (val) => {
+  dialogVisible.value = true
+  dialogTitle.value = '编辑'
+  dialogType.value = 1
+  userId.value = val.user_id
+}
+
+const handleClose = (type) => {
+  dialogVisible.value = false
+  dialogTitle.value = ''
+  dialogType.value = ''
+
+  if (type == 1)
+    initData()
+}
+
+let multipleSelection = $ref([])
+const handleSelect = (val) => {
+  multipleSelection = []
+  val.forEach((i) => {
+    multipleSelection.push(i.user_id)
+  })
+}
+
+const handleExport = () => {
+  const link = `${window.GLOBAL_CONFIG.uc}/user/main/index?user_role_id=76&api=xls&page=1&site=myxjyszptx&limit=10000&token=${user.value.token}&uid=${multipleSelection}`
+
+  window.open(link, '_blank')
+  console.log(link, 345)
+}
+const handleDetail = (val) => {
+  dialogVisible.value = true
+  dialogType.value = 2
+  userId.value = val.user_id
+  console.log(val, 1111)
+}
+</script>
+
+<template>
+  <div class="xsxxContent card h-full">
+    <div class="searchDiv flex justify-between">
+      <el-form ref="ruleFormRef" label-position="top" :model="ruleForm" :inline="true" label-width="100px">
+        <el-form-item label="区域" prop="area_id4">
+          <el-select v-model="ruleForm.area_id4" filterable clearable>
+            <el-option v-for="(item, index) in areaData" :key="index" :label="item.name" :value="item.id" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="学校" prop="sm_id">
+          <el-select v-model="ruleForm.sm_id" filterable clearable @change="handleKeyChange('sm_id')">
+            <el-option v-for="(item, index) in schoolData" :key="index" :label="item.sm_name" :value="item.sm_id" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="年级" prop="grade_id">
+          <el-select v-model="ruleForm.grade_id" clearable @change="handleKeyChange('grade_id')">
+            <el-option v-for="(item, index) in gradeData" :key="index" :label="item.gradename" :value="item.grade" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="班级" prop="cm_id">
+          <el-select v-model="ruleForm.cm_id">
+            <el-option v-for="(item, index) in classData" :key="index" :label="item.cm_name" :value="item.cm_id" />
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div>
+        <el-button size="small" type="primary" @click="initData">
+          查询
+        </el-button>
+        <br>
+        <el-button size="small" type="primary" plain class="mt-10px" @click="handleReset(ruleFormRef)">
+          重置
+        </el-button>
+      </div>
+    </div>
+    <div class="content">
+      <div class="flex justify-between mt-20px mb-20px">
+        <div>
+          <!-- <el-button class="_" type="primary">
+            批量导入
+          </el-button> -->
+          <el-button class="_" type="primary" @click="handleAdd" >新增</el-button>
+          <el-button class="_" type="primary" @click="handleExport">
+            导出
+          </el-button>
+          <el-button type="primary" class="_" >
+            <slot name="text">批量导入</slot>
+          </el-button>
+          <el-button type="primary" link >
+            <slot name="download">点击下载模板</slot>
+          </el-button>
+        </div>
+        <div class="flex items-center space-x-4">
+          <search-keys @init="initSearchKey" />
+          <el-button class="_" type="danger">
+            删除
+          </el-button>
+        </div>
+      </div>
+
+      <table-column :column-data="columnData" :table-data="tableData" :delete-btn="false" @select="handleSelect" @edit="handleEdit" @detail="handleDetail" />
+
+      <div class="flex_center mt-6 pb-12">
+        <el-pagination v-model:current-page="currentPage" v-model:page-size="limit" layout="total, prev, pager, next, jumper" :total="total" :prev-icon="PrevIcon" :next-icon="NextIcon" @current-change="handleCurrentChange" />
+      </div>
+    </div>
+    <el-dialog v-model="dialogVisible" :title="dialogTitle" :width="dialogType == 1 ? '680px' : '1100px'" :class="dialogType == 1 ? '_' : 'detailDialog'" :close-on-click-modal="dialogType == 1 ? false : true" @close="handleClose">
+      <AddAndEdit v-if="dialogType == 1" :data="formData" :user-id="userId" :school-data="schoolData" :grade-data="gradeData" :class-data="classData" @close="handleClose" />
+      <DetailInfo v-if="dialogType == 2" :data="formData" :user-id="userId" />
+    </el-dialog>
+  </div>
+</template>
+
+<style lang="scss" scoped>
+@use "~/styles/button.scss";
+@use "~/styles/dialog.scss";
+.searchDiv {
+  border-bottom: 1px solid #ebf3ff;
+  :deep(.el-form) {
+    .el-form-item__label {
+      font-size: 14px;
+      color: #3f3f44;
+      font-weight: 600;
+      margin-bottom: 5px;
+    }
+    .el-form-item__content {
+      .el-input,
+      .el-input__wrapper {
+        width: 100%;
+        box-shadow: none;
+        outline: none;
+        border-radius: 8px;
+      }
+      .el-input {
+        border: 1px solid #ebf3ff;
+      }
+    }
+  }
+  .el-button--small {
+    height: 34px;
+    padding: 6px 22px;
+    border-radius: 10px;
+    &.is-plain {
+      background: none;
+      color: #3f8cff;
+    }
+  }
+}
+:deep(.detailDialog) {
+  border-radius: 16px;
+}
+</style>

+ 7 - 0
src/utils/helper.ts

@@ -28,3 +28,10 @@ export function getPartUrl(url: string) {
 export function getAvatarUrl(id: string) {
   return `${window.GLOBAL_CONFIG.oss}/user/main/user_avatar?user_id=${id}`
 }
+
+import { user } from '~/store/index'
+
+export function getThirdFrameLink(url: string, params?: Record<string, string>) {
+  console.log('getThirdFrameLink', `${url}?token=${user.value?.token}&t=myx&js_code=myx&frame=1${params ? '&' + new URLSearchParams(params) : ''}`)
+  return `${url}?token=${user.value?.token}&t=myx&js_code=myx&frame=1${params ? '&' + new URLSearchParams(params) : ''}`
+}