index.vue 10.8 KB
Newer Older
qzhxx's avatar
qzhxx committed
1 2 3
<template>
  <div class="listPage H100">
    <div class="search-container">
xulili's avatar
xulili committed
4 5
      <el-form :inline="true" :model="form" ref="form" onsubmit="return false;">
        <el-form-item>
qzhxx's avatar
qzhxx committed
6
          <el-input
qzhxx's avatar
qzhxx committed
7
            placeholder="请输入学习项目名称"
qzhxx's avatar
qzhxx committed
8 9 10 11 12
            v-model="form.name"
            @keyup.enter.native="Search"
            clearable
          ></el-input>
        </el-form-item>
xulili's avatar
xulili committed
13
        <el-form-item>
qzhxx's avatar
qzhxx committed
14
          <el-date-picker
xulili's avatar
xulili committed
15
            value-format="yyyy-MM-dd"
qzhxx's avatar
qzhxx committed
16 17 18 19 20 21 22 23 24
            v-model="value1"
            type="daterange"
            range-separator="至"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
          ></el-date-picker>
        </el-form-item>
        <el-form-item>
          <div class="btn-group">
xulili's avatar
xulili committed
25 26 27 28
            <el-button type="primary" class="btn_form_search" @click="Search"
              >查询</el-button
            >
            <el-button class="btn_form_search" @click="Reset">重置</el-button>
qzhxx's avatar
qzhxx committed
29 30 31 32 33
          </div>
        </el-form-item>
      </el-form>
      <div class="page-tip">
        <span class="page-tip-title">页面说明:</span>
xulili's avatar
xulili committed
34 35 36
        <span class="page-tips"
          >展示系统所有的学习项目,可按照时间及相关名称进行快速信息搜索。</span
        >
qzhxx's avatar
qzhxx committed
37 38 39 40
      </div>
    </div>
    <div class="table-content">
      <div class="btn-group">
41
        <el-button type="primary" @click="addPermis()">新建学习项目</el-button>
qzhxx's avatar
qzhxx committed
42 43 44 45
      </div>
      <div class="party-table">
        <el-table
          border
xulili's avatar
xulili committed
46 47
          style="width: 100%; height: 100%"
          height="100%"
qzhxx's avatar
qzhxx committed
48 49 50
          ref="multipleTable"
          :data="tableData"
        >
51 52 53 54 55
           <el-table-column type="index" width="120" label="序号">
            <template slot-scope="scope">
              <span>{{ (page.currentPage - 1) * 10 + scope.$index + 1 }}</span>
            </template>
          </el-table-column>
xulili's avatar
xulili committed
56 57 58 59 60 61 62 63 64 65
          <el-table-column label="学习项目名称" prop="name"></el-table-column>
          <el-table-column label="创建时间" prop="createTime"></el-table-column>
          <el-table-column
            label="相关学习内容"
            prop="learningContentNames"
          ></el-table-column>
          <el-table-column label="备注" prop="remarks"></el-table-column>
          <el-table-column label="操作" header-align="center" align="center">
            <template slot-scope="scope" width="220">
              <div class="table-btn-group">
qzhxx's avatar
qzhxx committed
66 67 68 69 70 71 72 73 74 75 76
                <el-tooltip content="修改" placement="top">
                  <el-button circle @click="openEdit(scope.row)">
                    <i class="icon-table icon-edit"></i>
                  </el-button>
                </el-tooltip>
                <el-tooltip content="删除" placement="top">
                  <el-button circle @click="handleDelete(scope.row)">
                    <i class="icon-table icon-del"></i>
                  </el-button>
                </el-tooltip>
              </div>
xulili's avatar
xulili committed
77 78
            </template>
          </el-table-column>
qzhxx's avatar
qzhxx committed
79 80
        </el-table>
      </div>
xulili's avatar
xulili committed
81
      <div class="partyt-pagination">
qzhxx's avatar
qzhxx committed
82 83 84 85 86 87 88
        <el-pagination
          @current-change="handleCurrentChange"
          :current-page="page.currentPage"
          :page-size="page.pageSize"
          layout="prev, pager, next, jumper"
          :total="page.total"
        ></el-pagination>
xulili's avatar
xulili committed
89
      </div>
qzhxx's avatar
qzhxx committed
90
    </div>
xulili's avatar
xulili committed
91 92 93 94 95 96 97 98 99
    <!--新增弹框-->
    <el-dialog
      title="新建"
      custom-class="party-dialog"
      width="468px"
      :visible.sync="FormVisible1"
      :before-close="close"
    >
      <div class="dialog-content">
qzhxx's avatar
qzhxx committed
100 101 102 103 104
        <el-form
          :model="classForm"
          ref="classForm"
          label-width="80px"
          label-position="top"
qzhxx's avatar
qzhxx committed
105
          :rules="rule"
qzhxx's avatar
qzhxx committed
106 107 108
          id="ruleo"
          class="party-form"
        >
qzhxx's avatar
qzhxx committed
109
          <el-form-item label="学习项目名称" prop="name">
qzhxx's avatar
qzhxx committed
110 111 112 113 114 115 116 117
            <el-input v-model="classForm.name"></el-input>
          </el-form-item>
          <el-form-item label="备注">
            <el-input type="textarea" v-model="classForm.remarks"></el-input>
          </el-form-item>
        </el-form>
      </div>
      <div slot="footer" class="dialog-footer btn-group">
xulili's avatar
xulili committed
118 119 120 121 122 123 124
        <el-button size="mini" v-show="type" type="primary" @click="handleSubmit('save')"
          >确定</el-button
        >
        <el-button size="mini" v-show="!type" type="primary" @click="handleSubmit('edit')"
          >确定</el-button
        >
        <el-button size="mini" @click="close">取 消</el-button>
qzhxx's avatar
qzhxx committed
125
      </div>
xulili's avatar
xulili committed
126
    </el-dialog>
qzhxx's avatar
qzhxx committed
127 128 129 130 131 132
  </div>
</template>
<script>
export default {
  data() {
    return {
xulili's avatar
xulili committed
133
      type: true,
qzhxx's avatar
qzhxx committed
134 135 136 137 138 139 140
      value1: "",
      page: { currentPage: 1, pageSize: 10, total: 0 },
      tableData: [],
      FormVisible: false,
      FormVisible1: false,
      formLabelWidth: "100px",
      form: {
xulili's avatar
xulili committed
141
        name: "",
qzhxx's avatar
qzhxx committed
142 143 144 145 146 147
      },
      editform: {
        menuName: "",
        menuUrl: "",
        parentId: "",
        sort: "",
xulili's avatar
xulili committed
148
        id: "",
qzhxx's avatar
qzhxx committed
149 150
      },
      classForm: {
xulili's avatar
xulili committed
151 152 153
        id: "",
        name: "",
        remarks: "",
qzhxx's avatar
qzhxx committed
154 155
      },
      typeList: [],
qzhxx's avatar
qzhxx committed
156 157 158 159 160
      rule:{
        name: [
          { required: true, message: "请输入学习项目名称", trigger: "blur" }
        ],
      },
qzhxx's avatar
qzhxx committed
161
      rules: {
xulili's avatar
xulili committed
162 163
        name: [
          { required: true, message: "请输入学习项目名称", trigger: "blur" },
qzhxx's avatar
qzhxx committed
164 165 166
        ],
      },
      value: "",
xulili's avatar
xulili committed
167
      name: "",
qzhxx's avatar
qzhxx committed
168 169 170 171 172 173 174 175 176 177 178 179 180
    };
  },
  computed: {},
  mounted() {
    this.onSearch();
  },
  components: {},
  methods: {
    // 获得数据接口
    getTableData(param) {
      let vm = this;
      vm.$https(
        {
181
          url: "learningProject/getPageList",
qzhxx's avatar
qzhxx committed
182
          method: "post",
xulili's avatar
xulili committed
183
          authType: this.backToken,
qzhxx's avatar
qzhxx committed
184 185 186 187
        },
        vm.$qs.stringify(param)
        // param
      )
xulili's avatar
xulili committed
188
        .then((res) => {
qzhxx's avatar
qzhxx committed
189 190 191 192 193
          let data = res.data.data;
          vm.page.pageSize = data.size;
          vm.page.total = data.total;
          vm.tableData = data.records;
        })
xulili's avatar
xulili committed
194
        .catch(function (err) {
qzhxx's avatar
qzhxx committed
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214
          console.log(err);
        });
    },
    // 分页
    handleCurrentChange(val) {
      let _this = this;
      _this.page.currentPage = val;
      _this.onSearch();
    },
    onSearch() {
      let _this = this;
      let param = _this.getSearchQuery();
      _this.getTableData(param);
    },
    Search() {
      let _this = this;
      _this.page.currentPage = 1;
      let searchObj = {
        _index: 1,
        _size: _this.page.pageSize,
qzhxx's avatar
qzhxx committed
215
        name: _this.form.name,
xulili's avatar
xulili committed
216 217
        startDate: this.value1 ? this.value1[0] : "",
        endDate: this.value1 ? this.value1[1] : "",
qzhxx's avatar
qzhxx committed
218 219 220 221
      };
      this.getTableData(searchObj);
    },
    // 重置
xulili's avatar
xulili committed
222 223 224
    Reset() {
      this.form = {};
      this.Search();
qzhxx's avatar
qzhxx committed
225 226 227 228 229 230
    },
    // // 获取当前查询参数
    getSearchQuery() {
      let _this = this;
      let searchObj = {
        _index: _this.page.currentPage,
xulili's avatar
xulili committed
231
        _size: _this.page.pageSize,
qzhxx's avatar
qzhxx committed
232 233 234 235 236 237 238 239 240 241 242
      };
      for (let key in _this.form) {
        if (_this.form[key]) {
          searchObj[key] = _this.form[key];
        }
      }
      return searchObj;
    },
    // 添加
    addPermis() {
      // this.$router.push({ path: "videoContentAdd", query: { type: "add" } });
xulili's avatar
xulili committed
243
      $(".el-dialog__title").html("新建");
qzhxx's avatar
qzhxx committed
244
      this.FormVisible1 = true;
xulili's avatar
xulili committed
245
      this.type = true;
qzhxx's avatar
qzhxx committed
246
    },
xulili's avatar
xulili committed
247 248 249 250 251 252 253 254 255 256 257 258
    handleSubmit(type) {
      let httpUrl, httpMethod,requestParams;
      if (type === "save") {
        httpUrl = "learningProject/save";
        httpMethod = "post";
      }
      if (type === "edit") {
        httpUrl = "learningProject/update";
        httpMethod = "put";
      }
      requestParams = {...this.classForm}
      this.handleSave(httpUrl,httpMethod,requestParams)
qzhxx's avatar
qzhxx committed
259
    },
xulili's avatar
xulili committed
260
    handleSave(url,method,requestParams){
qzhxx's avatar
qzhxx committed
261
      let _this = this;
xulili's avatar
xulili committed
262
       _this.$refs.classForm.validate((valid) => {
qzhxx's avatar
qzhxx committed
263
        if (valid) {
xulili's avatar
xulili committed
264 265 266 267 268 269 270
          _this.$https(
              {
                url: url,
                method: method,
                authType: this.backToken,
              },
              _this.$qs.stringify(requestParams)
qzhxx's avatar
qzhxx committed
271 272
            )
            .then(
xulili's avatar
xulili committed
273
              (res) => {
274
                if (res.data.resultCode == 200 || res.data.resultCode == 201) {
qzhxx's avatar
qzhxx committed
275 276
                  _this.$message({
                    type: "success",
xulili's avatar
xulili committed
277
                    message: res.data.message,
qzhxx's avatar
qzhxx committed
278 279 280 281 282 283 284 285 286 287 288
                  });
                  //跳回用户列表
                  _this.onSearch();
                  _this.FormVisible1 = false;
                  for (let key in _this.classForm) {
                    _this.classForm[key] = null;
                  }
                  _this.$refs["classForm"].resetFields();
                } else {
                  _this.$message({
                    type: "error",
xulili's avatar
xulili committed
289
                    message: res.data.msg,
qzhxx's avatar
qzhxx committed
290 291 292
                  });
                }
              },
xulili's avatar
xulili committed
293
              (error) => {
qzhxx's avatar
qzhxx committed
294 295
                _this.$message({
                  type: "error",
xulili's avatar
xulili committed
296
                  message: error,
qzhxx's avatar
qzhxx committed
297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312
                });
              }
            );
        }
      });
    },
    // 编辑关闭
    close() {
      this.FormVisible1 = false;
      for (let key in this.classForm) {
        this.classForm[key] = null;
      }
      this.$refs["classForm"].resetFields();
    },
    // 编辑弹框
    openEdit(row) {
xulili's avatar
xulili committed
313 314 315
      this.type = false;
      $(".el-dialog__title").html("编辑");
      let _this = this;
qzhxx's avatar
qzhxx committed
316
      _this.FormVisible1 = true;
xulili's avatar
xulili committed
317
      this.getAssetTypeInfo(row.id);
qzhxx's avatar
qzhxx committed
318 319
    },
    // 获取视频分类详情
xulili's avatar
xulili committed
320
    getAssetTypeInfo(id) {
qzhxx's avatar
qzhxx committed
321 322 323
      let vm = this;
      vm.$https(
        {
324
          url: "learningProject/get/" + id,
qzhxx's avatar
qzhxx committed
325
          method: "get",
xulili's avatar
xulili committed
326 327
          authType: this.backToken,
        }
qzhxx's avatar
qzhxx committed
328 329
        // param
      )
xulili's avatar
xulili committed
330
        .then((res) => {
qzhxx's avatar
qzhxx committed
331
          let data = res.data.data;
xulili's avatar
xulili committed
332 333 334
          this.classForm.id = data.id;
          this.classForm.name = data.name;
          this.classForm.remarks = data.remarks;
qzhxx's avatar
qzhxx committed
335
        })
xulili's avatar
xulili committed
336
        .catch(function (err) {
qzhxx's avatar
qzhxx committed
337 338 339 340 341 342 343 344 345 346 347 348 349
          console.log(err);
        });
    },
    openDetails() {
      let _this = this;
      _this.FormVisible = true;
    },
    // 删除
    handleDelete(row) {
      let _this = this;
      this.$confirm("此操作将永久删除, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
xulili's avatar
xulili committed
350
        type: "warning",
qzhxx's avatar
qzhxx committed
351 352 353 354
      })
        .then(() => {
          _this
            .$https({
xulili's avatar
xulili committed
355 356 357
              method: "delete",
              url: "learningProject/delete/" + row.id,
              authType: this.backToken,
qzhxx's avatar
qzhxx committed
358 359
            })
            .then(
xulili's avatar
xulili committed
360 361 362
              (res) => {
                this.$message({ type: "success", message: "删除成功!" });
                _this.Search();
qzhxx's avatar
qzhxx committed
363
              },
xulili's avatar
xulili committed
364 365 366 367 368 369
              (error) => {
                this.$message({
                  type: "fail",
                  message: "删除失败!" + error.response.data,
                });
              }
qzhxx's avatar
qzhxx committed
370
            );
xulili's avatar
xulili committed
371 372
        })
        .catch(() => {});
qzhxx's avatar
qzhxx committed
373 374 375 376 377 378 379
    }
  }
};
</script>

<style lang="less">
@import "../../../../style/dialog.less";
xulili's avatar
xulili committed
380 381
@import "../../../../style/table.less";
@import "../../../../style/pagination.less";
qzhxx's avatar
qzhxx committed
382
</style>