Browse Source

整合前端代码

lyn7568 4 years ago
parent
commit
a4547032f9

+ 2 - 2
src/components/meetingbox/index.vue

@ -1,6 +1,6 @@
1 1
<template>
2
  <el-col :span="4" style="margin-left:30px"  @click.native="handClick()">
3
    <el-card :body-style="{ padding: '8px' }">
2
  <el-col :span="4" style="margin-left:30px"  @click.native="handClick()" >
3
    <el-card :body-style="{ padding: '8px' }" style="height:380px">
4 4
      <div class="bg" :style="{backgroundImage: 'url(' + httpimage + ')', backgroundSize:'cover'}"></div>
5 5
      <div style="padding: 14px;">
6 6
        <span style="font-size:20px">{{this.list.nameCn}}</span>

+ 5 - 5
src/views/common/home.vue

@ -18,7 +18,7 @@
18 18
          <h2>未发布中的会议</h2>
19 19
        </div>
20 20
      </el-col>
21
      <meeting-box v-for="item in unpublished" :key="item.id" :list="item"></meeting-box>
21
      <meeting-box v-for="item in unpublished" :key="item.id" :list="item" style="margin-top:10px;"></meeting-box>
22 22
    </el-row>
23 23
    <el-row>
24 24
      <el-col :span="24">
@ -28,7 +28,7 @@
28 28
      </el-col>
29 29
    </el-row>
30 30
    <el-row>
31
      <meeting-box v-for="item in release" :key="item.id" :list="item"></meeting-box>
31
      <meeting-box v-for="item in release" :key="item.id" :list="item" style="margin-top:20px;"></meeting-box>
32 32
    </el-row>
33 33
    <el-row>
34 34
      <el-col :span="24">
@ -38,7 +38,7 @@
38 38
      </el-col>
39 39
    </el-row>
40 40
    <el-row>
41
      <meeting-box v-for="item in delRelease" :key="item.id" :list="item"></meeting-box>
41
      <meeting-box v-for="item in delRelease" :key="item.id" :list="item" style="margin-top:20px;"></meeting-box>
42 42
    </el-row>
43 43
    <!-- 弹窗, 新增 / 修改 -->
44 44
    <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
@ -58,8 +58,8 @@ export default {
58 58
      unpublished: [], // 未发布
59 59
      release: [], //已发布
60 60
      delRelease: [], //结束
61
      pageIndex: 1,
62
      pageSize: 10,
61
      pageIndex: 0,
62
      pageSize: 30,
63 63
      totalPage: 0,
64 64
      dataListLoading: false,
65 65
      dataListSelections: [],

+ 1 - 0
src/views/modules/admin/employee.vue

@ -103,6 +103,7 @@ export default {
103 103
        })
104 104
      }).then(({ data }) => {
105 105
        if (data && data.code === 0) {
106
          window.console.log(data.page.list);
106 107
          this.dataList = data.page.list;
107 108
          this.totalPage = data.page.totalCount;
108 109
        } else {

+ 181 - 37
src/views/modules/admin/meeting-add-or-update.vue

@ -17,9 +17,9 @@
17 17
      <el-form-item label="会议名称(中文)" prop="nameCn">
18 18
        <el-input v-model="dataForm.nameCn" placeholder="会议名称(中文)"></el-input>
19 19
      </el-form-item>
20
      <!-- <el-form-item label="会议名称(英文)" prop="nameEn">
20
      <el-form-item label="会议名称(英文)" prop="nameEn">
21 21
        <el-input v-model="dataForm.nameEn" placeholder="会议名称(英文)"></el-input>
22
      </el-form-item>-->
22
      </el-form-item>
23 23
      <el-form-item label="举办地点" prop="address">
24 24
        <el-input v-model="dataForm.address" placeholder="举办地点"></el-input>
25 25
      </el-form-item>
@ -63,13 +63,41 @@
63 63
      </el-form-item>
64 64
65 65
      <el-form-item label="涉及学科" prop="subjects">
66
        <el-input v-model="dataForm.subjects" placeholder="涉及学科"></el-input>
66
        <!-- <el-input v-model="dataForm.subjects" placeholder=""></el-input> -->
67
        <el-autocomplete
68
          v-model="dataForm.subjects"
69
          :fetch-suggestions="querySearchAsync"
70
          placeholder="每次添加一个学科"
71
          style="width:690px"
72
        ></el-autocomplete>
73
        <el-button @click="handSubject">添加</el-button>
74
      </el-form-item>
75
      <el-form-item v-if="this.subjects.length!==0">
76
        <el-tag v-for="(item) in subjects" style="margin-right:8px">{{item}}</el-tag>
67 77
      </el-form-item>
68 78
      <el-form-item label="涉及行业" prop="industries">
69
        <el-input v-model="dataForm.industries" placeholder="涉及行业"></el-input>
79
        <el-autocomplete
80
          v-model="dataForm.industries"
81
          :fetch-suggestions="queryIndustriesAsync"
82
          placeholder="每次添加一个行业"
83
          style="width:690px"
84
        ></el-autocomplete>
85
        <el-button @click="handIndustries">添加</el-button>
86
      </el-form-item>
87
      <el-form-item v-if="this.industry.length!==0">
88
        <el-tag v-for="(item) in industry" style="margin-right:8px">{{item}}</el-tag>
70 89
      </el-form-item>
71 90
      <el-form-item label="参会人员类型" prop="attendersType">
72
        <el-input v-model="dataForm.attendersType" placeholder="参会人员类型"></el-input>
91
        <el-autocomplete
92
          v-model="dataForm.attendersType"
93
          :fetch-suggestions="queryAttendersTypeAsync"
94
          placeholder="每次添加一个类型"
95
          style="width:690px"
96
        ></el-autocomplete>
97
        <el-button @click="handAttendersType">添加</el-button>
98
      </el-form-item>
99
      <el-form-item v-if="this.typesofattender.length!==0">
100
        <el-tag v-for="(item) in typesofattender" style="margin-right:8px">{{item}}</el-tag>
73 101
      </el-form-item>
74 102
      <el-form-item label="会议负责人" prop="serviceEmp">
75 103
        <el-input v-model="dataForm.serviceEmp" placeholder="会议负责人"></el-input>
@ -191,22 +219,13 @@ export default {
191 219
        endTime: [
192 220
          { required: true, message: "结束时间不能为空", trigger: "blur" }
193 221
        ],
194
        titlePicture: [
195
          {
196
            required: true,
197
            message: "会议封面图片地址不能为空",
198
            trigger: "blur"
199
          }
200
        ],
201
        subjects: [
202
          { required: true, message: "涉及学科不能为空", trigger: "blur" }
203
        ],
204
        industries: [
205
          { required: true, message: "涉及行业不能为空", trigger: "blur" }
206
        ],
207
        attendersType: [
208
          { required: true, message: "参会人员类型不能为空", trigger: "blur" }
209
        ],
222
        // titlePicture: [
223
        //   {
224
        //     required: true,
225
        //     message: "会议封面图片地址不能为空",
226
        //     trigger: "blur"
227
        //   }
228
        // ],
210 229
        serviceEmp: [
211 230
          { required: true, message: "会议负责人不能为空", trigger: "blur" }
212 231
        ],
@ -259,9 +278,23 @@ export default {
259 278
      },
260 279
      dialogImageUrl: "",
261 280
      dialogVisible: false,
262
      titlePictureList: []
281
      titlePictureList: [],
282
      page: 0,
283
      limit: 10,
284
      key: "",
285
      restaurants: [], //学科表信息
286
      subjects: [], // 提交后台学科表
287
      industryRestaurants: [], //行业表信息
288
      industry: [], //提交后台行业表
289
      typesofattendersRestaurants: [], //参会人员表信息
290
      typesofattender: [] //参会人员提交后台
263 291
    };
264 292
  },
293
  mounted() {
294
    this.getSubject();
295
    this.getIndustries();
296
    this.getAttendersType();
297
  },
265 298
  methods: {
266 299
    init(id) {
267 300
      this.dataForm.id = id || 0;
@ -275,7 +308,6 @@ export default {
275 308
            params: this.$http.adornParams()
276 309
          }).then(({ data }) => {
277 310
            if (data && data.code === 0) {
278
              this.dataForm.companyId = data.meeting.companyId;
279 311
              this.dataForm.nameCn = data.meeting.nameCn;
280 312
              this.dataForm.nameEn = data.meeting.nameEn;
281 313
              this.dataForm.address = data.meeting.address;
@ -292,9 +324,6 @@ export default {
292 324
              this.dataForm.subDeadline = data.meeting.subDeadline;
293 325
              this.dataForm.subRequirement = data.meeting.subRequirement;
294 326
              this.dataForm.introduction = data.meeting.introduction;
295
              this.dataForm.paperRequireId = data.meeting.paperRequireId;
296
              this.dataForm.createTime = data.meeting.createTime;
297
              this.dataForm.modifyTime = data.meeting.modifyTime;
298 327
            }
299 328
          });
300 329
        }
@ -313,30 +342,29 @@ export default {
313 342
            ),
314 343
            method: "post",
315 344
            data: this.$http.adornData({
316
              id: this.dataForm.id || undefined,
317
              companyId: this.dataForm.companyId,
318 345
              nameCn: this.dataForm.nameCn,
319 346
              nameEn: this.dataForm.nameEn,
320 347
              address: this.dataForm.address,
321 348
              startTime: this.dataForm.startTime,
322 349
              endTime: this.dataForm.endTime,
323 350
              officeWebsite: this.dataForm.officeWebsite,
324
              titlePicture: this.titlePicture.list.join(),
325
              subjects: this.dataForm.subjects,
326
              industries: this.dataForm.industries,
327
              attendersType: this.dataForm.attendersType,
351
              titlePicture: this.titlePictureList.join(),
352
              subjects: this.subjects.join(),
353
              industries: this.industry.join(),
354
              attendersType: this.typesofattender.join(),
328 355
              serviceEmp: this.dataForm.serviceEmp,
329 356
              onlineRegDeadline: this.dataForm.onlineRegDeadline,
330 357
              onsiteRegDeadline: this.dataForm.onsiteRegDeadline,
331 358
              subDeadline: this.dataForm.subDeadline,
332 359
              subRequirement: this.dataForm.subRequirement,
333
              introduction: this.dataForm.introduction,
334
              paperRequireId: this.dataForm.paperRequireId,
335
              createTime: this.dataForm.createTime,
336
              modifyTime: this.dataForm.modifyTime
360
              introduction: this.dataForm.introduction
337 361
            })
338 362
          }).then(({ data }) => {
339 363
            if (data && data.code === 0) {
364
              this.subjects = "";
365
              this.titlePictureList = "";
366
              this.industry = "";
367
              this.typesofattender = "";
340 368
              this.$message({
341 369
                message: "操作成功",
342 370
                type: "success",
@ -353,6 +381,7 @@ export default {
353 381
        }
354 382
      });
355 383
    },
384
    // 上传会议图片
356 385
    handleRemove(file, fileList) {
357 386
      console.log(file, fileList);
358 387
    },
@ -360,7 +389,7 @@ export default {
360 389
      window.console.log(response);
361 390
      if (response && response.code === 0) {
362 391
        this.titlePictureList.push(response.picname);
363
        window.console.log(this.titlePictureList.join());
392
        // window.console.log(this.titlePictureList.join());
364 393
        // if (response) {
365 394
        //   this.dataForm.titlePicture = response.thumb;
366 395
        //   // this.showimg = "http://121.42.53.174:9008/static" + response.thumb;
@ -371,6 +400,121 @@ export default {
371 400
      } else {
372 401
        this.$message.error(response.msg);
373 402
      }
403
    },
404
    //获取会议学科
405
    getSubject() {
406
      this.$http({
407
        url: this.$http.adornUrl("/admin/subject/list"),
408
        method: "get",
409
        params: {
410
          page: this.page,
411
          limit: this.limit
412
        }
413
      }).then(res => {
414
        if (res && res.data.code === 0) {
415
          this.restaurants = res.data.page.list;
416
          for (let i of this.restaurants) {
417
            i.value = i.name;
418
          }
419
        }
420
      });
421
    },
422
    //会议回显
423
    querySearchAsync(queryString, cb) {
424
      var restaurants = this.restaurants;
425
      var results = queryString
426
        ? restaurants.filter(this.createStateFilter(queryString))
427
        : restaurants;
428
      clearTimeout(this.timeout);
429
      this.timeout = setTimeout(() => {
430
        cb(results);
431
      }, 1000 * Math.random());
432
    },
433
    createStateFilter(queryString) {
434
      return restaurant => {
435
        return (
436
          restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) ===
437
          0
438
        );
439
      };
440
    },
441
    //学科
442
    handSubject() {
443
      if (this.dataForm.subjects) {
444
        this.subjects.push(this.dataForm.subjects);
445
        this.dataForm.subjects = "";
446
      }
447
    },
448
    getIndustries() {
449
      this.$http({
450
        url: this.$http.adornUrl("/admin/industry/list"),
451
        method: "get",
452
        params: {
453
          page: this.page,
454
          limit: this.limit
455
        }
456
      }).then(res => {
457
        if (res && res.data.code === 0) {
458
          this.industryRestaurants = res.data.page.list;
459
          for (let i of this.industryRestaurants) {
460
            i.value = i.name;
461
          }
462
        }
463
      });
464
    },
465
    // 行业回显
466
    queryIndustriesAsync(queryString, cb) {
467
      let restaurants = this.industryRestaurants;
468
      let results = queryString
469
        ? restaurants.filter(this.createStateFilter(queryString))
470
        : restaurants;
471
      clearTimeout(this.timeout);
472
      this.timeout = setTimeout(() => {
473
        cb(results);
474
      }, 1000 * Math.random());
475
    },
476
477
    //添加行业下tag渲染
478
    handIndustries() {
479
      if (this.dataForm.industries) {
480
        this.industry.push(this.dataForm.industries);
481
        this.dataForm.industries = "";
482
      }
483
    },
484
    //获取类型表
485
    getAttendersType() {
486
      this.$http({
487
        url: this.$http.adornUrl("/admin/typesofattenders/list"),
488
        method: "get",
489
        params: {
490
          page: this.page,
491
          limit: this.limit
492
        }
493
      }).then(res => {
494
        if (res && res.data.code === 0) {
495
          this.typesofattendersRestaurants = res.data.page.list;
496
          for (let i of this.typesofattendersRestaurants) {
497
            i.value = i.name;
498
          }
499
        }
500
      });
501
    },
502
    //添加参会人员类型
503
    queryAttendersTypeAsync(queryString, cb) {
504
      let restaurants = this.typesofattendersRestaurants;
505
      let results = queryString
506
        ? restaurants.filter(this.createStateFilter(queryString))
507
        : restaurants;
508
      clearTimeout(this.timeout);
509
      this.timeout = setTimeout(() => {
510
        cb(results);
511
      }, 1000 * Math.random());
512
    },
513
    handAttendersType() {
514
      if (this.dataForm.attendersType) {
515
        this.typesofattender.push(this.dataForm.attendersType);
516
        this.dataForm.attendersType = "";
517
      }
374 518
    }
375 519
  }
376 520
};

+ 23 - 2
src/views/modules/admin/member.vue

@ -23,7 +23,7 @@
23 23
      style="width: 100%;"
24 24
    >
25 25
      <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
26
      <el-table-column prop="id" header-align="center" align="center" label="会员id (会员表)"></el-table-column>
26
      <!-- <el-table-column prop="id" header-align="center" align="center" label="会员id (会员表)"></el-table-column> -->
27 27
      <el-table-column prop="username" header-align="center" align="center" label="用户名"></el-table-column>
28 28
      <el-table-column prop="truename" header-align="center" align="center" label="姓名"></el-table-column>
29 29
      <el-table-column prop="organization" header-align="center" align="center" label="所属机构"></el-table-column>
@ -49,9 +49,10 @@
49 49
          >是</el-button>
50 50
        </template>
51 51
      </el-table-column>
52
      <el-table-column fixed="right" header-align="center" align="center" width="150" label="操作">
52
      <el-table-column fixed="right" header-align="center" align="center" width="200" label="操作">
53 53
        <template slot-scope="scope">
54 54
          <el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
55
          <el-button type="text" size="small" @click="repasswordHandle(scope.row.id)">重置密码</el-button>
55 56
          <el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
56 57
        </template>
57 58
      </el-table-column>
@ -139,6 +140,26 @@ export default {
139 140
        this.$refs.addOrUpdate.init(id);
140 141
      });
141 142
    },
143
144
    // 重置密码
145
    repasswordHandle(id) {
146
      this.$http({
147
        url: this.$http.adornUrl(`/admin/member/repassword/${id}`),
148
        method: "post",
149
        data: this.$http.adornParams()
150
      }).then(({ data }) => {
151
        if (data && data.code === 0) {
152
          this.$message({
153
            message: "操作成功",
154
            type: "success",
155
            duration: 1000,
156
            onClose: () => {}
157
          });
158
        } else {
159
          this.$message.error(data.msg);
160
        }
161
      });
162
    },
142 163
    // 删除
143 164
    deleteHandle(id) {
144 165
      var ids = id

+ 212 - 0
src/views/modules/admin/sign.vue

@ -0,0 +1,212 @@
1
<template>
2
  <div class="mod-config">
3
    <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
4
      <el-form-item>
5
        <el-button @click="exportList()">导出名单</el-button>
6
      </el-form-item>
7
      <el-form-item>
8
        <el-input v-model="dataForm.key" placeholder="请输入参数人员/负责人" clearable></el-input>
9
      </el-form-item>
10
      <el-form-item>
11
        <el-button @click="getDataList()">查询</el-button>
12
      </el-form-item>
13
    </el-form>
14
    <el-table
15
      :data="dataList"
16
      border
17
      v-loading="dataListLoading"
18
      @selection-change="selectionChangeHandle"
19
      style="width: 100%;">
20
      <el-table-column
21
        type="selection"
22
        header-align="center"
23
        align="center"
24
        width="50">
25
      </el-table-column>
26
      <el-table-column
27
        prop="id"
28
        header-align="center"
29
        align="center"
30
        label="id">
31
      </el-table-column>
32
      <el-table-column
33
        prop="truename"
34
        header-align="center"
35
        align="center"
36
        label="姓名">
37
      </el-table-column>
38
      <el-table-column
39
        prop="organization"
40
        header-align="center"
41
        align="center"
42
        label="所属机构">
43
      </el-table-column>
44
      <el-table-column
45
        prop="position"
46
        header-align="center"
47
        align="center"
48
        label="职位">
49
      </el-table-column>
50
      <el-table-column
51
        prop="phone"
52
        header-align="center"
53
        align="center"
54
        label="联系电话">
55
      </el-table-column>
56
      <el-table-column
57
        prop="typeAttenders"
58
        header-align="center"
59
        align="center"
60
        label="参会类型">
61
      </el-table-column>
62
      <el-table-column
63
        prop="isPay"
64
        header-align="center"
65
        align="center"
66
        label="是否已缴费">
67
      </el-table-column>
68
      <el-table-column
69
        prop="status"
70
        header-align="center"
71
        align="center"
72
        label="签到状态">
73
      </el-table-column>
74
      <el-table-column
75
        prop="badge"
76
        header-align="center"
77
        align="center"
78
        label="胸卡">
79
      </el-table-column>
80
      <el-table-column
81
        prop="servername"
82
        header-align="center"
83
        align="center"
84
        label="负责人">
85
      </el-table-column>
86
      <el-table-column
87
        prop="lastTime"
88
        header-align="center"
89
        align="center"
90
        label="最后签到时间">
91
      </el-table-column>
92
      <el-table-column
93
        fixed="right"
94
        header-align="center"
95
        align="center"
96
        width="100"
97
        label="操作">
98
        <template slot-scope="scope">
99
          <el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
100
        </template>
101
      </el-table-column>
102
    </el-table>
103
    <el-pagination
104
      @size-change="sizeChangeHandle"
105
      @current-change="currentChangeHandle"
106
      :current-page="pageIndex"
107
      :page-sizes="[10, 20, 50, 100]"
108
      :page-size="pageSize"
109
      :total="totalPage"
110
      layout="total, sizes, prev, pager, next, jumper">
111
    </el-pagination>
112
  </div>
113
</template>
114
115
<script>
116
  export default {
117
    data () {
118
      return {
119
        dataForm: {
120
          key: ''
121
        },
122
        dataList: [],
123
        pageIndex: 1,
124
        pageSize: 10,
125
        totalPage: 0,
126
        dataListLoading: false,
127
        dataListSelections: [],
128
        meetingId: 0
129
      }
130
    },
131
    created () {
132
      this.meetingId = this.$route.params.id
133
    },
134
    activated () {
135
      this.getDataList()
136
    },
137
    methods: {
138
      // 导出数据表
139
      exportList () {
140
        window.open(this.$http.adornUrl(`/admin/signinfo/downloadxls?token=${this.$cookie.get('token')}&meetingId=${this.meetingId}`))
141
      },
142
      // 获取数据列表
143
      getDataList () {
144
        this.dataListLoading = true
145
        this.$http({
146
          url: this.$http.adornUrl('/admin/signinfo/list'),
147
          method: 'get',
148
          params: this.$http.adornParams({
149
            'meetingId': this.meetingId,
150
            'page': this.pageIndex,
151
            'limit': this.pageSize,
152
            'key': this.dataForm.key
153
          })
154
        }).then(({data}) => {
155
          if (data && data.code === 0) {
156
            this.dataList = data.page.list
157
            this.totalPage = data.page.totalCount
158
          } else {
159
            this.dataList = []
160
            this.totalPage = 0
161
          }
162
          this.dataListLoading = false
163
        })
164
      },
165
      // 每页数
166
      sizeChangeHandle (val) {
167
        this.pageSize = val
168
        this.pageIndex = 1
169
        this.getDataList()
170
      },
171
      // 当前页
172
      currentChangeHandle (val) {
173
        this.pageIndex = val
174
        this.getDataList()
175
      },
176
      // 多选
177
      selectionChangeHandle (val) {
178
        this.dataListSelections = val
179
      },
180
      // 删除
181
      deleteHandle (id) {
182
        var ids = id ? [id] : this.dataListSelections.map(item => {
183
          return item.id
184
        })
185
        this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
186
          confirmButtonText: '确定',
187
          cancelButtonText: '取消',
188
          type: 'warning'
189
        }).then(() => {
190
          this.$http({
191
            url: this.$http.adornUrl('/admin/signinfo/delete'),
192
            method: 'post',
193
            data: this.$http.adornData(ids, false)
194
          }).then(({data}) => {
195
            if (data && data.code === 0) {
196
              this.$message({
197
                message: '操作成功',
198
                type: 'success',
199
                duration: 1500,
200
                onClose: () => {
201
                  this.getDataList()
202
                }
203
              })
204
            } else {
205
              this.$message.error(data.msg)
206
            }
207
          })
208
        })
209
      }
210
    }
211
  }
212
</script>

+ 19 - 0
src/views/modules/admin/typesoffee.vue

@ -0,0 +1,19 @@
1
<template>
2
  <div>1</div>
3
</template>
4
<script>
5
export default {
6
  name: "",
7
  data() {
8
    return {};
9
  },
10
  components: {},
11
  computed: {},
12
  beforeMount() {},
13
  mounted() {},
14
  methods: {},
15
  watch: {}
16
};
17
</script>
18
<style scoped>
19
</style>