bzkf30 пре 2 година
родитељ
комит
979cab2019

+ 1 - 1
auto-imports.d.ts

@@ -1,5 +1,5 @@
 // Generated by 'unplugin-auto-import'
 export {}
 declare global {
-
+  const ElMessage: typeof import('element-plus/es')['ElMessage']
 }

BIN
public/images/default.png


+ 2 - 1
src/pages/jcxx/xxxx/index.vue

@@ -34,7 +34,8 @@
             <el-table-column prop="sm_name" width="200" label="学校名称" show-overflow-tooltip></el-table-column>
             <el-table-column property="name" label="学校logo">
               <template #default="scope">
-                <el-image style="width: 38px; height: 38px;border-radius: 50%;display: block;" :src="getFullUrl(scope.row.sm_logo)" />
+                <el-image v-if="scope.row.sm_logo!=null&&scope.row.sm_logo!=''" style="width: 38px; height: 38px;border-radius: 50%;display: block;" :src="getFullUrl(scope.row.sm_logo)" />
+                <el-image v-else style="width: 38px; height: 38px;border-radius: 50%;display: block;" src="/images/default.png" />
               </template>
             </el-table-column>
             <el-table-column property="sm_period" label="级别" />

+ 1 - 0
src/pages/jcxx/zzjg/index.vue

@@ -473,6 +473,7 @@ const handlePermissionChange = async (data) => {
     cursor: pointer;
   }
   .el-tree::v-deep {
+    padding-right: 15px;
     .el-tree-node__content {
       .el-tree-node__label {
         flex: 1;

+ 232 - 4
src/pages/kcbgl/ssys/index.vue

@@ -1,11 +1,239 @@
 <template>
-  <!-- 资源库管理 -->
-  <div>11777</div>
+  <!-- 双师一生 -->
+  <div class="ssysKcbglManage">
+    <div class="searchDiv flex">
+      <div class="flex">
+        <el-button size="default" type="success" @click="handleDownload">导出</el-button>
+        <import-button url="/school/main" @success="initData"></import-button>
+      </div>
+      <div class="flex">
+        <el-input v-model="keyword" size="default" placeholder="请输入搜索的关键词" :suffix-icon="Search" />
+        <el-button size="default" type="primary" @click="initData" style="margin-left: 10px;">搜索</el-button>
+      </div>
+    </div>
+
+    <div class="searchContent">
+      <div class="tableList">
+        <div class="tableDiv">
+          <el-table ref="multipleTableRef" :data="tableData" height="100%" style="width: 100%" @selection-change="handleSelectionChange">
+            <el-table-column type="selection" width="55" />
+            <el-table-column prop="sm_name" width="" label="课表名称" show-overflow-tooltip></el-table-column>
+            <el-table-column width="" label="状态" show-overflow-tooltip>
+              <template #default="scope">
+                {{dealWithDateTime(scope.row.create_dateline * 1000)}}
+              </template>
+            </el-table-column>
+            <el-table-column label="操作" width="">
+              <template #default="scope">
+                <el-button text size="default" type="primary" @click="handleAudit(scope.row.ks_id)">审核</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+        <div class="paginationDiv">
+          <el-pagination background layout="total, prev, pager, next" :total="total" @current-change="handleCurrentChange" :page-size="limit" :currentPage="currentPage"></el-pagination>
+        </div>
+      </div>
+    </div>
+
+    <!-- <el-dialog width="900px" v-model="dialogVisible" title="查看" custom-class="commonDialog" :show-close="false" :close-on-click-modal="false">
+      <detail :current="currentId" :workData="workData" :classData="classData" @update="handleClose"></detail>
+    </el-dialog> -->
+  </div>
 </template>
 
-<script>
+<script setup >
+import { reactive, ref, onMounted } from "vue";
+import { download } from "~/utils/request";
+import { Search } from "@element-plus/icons-vue";
+import { dealWithDateTime } from "~/utils/common-util.js"
+// import { gradeList, subjectList, ssyskcList, zy_ssysList, classList } from "./api.js";
+// import detail from "./detail.vue";
+
+const activeTab = ref("1");
+const tabData = [
+  {
+    name: "1",
+    label: "待审核列表",
+  },
+  {
+    name: "2",
+    label: "已通过",
+  },
+  {
+    name: "3",
+    label: "未通过",
+  },
+];
+
+const ruleForm = reactive({
+  keyword: "",
+  ks_zjjsxm: "",
+  grade_id: "",
+  subject_id: "",
+  sm_period: "",
+});
+
+const resetForm = (formEl) => {
+  if (!formEl) return;
+  formEl.resetFields();
+  initData();
+};
+
+initSelectData();
+const gradeData = ref([]);
+const subjectData = ref([]);
+const workData = ref([]);
+const classData = ref([]);
+async function initSelectData() {
+  let data1 = await gradeList();
+  gradeData.value = data1.page_data;
+
+  let data2 = await subjectList();
+  subjectData.value = data2.page_data;
+
+  let data3 = await zy_ssysList();
+  workData.value = data3.page_data;
+
+  let data4 = await classList();
+  classData.value = data4.page_data;
+}
+
+const tableData = ref([]);
+const total = ref(0);
+const limit = ref(10);
+const currentPage = ref(1);
+function handleCurrentChange(val) {
+  currentPage.value = val;
+  initData();
+}
+
+initData();
+async function initData() {
+  let obj = {
+    limit: limit.value,
+    page: currentPage.value,
+    keyword: ruleForm.keyword,
+    ks_status: activeTab.value,
+  };
+  let data = await ssyskcList(obj);
+  total.value = parseInt(data.total_rows);
+  tableData.value = data.page_data;
+}
+
+const dialogVisible = ref(false);
+const currentId = ref("");
+const handleAudit = (id) => {
+  dialogVisible.value = true;
+  currentId.value = id;
+};
+
+const handleClose = (type) => {
+  dialogVisible.value = false;
+  currentId.value = "";
+  if (type == 1) {
+    initData();
+  }
+}
+
+const multipleSelection = ref([]);
+const handleSelectionChange = (val) => {
+  multipleSelection.value = val;
+};
+
+const handleDownload = () => {
+  let obj = {
+    limit: limit.value,
+    page: currentPage.value,
+    keyword: ruleForm.keyword,
+    ks_status: activeTab.value,
+  };
+
+  download("/kzkt/ssyskc/index", obj);
+};
+
+onMounted(() => {
+  setTimeout(() => {
+    let searchContent = document.querySelector(".searchContent");
+    let offset = document.querySelector(".searchDiv");
+    let parentObj = document.querySelector(".ssysKcbglManage");
+    searchContent.style.height = parentObj.clientHeight - offset.clientHeight + "px";
+    window.onresize = function () {
+      let searchContent = document.querySelector(".searchContent");
+      let parentObj = document.querySelector(".ssysKcbglManage");
+      searchContent.style.height = parentObj.clientHeight - offset.clientHeight + "px";
+    }
+  }, 0)
+})
+
 
 </script>
 
-<style>
+<style lang="scss" scoped>
+@import "~/styles/dialog.scss";
+.ssysKcbglManage {
+  height: calc(100vh - 50px - 2rem);
+  .flex {
+    display: flex;
+    align-items: center;
+  }
+  .searchDiv {
+    // height: 62px;
+    background: #fff;
+    // border-radius: 6px;
+    // box-shadow: 0 0 5px rgba($color: #000000, $alpha: 0.1);
+    // padding: 0 20px;
+    // .el-tabs::v-deep {
+    //   .el-tabs__header {
+    //     margin: 0;
+    //   }
+    // }
+    justify-content: space-between;
+    padding: 10px 0;
+    border-bottom: 1px solid #e3e3e3;
+    ::v-deep .el-button {
+      height: 32px;
+    }
+  }
+  .searchContent {
+    margin-top: 12px;
+    height: calc(100% - 62px - 12px);
+    background: #fff;
+    border-radius: 6px;
+    // box-shadow: 0 0 5px rgba($color: #000000, $alpha: 0.1);
+    // padding: 0 20px;
+    // .searchBtn {
+    //   justify-content: space-between;
+    //   padding: 10px 0;
+    //   border-bottom: 1px solid #e3e3e3;
+    //   ::v-deep .el-button {
+    //     height: 32px;
+    //   }
+    // }
+    .tableList {
+      height: 100%;
+      // height: calc(100% - 52px - 10px);
+      position: relative;
+      .tableDiv {
+        // background: #ddd;
+        height: calc(100% - 42px);
+        .el-button {
+          padding: 0;
+        }
+        .split {
+          color: #00a3ff;
+          margin: 0 10px;
+        }
+      }
+      .paginationDiv {
+        position: absolute;
+        bottom: -5px;
+        padding: 3px;
+        width: 100%;
+        display: -webkit-box;
+        -webkit-box-pack: end;
+      }
+    }
+  }
+}
 </style>

+ 2 - 2
src/pages/kcbgl/wlzb/index.vue

@@ -1,6 +1,6 @@
 <template>
-  <!-- 资源库管理 -->
-  <div>11333</div>
+  <!-- 网络直播 -->
+  <div>网络直播</div>
 </template>
 
 <script>

+ 2 - 2
src/pages/kcbgl/ykkb/index.vue

@@ -1,6 +1,6 @@
 <template>
-  <!-- 资源库管理 -->
-  <div>113300003</div>
+  <!-- 约课课表 -->
+  <div>约课课表</div>
 </template>
 
 <script>

+ 4 - 0
src/pages/kcgl/ssys/api.js

@@ -5,6 +5,10 @@ export const ssyskcList = (data = {}) => {
   return http('/kzkt/ssyskc/index', data)
 }
 
+export const ssyskcEdit = (data = {}) => {
+  return http('/kzkt/ssyskc/edit', data)
+}
+
 export const gradeList = (data = { limit: 50 }) => {
   return http('/jcxx/grade/index', data)
 }

+ 37 - 5
src/pages/kcgl/ssys/detail.vue

@@ -68,8 +68,8 @@
         <el-form-item>
           <div class="btnDiv">
             <el-button size="default" type="primary" plain @click="emit('update', 2)">取消</el-button>
-            <el-button size="default" type="primary" @click="handleAudit">通过</el-button>
-            <el-button size="default" type="primary" @click="handleAudit" plain>不通过</el-button>
+            <el-button size="default" type="primary" @click="handleAudit('1')">通过</el-button>
+            <el-button size="default" type="primary" @click="handleAudit('2')" plain>不通过</el-button>
           </div>
         </el-form-item>
       </el-form>
@@ -79,7 +79,7 @@
 
 <script setup>
 import { ref, watch } from "vue";
-import { ssyskcDetail } from "./api"
+import { ssyskcDetail, ssyskcEdit } from "./api"
 import { Folder } from "@element-plus/icons-vue";
 import { getFullUrl } from "~/utils/helper";
 
@@ -169,8 +169,40 @@ async function initDetailInfo(ks_id) {
   }
 }
 
-const handleAudit = (type) => {
-  emit("update", 1)
+const handleAudit = async (type) => {
+  formline.value.ks_shzt = type;
+  let form = {
+    ks_img: "",
+    ks_kj: "",
+    ks_name: "1",
+    ks_kss: "1",
+    ks_brief: "1",
+    ks_start_datetime: "",
+    ks_end_datetime: "",
+    grade_id: "",
+    grade_name: "",
+    subject_id: "",
+    subject_name: "",
+    yys_id: "",
+    ks_jdjs_json: "",
+    ks_jdbj_json: "",
+    ks_sfsjdtjkc: "",
+    ks_sfjp: "",
+    ks_sfxysh: "",
+    ks_shzt: "",
+  }
+  for (let key in form) {
+    form[key] = formline.value[key];
+  }
+  let obj = {
+    ks_id: props.current,
+    kzkt_ssyskc: form
+  }
+  let data = await ssyskcEdit(obj);
+  if (data) {
+    ElMessage.success("审核成功!");
+    emit("update", 1)
+  }
 }
 </script>
 

+ 4 - 1
src/pages/kcgl/ssys/index.vue

@@ -42,8 +42,10 @@
         <div class="flex">
           <el-button size="default" type="success" @click="handleDownload">导出</el-button>
         </div>
-        <div>
+        <div class="flex">
           <img src="/images/print.png" alt="" />
+          <el-input v-model="keyword" size="default" placeholder="请输入搜索的关键词" style="margin: 0 10px;" :suffix-icon="Search" />
+          <el-button size="default" type="primary" @click="initData">搜索</el-button>
         </div>
       </div>
       <div class="tableList">
@@ -90,6 +92,7 @@
 <script setup >
 import { reactive, ref, onMounted } from "vue";
 import { download } from "~/utils/request";
+import { Search } from "@element-plus/icons-vue";
 import { dealWithDateTime } from "~/utils/common-util.js"
 import { gradeList, subjectList, ssyskcList, zy_ssysList, classList } from "./api.js";
 import detail from "./detail.vue";

+ 5 - 0
src/pages/zykgl/api.js

@@ -0,0 +1,5 @@
+import http from '@/utils/httpConfig'
+
+export const filesList = (data = {}) => {
+  return http('/kczy/files/index', data)
+}

+ 268 - 3
src/pages/zykgl/index.vue

@@ -1,11 +1,276 @@
 <template>
   <!-- 资源库管理 -->
-  <div>11</div>
+  <div class="zykglManage">
+    <div class="searchDiv">
+      <el-tabs v-model="activeTab" class="demo-tabs" @tab-change="initData">
+        <el-tab-pane v-for="(item, index) in tabData" :key="index" :label="item.label" :name="item.name"></el-tab-pane>
+      </el-tabs>
+      <el-form ref="ruleFormRef" :inline="true" :model="ruleForm" class="demo-form-inline">
+        <el-form-item label="课程名称:" prop="keyword">
+          <el-input size="default" v-model="ruleForm.keyword" placeholder="" />
+        </el-form-item>
+        <el-form-item label="创建人:" prop="ks_zjjsxm">
+          <el-input size="default" v-model="ruleForm.ks_zjjsxm" placeholder="" />
+        </el-form-item>
+        <el-form-item label="年级:" prop="grade_id">
+          <el-select v-model="ruleForm.grade_id" placeholder="" size="default">
+            <el-option v-for="(item, index) in gradeData" :key="index" :label="item.grade_name" :value="item.grade_id" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="学科:" prop="subject_id">
+          <el-select v-model="ruleForm.subject_id" placeholder="" size="default">
+            <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 prop="" label="创建时间:">
+          <el-date-picker size="default" v-model="ruleForm.time" type="datetime" placeholder="" />
+        </el-form-item>
+        <el-form-item prop="" label="ID">
+          <el-input size="default" v-model="ruleForm.keyword" placeholder="" />
+        </el-form-item>
+        <el-form-item label="资源名称:" prop="keyword">
+          <el-input size="default" v-model="ruleForm.keyword" placeholder="" />
+        </el-form-item>
+        <el-form-item>
+          <el-button size="default" type="primary" @click="initData">搜索</el-button>
+          <el-button size="default" type="warning" @click="resetForm(ruleFormRef)">清空</el-button>
+        </el-form-item>
+      </el-form>
+    </div>
+
+    <div class="searchContent">
+      <div class="searchBtn flex">
+        <div class="flex">
+          <el-button size="default" type="success" @click="handleDownload">导出</el-button>
+        </div>
+        <div>
+          <img src="/images/print.png" alt="" />
+        </div>
+      </div>
+      <div class="tableList">
+        <div class="tableDiv">
+          <el-table ref="multipleTableRef" :data="tableData" height="100%" style="width: 100%" @selection-change="handleSelectionChange">
+            <el-table-column type="selection" width="55" />
+            <el-table-column prop="kf_id" width="200" label="ID" show-overflow-tooltip></el-table-column>
+            <el-table-column prop="kf_name" width="200" label="资源名称" show-overflow-tooltip></el-table-column>
+            <el-table-column prop="grade_name" width="" label="年级" show-overflow-tooltip></el-table-column>
+            <el-table-column prop="subject_name" width="" label="学科" show-overflow-tooltip></el-table-column>
+            <el-table-column prop="ks_zjjsxm" width="" label="创建人" show-overflow-tooltip></el-table-column>
+            <el-table-column prop="sm_name" width="" label="班级" show-overflow-tooltip></el-table-column>
+            <el-table-column prop="sm_name" width="" label="课程名称" show-overflow-tooltip></el-table-column>
+            <el-table-column width="180" label="创建时间" show-overflow-tooltip>
+              <template #default="scope">
+                {{dealWithDateTime(scope.row.create_dateline * 1000)}}
+              </template>
+            </el-table-column>
+            <el-table-column prop="sm_name" width="" label="大小" show-overflow-tooltip></el-table-column>
+            <el-table-column label="操作" width="80">
+              <template #default="scope">
+                <el-button v-if="activeTab==1" text size="default" type="primary" @click="handleAudit(scope.row.ks_id)">查看</el-button>
+                <el-button v-if="activeTab==2" text size="default" type="primary" @click="handleAudit(scope.row.ks_id)">修改</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+        <div class="paginationDiv">
+          <el-pagination background layout="total, prev, pager, next" :total="total" @current-change="handleCurrentChange" :page-size="limit" :currentPage="currentPage"></el-pagination>
+        </div>
+      </div>
+    </div>
+
+    <el-dialog width="900px" v-model="dialogVisible" title="查看" custom-class="commonDialog" :show-close="false" :close-on-click-modal="false">
+      <!-- <detail :current="currentId" :workData="workData" :classData="classData" @update="handleClose"></detail> -->
+    </el-dialog>
+  </div>
 </template>
 
-<script>
+<script setup >
+import { reactive, ref, onMounted } from "vue";
+import { download } from "~/utils/request";
+import { dealWithDateTime } from "~/utils/common-util.js"
+import { filesList } from "./api.js";
+// import detail from "./detail.vue";
+
+const activeTab = ref("1");
+const tabData = [
+  {
+    name: "1",
+    label: "资源库",
+  },
+  {
+    name: "2",
+    label: "异常资源",
+  },
+];
+
+const ruleForm = reactive({
+  keyword: "",
+  ks_zjjsxm: "",
+  grade_id: "",
+  subject_id: "",
+  sm_period: "",
+});
+
+const resetForm = (formEl) => {
+  if (!formEl) return;
+  formEl.resetFields();
+  initData();
+};
+
+initSelectData();
+const gradeData = ref([]);
+const subjectData = ref([]);
+const workData = ref([]);
+const classData = ref([]);
+async function initSelectData() {
+  let data1 = await gradeList();
+  gradeData.value = data1.page_data;
+
+  let data2 = await subjectList();
+  subjectData.value = data2.page_data;
+
+  let data3 = await zy_ssysList();
+  workData.value = data3.page_data;
+
+  let data4 = await classList();
+  classData.value = data4.page_data;
+}
+
+const tableData = ref([]);
+const total = ref(0);
+const limit = ref(10);
+const currentPage = ref(1);
+function handleCurrentChange(val) {
+  currentPage.value = val;
+  initData();
+}
+
+initData();
+async function initData() {
+  let obj = {
+    limit: limit.value,
+    page: currentPage.value,
+    keyword: ruleForm.keyword,
+    // ks_status: activeTab.value,
+  };
+  let data = await filesList(obj);
+  total.value = parseInt(data.total_rows);
+  tableData.value = data.page_data;
+  console.log(tableData.value)
+}
+
+const dialogVisible = ref(false);
+const currentId = ref("");
+const handleAudit = (id) => {
+  dialogVisible.value = true;
+  currentId.value = id;
+};
+
+const handleClose = (type) => {
+  dialogVisible.value = false;
+  currentId.value = "";
+  if (type == 1) {
+    initData();
+  }
+}
+
+const multipleSelection = ref([]);
+const handleSelectionChange = (val) => {
+  multipleSelection.value = val;
+};
+
+const handleDownload = () => {
+  let obj = {
+    limit: limit.value,
+    page: currentPage.value,
+    keyword: ruleForm.keyword,
+    ks_status: activeTab.value,
+  };
+
+  download("/kzkt/ssyskc/index", obj);
+};
+
+onMounted(() => {
+  setTimeout(() => {
+    let searchContent = document.querySelector(".searchContent");
+    let offset = document.querySelector(".searchDiv");
+    let parentObj = document.querySelector(".zykglManage");
+    searchContent.style.height = parentObj.clientHeight - offset.clientHeight + "px";
+    window.onresize = function () {
+      let searchContent = document.querySelector(".searchContent");
+      let parentObj = document.querySelector(".zykglManage");
+      searchContent.style.height = parentObj.clientHeight - offset.clientHeight + "px";
+    }
+  }, 0)
+})
+
 
 </script>
 
-<style>
+<style lang="scss" scoped>
+@import "~/styles/dialog.scss";
+.zykglManage {
+  height: calc(100vh - 50px - 2rem);
+  .flex {
+    display: flex;
+    align-items: center;
+  }
+  .searchDiv {
+    // height: 62px;
+    background: #fff;
+    border-radius: 6px;
+    // box-shadow: 0 0 5px rgba($color: #000000, $alpha: 0.1);
+    // padding: 0 20px;
+    // .el-tabs::v-deep {
+    //   .el-tabs__header {
+    //     margin: 0;
+    //   }
+    // }
+    .el-form-item::v-deep {
+      margin-bottom: 0;
+      .el-form-item__label {
+        padding: 0;
+      }
+    }
+  }
+  .searchContent {
+    margin-top: 12px;
+    height: calc(100% - 62px - 12px);
+    background: #fff;
+    border-radius: 6px;
+    // box-shadow: 0 0 5px rgba($color: #000000, $alpha: 0.1);
+    // padding: 0 20px;
+    .searchBtn {
+      justify-content: space-between;
+      padding: 10px 0;
+      border-bottom: 1px solid #e3e3e3;
+      ::v-deep .el-button {
+        height: 32px;
+      }
+    }
+    .tableList {
+      height: calc(100% - 52px - 10px);
+      position: relative;
+      .tableDiv {
+        // background: #ddd;
+        height: calc(100% - 42px);
+        .el-button {
+          padding: 0;
+        }
+        .split {
+          color: #00a3ff;
+          margin: 0 10px;
+        }
+      }
+      .paginationDiv {
+        position: absolute;
+        bottom: -5px;
+        padding: 3px;
+        width: 100%;
+        display: -webkit-box;
+        -webkit-box-pack: end;
+      }
+    }
+  }
+}
 </style>