Browse Source

feat: 新需求

zhangjie 6 months ago
parent
commit
ad0a3dcd0d

+ 4 - 4
src/modules/base/components/ResetPwd.vue

@@ -82,7 +82,7 @@
 import { updatePwd } from "../api";
 import { getSmsCodeForBind } from "@/modules/login/api";
 import { strictPassword, phone, smscode } from "@/plugins/formRules";
-import { Base64 } from "@/plugins/crypto";
+import { AES } from "@/plugins/crypto";
 import fetchSmsMixins from "@/modules/login/fetchSmsMixins";
 
 const initModalForm = {
@@ -207,7 +207,7 @@ export default {
       const data = await getSmsCodeForBind({
         loginName: this.userInfo.loginName,
         schoolCode: this.userInfo.schoolCode,
-        password: Base64(this.modalForm.oldPassword),
+        password: AES(this.modalForm.oldPassword),
         mobileNumber: this.modalForm.mobileNumber,
       }).catch(() => {
         this.isFetchingCode = false;
@@ -233,7 +233,7 @@ export default {
       if (this.needBindMobile) {
         datas = {
           ...datas,
-          oldPassword: Base64(this.modalForm.oldPassword),
+          oldPassword: AES(this.modalForm.oldPassword),
           mobileNumber: this.modalForm.mobileNumber,
           verifyCode: this.modalForm.code,
         };
@@ -241,7 +241,7 @@ export default {
       if (this.needResetPwd) {
         datas = {
           ...datas,
-          password: Base64(this.modalForm.password),
+          password: AES(this.modalForm.password),
         };
       }
       const data = await updatePwd(datas).catch(() => {

+ 18 - 0
src/modules/base/components/course-simple/ModifyCourseSimple.vue

@@ -21,6 +21,7 @@
         ref="SelectSimpleCourse"
         v-model="selectedCourseIds"
         :exam-id="course.examId"
+        @user-confirm="userConfirm"
       ></select-simple-course>
     </div>
     <div slot="footer">
@@ -81,6 +82,23 @@ export default {
 
       if (!data) return;
 
+      this.$message.success("添加成功!");
+      this.selectedCourseIds = [];
+      this.$refs.SelectSimpleCourse.clearSelection();
+      this.$emit("modified");
+      this.cancel();
+    },
+    async userConfirm(datas) {
+      if (this.isSubmit) return;
+      this.isSubmit = true;
+      const data = await batchAddCourseSimple({
+        ...datas,
+        examId: this.course.examId,
+      }).catch(() => {});
+      this.isSubmit = false;
+
+      if (!data) return;
+
       this.$message.success("添加成功!");
       this.selectedCourseIds = [];
       this.$refs.SelectSimpleCourse.clearSelection();

+ 59 - 22
src/modules/base/components/course-simple/SelectSimpleCourse.vue

@@ -1,29 +1,42 @@
 <template>
   <div class="select-simple-course">
-    <el-form ref="FilterForm" label-position="left" inline label-width="0px">
-      <el-form-item>
-        <org-select
-          v-model="filter.belongOrgId"
-          placeholder="开课学院"
-          :filter-param="{
-            withoutSecondOrg: true,
-          }"
-        ></org-select>
-      </el-form-item>
-      <el-form-item>
-        <el-input
-          v-model.trim="filter.courseName"
-          placeholder="请输入课程名称"
-          clearable
-        ></el-input>
-      </el-form-item>
+    <div class="box-justify" style="align-items: normal">
+      <el-form ref="FilterForm" label-position="left" inline label-width="0px">
+        <el-form-item>
+          <org-select
+            v-model="filter.belongOrgId"
+            placeholder="开课学院"
+            :filter-param="{
+              withoutSecondOrg: true,
+            }"
+          ></org-select>
+        </el-form-item>
+        <el-form-item>
+          <el-input
+            v-model.trim="filter.courseName"
+            placeholder="请输入课程名称"
+            clearable
+          ></el-input>
+        </el-form-item>
 
-      <el-form-item>
-        <el-button type="primary" :disabled="!canSearch" @click="toPage(1)"
-          >查询</el-button
+        <el-form-item>
+          <el-button type="primary" :disabled="!canSearch" @click="toPage(1)"
+            >查询</el-button
+          >
+        </el-form-item>
+      </el-form>
+
+      <div>
+        <el-button
+          v-if="
+            !checkPrivilege('button', 'AssginCourseUser', 'CourseSimpleManage')
+          "
+          type="primary"
+          @click="toBindUser"
+          >指定用户</el-button
         >
-      </el-form-item>
-    </el-form>
+      </div>
+    </div>
     <div class="box-justify mb-2">
       <p>
         全部共<span class="mlr-1">{{ dataList.length }}</span
@@ -69,14 +82,25 @@
         min-width="120"
       ></el-table-column>
     </el-table>
+
+    <!-- SelectUserDialog -->
+    <select-user-dialog
+      v-if="!checkPrivilege('button', 'AssginCourseUser', 'CourseSimpleManage')"
+      ref="SelectUserDialog"
+      :user-limit-count="1"
+      title="选择用户"
+      @modified="userModified"
+    ></select-user-dialog>
   </div>
 </template>
 
 <script>
 import { courseQueryByOrg } from "../../api";
+import SelectUserDialog from "../SelectUserDialog.vue";
 
 export default {
   name: "select-simple-course",
+  components: { SelectUserDialog },
   props: {
     value: {
       type: Array,
@@ -135,6 +159,19 @@ export default {
     clearSelection() {
       this.$refs.TableList.clearSelection();
     },
+    toBindUser() {
+      if (!this.multipleSelection.length) {
+        this.$message.error("请先选择课程!");
+        return;
+      }
+      this.$refs.SelectUserDialog.open();
+    },
+    userModified(users) {
+      this.$emit("user-confirm", {
+        courseIds: this.multipleSelection,
+        userId: users[0].id,
+      });
+    },
   },
 };
 </script>

+ 3 - 3
src/modules/login/views/Login.vue

@@ -127,7 +127,7 @@
 <script>
 import { phone, smscode } from "@/plugins/formRules";
 import { login, getSmsCode, getSchoolInfo, getAccountSmsCode } from "../api";
-import { Base64 } from "@/plugins/crypto";
+import { AES } from "@/plugins/crypto";
 import { MD5 } from "@/plugins/md5";
 import ResetPwd from "@/modules/base/components/ResetPwd.vue";
 import { getOrgCode } from "@/constants/app";
@@ -234,7 +234,7 @@ export default {
         datas = {
           ...datas,
           loginName: this.loginModel.loginName,
-          password: Base64(this.loginModel.password),
+          password: AES(this.loginModel.password),
         };
         if (this.schoolInfo.accountSmsVerify) datas.code = this.loginModel.code;
       } else {
@@ -394,7 +394,7 @@ export default {
       const data = await getAccountSmsCode({
         schoolCode: this.loginModel.schoolCode,
         loginName: this.loginModel.loginName,
-        password: Base64(this.loginModel.password),
+        password: AES(this.loginModel.password),
       }).catch(() => {
         this.isFetchingCode = false;
       });

+ 9 - 5
src/plugins/crypto.js

@@ -8,12 +8,16 @@ export const Base64 = (content) => {
 };
 
 export const AES = (content) => {
-  const KEY = "1234567890123456";
-  const IV = "1234567890123456";
+  const KEY = "Qmth87863577qmth";
+  // const IV = "1234567890123456";
 
-  var key = CryptoJS.enc.Utf8.parse(KEY);
-  var iv = CryptoJS.enc.Utf8.parse(IV);
-  var encrypted = CryptoJS.AES.encrypt(content, key, { iv: iv });
+  const key = CryptoJS.enc.Utf8.parse(KEY);
+  // const iv = CryptoJS.enc.Utf8.parse(IV);
+  const encrypted = CryptoJS.AES.encrypt(content, key, {
+    // iv: iv,
+    mode: CryptoJS.mode.ECB,
+    padding: CryptoJS.pad.Pkcs7,
+  });
   return encrypted.toString();
 };