浏览代码

Merge branch 'master' of http://gcls-git.helxsoft.cn/GCLS/eep_page

dusenyao 1 月之前
父节点
当前提交
775d2a36b8

+ 48 - 8
src/views/book/courseware/preview/components/picture/PicturePreview.vue

@@ -44,8 +44,8 @@
         </div>
         <div v-if="'list' === data.property.view_method && isEnable(data.property.view_memo)" class="memo-area">
           <div v-for="(file, i) in data.file_info_list" :key="i">
-            <div class="title-div" v-if="curPictureMemoIndex === i">{{ file.title ?? file.title }}</div>
-            <div class="memo-div" v-if="curPictureMemoIndex === i">{{ file.intro ?? file.intro }}</div>
+            <div v-if="curPictureMemoIndex === i" class="title-div">{{ file.title ?? file.title }}</div>
+            <div v-if="curPictureMemoIndex === i" class="memo-div">{{ file.intro ?? file.intro }}</div>
           </div>
         </div>
       </div>
@@ -107,18 +107,39 @@ export default {
       },
       deep: true,
     },
-    elementWidth(newWidth) {
-      this.elementWidth = newWidth;
+    elementWidth() {
       this.isViewLeftRightBtn();
     },
-    elementHeight(newHeight) {
-      this.elementHeight = newHeight;
-    },
   },
   mounted() {
     this.$nextTick(() => {
       const canvasElement = document.querySelector('.canvas');
-      if (!canvasElement) return;
+      if (!canvasElement) {
+        const ele = this.$refs.pictureAreaBox;
+        const sn_position = this.data.property.sn_position;
+        const viewMemo = this.isEnable(this.data.property.view_memo);
+        // 序号在左和右补齐序号高度,去掉padding(8*2)
+        if (sn_position.includes('left') || sn_position.includes('right')) {
+          this.elementWidth = viewMemo ? (ele.clientWidth - 16) * 0.8 : ele.clientWidth - 16;
+          this.elementHeight = ele.clientHeight + 30;
+        } else {
+          this.elementWidth = viewMemo ? ele.clientWidth * 0.8 : ele.clientWidth;
+          this.elementHeight = ele.clientHeight;
+        }
+        this.fileLen = this.data.file_list.length;
+        this.isViewLeftRightBtn();
+        return;
+      }
+      const mainEle = this.$refs.pictureArea;
+      // 检查元素是否包含已知的类名
+      mainEle.classList.forEach((className) => {
+        // 排除已知的类名
+        if (className !== 'audio-area') {
+          // 打印另一个类名
+          this.elementID = className;
+        }
+      });
+
       const instanceName = `observer_${this.elementID}`;
       this.pictureObserversMap[instanceName] = new ResizeObserver((entries) => {
         if (!this.getDragStatus()) return;
@@ -179,6 +200,20 @@ export default {
       this.scrollPosition += step * direction;
       container.scrollLeft += step * direction;
     },
+    autoResize(entry) {
+      window.requestAnimationFrame(() => {
+        const sn_position = this.data.property.sn_position;
+        const viewMemo = this.isEnable(this.data.property.view_memo);
+        // 序号在上方和下方减去序号高度,在左右去掉padding(8*2)
+        if (sn_position.includes('top') || sn_position.includes('bottom')) {
+          this.elementWidth = viewMemo ? entry.contentRect.width * 0.8 : entry.contentRect.width;
+          // this.elementHeight = entry.contentRect.height - 30;
+        } else {
+          this.elementWidth = viewMemo ? (entry.contentRect.width - 16) * 0.8 : entry.contentRect.width - 16;
+          this.elementHeight = entry.contentRect.height;
+        }
+      });
+    },
   },
 };
 </script>
@@ -208,6 +243,7 @@ export default {
         float: left;
         width: 15%;
         padding-left: 5px;
+        text-align: left;
         border-left: 1px solid #eee;
 
         .title-div {
@@ -245,6 +281,10 @@ export default {
       .container-box {
         position: relative;
 
+        .left {
+          left: 0;
+        }
+
         .arrow {
           position: absolute;
           top: 0;

+ 19 - 1
src/views/book/courseware/preview/components/video/VideoPreview.vue

@@ -120,7 +120,25 @@ export default {
   mounted() {
     this.$nextTick(() => {
       const canvasElement = document.querySelector('.canvas');
-      if (!canvasElement) return;
+      if (!canvasElement) {
+        const ele = this.$refs.videoAreaBox;
+        const sn_position = this.data.property.sn_position;
+        // 序号在左和右补齐序号高度,去掉padding(8*2)
+        if (sn_position.includes('left') || sn_position.includes('right')) {
+          this.elementWidth = ele.clientWidth - 16;
+          this.elementHeight = ele.clientHeight + 30;
+        } else {
+          this.elementWidth = ele.clientWidth;
+          this.elementHeight = ele.clientHeight;
+        }
+
+        if (ele.clientHeight <= 0) {
+          this.elementHeight = this.data.min_height;
+        }
+        this.fileLen = this.data.file_list.length;
+        this.isViewLeftRightBtn();
+        return;
+      }
       const instanceName = `observer_${this.elementID}`;
       this.videoObserversMap[instanceName] = new ResizeObserver((entries) => {
         if (!this.getDragStatus()) return;

+ 6 - 2
src/views/login/index.vue

@@ -63,7 +63,7 @@ export default {
   components: { UserAgreement },
   data() {
     return {
-      isAgree: true, // 是否同意用户协议
+      isAgree: false, // 是否同意用户协议
       form: {
         user_type: 'USER',
         user_name: '',
@@ -104,7 +104,11 @@ export default {
     signIn() {
       this.$refs.loginForm.validate((valid) => {
         if (!valid) return false;
-
+        if (!this.isAgree) {
+          // "阅读并同意用户协议"
+          this.$message.warning('阅读并同意用户协议');
+          return;
+        }
         let _form = { ...this.form, password: md5(this.form.password).toUpperCase() };
         this.$store
           .dispatch('user/login', _form)

+ 41 - 25
src/views/org_manage/index.vue

@@ -21,15 +21,17 @@
           :index="(form.cur_page - 1) * form.page_capacity + 1"
         />
         <el-table-column prop="name" label="名称" align="center" />
-        <el-table-column prop="user_count" label="注册用户数" align="center" />
-        <el-table-column prop="user_count_audited" label="已审核用户数" align="center" />
-        <el-table-column prop="member_name_desc" label="机构管理员" align="center" />
-        <el-table-column prop="create_time" label="创建时间" align="center" />
+        <el-table-column prop="user_count_max" label="最大用户量" align="center" width="120" />
+        <el-table-column prop="user_count" label="已注册用户数" align="center" width="120" />
+        <el-table-column prop="user_count_stop" label="已停用用户数" align="center" width="120" />
+        <el-table-column prop="project_count_max" label="最大项目量" align="center" width="120" />
+        <el-table-column prop="project_count" label="已创建项目数" align="center" width="120" />
+        <el-table-column prop="org_manager_name_desc" label="机构管理员" align="center" />
+        <el-table-column prop="create_time" label="创建时间" align="center" width="180" />
 
         <el-table-column prop="operation" label="操作" fixed="right" width="200" align="center">
           <template slot-scope="{ row }">
-            <span class="link" @click="updateOrg(row)">修改</span>
-            <span class="link" @click="setOrgManager(row.id)">设置机构管理员</span>
+            <span class="link" @click="setOrgManager(row.id)">机构管理信息</span>
             <span class="link danger" @click="deleteOrg(row.id)">删除</span>
           </template>
         </el-table-column>
@@ -37,14 +39,8 @@
 
       <PaginationPage ref="pagination" :total="total" @getList="queryOrgList" />
     </div>
-    <el-dialog
-      :visible.sync="orgAddFlag"
-      width="300px"
-      append-to-body
-      :show-close="true"
-      :title="org_Info.name ? '编辑机构' : '创建机构'"
-    >
-      <el-form ref="formDialog" :model="org_Info" :rules="rules" inline>
+    <el-dialog :visible.sync="orgAddFlag" width="500px" append-to-body :show-close="true" title="创建机构">
+      <el-form ref="formDialog" :model="org_Info" :rules="rules" label-width="130px">
         <el-form-item class="label-input" label="名称" prop="name">
           <el-input
             v-model="org_Info.name"
@@ -53,6 +49,21 @@
             @blur="org_Info.name = org_Info.name.trim()"
           />
         </el-form-item>
+        <el-form-item class="label-input" label="最大用户量" prop="user_count_max">
+          <el-input-number v-model="org_Info.user_count_max" :min="0" :step="10"></el-input-number>
+        </el-form-item>
+        <el-form-item class="label-input" label="最大项目量" prop="project_count_max">
+          <el-input-number v-model="org_Info.project_count_max" :min="0" :step="10"></el-input-number>
+        </el-form-item>
+        <el-form-item class="label-input" label="教材编辑使用期限" prop="use_end_date_book_edit">
+          <el-date-picker v-model="org_Info.use_end_date_book_edit" value-format="yyyy-MM-dd"> </el-date-picker>
+        </el-form-item>
+        <el-form-item class="label-input" label="教材仓库使用期限" prop="use_end_date_book_store">
+          <el-date-picker v-model="org_Info.use_end_date_book_store" value-format="yyyy-MM-dd"> </el-date-picker>
+        </el-form-item>
+        <el-form-item class="label-input" label="备注" prop="memo">
+          <el-input v-model="org_Info.memo" autocomplete="off" type="textarea" rows="3" />
+        </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click="orgAddFlag = false">取 消</el-button>
@@ -79,6 +90,11 @@ export default {
       total: 0,
       org_Info: {
         name: '',
+        user_count_max: null,
+        project_count_max: null,
+        use_end_date_book_edit: '',
+        use_end_date_book_store: '',
+        memo: '',
       },
       orgAddFlag: false,
       rules: {
@@ -106,16 +122,15 @@ export default {
      * 修改机构
      * @param {string} id - 项目ID
      */
-    updateOrg(row) {
-      if (row) {
-        this.org_Info = {
-          name: row.name,
-        };
-      } else {
-        this.org_Info = {
-          name: '',
-        };
-      }
+    updateOrg() {
+      this.org_Info = {
+        name: '',
+        user_count_max: null,
+        project_count_max: null,
+        use_end_date_book_edit: '',
+        use_end_date_book_store: '',
+        memo: '',
+      };
       this.orgAddFlag = true;
     },
     // 设置机构管理员
@@ -151,7 +166,8 @@ export default {
           createOrg(_this.org_Info)
             .then((res) => {
               if (res.status === 1) {
-                this.loading = false;
+                _this.loading = false;
+                _this.orgAddFlag = false;
                 _this.queryOrgList({ cur_page: _this.form.cur_page, page_capacity: _this.form.page_capacity });
                 _this.$message({
                   type: 'success',

+ 5 - 5
src/views/register/index.vue

@@ -2,7 +2,7 @@
   <div class="register">
     <div class="header">
       <div class="logo">
-        <el-image class="logo-image" :src="$store.state.app.config.logo_image_url" />
+        <el-image class="logo-image" :src="require('@/assets/gcls_logo.png')" />
       </div>
       <div class="selectLoginOrRegistration" @click="goLogin">
         <span>登录</span>
@@ -193,7 +193,7 @@ export default {
       VerificationCodeShow: false,
       time: 60,
       showUseragreement: false,
-      isAgree: true,
+      isAgree: false,
       institutionList: [],
       parsswordType: 'password',
       twoPasswordType: 'password',
@@ -411,14 +411,14 @@ export default {
 .register {
   &-container {
     height: calc(100vh - 144px);
-    padding: 40px;
-    margin: 40px 60px;
+    padding: 20px 40px;
+    margin: 20px 60px;
     overflow: auto;
     background: #fff;
     border-radius: 8px;
 
     .title {
-      margin-bottom: 50px;
+      margin-bottom: 30px;
       font-size: 24px;
       color: #f90;
     }

+ 5 - 5
src/views/user_manage/index.vue

@@ -60,17 +60,17 @@
           align="center"
           :index="(form.cur_page - 1) * form.page_capacity + 1"
         />
-        <el-table-column prop="real_name" label="真实姓名" align="center" />
-        <el-table-column prop="user_name" label="用户名" align="center" />
-        <el-table-column prop="email" label="邮箱" align="center" width="170" />
+        <el-table-column prop="real_name" width="130" label="真实姓名" align="center" />
+        <el-table-column prop="user_name" width="130" label="用户名" align="center" />
+        <el-table-column prop="email" label="邮箱" align="center" />
         <el-table-column prop="org_name" label="所属机构" align="center" />
-        <el-table-column prop="is_org_manager" label="机构管理员" align="center">
+        <el-table-column prop="is_org_manager" label="机构管理员" align="center" width="120">
           <template slot-scope="{ row }">
             <i class="el-icon-check" v-if="row.is_org_manager === 'true'"></i>
           </template>
         </el-table-column>
         <el-table-column prop="register_time" label="注册时间" align="center" width="170" />
-        <el-table-column prop="is_stop" label="已停用" align="center"
+        <el-table-column prop="is_stop" label="已停用" align="center" width="100"
           ><template slot-scope="{ row }">
             <i class="el-icon-check" v-if="row.is_stop === 'true'"></i>
           </template>

+ 1 - 1
src/views/user_manage_org/index.vue

@@ -65,7 +65,7 @@
         />
         <el-table-column prop="real_name" label="真实姓名" align="center" />
         <el-table-column prop="user_name" label="用户名" align="center" />
-        <el-table-column prop="email" label="邮箱" align="center" width="170" />
+        <el-table-column prop="email" label="邮箱" align="center" width="220" />
         <el-table-column prop="is_org_manager" label="机构管理员" align="center">
           <template slot-scope="{ row }">
             <i class="el-icon-check" v-if="row.is_org_manager === 'true'"></i>