Przeglądaj źródła

学习资料代码提交

jingyuanchao 2 lat temu
rodzic
commit
65adf3e837
2 zmienionych plików z 194 dodań i 133 usunięć
  1. 8 0
      src/api/system/materials.js
  2. 186 133
      src/views/system/materials/index.vue

+ 8 - 0
src/api/system/materials.js

@@ -9,6 +9,14 @@ export function listMaterials(query) {
   })
 }
 
+//设置为公开或者非公开
+export function editOpen(id, isOpen) {
+  return request({
+    url: '/system/materials/' + id + "/" + isOpen,
+    method: 'get'
+  })
+}
+
 // 查询详细学习资料
 export function getMaterials(id) {
   return request({

+ 186 - 133
src/views/system/materials/index.vue

@@ -3,137 +3,164 @@
     <el-row :gutter="20">
       <!--机构数据-->
       <el-col :span="4" :xs="24">
-        <org-tree v-model="queryParams.orgId" @defaultKey="getDefaultKey" @checkChange="checkChange" @click="clickTreeNode"></org-tree>
+        <org-tree v-model="queryParams.orgId" @defaultKey="getDefaultKey" @checkChange="checkChange"
+                  @click="clickTreeNode"></org-tree>
       </el-col>
       <!--用户数据-->
       <el-col :span="20" :xs="24">
 
-      <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="资料类型" prop="knowledgeId">
-        <el-input
-          v-model="queryParams.knowledgeId"
-          placeholder="请输入资料类型"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="公开状态" prop="isOpen">
-        <el-input
-          v-model="queryParams.isOpen"
-          placeholder="请选择是否公开"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="资料标题" prop="title">
-        <el-input
-          v-model="queryParams.title"
-          placeholder="请输入资料标题"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
+                 label-width="68px">
 
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['system:materials:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['system:materials:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['system:materials:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:materials:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
+          <el-form-item label="资料类型" prop="knowledgeId">
+            <el-select v-model="queryParams.knowledgeId" placeholder="请选择资料类型" clearable>
+              <el-option v-for="item in knowledgeList" :key="item.id" :label="item.name" :value="item.id" ></el-option>
+            </el-select>
+          </el-form-item>
+
+
+          <el-form-item label="公开状态" prop="isOpen">
+            <el-select v-model="queryParams.isOpen" placeholder="请选择资料类型" clearable>
+              <el-option v-for="item in openOption" :key="item.value" :label="item.label" :value="item.id" ></el-option>
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="资料标题" prop="title">
+            <el-input
+              v-model="queryParams.title"
+              placeholder="请输入资料标题"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+
+          <el-form-item>
+            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+          </el-form-item>
+        </el-form>
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-plus"
+              size="mini"
+              @click="handleAdd"
+              v-hasPermi="['system:materials:add']"
+            >新增
+            </el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="success"
+              plain
+              icon="el-icon-edit"
+              size="mini"
+              :disabled="single"
+              @click="handleUpdate"
+              v-hasPermi="['system:materials:edit']"
+            >修改
+            </el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="danger"
+              plain
+              icon="el-icon-delete"
+              size="mini"
+              :disabled="multiple"
+              @click="handleDelete"
+              v-hasPermi="['system:materials:remove']"
+            >删除
+            </el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="warning"
+              plain
+              icon="el-icon-download"
+              size="mini"
+              @click="handleExport"
+              v-hasPermi="['system:materials:export']"
+            >导出
+            </el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
         <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="materialsList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="资料标题" align="center" prop="title" />
-      <el-table-column label="资料类型" align="center" prop="knowledgeName" />
-      <el-table-column label="机构名称" align="center" prop="orgName" />
-      <el-table-column label="公开状态" align="center" prop="isOpen" >
-        <template slot-scope="r">{{ r.row.isOpen == 0 ? '未公开' : '公开' }}</template>
-      </el-table-column>
-      <el-table-column label="附件" align="center" prop="file" />
-      <el-table-column label="备注" align="center" prop="remark" />
-      <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
+        <el-table v-loading="loading" :data="materialsList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center"/>
+          <el-table-column label="资料标题" align="center" prop="title"/>
+          <el-table-column label="资料类型" align="center" prop="knowledgeName"/>
+          <el-table-column label="机构名称" align="center" prop="orgName"/>
+          <el-table-column label="公开状态" align="center" prop="isOpen">
+            <template slot-scope="r">{{ r.row.isOpen == 0 ? '未公开' : '公开' }}</template>
+          </el-table-column>
+          <el-table-column label="附件" align="center" prop="file"/>
+          <el-table-column label="备注" align="center" prop="remark"/>
+          <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
 
-      </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            v-if="checkCanEditOrDel(scope.row)"
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:materials:edit']"
-          >修改</el-button>
-          <el-button
-            v-if="checkCanEditOrDel(scope.row)"
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['system:materials:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
+          </el-table-column>
+          <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+            <template slot-scope="scope">
+              <!-- 公开 按钮显示逻辑: 仅当前用户上传的学习资料且处于未公开状态-->
+              <el-button
+                v-if="checkCanEditOpen(scope.row)&&scope.row.isOpen===0"
+                size="mini"
+                type="text"
+                icon="el-icon-edit"
+                @click="handleOpen(scope.row,1)"
+                v-hasPermi="['system:materials:edit']"
+              >公开
+              </el-button>
+              <!-- 取消公开 按钮显示逻辑: 仅当前用户上传的学习资料且处于公开状态-->
+              <el-button
+                v-if="checkCanEditOpen(scope.row)&&scope.row.isOpen===1"
+                size="mini"
+                type="text"
+                icon="el-icon-edit"
+                @click="handleOpen(scope.row,0)"
+                v-hasPermi="['system:materials:edit']"
+              >取消公开
+              </el-button>
+              <!-- 编辑与删除按钮显示逻辑: 仅当前用户上传的学习资料且处于未公开状态-->
+              <el-button
+                v-if="checkCanEditOrDel(scope.row)"
+                size="mini"
+                type="text"
+                icon="el-icon-edit"
+                @click="handleUpdate(scope.row)"
+                v-hasPermi="['system:materials:edit']"
+              >修改
+              </el-button>
+              <el-button
+                v-if="checkCanEditOrDel(scope.row)"
+                size="mini"
+                type="text"
+                icon="el-icon-delete"
+                @click="handleDelete(scope.row)"
+                v-hasPermi="['system:materials:remove']"
+              >删除
+              </el-button>
+            </template>
+          </el-table-column>
+        </el-table>
 
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
+        <pagination
+          v-show="total>0"
+          :total="total"
+          :page.sync="queryParams.pageNum"
+          :limit.sync="queryParams.pageSize"
+          @pagination="getList"
+        />
       </el-col>
     </el-row>
     <!-- 添加或修改学习资料对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="资料标题" prop="title">
-          <el-input v-model="form.title" placeholder="请输入资料标题" />
+          <el-input v-model="form.title" placeholder="请输入资料标题"/>
         </el-form-item>
 
         <el-form-item label="资料类型" prop="knowledgeId">
@@ -143,10 +170,10 @@
         </el-form-item>
 
         <el-form-item label="资料内容" prop="content">
-          <el-input v-model="form.content" placeholder="请输入资料内容" />
+          <el-input v-model="form.content" placeholder="请输入资料内容"/>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" />
+          <el-input v-model="form.remark" placeholder="请输入备注"/>
         </el-form-item>
         <el-form-item label="附件" prop="file">
           <file-upload v-model="form.file"/>
@@ -161,14 +188,22 @@
 </template>
 
 <script>
-import { listMaterials, getMaterials, delMaterials, addMaterials, updateMaterials } from "@/api/system/materials";
-import { deptTreeSelect } from "@/api/system/public";
+import {
+  listMaterials,
+  getMaterials,
+  delMaterials,
+  addMaterials,
+  updateMaterials,
+  editOpen
+} from "@/api/system/materials";
+import {deptTreeSelect} from "@/api/system/public";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import {queryKnowledgeList} from "@/api/system/knowledge";
 import OrgTree from "@/components/orgTree/index.vue";
+
 export default {
   name: "Materials",
-  components: { OrgTree },
+  components: {OrgTree},
   data() {
     return {
       // 遮罩层
@@ -205,7 +240,7 @@ export default {
         pageSize: 10,
         title: null,
         knowledgeId: null,
-        content:null,
+        content: null,
         orgId: null,
         isOpen: null,
         file: null
@@ -215,8 +250,15 @@ export default {
       // 表单校验
       rules: {},
       //默认选中节点
-      defaultKeys:[],
+      defaultKeys: [],
       knowledgeList: [],
+      openOption:[{
+        label: "公开",
+        value: 1
+      }, {
+        label: "未公开",
+        value: 0
+      }]
     };
   },
   watch: {
@@ -230,6 +272,7 @@ export default {
     this.getConfigKey("sys.user.initPassword").then(response => {
       this.initPassword = response.msg;
     });
+    this.initKnowledgeList();
   },
   methods: {
     /** 查询学习资料列表 */
@@ -237,7 +280,7 @@ export default {
       this.loading = true;
       listMaterials(this.queryParams).then(response => {
         this.materialsList = response.rows;
-        console.log("this.materialsList",this.materialsList);
+        console.log("this.materialsList", this.materialsList);
         this.total = response.total;
         this.loading = false;
       });
@@ -248,18 +291,20 @@ export default {
       });
     },
 
-    checkCanEditOrDel(row){
+    checkCanEditOrDel(row) {
+      return row.createBy === this.$store.getters.userId && row.isOpen === 0;
+    },
+    checkCanEditOpen(row) {
       return row.createBy === this.$store.getters.userId;
     },
 
-
     // 节点单击事件
     clickTreeNode(data) {
       this.queryParams.orgId = data.id;
       this.handleQuery();
     },
     /** 下穿状态改变*/
-    changeCheckBox(){
+    changeCheckBox() {
       this.getList();
     },
     // 取消按钮
@@ -284,12 +329,12 @@ export default {
       this.resetForm("form");
       this.initKnowledgeList();
     },
-    getDefaultKey(key){
+    getDefaultKey(key) {
       this.queryParams.orgId = key;
       this.getList();
     },
     //单选框状态改变
-    checkChange(state){
+    checkChange(state) {
       this.queryParams.checkSub = state;
       this.handleQuery();
     },
@@ -322,9 +367,16 @@ export default {
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
+    handleOpen(row,isOpen){
+      this.open = isOpen;
+      editOpen(row.id,isOpen).then(response => {
+        this.$modal.msgSuccess("操作成功");
+        this.getList();
+      });
+    },
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
@@ -364,12 +416,13 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除?').then(function() {
+      this.$modal.confirm('是否确认删除?').then(function () {
         return delMaterials(ids);
       }).then(() => {
         this.getList();
         this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+      }).catch(() => {
+      });
     },
     /** 导出按钮操作 */
     handleExport() {