Prechádzať zdrojové kódy

机构管理 新加三个属性

dusenyao 3 rokov pred
rodič
commit
f558a7090f

+ 46 - 23
package-lock.json

@@ -9,7 +9,7 @@
       "version": "0.1.0",
       "dependencies": {
         "axios": "^0.26.1",
-        "core-js": "^3.22.0",
+        "core-js": "^3.22.2",
         "element-ui": "^2.15.8",
         "js-cookie": "^3.0.1",
         "md5": "^2.3.0",
@@ -22,8 +22,7 @@
       "devDependencies": {
         "@babel/core": "^7.17.9",
         "@babel/eslint-parser": "^7.17.0",
-        "@babel/preset-env": "^7.16.11",
-        "@rushstack/eslint-patch": "^1.1.2",
+        "@rushstack/eslint-patch": "^1.1.3",
         "@vue/cli-plugin-babel": "~4.5.17",
         "@vue/cli-plugin-eslint": "~4.5.17",
         "@vue/cli-plugin-router": "~4.5.17",
@@ -33,11 +32,10 @@
         "@vue/eslint-config-prettier": "^7.0.0",
         "@vue/test-utils": "^1.3.0",
         "babel-jest": "^27.5.1",
-        "babel-loader": "^8.2.4",
         "babel-plugin-dynamic-import-node": "^2.3.3",
         "eslint": "^7.32.0",
         "eslint-plugin-prettier": "^4.0.0",
-        "eslint-plugin-vue": "^8.6.0",
+        "eslint-plugin-vue": "^8.7.1",
         "html-webpack-plugin": "^5.3.1",
         "postcss": "^8.4.12",
         "postcss-html": "^1.4.1",
@@ -2365,9 +2363,9 @@
       }
     },
     "node_modules/@rushstack/eslint-patch": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.2.tgz",
-      "integrity": "sha512-oe5WJEDaVsW8fBlGT7udrSCgOwWfoYHQOmSpnh8X+0GXpqqcRCP8k4y+Dxb0taWJDPpB+rdDUtumIiBwkY9qGA==",
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.3.tgz",
+      "integrity": "sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw==",
       "dev": true
     },
     "node_modules/@soda/friendly-errors-webpack-plugin": {
@@ -7134,9 +7132,9 @@
       }
     },
     "node_modules/core-js": {
-      "version": "3.22.0",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.0.tgz",
-      "integrity": "sha512-8h9jBweRjMiY+ORO7bdWSeWfHhLPO7whobj7Z2Bl0IDo00C228EdGgH7FE4jGumbEjzcFfkfW8bXgdkEDhnwHQ==",
+      "version": "3.22.2",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.2.tgz",
+      "integrity": "sha512-Z5I2vzDnEIqO2YhELVMFcL1An2CIsFe9Q7byZhs8c/QxummxZlAHw33TUHbIte987LkisOgL0LwQ1P9D6VISnA==",
       "hasInstallScript": true,
       "funding": {
         "type": "opencollective",
@@ -8950,13 +8948,15 @@
       }
     },
     "node_modules/eslint-plugin-vue": {
-      "version": "8.6.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.6.0.tgz",
-      "integrity": "sha512-abXiF2J18n/7ZPy9foSlJyouKf54IqpKlNvNmzhM93N0zs3QUxZG/oBd3tVPOJTKg7SlhBUtPxugpqzNbgGpQQ==",
+      "version": "8.7.1",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz",
+      "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==",
       "dev": true,
       "dependencies": {
         "eslint-utils": "^3.0.0",
         "natural-compare": "^1.4.0",
+        "nth-check": "^2.0.1",
+        "postcss-selector-parser": "^6.0.9",
         "semver": "^7.3.5",
         "vue-eslint-parser": "^8.0.1"
       },
@@ -9006,6 +9006,18 @@
         "node": ">=10"
       }
     },
+    "node_modules/eslint-plugin-vue/node_modules/nth-check": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
+      "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
+      "dev": true,
+      "dependencies": {
+        "boolbase": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/nth-check?sponsor=1"
+      }
+    },
     "node_modules/eslint-plugin-vue/node_modules/semver": {
       "version": "7.3.5",
       "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
@@ -25324,9 +25336,9 @@
       }
     },
     "@rushstack/eslint-patch": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.2.tgz",
-      "integrity": "sha512-oe5WJEDaVsW8fBlGT7udrSCgOwWfoYHQOmSpnh8X+0GXpqqcRCP8k4y+Dxb0taWJDPpB+rdDUtumIiBwkY9qGA==",
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.3.tgz",
+      "integrity": "sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw==",
       "dev": true
     },
     "@soda/friendly-errors-webpack-plugin": {
@@ -29240,9 +29252,9 @@
       }
     },
     "core-js": {
-      "version": "3.22.0",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.0.tgz",
-      "integrity": "sha512-8h9jBweRjMiY+ORO7bdWSeWfHhLPO7whobj7Z2Bl0IDo00C228EdGgH7FE4jGumbEjzcFfkfW8bXgdkEDhnwHQ=="
+      "version": "3.22.2",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.2.tgz",
+      "integrity": "sha512-Z5I2vzDnEIqO2YhELVMFcL1An2CIsFe9Q7byZhs8c/QxummxZlAHw33TUHbIte987LkisOgL0LwQ1P9D6VISnA=="
     },
     "core-js-compat": {
       "version": "3.21.1",
@@ -30931,13 +30943,15 @@
       }
     },
     "eslint-plugin-vue": {
-      "version": "8.6.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.6.0.tgz",
-      "integrity": "sha512-abXiF2J18n/7ZPy9foSlJyouKf54IqpKlNvNmzhM93N0zs3QUxZG/oBd3tVPOJTKg7SlhBUtPxugpqzNbgGpQQ==",
+      "version": "8.7.1",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz",
+      "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==",
       "dev": true,
       "requires": {
         "eslint-utils": "^3.0.0",
         "natural-compare": "^1.4.0",
+        "nth-check": "^2.0.1",
+        "postcss-selector-parser": "^6.0.9",
         "semver": "^7.3.5",
         "vue-eslint-parser": "^8.0.1"
       },
@@ -30966,6 +30980,15 @@
             "yallist": "^4.0.0"
           }
         },
+        "nth-check": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
+          "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
+          "dev": true,
+          "requires": {
+            "boolbase": "^1.0.0"
+          }
+        },
         "semver": {
           "version": "7.3.5",
           "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",

+ 3 - 5
package.json

@@ -11,7 +11,7 @@
   },
   "dependencies": {
     "axios": "^0.26.1",
-    "core-js": "^3.22.0",
+    "core-js": "^3.22.2",
     "element-ui": "^2.15.8",
     "js-cookie": "^3.0.1",
     "md5": "^2.3.0",
@@ -24,8 +24,7 @@
   "devDependencies": {
     "@babel/core": "^7.17.9",
     "@babel/eslint-parser": "^7.17.0",
-    "@babel/preset-env": "^7.16.11",
-    "@rushstack/eslint-patch": "^1.1.2",
+    "@rushstack/eslint-patch": "^1.1.3",
     "@vue/cli-plugin-babel": "~4.5.17",
     "@vue/cli-plugin-eslint": "~4.5.17",
     "@vue/cli-plugin-router": "~4.5.17",
@@ -35,11 +34,10 @@
     "@vue/eslint-config-prettier": "^7.0.0",
     "@vue/test-utils": "^1.3.0",
     "babel-jest": "^27.5.1",
-    "babel-loader": "^8.2.4",
     "babel-plugin-dynamic-import-node": "^2.3.3",
     "eslint": "^7.32.0",
     "eslint-plugin-prettier": "^4.0.0",
-    "eslint-plugin-vue": "^8.6.0",
+    "eslint-plugin-vue": "^8.7.1",
     "html-webpack-plugin": "^5.3.1",
     "postcss": "^8.4.12",
     "postcss-html": "^1.4.1",

+ 32 - 8
src/views/org_manager/AddOrg.vue

@@ -18,6 +18,29 @@
             />
           </el-form-item>
 
+          <el-form-item label="学员限额">
+            <el-input
+              v-model="form.max_count_student"
+              @input="form.max_count_student = form.max_count_student.replace(/[^\d]/g, '')"
+            ></el-input>
+          </el-form-item>
+
+          <el-form-item label="教师限额">
+            <el-input
+              v-model="form.max_count_teacher"
+              @input="form.max_count_teacher = form.max_count_teacher.replace(/[^\d]/g, '')"
+            ></el-input>
+          </el-form-item>
+
+          <el-form-item label="到期日期">
+            <el-date-picker
+              v-model="form.due_date"
+              type="date"
+              value-format="yyyy-MM-dd"
+              placeholder="选择日期"
+            ></el-date-picker>
+          </el-form-item>
+
           <el-form-item label="管理员用户名" prop="admin_user_name">
             <el-input
               ref="admin_user_name"
@@ -102,6 +125,9 @@ export default {
         imageUrl: '',
         name: '',
         intro: '',
+        max_count_student: 0,
+        max_count_teacher: 0,
+        due_date: '',
         admin_user_name: '',
         admin_user_password: '',
         confirm_password: ''
@@ -133,14 +159,12 @@ export default {
     },
     addOrg() {
       this.$refs.form.validate(valid => {
-        if (valid) {
-          addOrg(this.form).then(() => {
-            this.$message.success('创建课程成功!');
-            this.$router.push('/org_manager');
-          });
-        } else {
-          return false;
-        }
+        if (!valid) return false;
+
+        addOrg(this.form).then(() => {
+          this.$message.success('创建课程成功!');
+          this.$router.push('/org_manager');
+        });
       });
     }
   }

+ 22 - 0
src/views/org_manager/ShowOrg.vue

@@ -27,6 +27,28 @@
             </template>
             <span>{{ orgInfo.admin_user_name }}</span>
           </el-descriptions-item>
+
+          <el-descriptions-item>
+            <template slot="label">
+              <span>学员限额</span>
+            </template>
+            <span>{{ orgInfo.max_count_student }}</span>
+          </el-descriptions-item>
+
+          <el-descriptions-item>
+            <template slot="label">
+              <span>教师限额</span>
+            </template>
+            <span>{{ orgInfo.max_count_teacher }}</span>
+          </el-descriptions-item>
+
+          <el-descriptions-item>
+            <template slot="label">
+              <span>到期日期</span>
+            </template>
+            <span>{{ orgInfo.due_date }}</span>
+          </el-descriptions-item>
+
           <el-descriptions-item content-class-name="org-intro">
             <template slot="label">
               <span>介绍</span>

+ 33 - 10
src/views/org_manager/UpdateOrg.vue

@@ -1,13 +1,33 @@
 <template>
-  <el-dialog :visible="visible" width="700px" title="修改机构" :before-close="close">
+  <el-dialog :visible="visible" width="700px" title="修改机构" :before-close="close" :close-on-click-modal="false">
     <main class="update-org">
       <div class="update-org-info">
         <el-form ref="form" :model="orgInfo" :rules="rules" :hide-required-asterisk="true" label-width="80px">
           <el-form-item label="名称" prop="name">
             <el-input v-model="orgInfo.name" autocomplete="off" />
           </el-form-item>
+          <el-form-item label="学员限额">
+            <el-input
+              v-model="orgInfo.max_count_student"
+              @input="orgInfo.max_count_student = orgInfo.max_count_student.replace(/[^\d]/g, '')"
+            />
+          </el-form-item>
+          <el-form-item label="教师限额">
+            <el-input
+              v-model="orgInfo.max_count_teacher"
+              @input="orgInfo.max_count_teacher = orgInfo.max_count_teacher.replace(/[^\d]/g, '')"
+            />
+          </el-form-item>
+          <el-form-item label="到期日期">
+            <el-date-picker
+              v-model="orgInfo.due_date"
+              type="date"
+              value-format="yyyy-MM-dd"
+              placeholder="选择日期"
+            ></el-date-picker>
+          </el-form-item>
           <el-form-item label="介绍">
-            <el-input v-model="orgInfo.intro" type="textarea" :rows="6" resize="none" autocomplete="off" />
+            <el-input v-model="orgInfo.intro" type="textarea" :rows="3" resize="none" autocomplete="off" />
           </el-form-item>
         </el-form>
       </div>
@@ -52,7 +72,10 @@ export default {
         name: '',
         intro: '',
         picture_url: '',
-        picture_id: ''
+        picture_id: '',
+        max_count_student: 0,
+        max_count_teacher: 0,
+        due_date: ''
       },
       rules: {
         name: [{ required: true, message: '名称不能为空' }]
@@ -73,16 +96,16 @@ export default {
   methods: {
     updateOrg() {
       this.$refs.form.validate(valid => {
-        if (valid) {
-          const { name, intro, picture_id } = this.orgInfo;
-          UpdateOrg({ id: this.orgId, name, intro, picture_id }).then(() => {
+        if (!valid) return false;
+
+        const { name, intro, picture_id, max_count_student, max_count_teacher, due_date } = this.orgInfo;
+        UpdateOrg({ id: this.orgId, name, intro, picture_id, max_count_student, max_count_teacher, due_date }).then(
+          () => {
             this.$message.success('修改机构成功');
             this.visible = false;
             this.$emit('refresh');
-          });
-        } else {
-          return false;
-        }
+          }
+        );
       });
     },