guhongwei 4 vuotta sitten
vanhempi
commit
9f500c1cc4
1 muutettua tiedostoa jossa 101 lisäystä ja 24 poistoa
  1. 101 24
      src/views/superAdminCenter/notice/index.vue

+ 101 - 24
src/views/superAdminCenter/notice/index.vue

@@ -5,35 +5,46 @@
         <el-button size="mini" type="primary" @click="toAdd" icon="el-icon-plus">添加{{ theme }}</el-button>
       </el-col>
       <el-col :span="24" class="main">
-        <data-table :fields="fields" :opera="opera" @edit="toEdit" :data="list" :total="total" @delete="toDelete" @query="search"></data-table>
+        <data-table :fields="fields" :opera="opera" :data="list" :total="total" @edit="toEdit" @delete="toDelete" @check="toCheck" @query="search"></data-table>
       </el-col>
       <el-dialog :title="theme" width="60%" :visible.sync="dialog" @closed="handleClose" :destroy-on-close="true">
-        <el-form ref="form" :rules="rules" :model="form" label-width="100px">
+        <el-form ref="form" :rules="rules" :model="form" label-width="100px" v-if="loading">
           <el-form-item label="标题" prop="title">
             <el-input v-model="form.title" placeholder="请输入信息标题"></el-input>
           </el-form-item>
           <el-form-item label="来源">
             <el-input v-model="form.source" placeholder="请输入信息来源"></el-input>
           </el-form-item>
-          <el-form-item label="信息内容">
-            <wang-editor v-model="form.content" placeholder="请输入信息内容"></wang-editor>
-          </el-form-item>
           <el-form-item label="发布时间">
             <el-col :span="11">
               <el-date-picker type="date" placeholder="发布时间" value-format="yyyy-MM-dd" v-model="form.create_time" style="width: 100%;"></el-date-picker>
             </el-col>
           </el-form-item>
-          <el-form-item label="是否启用">
-            <el-radio-group v-model="form.isenable">
-              <el-radio label="1">启用</el-radio>
-              <el-radio label="2">禁用</el-radio>
-            </el-radio-group>
+          <el-form-item label="信息内容">
+            <wang-editor v-model="form.content" placeholder="请输入信息内容"></wang-editor>
           </el-form-item>
           <el-form-item>
             <el-button type="primary" @click="onSubmit()">提交</el-button>
           </el-form-item>
         </el-form>
       </el-dialog>
+      <el-dialog :title="theme" width="60%" :visible.sync="isenabledialog" @closed="handleClose" :destroy-on-close="true">
+        <div class="isenabledialog">
+          <p>
+            <el-radio-group v-model="noticeInfo.isenable">
+              <el-radio label="1">启用</el-radio>
+              <el-radio label="2">禁用</el-radio>
+            </el-radio-group>
+            <el-button type="primary" size="mini" @click="isenableBtn">保存</el-button>
+          </p>
+          <p>{{ noticeInfo.title }}</p>
+          <p>
+            <span>来源:{{ noticeInfo.source }}</span>
+            <span>发布时间:{{ noticeInfo.create_time }}</span>
+          </p>
+          <p v-html="noticeInfo.content"></p>
+        </div>
+      </el-dialog>
     </el-col>
   </div>
 </template>
@@ -55,9 +66,15 @@ export default {
   data: function() {
     return {
       theme: '通知',
+      loading: true,
       opera: [
         {
-          label: '修改&启用',
+          label: '启用&禁用',
+          icon: 'el-icon-check',
+          method: 'check',
+        },
+        {
+          label: '修改',
           icon: 'el-icon-edit',
           method: 'edit',
         },
@@ -85,6 +102,9 @@ export default {
       // 添加信息
       form: {},
       rules: {},
+      // 是否启用
+      isenabledialog: false,
+      noticeInfo: {},
     };
   },
   created() {
@@ -92,23 +112,12 @@ export default {
   },
   methods: {
     ...notice(['query', 'fetch', 'update', 'create', 'delete']),
+    // 列表
     async search({ skip = 0, limit = 10, ...info } = {}) {
       let arr = await this.query({ skip, limit, ...info });
       this.$set(this, `list`, arr.data);
       this.$set(this, `total`, arr.total);
     },
-    toEdit({ data }) {
-      this.dialog = true;
-      this.$set(this, `form`, data);
-    },
-    async toDelete({ data }) {
-      let res = await this.delete(data.id);
-      this.$message({
-        message: '刪除信息成功',
-        type: 'success',
-      });
-      this.search();
-    },
     // 添加
     toAdd() {
       this.dialog = true;
@@ -137,10 +146,51 @@ export default {
       }
       this.search();
     },
+    // 启用&禁用
+    toCheck({ data }) {
+      this.isenabledialog = true;
+      this.$set(this, `noticeInfo`, data);
+    },
+    async isenableBtn() {
+      let arr = await this.query();
+      let data = arr.data.filter(i => i.isenable == '1');
+      if (data.length > 0 && this.noticeInfo.isenable == '1') {
+        alert('已有信息启用');
+      } else {
+        console.log(this.noticeInfo);
+        let res = await this.update(this.noticeInfo);
+        if (this.$checkRes(res)) {
+          this.$message({
+            message: '添加信息成功',
+            type: 'success',
+          });
+        }
+        this.handleClose();
+      }
+      this.search();
+    },
+    // 修改
+    toEdit({ data }) {
+      this.$set(this, `loading`, false);
+      this.dialog = true;
+      this.$set(this, `form`, data);
+      this.$set(this, `loading`, true);
+    },
+
+    // 删除
+    async toDelete({ data }) {
+      let res = await this.delete(data.id);
+      this.$message({
+        message: '刪除信息成功',
+        type: 'success',
+      });
+      this.search();
+    },
     // 取消
     handleClose() {
       this.form = {};
       this.dialog = false;
+      this.isenabledialog = false;
     },
   },
   computed: {
@@ -155,4 +205,31 @@ export default {
 };
 </script>
 
-<style lang="less" scoped></style>
+<style lang="less" scoped>
+.isenabledialog {
+  p:first-child {
+    text-align: center;
+    padding: 20px 0;
+    /deep/.el-radio__inner {
+      width: 25px;
+      height: 25px;
+      top: -4px;
+    }
+    /deep/.el-radio__label {
+      font-size: 25px;
+    }
+    .el-button {
+      margin: 0 0 0 15px;
+    }
+  }
+  p:nth-child(2) {
+    text-align: center;
+    font-size: 30px;
+  }
+  p:nth-child(3) {
+    text-align: center;
+    font-size: 20px;
+    padding: 20px 0;
+  }
+}
+</style>