lyn7568 3 vuotta sitten
vanhempi
commit
b7319efcd5
63 muutettua tiedostoa jossa 6622 lisäystä ja 1397 poistoa
  1. 1 0
      .gitignore
  2. BIN
      dist.zip
  3. 1 1
      index.html
  4. 103 2
      package-lock.json
  5. 4 0
      package.json
  6. BIN
      src/assets/img/bg.jpg
  7. BIN
      src/assets/img/delete.png
  8. BIN
      src/assets/img/flag (1).png
  9. BIN
      src/assets/img/flag.png
  10. 1 1
      src/assets/scss/_variables.scss
  11. 150 0
      src/components/meeting-branch/index.vue
  12. 27 41
      src/components/meetingbox/index.vue
  13. 67 0
      src/components/print-dialog/index.vue
  14. 22 24
      src/components/ue/ueditor.vue
  15. 1 1
      src/element-ui-theme/element-#17B3A3/index.css
  16. 1 0
      src/icons/svg/icon-branchmeeting.svg
  17. 1 0
      src/icons/svg/icon-invitation.svg
  18. 1 0
      src/icons/svg/icon-meeting.svg
  19. 1 0
      src/icons/svg/icon-member.svg
  20. 1 0
      src/icons/svg/icon-paper.svg
  21. 1 0
      src/icons/svg/icon-report.svg
  22. 7 1
      src/main.js
  23. 5 2
      src/router/index.js
  24. 1 1
      src/utils/httpRequest.js
  25. 41 39
      src/views/common/home.vue
  26. 1 1
      src/views/common/login.vue
  27. 107 451
      src/views/demo/echarts.vue
  28. 40 3
      src/views/main-navbar.vue
  29. 215 0
      src/views/modules/admin/advertise copy.vue
  30. 127 0
      src/views/modules/admin/advertise-add-or-update.vue
  31. 170 0
      src/views/modules/admin/advertise.vue
  32. 290 0
      src/views/modules/admin/attenders-add-or-update copy.vue
  33. 63 137
      src/views/modules/admin/attenders-add-or-update.vue
  34. 358 0
      src/views/modules/admin/attenders-meeting-update.vue
  35. 242 0
      src/views/modules/admin/attenders-personal-update.vue
  36. 278 0
      src/views/modules/admin/attenders-ticketing-update.vue
  37. 427 41
      src/views/modules/admin/attenders.vue
  38. 190 0
      src/views/modules/admin/branch-add-or-update.vue
  39. 160 0
      src/views/modules/admin/branch-meeting.vue
  40. 207 0
      src/views/modules/admin/branch.vue
  41. 234 0
      src/views/modules/admin/invitation-add-or-update.vue
  42. 437 0
      src/views/modules/admin/invitation.vue
  43. 182 252
      src/views/modules/admin/meeting-add-or-update.vue
  44. 53 37
      src/views/modules/admin/meeting.vue
  45. 97 91
      src/views/modules/admin/member-add-or-update.vue
  46. 265 53
      src/views/modules/admin/member.vue
  47. 167 0
      src/views/modules/admin/organization-add-or-update.vue
  48. 201 0
      src/views/modules/admin/organization-details.vue
  49. 178 0
      src/views/modules/admin/organization.vue
  50. 114 33
      src/views/modules/admin/paper-add-or-update.vue
  51. 30 12
      src/views/modules/admin/paper.vue
  52. 7 10
      src/views/modules/admin/paperrequire-add-or-update.vue
  53. 20 12
      src/views/modules/admin/payment.vue
  54. 226 0
      src/views/modules/admin/report-add-or-update.vue
  55. 288 0
      src/views/modules/admin/report.vue
  56. 168 0
      src/views/modules/admin/sign-add-or-update.vue
  57. 329 43
      src/views/modules/admin/sign.vue
  58. 168 0
      src/views/modules/admin/sign1.vue
  59. 83 101
      src/views/modules/admin/signinfo.vue
  60. 55 2
      src/views/modules/sys/user-add-or-update.vue
  61. 2 1
      static/config/index-prod.js
  62. 6 4
      static/config/index.js
  63. BIN
      static/img/favicon.ico

+ 1 - 0
.gitignore

@ -17,3 +17,4 @@ selenium-debug.log
17 17
*.sln
18 18
config/index.js
19 19
static/config/index.js
20
*.zip

BIN
dist.zip


+ 1 - 1
index.html

@ -4,7 +4,7 @@
4 4
  <meta charset="UTF-8">
5 5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 6
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
7
  <title>科袖会议管理系统</title>
7
  <title>丰盈会议管理系统</title>
8 8
  <% if (process.env.NODE_ENV === 'production') { %>
9 9
    <!-- 生产环境 -->
10 10
    <script>document.write('<script src="./config/index.js?t=' + new Date().getTime() + '"><\/script>');</script>

+ 103 - 2
package-lock.json

@ -3411,8 +3411,7 @@
3411 3411
    "deep-equal": {
3412 3412
      "version": "1.0.1",
3413 3413
      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
3414
      "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
3415
      "dev": true
3414
      "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU="
3416 3415
    },
3417 3416
    "deep-is": {
3418 3417
      "version": "0.1.3",
@ -3790,6 +3789,14 @@
3790 3789
        "safer-buffer": "^2.1.0"
3791 3790
      }
3792 3791
    },
3792
    "echarts": {
3793
      "version": "4.8.0",
3794
      "resolved": "https://registry.npm.taobao.org/echarts/download/echarts-4.8.0.tgz",
3795
      "integrity": "sha1-ssHPuSKbE9No7hBPyO6mALV01MQ=",
3796
      "requires": {
3797
        "zrender": "4.3.1"
3798
      }
3799
    },
3793 3800
    "editorconfig": {
3794 3801
      "version": "0.15.3",
3795 3802
      "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
@ -4985,6 +4992,11 @@
4985 4992
      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
4986 4993
      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
4987 4994
    },
4995
    "fast-diff": {
4996
      "version": "1.1.2",
4997
      "resolved": "https://registry.npm.taobao.org/fast-diff/download/fast-diff-1.1.2.tgz",
4998
      "integrity": "sha1-S2LEK44D3j+EhGC2OQeZIGldAVQ="
4999
    },
4988 5000
    "fast-json-stable-stringify": {
4989 5001
      "version": "2.0.0",
4990 5002
      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
@ -14879,6 +14891,11 @@
14879 14891
        "no-case": "^2.2.0"
14880 14892
      }
14881 14893
    },
14894
    "parchment": {
14895
      "version": "1.1.4",
14896
      "resolved": "https://registry.npm.taobao.org/parchment/download/parchment-1.1.4.tgz?cache=0&sync_timestamp=1586512365974&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparchment%2Fdownload%2Fparchment-1.1.4.tgz",
14897
      "integrity": "sha1-rt7Xq5OP6SHUw0vDOc4RaLwv/eU="
14898
    },
14882 14899
    "parse-asn1": {
14883 14900
      "version": "5.1.4",
14884 14901
      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz",
@ -16312,6 +16329,11 @@
16312 16329
      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
16313 16330
      "dev": true
16314 16331
    },
16332
    "qrcodejs2": {
16333
      "version": "0.0.2",
16334
      "resolved": "https://registry.npm.taobao.org/qrcodejs2/download/qrcodejs2-0.0.2.tgz",
16335
      "integrity": "sha1-Rlr+Xjnxn6zsuTLBH3oYYQkUauE="
16336
    },
16315 16337
    "qs": {
16316 16338
      "version": "6.5.2",
16317 16339
      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
@ -16351,6 +16373,41 @@
16351 16373
      "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==",
16352 16374
      "dev": true
16353 16375
    },
16376
    "quill": {
16377
      "version": "1.3.7",
16378
      "resolved": "https://registry.npm.taobao.org/quill/download/quill-1.3.7.tgz",
16379
      "integrity": "sha1-2lsvOixHDpMjQM2/NmjJ8h+Shug=",
16380
      "requires": {
16381
        "clone": "^2.1.1",
16382
        "deep-equal": "^1.0.1",
16383
        "eventemitter3": "^2.0.3",
16384
        "extend": "^3.0.2",
16385
        "parchment": "^1.1.4",
16386
        "quill-delta": "^3.6.2"
16387
      },
16388
      "dependencies": {
16389
        "clone": {
16390
          "version": "2.1.2",
16391
          "resolved": "https://registry.npm.taobao.org/clone/download/clone-2.1.2.tgz",
16392
          "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
16393
        },
16394
        "eventemitter3": {
16395
          "version": "2.0.3",
16396
          "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-2.0.3.tgz?cache=0&sync_timestamp=1589283112999&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventemitter3%2Fdownload%2Feventemitter3-2.0.3.tgz",
16397
          "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo="
16398
        }
16399
      }
16400
    },
16401
    "quill-delta": {
16402
      "version": "3.6.3",
16403
      "resolved": "https://registry.npm.taobao.org/quill-delta/download/quill-delta-3.6.3.tgz",
16404
      "integrity": "sha1-sZ/SuJQSMBxg4f8hPY2GDqwPEDI=",
16405
      "requires": {
16406
        "deep-equal": "^1.0.1",
16407
        "extend": "^3.0.2",
16408
        "fast-diff": "1.1.2"
16409
      }
16410
    },
16354 16411
    "randomatic": {
16355 16412
      "version": "3.1.1",
16356 16413
      "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
@ -19450,6 +19507,45 @@
19450 19507
        }
19451 19508
      }
19452 19509
    },
19510
    "vue-print-nb": {
19511
      "version": "1.5.0",
19512
      "resolved": "https://registry.npm.taobao.org/vue-print-nb/download/vue-print-nb-1.5.0.tgz",
19513
      "integrity": "sha1-sq9/opI//mmrTphYbgA36ZOBMWE=",
19514
      "requires": {
19515
        "core-js": "^2.6.5",
19516
        "echarts": "^4.6.0",
19517
        "qrcodejs2": "0.0.2",
19518
        "vue": "^2.6.10"
19519
      },
19520
      "dependencies": {
19521
        "vue": {
19522
          "version": "2.6.11",
19523
          "resolved": "https://registry.npm.taobao.org/vue/download/vue-2.6.11.tgz?cache=0&sync_timestamp=1594254332789&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue%2Fdownload%2Fvue-2.6.11.tgz",
19524
          "integrity": "sha1-dllNh31LEiNEBuhONSdcbVFBJcU="
19525
        }
19526
      }
19527
    },
19528
    "vue-qr": {
19529
      "version": "2.2.1",
19530
      "resolved": "https://registry.npm.taobao.org/vue-qr/download/vue-qr-2.2.1.tgz",
19531
      "integrity": "sha1-14ROddUiPvKrGSUjz4uxKdO4JIk="
19532
    },
19533
    "vue-quill-editor": {
19534
      "version": "3.0.6",
19535
      "resolved": "https://registry.npm.taobao.org/vue-quill-editor/download/vue-quill-editor-3.0.6.tgz",
19536
      "integrity": "sha1-H4VkYhHWijGoCnLLf0W7LxGbyPs=",
19537
      "requires": {
19538
        "object-assign": "^4.1.1",
19539
        "quill": "^1.3.4"
19540
      },
19541
      "dependencies": {
19542
        "object-assign": {
19543
          "version": "4.1.1",
19544
          "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-assign%2Fdownload%2Fobject-assign-4.1.1.tgz",
19545
          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
19546
        }
19547
      }
19548
    },
19453 19549
    "vue-router": {
19454 19550
      "version": "3.0.1",
19455 19551
      "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.0.1.tgz",
@ -20384,6 +20480,11 @@
20384 20480
          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo="
20385 20481
        }
20386 20482
      }
20483
    },
20484
    "zrender": {
20485
      "version": "4.3.1",
20486
      "resolved": "https://registry.npm.taobao.org/zrender/download/zrender-4.3.1.tgz?cache=0&sync_timestamp=1588759616979&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fzrender%2Fdownload%2Fzrender-4.3.1.tgz",
20487
      "integrity": "sha1-uviqbcgYei+BlpLX1fm+36K5D6M="
20387 20488
    }
20388 20489
  }
20389 20490
}

+ 4 - 0
package.json

@ -26,10 +26,14 @@
26 26
    "lodash": "4.17.5",
27 27
    "node-sass": "4.9.0",
28 28
    "npm": "^6.9.0",
29
    "qrcodejs2": "0.0.2",
29 30
    "sass-loader": "6.0.6",
30 31
    "svg-sprite-loader": "3.7.3",
31 32
    "vue": "2.5.16",
32 33
    "vue-cookie": "1.1.4",
34
    "vue-print-nb": "^1.5.0",
35
    "vue-qr": "^2.2.1",
36
    "vue-quill-editor": "^3.0.6",
33 37
    "vue-router": "3.0.1",
34 38
    "vuex": "3.0.1"
35 39
  },

BIN
src/assets/img/bg.jpg


BIN
src/assets/img/delete.png


BIN
src/assets/img/flag (1).png


BIN
src/assets/img/flag.png


+ 1 - 1
src/assets/scss/_variables.scss

@ -1,6 +1,6 @@
1 1
// 站点主色
2 2
// tips: 要达到整站主题修改效果, 请确保[$--color-primary]站点主色与[/src/element-ui-theme/index.js]文件中[import './element-[#17B3A3]/index.css']当前主题色一致
3
$--color-primary: #17B3A3;
3
$--color-primary: #3C8DBD;
4 4
5 5
// Navbar
6 6
$navbar--background-color: $--color-primary;

+ 150 - 0
src/components/meeting-branch/index.vue

@ -0,0 +1,150 @@
1
<template>
2
  <el-col :sm="7" :md="7" style="margin-left: 30px">
3
    <el-card :body-style="{ padding: '8px' }" style="height: 400px">
4
      <div class="bg" :style="{ backgroundImage: 'url(' + image + ')' }" @click="goBranch()"></div>
5
      <div class="bottom-box">
6
        <h3>{{ this.list.name }}</h3>
7
        <div>
8
          <p>举办时间:{{ this.list.startTime }}</p>
9
        </div>
10
        <div>
11
          <!-- <el-button type="text" @click="status">发布</el-button> -->
12
          <el-button
13
            type="text"
14
            class="right"
15
            style="color: red"
16
            @click="delMeeting"
17
            >删除</el-button
18
          >
19
          <el-button type="text" class="right" @click="modificationMeeting"
20
            >修改</el-button
21
          >
22
        </div>
23
      </div>
24
    </el-card>
25
  </el-col>
26
</template>
27
<script>
28
export default {
29
  name: "branch",
30
  data() {
31
    return {
32
      id: "",
33
      bid: "",
34
      image:null,
35
    };
36
  },
37
  props: {
38
    list: Object,
39
  },
40
  components: {},
41
  computed: {},
42
  beforeMount() {},
43
  mounted() {
44
    this.getMeetingId();
45
    console.log(this.list);
46
  },
47
  methods: {
48
    
49
    getMeetingId() {
50
      this.id = this.list.pid;
51
      this.bid = this.list.id;
52
      this.image = this.list.titlepic;
53
    },
54
    //修改状态
55
    status() {
56
      this.$http({
57
        url: this.$http.adornUrl("/admin/meeting/status"),
58
        method: "post",
59
        data: {
60
          id: this.list.id,
61
          status: this.list.isCheck === 0 ? 1 : 2,
62
        },
63
      }).then(({ data }) => {
64
        if (data) {
65
          this.$emit("statusMeeting");
66
        } else {
67
          window.console.log(data);
68
        }
69
      });
70
    },
71
    //删除
72
    delMeeting() {
73
      let arr = [];
74
      arr[0] = this.list.id;
75
      this.$http({
76
        url: this.$http.adornUrl("/admin/meeting/delete"),
77
        method: "post",
78
        data: this.$http.adornData(arr, false),
79
      })
80
        .then((res) => {
81
          this.$emit("statusMeeting");
82
        })
83
        .catch((err) => {
84
          window.console.log(err);
85
        });
86
    },
87
    // 修改
88
    modificationMeeting() {
89
      this.$emit("statusMeeting", this.bid);
90
    },
91
    goBranch() {
92
      this.$router.push({ path: `/branch/${this.id}/bid/${this.bid}` });
93
    },
94
  },
95
  watch: {},
96
};
97
</script>
98
<style scoped lang='scss'>
99
.el-card {
100
  position: relative;
101
}
102
103
.time {
104
  font-size: 13px;
105
  color: #999;
106
}
107
108
.bottom {
109
  margin-top: 13px;
110
  line-height: 12px;
111
}
112
113
.image {
114
  width: 100%;
115
  display: block;
116
}
117
.bg {
118
  width: 100%;
119
  height: 250px;
120
  background-size: cover;
121
}
122
123
.clearfix:before,
124
.clearfix:after {
125
  display: table;
126
  content: "";
127
}
128
129
.clearfix:after {
130
  clear: both;
131
}
132
.left {
133
  float: left;
134
}
135
.right {
136
  float: right;
137
  margin-right: 20px;
138
}
139
140
.bottom-box {
141
  h3 {
142
    font-size: 20px;
143
    overflow: hidden;
144
    text-overflow: ellipsis;
145
    display: -webkit-box;
146
    -webkit-line-clamp: 1;
147
    -webkit-box-orient: vertical;
148
  }
149
}
150
</style>

+ 27 - 41
src/components/meetingbox/index.vue

@ -1,39 +1,35 @@
1 1
<template>
2
  <el-col :sm="7" :md="7" style="margin-left:30px">
3
    <el-card :body-style="{ padding: '8px' }" style="height:430px">
2
  <el-col :sm="7" :md="7" style="margin-left: 30px">
3
    <el-card :body-style="{ padding: '8px' }" style="height: 400px">
4 4
      <div
5 5
        class="bg"
6
        :style="{backgroundImage: 'url( ' + image + ')', backgroundSize:'cover'}"
6
        :style="{ backgroundImage: 'url(' + image + ')' }"
7 7
        @click="handClick()"
8 8
      ></div>
9 9
      <div class="bottom-box">
10
        <h3>{{this.list.nameCn}}</h3>
10
        <h3>{{ this.list.name }}</h3>
11 11
        <div>
12
          <p>举办时间:{{this.list.createTime}}</p>
13
          <p>结束时间:{{this.list.endTime}}</p>
12
          <p>举办时间:{{ this.list.startTime }}</p>
14 13
        </div>
15 14
        <div>
16
          <el-button type="text" v-if="this.list.isCheck===0" @click="status">发布</el-button>
15
          <!-- <el-button type="text" @click="status">发布</el-button> -->
17 16
          <el-button
18 17
            type="text"
19 18
            class="right"
20
            v-if="this.list.isCheck===0||this.list.isCheck===2"
21
            style="color:red"
19
            style="color: red"
22 20
            @click="delMeeting"
23
          >删除</el-button>
24
          <el-button
25
            type="text"
26
            class="right"
27
            v-if="this.list.isCheck===0 || this.list.isCheck===1"
28
            @click="modificationMeeting"
29
          >修改</el-button>
30
          <el-button
21
            >删除</el-button
22
          >
23
          <el-button type="text" class="right" @click="modificationMeeting"
24
            >修改</el-button
25
          >
26
          <!-- <el-button
31 27
            type="text"
32 28
            v-if="this.list.isCheck===1"
33 29
            @click="status"
34 30
            class="right"
35 31
            style="margin-right:10px"
36
          >结束会议</el-button>
32
          >结束会议</el-button>-->
37 33
        </div>
38 34
      </div>
39 35
    </el-card>
@ -47,18 +43,16 @@ export default {
47 43
      id: "",
48 44
      httpimage: "",
49 45
      image: null,
50
      imageUrl: this.imageUrl
51 46
    };
52 47
  },
53 48
  props: {
54
    list: Object
49
    list: Object,
55 50
  },
56 51
  components: {},
57
  computed: {
58
    imageNull() {}
59
  },
52
  computed: {},
60 53
  beforeMount() {},
61 54
  mounted() {
55
    console.log(this.list);
62 56
    this.getMeetingId();
63 57
  },
64 58
  methods: {
@ -67,17 +61,7 @@ export default {
67 61
    },
68 62
    getMeetingId() {
69 63
      this.id = this.list.id;
70
      this.httpimage = this.list.titlePicture;
71
      if (this.httpimage.includes(",")) {
72
        this.image = this.httpimage
73
          .split(",")
74
          .splice(0, 1)
75
          .join();
76
        this.image = this.imageUrl + this.image;
77
      } else {
78
        this.image = this.httpimage;
79
        this.image = this.imageUrl + this.image;
80
      }
64
      this.image = this.list.titlepic;
81 65
    },
82 66
    //修改状态
83 67
    status() {
@ -86,8 +70,8 @@ export default {
86 70
        method: "post",
87 71
        data: {
88 72
          id: this.list.id,
89
          status: this.list.isCheck === 0 ? 1 : 2
90
        }
73
          status: this.list.isCheck === 0 ? 1 : 2,
74
        },
91 75
      }).then(({ data }) => {
92 76
        if (data) {
93 77
          this.$emit("statusMeeting");
@ -103,21 +87,21 @@ export default {
103 87
      this.$http({
104 88
        url: this.$http.adornUrl("/admin/meeting/delete"),
105 89
        method: "post",
106
        data: this.$http.adornData(arr, false)
90
        data: this.$http.adornData(arr, false),
107 91
      })
108
        .then(res => {
92
        .then((res) => {
109 93
          this.$emit("statusMeeting");
110 94
        })
111
        .catch(err => {
95
        .catch((err) => {
112 96
          window.console.log(err);
113 97
        });
114 98
    },
115 99
    // 修改
116 100
    modificationMeeting() {
117 101
      this.$emit("statusMeeting", this.id);
118
    }
102
    },
119 103
  },
120
  watch: {}
104
  watch: {},
121 105
};
122 106
</script>
123 107
<style scoped lang='scss'>
@ -142,6 +126,7 @@ export default {
142 126
.bg {
143 127
  width: 100%;
144 128
  height: 250px;
129
  background-size: cover;
145 130
}
146 131
147 132
.clearfix:before,
@ -158,6 +143,7 @@ export default {
158 143
}
159 144
.right {
160 145
  float: right;
146
  margin-right: 20px;
161 147
}
162 148
163 149
.bottom-box {

+ 67 - 0
src/components/print-dialog/index.vue

@ -0,0 +1,67 @@
1
<template>
2
  <el-dialog title="打印" :visible.sync="printVisible" width="30%">
3
    <div style="text-align:center" id="print">
4
      <vue-qr :text="token" :size="200"></vue-qr>
5
      <p style="font-size:18px">姓名:{{name}}</p>
6
      <p style="font-size:18px">{{organization}}</p>
7
    </div>
8
    <span slot="footer" class="dialog-footer">
9
      <el-button @click="printVisible = false">取 消</el-button>
10
      <el-button type="primary" v-print="'#print'" @click="handClick">确 定</el-button>
11
    </span>
12
  </el-dialog>
13
</template>
14
<script>
15
import vueQr from "vue-qr";
16
17
export default {
18
  name: "printCode",
19
  data() {
20
    return {
21
      printVisible: false,
22
      name: "",
23
      organization: "",
24
      meetingId: "",
25
      token: ""
26
    };
27
  },
28
  created() {},
29
  components: {
30
    vueQr
31
  },
32
  computed: {},
33
  beforeMount() {},
34
  mounted() {},
35
  methods: {
36
    init(data) {
37
      this.printVisible = true;
38
      this.name = data.truename;
39
      this.organization = data.organization;
40
      this.aid = data.aid;
41
      this.token =
42
        window.SITE_CONFIG['img']+"/qrcode/webmeeting.html?token=" + data.symbol + "&meetingId=" + data.meetingId;
43
    },
44
    handClick() {
45
      this.$http({
46
        url: this.$http.adornUrl(`/admin/sign/printcode/${this.aid}`),
47
        method: "post",
48
        data: {
49
        }
50
      })
51
        .then(({ data }) => {
52
          if (data && data.code === 0) {
53
            this.printVisible = false;
54
            this.$emit("getData");
55
            return;
56
          }
57
        })
58
        .catch(error => {
59
          console.log(error);
60
        });
61
    }
62
  },
63
  watch: {}
64
};
65
</script>
66
<style scoped>
67
</style>

+ 22 - 24
src/components/ue/ueditor.vue

@ -1,39 +1,37 @@
1 1
<template>
2
  <div>
3
    <script :id="ueId" class="ueditor-box" type="text/plain" style="width: 100%; height: 400px;"></script>
4
    <!-- <p>
5
      <el-button @click="getContent()">确定</el-button>
6
    </p>-->
7
  </div>
2
  <quill-editor
3
    class="editor"
4
    v-model="content"
5
    ref="myQuillEditor"
6
    :options="editorOption"
7
    style="height:400px"
8
  ></quill-editor>
8 9
</template>
9 10
10 11
<script>
11
import ueditor from "ueditor";
12
import { quillEditor } from "vue-quill-editor";
12 13
export default {
14
  props: ["txt"],
13 15
  data() {
14 16
    return {
15
      ue: null,
16
      ueId: `J_ueditorBox_${new Date().getTime()}`,
17
      ueContent: ""
17
      content: null,
18
      editorOption: {}
18 19
    };
19 20
  },
20
  mounted() {
21
    this.ue = ueditor.getEditor(this.ueId, {
22
      // serverUrl: '', // 服务器统一请求接口路径
23
      zIndex: 3000
24
    });
25
    this.ue.setContent("<p>hello!</p>");
21
  created() {
22
    this.content = this.txt;
23
  },
24
  components: {
25
    quillEditor
26 26
  },
27 27
  methods: {
28
    getContent() {
29
      this.ue.ready(() => {
30
        this.ueContent = this.ue.getContent();
31
      });
32
      this.$emit("ue", this.ueContent);
28
    getText(data) {
29
      this.$emit("changText", this.content);
30
    },
31
    // 回显
32
    getTxt(data) {
33
      this.content = data;
33 34
    }
34 35
  }
35 36
};
36 37
</script>
37
38
<style lang="scss">
39
</style>

+ 1 - 1
src/element-ui-theme/element-#17B3A3/index.css

@ -1 +1 @@
1
@charset "UTF-8";.el-pagination--small .arrow.disabled,.el-table .hidden-columns,.el-table td.is-hidden>*,.el-table th.is-hidden>*,.el-table--hidden{visibility:hidden}.el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}@font-face{font-family:element-icons;src:url(fonts/element-icons.woff) format("woff"),url(fonts/element-icons.ttf) format("truetype");font-weight:400;font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-info:before{content:"\e61a"}.el-icon-error:before{content:"\e62c"}.el-icon-success:before{content:"\e62d"}.el-icon-warning:before{content:"\e62e"}.el-icon-question:before{content:"\e634"}.el-icon-back:before{content:"\e606"}.el-icon-arrow-left:before{content:"\e600"}.el-icon-arrow-down:before{content:"\e603"}.el-icon-arrow-right:before{content:"\e604"}.el-icon-arrow-up:before{content:"\e605"}.el-icon-caret-left:before{content:"\e60a"}.el-icon-caret-bottom:before{content:"\e60b"}.el-icon-caret-top:before{content:"\e60c"}.el-icon-caret-right:before{content:"\e60e"}.el-icon-d-arrow-left:before{content:"\e610"}.el-icon-d-arrow-right:before{content:"\e613"}.el-icon-minus:before{content:"\e621"}.el-icon-plus:before{content:"\e62b"}.el-icon-remove:before{content:"\e635"}.el-icon-circle-plus:before{content:"\e601"}.el-icon-remove-outline:before{content:"\e63c"}.el-icon-circle-plus-outline:before{content:"\e602"}.el-icon-close:before{content:"\e60f"}.el-icon-check:before{content:"\e611"}.el-icon-circle-close:before{content:"\e607"}.el-icon-circle-check:before{content:"\e639"}.el-icon-circle-close-outline:before{content:"\e609"}.el-icon-circle-check-outline:before{content:"\e63e"}.el-icon-zoom-out:before{content:"\e645"}.el-icon-zoom-in:before{content:"\e641"}.el-icon-d-caret:before{content:"\e615"}.el-icon-sort:before{content:"\e640"}.el-icon-sort-down:before{content:"\e630"}.el-icon-sort-up:before{content:"\e631"}.el-icon-tickets:before{content:"\e63f"}.el-icon-document:before{content:"\e614"}.el-icon-goods:before{content:"\e618"}.el-icon-sold-out:before{content:"\e63b"}.el-icon-news:before{content:"\e625"}.el-icon-message:before{content:"\e61b"}.el-icon-date:before{content:"\e608"}.el-icon-printer:before{content:"\e62f"}.el-icon-time:before{content:"\e642"}.el-icon-bell:before{content:"\e622"}.el-icon-mobile-phone:before{content:"\e624"}.el-icon-service:before{content:"\e63a"}.el-icon-view:before{content:"\e643"}.el-icon-menu:before{content:"\e620"}.el-icon-more:before{content:"\e646"}.el-icon-more-outline:before{content:"\e626"}.el-icon-star-on:before{content:"\e637"}.el-icon-star-off:before{content:"\e63d"}.el-icon-location:before{content:"\e61d"}.el-icon-location-outline:before{content:"\e61f"}.el-icon-phone:before{content:"\e627"}.el-icon-phone-outline:before{content:"\e628"}.el-icon-picture:before{content:"\e629"}.el-icon-picture-outline:before{content:"\e62a"}.el-icon-delete:before{content:"\e612"}.el-icon-search:before{content:"\e619"}.el-icon-edit:before{content:"\e61c"}.el-icon-edit-outline:before{content:"\e616"}.el-icon-rank:before{content:"\e632"}.el-icon-refresh:before{content:"\e633"}.el-icon-share:before{content:"\e636"}.el-icon-setting:before{content:"\e638"}.el-icon-upload:before{content:"\e60d"}.el-icon-upload2:before{content:"\e644"}.el-icon-download:before{content:"\e617"}.el-icon-loading:before{content:"\e61e"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination::after,.el-pagination::before{display:table;content:""}.el-pagination::after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pager li,.el-pagination__editor{-webkit-box-sizing:border-box;text-align:center}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px;height:28px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#17B3A3}.el-pagination button:disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat #fff;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#c0c4cc;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .more::before,.el-pagination--small li.more::before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#17B3A3}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;margin:0 2px;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#c0c4cc}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#17B3A3}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#17B3A3;color:#fff}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-radio,.el-table th{-webkit-user-select:none}.el-date-table,.el-radio,.el-table th{-moz-user-select:none;-ms-user-select:none}.el-pager .more::before{line-height:30px}.el-pager li{padding:0 4px;background:#fff;font-size:13px;min-width:35.5px;height:28px;line-height:28px;box-sizing:border-box}.el-menu--collapse .el-menu .el-submenu,.el-menu--popup{min-width:200px}.el-dialog,.el-dialog__footer{-webkit-box-sizing:border-box}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#c0c4cc}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#17B3A3}.el-pager li.active{color:#17B3A3;cursor:default}@-webkit-keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}.el-dialog{position:relative;margin:0 auto 50px;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#17B3A3}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;line-height:24px;font-size:14px}.el-dialog__footer{padding:10px 20px 20px;text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px}.el-dropdown-menu,.el-menu--collapse .el-submenu .el-menu{z-index:10;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:auto;background-color:#fff;border:1px solid #e4e7ed;border-radius:4px}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#f5f7fa}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#fff}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button::before{content:'';position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:rgba(255,255,255,.5)}.el-dropdown .el-dropdown__caret-button:hover::before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing){outline-width:0}.el-dropdown-menu{position:absolute;top:0;left:0;padding:10px 0;margin:5px 0;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:rgb(232, 247, 246);color:rgb(69, 194, 181)}.el-dropdown-menu__item--divided:before,.el-menu,.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #ebeef5}.el-dropdown-menu__item--divided:before{content:'';height:6px;display:block;margin:0 -20px}.el-menu::after,.el-menu::before,.el-radio__inner::after,.el-switch__core:after{content:""}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:solid 1px #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0}.el-menu::after,.el-menu::before{display:table}.el-menu::after{clear:both}.el-menu--horizontal{border-right:none;border-bottom:solid 1px #e6e6e6}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #17B3A3;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu__title.is-active{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #17B3A3;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;border:1px solid #e4e7ed;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;position:relative;-webkit-box-sizing:border-box;white-space:nowrap;list-style:none}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.el-menu--popup{z-index:100;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:rgb(232, 247, 246)}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#17B3A3}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:rgb(232, 247, 246)}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:rgb(232, 247, 246)}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-submenu.is-active .el-submenu__title{border-bottom-color:#17B3A3}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-radio{color:#606266;font-weight:500;line-height:1;cursor:pointer;white-space:nowrap;outline:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#17B3A3}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio+.el-radio{margin-left:30px}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#17B3A3;background:#17B3A3}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#17B3A3}.el-radio__input.is-focus .el-radio__inner{border-color:#17B3A3}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio-button__inner,.el-switch__core{-webkit-box-sizing:border-box;vertical-align:middle}.el-radio__inner:hover{border-color:#17B3A3}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#fff;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6);transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6);transition:transform .15s cubic-bezier(.71,-.46,.88,.6);transition:transform .15s cubic-bezier(.71,-.46,.88,.6),-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6)}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio-button,.el-radio-button__inner{display:inline-block;position:relative;outline:0}.el-radio:focus:not(.is-focus):not(:active) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #17B3A3;box-shadow:0 0 2px 2px #17B3A3}.el-radio__label{font-size:14px;padding-left:10px}.el-radio-group{display:inline-block;line-height:1;vertical-align:middle;font-size:0}.el-radio-button__inner{line-height:1;white-space:nowrap;background:#fff;border:1px solid #dcdfe6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;margin:0;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#17B3A3}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#17B3A3;border-color:#17B3A3;-webkit-box-shadow:-1px 0 0 0 #17B3A3;box-shadow:-1px 0 0 0 #17B3A3}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#f2f6fc}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-popover,.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active){-webkit-box-shadow:0 0 2px 2px #17B3A3;box-shadow:0 0 2px 2px #17B3A3}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#17B3A3}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__input:focus~.el-switch__core{outline:#17B3A3 solid 1px}.el-message__closeBtn:focus,.el-message__content:focus,.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing),.el-rate:active,.el-rate:focus,.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing),.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #dcdfe6;outline:0;border-radius:10px;box-sizing:border-box;background:#dcdfe6;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s}.el-switch__core:after{position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#fff}.el-switch.is-checked .el-switch__core{border-color:#17B3A3;background-color:#17B3A3}.el-switch.is-checked .el-switch__core::after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #e4e7ed;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#17B3A3;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\E611";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#17B3A3;font-weight:700}.el-select-dropdown__item span{line-height:34px!important}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select:hover .el-input__inner{border-color:#c0c4cc}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#17B3A3}.el-select .el-input .el-select__caret{color:#c0c4cc;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);line-height:16px;cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#c0c4cc;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#e4e7ed}.el-select .el-input.is-focus .el-input__inner{border-color:#17B3A3}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#c0c4cc;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5}.el-select .el-tag__close.el-icon-close{background-color:#c0c4cc;right:-7px;top:0;color:#fff}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#fff}.el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table--mini,.el-table--small,.el-table__expand-icon{font-size:12px}.el-table__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-table__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th{background:#f5f7fa}.el-table th,.el-table tr{background-color:#fff}.el-table td,.el-table th{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative}.el-table th div,.el-table th>.cell{-webkit-box-sizing:border-box;display:inline-block}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td.is-left,.el-table th.is-left{text-align:left}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table--medium td,.el-table--medium th{padding:10px 0}.el-table--small td,.el-table--small th{padding:8px 0}.el-table--mini td,.el-table--mini th{padding:6px 0}.el-table .cell,.el-table th div{padding-right:10px;overflow:hidden;text-overflow:ellipsis}.el-table .cell,.el-table th div,.el-table--border td:first-child .cell,.el-table--border th:first-child .cell{padding-left:10px}.el-table tr input[type=checkbox]{margin:0}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #ebeef5}.el-table th.is-sortable{cursor:pointer}.el-table th{white-space:nowrap;overflow:hidden;user-select:none;text-align:left}.el-table th div{line-height:40px;box-sizing:border-box;white-space:nowrap}.el-table th>.cell{position:relative;word-wrap:normal;text-overflow:ellipsis;vertical-align:middle;width:100%;box-sizing:border-box}.el-table th>.cell.highlight{color:#17B3A3}.el-table th.required>div::before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-table td.gutter{width:0}.el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;white-space:normal;word-break:break-all;line-height:23px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #ebeef5}.el-table--border::after,.el-table--group::after,.el-table::before{content:'';position:absolute;background-color:#ebeef5;z-index:1}.el-table--border::after,.el-table--group::after{top:0;right:0;width:1px;height:100%}.el-table::before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border td,.el-table--border th,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #ebeef5}.el-table--border th.gutter:last-of-type{border-bottom:1px solid #ebeef5;border-bottom-width:1px}.el-table--border th,.el-table__fixed-right-patch{border-bottom:1px solid #ebeef5}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right::before,.el-table__fixed::before{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#ebeef5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#fff}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #ebeef5;background-color:#f5f7fa;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #ebeef5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#f5f7fa;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-picker-panel,.el-table-filter{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #ebeef5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#c0c4cc;top:5px}.el-table .sort-caret.descending{border-top-color:#c0c4cc;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#17B3A3}.el-table .descending .sort-caret.descending{border-top-color:#17B3A3}.el-table .hidden-columns{position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#FAFAFA}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td,.el-table__body tr.current-row>td,.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:rgb(232, 247, 246)}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #ebeef5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#f5f7fa}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #ebeef5;border-radius:2px;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:rgb(232, 247, 246);color:rgb(69, 194, 181)}.el-table-filter__list-item.is-active{background-color:#17B3A3;color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #ebeef5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table td.in-range div,.el-date-table td.in-range div:hover,.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#f2f6fc}.el-table-filter__bottom button:hover{color:#17B3A3}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-webkit-user-select:none;user-select:none}.el-slider__button-wrapper,.el-time-panel{-ms-user-select:none;-moz-user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;height:30px;padding:4px 0;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{height:30px;padding:3px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-month-table td .cell,.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px}.el-date-table td.next-month,.el-date-table td.prev-month{color:#c0c4cc}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#17B3A3;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#fff}.el-date-table td.available:hover{color:#17B3A3}.el-date-table td.current:not(.disabled) span{color:#fff;background-color:#17B3A3}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#fff}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#17B3A3}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#f5f7fa;opacity:1;cursor:not-allowed;color:#c0c4cc}.el-fade-in-enter,.el-fade-in-leave-active,.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#f2f6fc;border-radius:15px}.el-date-table td.selected div:hover{background-color:#f2f6fc}.el-date-table td.selected span{background-color:#17B3A3;color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:solid 1px #ebeef5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-month-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-month-table td.disabled .cell:hover{color:#c0c4cc}.el-month-table td .cell{color:#606266;margin:0 auto}.el-month-table td .cell:hover,.el-month-table td.current:not(.disabled) .cell{color:#17B3A3}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-year-table td.disabled .cell:hover{color:#c0c4cc}.el-year-table td .cell{color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#17B3A3}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content.is-right .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #ebeef5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#17B3A3}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#17B3A3;font-weight:700}.time-select-item.disabled{color:#e4e7ed;cursor:not-allowed}.time-select-item:hover{background-color:#f5f7fa;font-weight:700;cursor:pointer}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input,.el-date-editor .el-range-separator{height:100%;margin:0;text-align:center;display:inline-block;font-size:14px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;padding:0;width:39%;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input:-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{padding:0 5px;line-height:32px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{border-color:#17B3A3}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input:-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-popover,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#17B3A3}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#17B3A3}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#17B3A3}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#17B3A3}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list::after,.el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#c0c4cc;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #e4e7ed;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;user-select:none}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #e4e7ed;border-bottom:1px solid #e4e7ed}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#17B3A3}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #e4e7ed}.el-popover{position:absolute;background:#fff;min-width:150px;border:1px solid #ebeef5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#fff;border-radius:4px;border:1px solid #ebeef5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper::after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#f56c6c}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#17B3A3}.el-message-box__content{position:relative;padding:10px 15px;color:#606266;font-size:14px}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status::before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67c23a}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#e6a23c}.el-message-box__status.el-icon-error{color:#f56c6c}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#f56c6c;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:""}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#c0c4cc}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#17B3A3;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form-item__content .el-input-group,.el-form-item__label,.el-tag .el-icon-close{vertical-align:middle}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:""}.el-form-item::after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label{text-align:right;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:""}.el-form-item__content::after{clear:both}.el-form-item__error{color:#f56c6c;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required .el-form-item__label:before{content:'*';color:#f56c6c;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#f56c6c}.el-form-item.is-success .el-input__inner,.el-form-item.is-success .el-input__inner:focus,.el-form-item.is-success .el-textarea__inner,.el-form-item.is-success .el-textarea__inner:focus{border-color:#67c23a}.el-form-item.is-success .el-input-group__append .el-input__inner,.el-form-item.is-success .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-success .el-input__validateIcon{color:#67c23a}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#17B3A3;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#17B3A3}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#e4e7ed;z-index:1}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after,.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-alert,.el-tag{-webkit-box-sizing:border-box}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #17B3A3 inset;box-shadow:0 0 2px 2px #17B3A3 inset;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#c0c4cc;color:#fff}.el-tabs__item.is-active{color:#17B3A3}.el-tabs__item:hover{color:#17B3A3;cursor:pointer}.el-tabs__item.is-disabled{color:#c0c4cc;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #e4e7ed}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #e4e7ed;border-bottom:none;border-radius:4px 4px 0 0}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #e4e7ed;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--border-card{background:#fff;border:1px solid #dcdfe6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin:-1px -1px 0;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#17B3A3;background-color:#fff;border-right-color:#dcdfe6;border-left-color:#dcdfe6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#17B3A3}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#c0c4cc}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card .el-tabs__item:last-child,.el-tabs--top .el-tabs--left .el-tabs__item:last-child,.el-tabs--top .el-tabs--right .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card .el-tabs__item:last-child,.el-tabs--top.el-tabs--card .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #dcdfe6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left::after,.el-tabs--left .el-tabs__nav-wrap.is-right::after,.el-tabs--right .el-tabs__nav-wrap.is-left::after,.el-tabs--right .el-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav,.el-tabs--right .el-tabs__nav{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--left .el-tabs__nav-next,.el-tabs--left .el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-next,.el-tabs--right .el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}.el-tabs--left .el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-next,.el-tabs--right .el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left::after{right:0;left:auto}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #e4e7ed;border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #e4e7ed;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #e4e7ed;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #e4e7ed;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right::after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tag,.slideInLeft-transition,.slideInRight-transition{display:inline-block}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #e4e7ed;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #e4e7ed;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #e4e7ed;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tag{background-color:rgba(64,158,255,.1);padding:0 10px;height:32px;line-height:30px;font-size:12px;color:#17B3A3;border-radius:4px;box-sizing:border-box;border:1px solid rgba(64,158,255,.2);white-space:nowrap}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;top:-1px;right:-5px;color:#17B3A3}.el-tag .el-icon-close::before{display:block}.el-tag .el-icon-close:hover{background-color:#17B3A3;color:#fff}.el-tag--info,.el-tag--info .el-tag__close{color:#909399}.el-tag--info{background-color:rgba(144,147,153,.1);border-color:rgba(144,147,153,.2)}.el-tag--info.is-hit{border-color:#909399}.el-tag--info .el-tag__close:hover{background-color:#909399;color:#fff}.el-tag--success{background-color:rgba(103,194,58,.1);border-color:rgba(103,194,58,.2);color:#67c23a}.el-tag--success.is-hit{border-color:#67c23a}.el-tag--success .el-tag__close{color:#67c23a}.el-tag--success .el-tag__close:hover{background-color:#67c23a;color:#fff}.el-tag--warning{background-color:rgba(230,162,60,.1);border-color:rgba(230,162,60,.2);color:#e6a23c}.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--warning .el-tag__close:hover{background-color:#e6a23c;color:#fff}.el-tag--danger{background-color:rgba(245,108,108,.1);border-color:rgba(245,108,108,.2);color:#f56c6c}.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--danger .el-tag__close:hover{background-color:#f56c6c;color:#fff}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-tree{position:relative;cursor:default;background:#fff;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#6f7180}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#17B3A3}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#f5f7fa}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#17B3A3;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#f5f7fa}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#c0c4cc;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#c0c4cc}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success{background-color:#f0f9eb;color:#67c23a}.el-alert--success .el-alert__description{color:#67c23a}.el-alert--info{background-color:#f4f4f5;color:#909399}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning{background-color:#fdf6ec;color:#e6a23c}.el-alert--warning .el-alert__description{color:#e6a23c}.el-alert--error{background-color:#fef0f0;color:#f56c6c}.el-alert--error .el-alert__description{color:#f56c6c}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;color:#c0c4cc;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active{opacity:0}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67c23a}.el-notification .el-icon-error{color:#f56c6c}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#e6a23c}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#17B3A3}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#17B3A3}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #dcdfe6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #dcdfe6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#e4e7ed;color:#e4e7ed}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#e4e7ed;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #dcdfe6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #dcdfe6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-progress-bar__inner::after,.el-row::after,.el-row::before,.el-slider::after,.el-slider::before,.el-slider__button-wrapper::after,.el-upload-cover::after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.el-slider::after,.el-slider::before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper::after{vertical-align:middle;display:inline-block}.el-slider::after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#e4e7ed;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button{border-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1);cursor:not-allowed}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#17B3A3;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;position:absolute;z-index:1001;top:-15px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;user-select:none;line-height:normal}.el-slider__button-wrapper::after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #17B3A3;background-color:#fff;border-radius:50%;-webkit-transition:.2s;transition:.2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-button,.el-checkbox,.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{position:absolute;height:6px;width:6px;border-radius:100%;background-color:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #dcdfe6;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#c0c4cc}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#17B3A3}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-10,.el-col-pull-11,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-2,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-push-0,.el-col-push-1,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-2,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-row{position:relative}.el-loading-spinner .el-loading-text{color:#17B3A3;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#17B3A3;stroke-linecap:round}.el-loading-spinner i{color:#17B3A3}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{-webkit-box-sizing:border-box;box-sizing:border-box}.el-row::after,.el-row::before{display:table}.el-row::after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-upload--picture-card,.el-upload-dragger{-webkit-box-sizing:border-box;cursor:pointer}.el-col-0{width:0}.el-col-offset-0{margin-left:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:768px){.el-col-xs-0{display:none;width:0}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#17B3A3;color:#17B3A3}.el-upload:focus .el-upload-dragger{border-color:#17B3A3}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#c0c4cc;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #dcdfe6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#17B3A3;font-style:normal}.el-upload-dragger:hover{border-color:#17B3A3}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #17B3A3}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67c23a}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#17B3A3}.el-upload-list__item:hover{background-color:#f5f7fa}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#17B3A3;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#17B3A3}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover::after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle{display:inline-block}.el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__inner::after,.el-progress-bar__innerText,.el-spinner{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67c23a}.el-progress.is-success .el-progress__text{color:#67c23a}.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#17B3A3;text-align:right;border-radius:100px;line-height:1;white-space:nowrap}.el-card,.el-message{border-radius:4px;overflow:hidden}.el-progress-bar__inner::after{height:100%}.el-progress-bar__innerText{color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-width:1px;border-style:solid;border-color:#ebeef5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,-webkit-transform .4s;transition:opacity .3s,-webkit-transform .4s;transition:opacity .3s,transform .4s;transition:opacity .3s,transform .4s,-webkit-transform .4s;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67c23a}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#e6a23c}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#f56c6c}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#c0c4cc;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67c23a}.el-message .el-icon-error{color:#f56c6c}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#e6a23c}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#f56c6c;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-card{border:1px solid #ebeef5;background-color:#fff;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#c0c4cc;-webkit-transition:.3s;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-webkit-box;display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#c0c4cc;border-color:#c0c4cc}.el-step__head.is-success{color:#67c23a;border-color:#67c23a}.el-step__head.is-error{color:#f56c6c;border-color:#f56c6c}.el-step__head.is-finish{color:#17B3A3;border-color:#17B3A3}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-button,.el-checkbox{-ms-user-select:none;font-weight:500}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#c0c4cc}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#c0c4cc}.el-step__title.is-success{color:#67c23a}.el-step__title.is-error{color:#f56c6c}.el-step__title.is-finish{color:#17B3A3}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#c0c4cc}.el-step__description.is-success{color:#67c23a}.el-step__description.is-error{color:#f56c6c}.el-step__description.is-finish{color:#17B3A3}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#c0c4cc}.el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{overflow-x:hidden;position:relative}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);margin:0;padding:0;z-index:2}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#c0c4cc;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{display:inline-block;background-color:transparent;padding:12px 4px;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-carousel__mask,.el-cascader-menu,.el-cascader-menu__item.is-disabled:hover,.el-collapse-item__header,.el-collapse-item__wrap{background-color:#fff}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-carousel__item,.el-carousel__mask{height:100%;top:0;left:0;position:absolute}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;opacity:.24;-webkit-transition:.2s;transition:.2s}.el-collapse{border-top:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.el-collapse-item__header{height:48px;line-height:48px;color:#303133;cursor:pointer;border-bottom:1px solid #ebeef5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin-right:8px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:right;line-height:48px;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#17B3A3}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #ebeef5}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader .el-input,.el-cascader .el-input__inner{cursor:pointer}.el-cascader .el-input__icon{-webkit-transition:none;transition:none}.el-cascader .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-icon-arrow-down.is-reverse{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-cascader .el-icon-circle-close{z-index:2;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-cascader .el-icon-circle-close:hover{color:#909399}.el-cascader__clearIcon{z-index:2;position:relative}.el-cascader__label{position:absolute;left:0;top:0;height:100%;padding:0 25px 0 15px;color:#606266;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;text-align:left;font-size:inherit}.el-cascader__label span{color:#000}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#c0c4cc}.el-cascader-menus{white-space:nowrap;background:#fff;position:absolute;margin:5px 0;z-index:2;border:1px solid #e4e7ed;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader-menu{display:inline-block;vertical-align:top;height:204px;overflow:auto;border-right:solid 1px #e4e7ed;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:6px 0;min-width:160px}.el-cascader-menu:last-child{border-right:0}.el-cascader-menu__item{font-size:14px;padding:8px 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;outline:0}.el-cascader-menu__item--extensible:after{font-family:element-icons;content:"\e604";font-size:14px;color:#bfcbd9;position:absolute;right:15px}.el-cascader-menu__item.is-disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-cascader-menu__item.is-active{color:#17B3A3}.el-cascader-menu__item:focus:not(:active),.el-cascader-menu__item:hover{background-color:#f5f7fa}.el-cascader-menu__item.selected{color:#fff;background-color:#f5f7fa}.el-cascader-menu__item__keyword{font-weight:700}.el-cascader-menu--flexible{height:auto;max-height:180px;overflow:auto}.el-cascader-menu--flexible .el-cascader-menu__item{overflow:visible}.el-color-predefine{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #17B3A3;box-shadow:0 0 3px 2px #17B3A3}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(transparent));background:linear-gradient(to top,#000,transparent)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#17B3A3;border-color:#17B3A3}.el-color-dropdown__link-btn{cursor:pointer;color:#17B3A3;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(primary,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.el-color-picker__trigger{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty,.el-color-picker__icon{top:50%;left:50%;font-size:12px;position:absolute}.el-color-picker__empty{color:#999;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;width:100%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);color:#fff;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner:-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#17B3A3}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;line-height:16px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__prefix,.el-input__suffix{position:absolute;top:0;-webkit-transition:all .3s;height:100%;color:#c0c4cc;text-align:center}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner:-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#17B3A3;outline:0}.el-input__suffix{right:5px;transition:all .3s}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{left:5px;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button:focus,.el-button:hover{color:#17B3A3;border-color:rgb(185, 232, 227);background-color:rgb(232, 247, 246)}.el-button:active{color:rgb(21, 161, 147);border-color:rgb(21, 161, 147);outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#17B3A3;color:#17B3A3}.el-button.is-active,.el-button.is-plain:active{color:rgb(21, 161, 147);border-color:rgb(21, 161, 147)}.el-button.is-plain:active{background:#fff;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#17B3A3;border-color:#17B3A3}.el-button--primary:focus,.el-button--primary:hover{background:rgb(69, 194, 181);border-color:rgb(69, 194, 181);color:#fff}.el-button--primary.is-active,.el-button--primary:active{background:rgb(21, 161, 147);border-color:rgb(21, 161, 147);color:#fff}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:rgb(139, 217, 209);border-color:rgb(139, 217, 209)}.el-button--primary.is-plain{color:#17B3A3;background:rgb(232, 247, 246);border-color:rgb(162, 225, 218)}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#17B3A3;border-color:#17B3A3;color:#fff}.el-button--primary.is-plain:active{background:rgb(21, 161, 147);border-color:rgb(21, 161, 147);color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:rgb(116, 209, 200);background-color:rgb(232, 247, 246);border-color:rgb(209, 240, 237)}.el-button--success{color:#fff;background-color:#67c23a;border-color:#67c23a}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#fff}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#fff}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67c23a;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67c23a;border-color:#67c23a;color:#fff}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--text,.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--mini,.el-button--small{font-size:12px;border-radius:3px}.el-button--medium.is-round{padding:10px 20px}.el-button--small,.el-button--small.is-round{padding:9px 15px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--text{color:#17B3A3;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:rgb(69, 194, 181);border-color:transparent;background-color:transparent}.el-button--text:active{color:rgb(21, 161, 147);background-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-button-group::after{clear:both}.el-button-group .el-button{float:left;position:relative}.el-button-group .el-button+.el-button{margin-left:0}.el-button-group .el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group .el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group .el-button:first-child:last-child{border-radius:4px}.el-button-group .el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group .el-button:not(:last-child){margin-right:-1px}.el-button-group .el-button.is-active,.el-button-group .el-button:active,.el-button-group .el-button:focus,.el-button-group .el-button:hover{z-index:1}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-checkbox{color:#606266;font-size:14px;cursor:pointer;user-select:none}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#17B3A3}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#17B3A3;border-color:#17B3A3}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#17B3A3}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#17B3A3}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#17B3A3}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms,-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{position:relative;display:inline-block}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox+.el-checkbox{margin-left:30px}.el-checkbox-button__inner{line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#17B3A3}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#17B3A3;border-color:#17B3A3;-webkit-box-shadow:-1px 0 0 0 rgb(116, 209, 200);box-shadow:-1px 0 0 0 rgb(116, 209, 200)}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#17B3A3}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#17B3A3}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#fff;background-color:#17B3A3;font-size:0}.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #dcdfe6;background-color:#f5f7fa;color:#c0c4cc}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer-panel{border:1px solid #ebeef5;border-radius:4px;overflow:hidden;background:#fff;display:inline-block;vertical-align:middle;width:200px;max-height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#17B3A3}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#f5f7fa;margin:0;padding-left:15px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-container,.el-header{-webkit-box-sizing:border-box}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#fff;margin:0;padding:0;border-top:1px solid #ebeef5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.el-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;box-sizing:border-box;min-width:0}.el-container.is-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside,.el-main{overflow:auto;-webkit-box-sizing:border-box}.el-aside{box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-main{-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;box-sizing:border-box;padding:20px}.el-footer{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}
1
@charset "UTF-8";.el-pagination--small .arrow.disabled,.el-table .hidden-columns,.el-table td.is-hidden>*,.el-table th.is-hidden>*,.el-table--hidden{visibility:hidden}.el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}@font-face{font-family:element-icons;src:url(fonts/element-icons.woff) format("woff"),url(fonts/element-icons.ttf) format("truetype");font-weight:400;font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-info:before{content:"\e61a"}.el-icon-error:before{content:"\e62c"}.el-icon-success:before{content:"\e62d"}.el-icon-warning:before{content:"\e62e"}.el-icon-question:before{content:"\e634"}.el-icon-back:before{content:"\e606"}.el-icon-arrow-left:before{content:"\e600"}.el-icon-arrow-down:before{content:"\e603"}.el-icon-arrow-right:before{content:"\e604"}.el-icon-arrow-up:before{content:"\e605"}.el-icon-caret-left:before{content:"\e60a"}.el-icon-caret-bottom:before{content:"\e60b"}.el-icon-caret-top:before{content:"\e60c"}.el-icon-caret-right:before{content:"\e60e"}.el-icon-d-arrow-left:before{content:"\e610"}.el-icon-d-arrow-right:before{content:"\e613"}.el-icon-minus:before{content:"\e621"}.el-icon-plus:before{content:"\e62b"}.el-icon-remove:before{content:"\e635"}.el-icon-circle-plus:before{content:"\e601"}.el-icon-remove-outline:before{content:"\e63c"}.el-icon-circle-plus-outline:before{content:"\e602"}.el-icon-close:before{content:"\e60f"}.el-icon-check:before{content:"\e611"}.el-icon-circle-close:before{content:"\e607"}.el-icon-circle-check:before{content:"\e639"}.el-icon-circle-close-outline:before{content:"\e609"}.el-icon-circle-check-outline:before{content:"\e63e"}.el-icon-zoom-out:before{content:"\e645"}.el-icon-zoom-in:before{content:"\e641"}.el-icon-d-caret:before{content:"\e615"}.el-icon-sort:before{content:"\e640"}.el-icon-sort-down:before{content:"\e630"}.el-icon-sort-up:before{content:"\e631"}.el-icon-tickets:before{content:"\e63f"}.el-icon-document:before{content:"\e614"}.el-icon-goods:before{content:"\e618"}.el-icon-sold-out:before{content:"\e63b"}.el-icon-news:before{content:"\e625"}.el-icon-message:before{content:"\e61b"}.el-icon-date:before{content:"\e608"}.el-icon-printer:before{content:"\e62f"}.el-icon-time:before{content:"\e642"}.el-icon-bell:before{content:"\e622"}.el-icon-mobile-phone:before{content:"\e624"}.el-icon-service:before{content:"\e63a"}.el-icon-view:before{content:"\e643"}.el-icon-menu:before{content:"\e620"}.el-icon-more:before{content:"\e646"}.el-icon-more-outline:before{content:"\e626"}.el-icon-star-on:before{content:"\e637"}.el-icon-star-off:before{content:"\e63d"}.el-icon-location:before{content:"\e61d"}.el-icon-location-outline:before{content:"\e61f"}.el-icon-phone:before{content:"\e627"}.el-icon-phone-outline:before{content:"\e628"}.el-icon-picture:before{content:"\e629"}.el-icon-picture-outline:before{content:"\e62a"}.el-icon-delete:before{content:"\e612"}.el-icon-search:before{content:"\e619"}.el-icon-edit:before{content:"\e61c"}.el-icon-edit-outline:before{content:"\e616"}.el-icon-rank:before{content:"\e632"}.el-icon-refresh:before{content:"\e633"}.el-icon-share:before{content:"\e636"}.el-icon-setting:before{content:"\e638"}.el-icon-upload:before{content:"\e60d"}.el-icon-upload2:before{content:"\e644"}.el-icon-download:before{content:"\e617"}.el-icon-loading:before{content:"\e61e"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination::after,.el-pagination::before{display:table;content:""}.el-pagination::after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pager li,.el-pagination__editor{-webkit-box-sizing:border-box;text-align:center}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px;height:28px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#3C8DBD}.el-pagination button:disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat #fff;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#c0c4cc;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .more::before,.el-pagination--small li.more::before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#3C8DBD}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;margin:0 2px;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#c0c4cc}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#3C8DBD}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#3C8DBD;color:#fff}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-radio,.el-table th{-webkit-user-select:none}.el-date-table,.el-radio,.el-table th{-moz-user-select:none;-ms-user-select:none}.el-pager .more::before{line-height:30px}.el-pager li{padding:0 4px;background:#fff;font-size:13px;min-width:35.5px;height:28px;line-height:28px;box-sizing:border-box}.el-menu--collapse .el-menu .el-submenu,.el-menu--popup{min-width:200px}.el-dialog,.el-dialog__footer{-webkit-box-sizing:border-box}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#c0c4cc}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#3C8DBD}.el-pager li.active{color:#3C8DBD;cursor:default}@-webkit-keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}.el-dialog{position:relative;margin:0 auto 50px;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#3C8DBD}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;line-height:24px;font-size:14px}.el-dialog__footer{padding:10px 20px 20px;text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px}.el-dropdown-menu,.el-menu--collapse .el-submenu .el-menu{z-index:10;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:auto;background-color:#fff;border:1px solid #e4e7ed;border-radius:4px}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#f5f7fa}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#fff}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button::before{content:'';position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:rgba(255,255,255,.5)}.el-dropdown .el-dropdown__caret-button:hover::before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing){outline-width:0}.el-dropdown-menu{position:absolute;top:0;left:0;padding:10px 0;margin:5px 0;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:rgb(232, 247, 246);color:rgb(69, 194, 181)}.el-dropdown-menu__item--divided:before,.el-menu,.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #ebeef5}.el-dropdown-menu__item--divided:before{content:'';height:6px;display:block;margin:0 -20px}.el-menu::after,.el-menu::before,.el-radio__inner::after,.el-switch__core:after{content:""}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:solid 1px #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0}.el-menu::after,.el-menu::before{display:table}.el-menu::after{clear:both}.el-menu--horizontal{border-right:none;border-bottom:solid 1px #e6e6e6}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #3C8DBD;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu__title.is-active{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #3C8DBD;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;border:1px solid #e4e7ed;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;position:relative;-webkit-box-sizing:border-box;white-space:nowrap;list-style:none}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.el-menu--popup{z-index:100;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:rgb(232, 247, 246)}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#3C8DBD}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:rgb(232, 247, 246)}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:rgb(232, 247, 246)}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-submenu.is-active .el-submenu__title{border-bottom-color:#3C8DBD}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-radio{color:#606266;font-weight:500;line-height:1;cursor:pointer;white-space:nowrap;outline:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#3C8DBD}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio+.el-radio{margin-left:30px}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#3C8DBD;background:#3C8DBD}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#3C8DBD}.el-radio__input.is-focus .el-radio__inner{border-color:#3C8DBD}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio-button__inner,.el-switch__core{-webkit-box-sizing:border-box;vertical-align:middle}.el-radio__inner:hover{border-color:#3C8DBD}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#fff;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6);transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6);transition:transform .15s cubic-bezier(.71,-.46,.88,.6);transition:transform .15s cubic-bezier(.71,-.46,.88,.6),-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6)}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio-button,.el-radio-button__inner{display:inline-block;position:relative;outline:0}.el-radio:focus:not(.is-focus):not(:active) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #3C8DBD;box-shadow:0 0 2px 2px #3C8DBD}.el-radio__label{font-size:14px;padding-left:10px}.el-radio-group{display:inline-block;line-height:1;vertical-align:middle;font-size:0}.el-radio-button__inner{line-height:1;white-space:nowrap;background:#fff;border:1px solid #dcdfe6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;margin:0;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#3C8DBD}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#3C8DBD;border-color:#3C8DBD;-webkit-box-shadow:-1px 0 0 0 #3C8DBD;box-shadow:-1px 0 0 0 #3C8DBD}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#f2f6fc}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-popover,.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active){-webkit-box-shadow:0 0 2px 2px #3C8DBD;box-shadow:0 0 2px 2px #3C8DBD}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#3C8DBD}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__input:focus~.el-switch__core{outline:#3C8DBD solid 1px}.el-message__closeBtn:focus,.el-message__content:focus,.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing),.el-rate:active,.el-rate:focus,.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing),.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #dcdfe6;outline:0;border-radius:10px;box-sizing:border-box;background:#dcdfe6;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s}.el-switch__core:after{position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#fff}.el-switch.is-checked .el-switch__core{border-color:#3C8DBD;background-color:#3C8DBD}.el-switch.is-checked .el-switch__core::after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #e4e7ed;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#3C8DBD;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\E611";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#3C8DBD;font-weight:700}.el-select-dropdown__item span{line-height:34px!important}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select:hover .el-input__inner{border-color:#c0c4cc}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#3C8DBD}.el-select .el-input .el-select__caret{color:#c0c4cc;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);line-height:16px;cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#c0c4cc;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#e4e7ed}.el-select .el-input.is-focus .el-input__inner{border-color:#3C8DBD}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#c0c4cc;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5}.el-select .el-tag__close.el-icon-close{background-color:#c0c4cc;right:-7px;top:0;color:#fff}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#fff}.el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table--mini,.el-table--small,.el-table__expand-icon{font-size:12px}.el-table__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-table__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th{background:#f5f7fa}.el-table th,.el-table tr{background-color:#fff}.el-table td,.el-table th{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative}.el-table th div,.el-table th>.cell{-webkit-box-sizing:border-box;display:inline-block}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td.is-left,.el-table th.is-left{text-align:left}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table--medium td,.el-table--medium th{padding:10px 0}.el-table--small td,.el-table--small th{padding:8px 0}.el-table--mini td,.el-table--mini th{padding:6px 0}.el-table .cell,.el-table th div{padding-right:10px;overflow:hidden;text-overflow:ellipsis}.el-table .cell,.el-table th div,.el-table--border td:first-child .cell,.el-table--border th:first-child .cell{padding-left:10px}.el-table tr input[type=checkbox]{margin:0}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #ebeef5}.el-table th.is-sortable{cursor:pointer}.el-table th{white-space:nowrap;overflow:hidden;user-select:none;text-align:left}.el-table th div{line-height:40px;box-sizing:border-box;white-space:nowrap}.el-table th>.cell{position:relative;word-wrap:normal;text-overflow:ellipsis;vertical-align:middle;width:100%;box-sizing:border-box}.el-table th>.cell.highlight{color:#3C8DBD}.el-table th.required>div::before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-table td.gutter{width:0}.el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;white-space:normal;word-break:break-all;line-height:23px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #ebeef5}.el-table--border::after,.el-table--group::after,.el-table::before{content:'';position:absolute;background-color:#ebeef5;z-index:1}.el-table--border::after,.el-table--group::after{top:0;right:0;width:1px;height:100%}.el-table::before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border td,.el-table--border th,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #ebeef5}.el-table--border th.gutter:last-of-type{border-bottom:1px solid #ebeef5;border-bottom-width:1px}.el-table--border th,.el-table__fixed-right-patch{border-bottom:1px solid #ebeef5}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right::before,.el-table__fixed::before{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#ebeef5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#fff}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #ebeef5;background-color:#f5f7fa;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #ebeef5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#f5f7fa;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-picker-panel,.el-table-filter{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #ebeef5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#c0c4cc;top:5px}.el-table .sort-caret.descending{border-top-color:#c0c4cc;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#3C8DBD}.el-table .descending .sort-caret.descending{border-top-color:#3C8DBD}.el-table .hidden-columns{position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#FAFAFA}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td,.el-table__body tr.current-row>td,.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:rgb(232, 247, 246)}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #ebeef5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#f5f7fa}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #ebeef5;border-radius:2px;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:rgb(232, 247, 246);color:rgb(69, 194, 181)}.el-table-filter__list-item.is-active{background-color:#3C8DBD;color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #ebeef5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table td.in-range div,.el-date-table td.in-range div:hover,.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#f2f6fc}.el-table-filter__bottom button:hover{color:#3C8DBD}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-webkit-user-select:none;user-select:none}.el-slider__button-wrapper,.el-time-panel{-ms-user-select:none;-moz-user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;height:30px;padding:4px 0;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{height:30px;padding:3px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-month-table td .cell,.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px}.el-date-table td.next-month,.el-date-table td.prev-month{color:#c0c4cc}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#3C8DBD;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#fff}.el-date-table td.available:hover{color:#3C8DBD}.el-date-table td.current:not(.disabled) span{color:#fff;background-color:#3C8DBD}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#fff}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#3C8DBD}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#f5f7fa;opacity:1;cursor:not-allowed;color:#c0c4cc}.el-fade-in-enter,.el-fade-in-leave-active,.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#f2f6fc;border-radius:15px}.el-date-table td.selected div:hover{background-color:#f2f6fc}.el-date-table td.selected span{background-color:#3C8DBD;color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:solid 1px #ebeef5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-month-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-month-table td.disabled .cell:hover{color:#c0c4cc}.el-month-table td .cell{color:#606266;margin:0 auto}.el-month-table td .cell:hover,.el-month-table td.current:not(.disabled) .cell{color:#3C8DBD}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-year-table td.disabled .cell:hover{color:#c0c4cc}.el-year-table td .cell{color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#3C8DBD}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content.is-right .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #ebeef5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#3C8DBD}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#3C8DBD;font-weight:700}.time-select-item.disabled{color:#e4e7ed;cursor:not-allowed}.time-select-item:hover{background-color:#f5f7fa;font-weight:700;cursor:pointer}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input,.el-date-editor .el-range-separator{height:100%;margin:0;text-align:center;display:inline-block;font-size:14px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;padding:0;width:39%;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input:-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{padding:0 5px;line-height:32px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{border-color:#3C8DBD}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input:-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-popover,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#3C8DBD}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#3C8DBD}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#3C8DBD}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#3C8DBD}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list::after,.el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#c0c4cc;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #e4e7ed;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;user-select:none}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #e4e7ed;border-bottom:1px solid #e4e7ed}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#3C8DBD}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #e4e7ed}.el-popover{position:absolute;background:#fff;min-width:150px;border:1px solid #ebeef5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#fff;border-radius:4px;border:1px solid #ebeef5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper::after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#f56c6c}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#3C8DBD}.el-message-box__content{position:relative;padding:10px 15px;color:#606266;font-size:14px}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status::before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67c23a}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#e6a23c}.el-message-box__status.el-icon-error{color:#f56c6c}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#f56c6c;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:""}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#c0c4cc}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#3C8DBD;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form-item__content .el-input-group,.el-form-item__label,.el-tag .el-icon-close{vertical-align:middle}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:""}.el-form-item::after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label{text-align:right;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:""}.el-form-item__content::after{clear:both}.el-form-item__error{color:#f56c6c;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required .el-form-item__label:before{content:'*';color:#f56c6c;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#f56c6c}.el-form-item.is-success .el-input__inner,.el-form-item.is-success .el-input__inner:focus,.el-form-item.is-success .el-textarea__inner,.el-form-item.is-success .el-textarea__inner:focus{border-color:#67c23a}.el-form-item.is-success .el-input-group__append .el-input__inner,.el-form-item.is-success .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-success .el-input__validateIcon{color:#67c23a}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#3C8DBD;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#3C8DBD}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#e4e7ed;z-index:1}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after,.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-alert,.el-tag{-webkit-box-sizing:border-box}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #3C8DBD inset;box-shadow:0 0 2px 2px #3C8DBD inset;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#c0c4cc;color:#fff}.el-tabs__item.is-active{color:#3C8DBD}.el-tabs__item:hover{color:#3C8DBD;cursor:pointer}.el-tabs__item.is-disabled{color:#c0c4cc;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #e4e7ed}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #e4e7ed;border-bottom:none;border-radius:4px 4px 0 0}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #e4e7ed;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--border-card{background:#fff;border:1px solid #dcdfe6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin:-1px -1px 0;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#3C8DBD;background-color:#fff;border-right-color:#dcdfe6;border-left-color:#dcdfe6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#3C8DBD}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#c0c4cc}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card .el-tabs__item:last-child,.el-tabs--top .el-tabs--left .el-tabs__item:last-child,.el-tabs--top .el-tabs--right .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card .el-tabs__item:last-child,.el-tabs--top.el-tabs--card .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #dcdfe6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left::after,.el-tabs--left .el-tabs__nav-wrap.is-right::after,.el-tabs--right .el-tabs__nav-wrap.is-left::after,.el-tabs--right .el-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav,.el-tabs--right .el-tabs__nav{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--left .el-tabs__nav-next,.el-tabs--left .el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-next,.el-tabs--right .el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}.el-tabs--left .el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-next,.el-tabs--right .el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left::after{right:0;left:auto}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #e4e7ed;border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #e4e7ed;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #e4e7ed;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #e4e7ed;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right::after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tag,.slideInLeft-transition,.slideInRight-transition{display:inline-block}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #e4e7ed;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #e4e7ed;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #e4e7ed;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tag{background-color:rgba(64,158,255,.1);padding:0 10px;height:32px;line-height:30px;font-size:12px;color:#3C8DBD;border-radius:4px;box-sizing:border-box;border:1px solid rgba(64,158,255,.2);white-space:nowrap}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;top:-1px;right:-5px;color:#3C8DBD}.el-tag .el-icon-close::before{display:block}.el-tag .el-icon-close:hover{background-color:#3C8DBD;color:#fff}.el-tag--info,.el-tag--info .el-tag__close{color:#909399}.el-tag--info{background-color:rgba(144,147,153,.1);border-color:rgba(144,147,153,.2)}.el-tag--info.is-hit{border-color:#909399}.el-tag--info .el-tag__close:hover{background-color:#909399;color:#fff}.el-tag--success{background-color:rgba(103,194,58,.1);border-color:rgba(103,194,58,.2);color:#67c23a}.el-tag--success.is-hit{border-color:#67c23a}.el-tag--success .el-tag__close{color:#67c23a}.el-tag--success .el-tag__close:hover{background-color:#67c23a;color:#fff}.el-tag--warning{background-color:rgba(230,162,60,.1);border-color:rgba(230,162,60,.2);color:#e6a23c}.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--warning .el-tag__close:hover{background-color:#e6a23c;color:#fff}.el-tag--danger{background-color:rgba(245,108,108,.1);border-color:rgba(245,108,108,.2);color:#f56c6c}.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--danger .el-tag__close:hover{background-color:#f56c6c;color:#fff}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-tree{position:relative;cursor:default;background:#fff;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#6f7180}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#3C8DBD}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#f5f7fa}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#3C8DBD;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#f5f7fa}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#c0c4cc;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#c0c4cc}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success{background-color:#f0f9eb;color:#67c23a}.el-alert--success .el-alert__description{color:#67c23a}.el-alert--info{background-color:#f4f4f5;color:#909399}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning{background-color:#fdf6ec;color:#e6a23c}.el-alert--warning .el-alert__description{color:#e6a23c}.el-alert--error{background-color:#fef0f0;color:#f56c6c}.el-alert--error .el-alert__description{color:#f56c6c}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;color:#c0c4cc;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active{opacity:0}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67c23a}.el-notification .el-icon-error{color:#f56c6c}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#e6a23c}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#3C8DBD}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#3C8DBD}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #dcdfe6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #dcdfe6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#e4e7ed;color:#e4e7ed}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#e4e7ed;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #dcdfe6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #dcdfe6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-progress-bar__inner::after,.el-row::after,.el-row::before,.el-slider::after,.el-slider::before,.el-slider__button-wrapper::after,.el-upload-cover::after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.el-slider::after,.el-slider::before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper::after{vertical-align:middle;display:inline-block}.el-slider::after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#e4e7ed;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button{border-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1);cursor:not-allowed}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#3C8DBD;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;position:absolute;z-index:1001;top:-15px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;user-select:none;line-height:normal}.el-slider__button-wrapper::after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #3C8DBD;background-color:#fff;border-radius:50%;-webkit-transition:.2s;transition:.2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-button,.el-checkbox,.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{position:absolute;height:6px;width:6px;border-radius:100%;background-color:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #dcdfe6;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#c0c4cc}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#3C8DBD}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-10,.el-col-pull-11,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-2,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-push-0,.el-col-push-1,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-2,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-row{position:relative}.el-loading-spinner .el-loading-text{color:#3C8DBD;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#3C8DBD;stroke-linecap:round}.el-loading-spinner i{color:#3C8DBD}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{-webkit-box-sizing:border-box;box-sizing:border-box}.el-row::after,.el-row::before{display:table}.el-row::after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-upload--picture-card,.el-upload-dragger{-webkit-box-sizing:border-box;cursor:pointer}.el-col-0{width:0}.el-col-offset-0{margin-left:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:768px){.el-col-xs-0{display:none;width:0}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#3C8DBD;color:#3C8DBD}.el-upload:focus .el-upload-dragger{border-color:#3C8DBD}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#c0c4cc;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #dcdfe6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#3C8DBD;font-style:normal}.el-upload-dragger:hover{border-color:#3C8DBD}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #3C8DBD}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67c23a}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#3C8DBD}.el-upload-list__item:hover{background-color:#f5f7fa}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#3C8DBD;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#3C8DBD}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover::after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle{display:inline-block}.el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__inner::after,.el-progress-bar__innerText,.el-spinner{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67c23a}.el-progress.is-success .el-progress__text{color:#67c23a}.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#3C8DBD;text-align:right;border-radius:100px;line-height:1;white-space:nowrap}.el-card,.el-message{border-radius:4px;overflow:hidden}.el-progress-bar__inner::after{height:100%}.el-progress-bar__innerText{color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-width:1px;border-style:solid;border-color:#ebeef5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,-webkit-transform .4s;transition:opacity .3s,-webkit-transform .4s;transition:opacity .3s,transform .4s;transition:opacity .3s,transform .4s,-webkit-transform .4s;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67c23a}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#e6a23c}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#f56c6c}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#c0c4cc;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67c23a}.el-message .el-icon-error{color:#f56c6c}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#e6a23c}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#f56c6c;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-card{border:1px solid #ebeef5;background-color:#fff;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#c0c4cc;-webkit-transition:.3s;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-webkit-box;display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#c0c4cc;border-color:#c0c4cc}.el-step__head.is-success{color:#67c23a;border-color:#67c23a}.el-step__head.is-error{color:#f56c6c;border-color:#f56c6c}.el-step__head.is-finish{color:#3C8DBD;border-color:#3C8DBD}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-button,.el-checkbox{-ms-user-select:none;font-weight:500}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#c0c4cc}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#c0c4cc}.el-step__title.is-success{color:#67c23a}.el-step__title.is-error{color:#f56c6c}.el-step__title.is-finish{color:#3C8DBD}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#c0c4cc}.el-step__description.is-success{color:#67c23a}.el-step__description.is-error{color:#f56c6c}.el-step__description.is-finish{color:#3C8DBD}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#c0c4cc}.el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{overflow-x:hidden;position:relative}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);margin:0;padding:0;z-index:2}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#c0c4cc;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{display:inline-block;background-color:transparent;padding:12px 4px;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-carousel__mask,.el-cascader-menu,.el-cascader-menu__item.is-disabled:hover,.el-collapse-item__header,.el-collapse-item__wrap{background-color:#fff}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-carousel__item,.el-carousel__mask{height:100%;top:0;left:0;position:absolute}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;opacity:.24;-webkit-transition:.2s;transition:.2s}.el-collapse{border-top:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.el-collapse-item__header{height:48px;line-height:48px;color:#303133;cursor:pointer;border-bottom:1px solid #ebeef5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin-right:8px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:right;line-height:48px;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#3C8DBD}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #ebeef5}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader .el-input,.el-cascader .el-input__inner{cursor:pointer}.el-cascader .el-input__icon{-webkit-transition:none;transition:none}.el-cascader .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-icon-arrow-down.is-reverse{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-cascader .el-icon-circle-close{z-index:2;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-cascader .el-icon-circle-close:hover{color:#909399}.el-cascader__clearIcon{z-index:2;position:relative}.el-cascader__label{position:absolute;left:0;top:0;height:100%;padding:0 25px 0 15px;color:#606266;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;text-align:left;font-size:inherit}.el-cascader__label span{color:#000}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#c0c4cc}.el-cascader-menus{white-space:nowrap;background:#fff;position:absolute;margin:5px 0;z-index:2;border:1px solid #e4e7ed;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader-menu{display:inline-block;vertical-align:top;height:204px;overflow:auto;border-right:solid 1px #e4e7ed;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:6px 0;min-width:160px}.el-cascader-menu:last-child{border-right:0}.el-cascader-menu__item{font-size:14px;padding:8px 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;outline:0}.el-cascader-menu__item--extensible:after{font-family:element-icons;content:"\e604";font-size:14px;color:#bfcbd9;position:absolute;right:15px}.el-cascader-menu__item.is-disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-cascader-menu__item.is-active{color:#3C8DBD}.el-cascader-menu__item:focus:not(:active),.el-cascader-menu__item:hover{background-color:#f5f7fa}.el-cascader-menu__item.selected{color:#fff;background-color:#f5f7fa}.el-cascader-menu__item__keyword{font-weight:700}.el-cascader-menu--flexible{height:auto;max-height:180px;overflow:auto}.el-cascader-menu--flexible .el-cascader-menu__item{overflow:visible}.el-color-predefine{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #3C8DBD;box-shadow:0 0 3px 2px #3C8DBD}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(transparent));background:linear-gradient(to top,#000,transparent)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#3C8DBD;border-color:#3C8DBD}.el-color-dropdown__link-btn{cursor:pointer;color:#3C8DBD;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(primary,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.el-color-picker__trigger{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty,.el-color-picker__icon{top:50%;left:50%;font-size:12px;position:absolute}.el-color-picker__empty{color:#999;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;width:100%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);color:#fff;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner:-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#3C8DBD}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;line-height:16px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__prefix,.el-input__suffix{position:absolute;top:0;-webkit-transition:all .3s;height:100%;color:#c0c4cc;text-align:center}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner:-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#3C8DBD;outline:0}.el-input__suffix{right:5px;transition:all .3s}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{left:5px;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button:focus,.el-button:hover{color:#3C8DBD;border-color:rgb(185, 232, 227);background-color:rgb(232, 247, 246)}.el-button:active{color:rgb(21, 161, 147);border-color:rgb(21, 161, 147);outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#3C8DBD;color:#3C8DBD}.el-button.is-active,.el-button.is-plain:active{color:rgb(21, 161, 147);border-color:rgb(21, 161, 147)}.el-button.is-plain:active{background:#fff;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#3C8DBD;border-color:#3C8DBD}.el-button--primary:focus,.el-button--primary:hover{background:rgb(69, 194, 181);border-color:rgb(69, 194, 181);color:#fff}.el-button--primary.is-active,.el-button--primary:active{background:rgb(21, 161, 147);border-color:rgb(21, 161, 147);color:#fff}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:rgb(139, 217, 209);border-color:rgb(139, 217, 209)}.el-button--primary.is-plain{color:#3C8DBD;background:rgb(232, 247, 246);border-color:rgb(162, 225, 218)}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#3C8DBD;border-color:#3C8DBD;color:#fff}.el-button--primary.is-plain:active{background:rgb(21, 161, 147);border-color:rgb(21, 161, 147);color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:rgb(116, 209, 200);background-color:rgb(232, 247, 246);border-color:rgb(209, 240, 237)}.el-button--success{color:#fff;background-color:#67c23a;border-color:#67c23a}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#fff}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#fff}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67c23a;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67c23a;border-color:#67c23a;color:#fff}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--text,.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--mini,.el-button--small{font-size:12px;border-radius:3px}.el-button--medium.is-round{padding:10px 20px}.el-button--small,.el-button--small.is-round{padding:9px 15px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--text{color:#3C8DBD;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:rgb(69, 194, 181);border-color:transparent;background-color:transparent}.el-button--text:active{color:rgb(21, 161, 147);background-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-button-group::after{clear:both}.el-button-group .el-button{float:left;position:relative}.el-button-group .el-button+.el-button{margin-left:0}.el-button-group .el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group .el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group .el-button:first-child:last-child{border-radius:4px}.el-button-group .el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group .el-button:not(:last-child){margin-right:-1px}.el-button-group .el-button.is-active,.el-button-group .el-button:active,.el-button-group .el-button:focus,.el-button-group .el-button:hover{z-index:1}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-checkbox{color:#606266;font-size:14px;cursor:pointer;user-select:none}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#3C8DBD}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#3C8DBD;border-color:#3C8DBD}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#3C8DBD}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#3C8DBD}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#3C8DBD}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms,-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{position:relative;display:inline-block}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox+.el-checkbox{margin-left:30px}.el-checkbox-button__inner{line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#3C8DBD}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#3C8DBD;border-color:#3C8DBD;-webkit-box-shadow:-1px 0 0 0 rgb(116, 209, 200);box-shadow:-1px 0 0 0 rgb(116, 209, 200)}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#3C8DBD}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#3C8DBD}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#fff;background-color:#3C8DBD;font-size:0}.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #dcdfe6;background-color:#f5f7fa;color:#c0c4cc}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer-panel{border:1px solid #ebeef5;border-radius:4px;overflow:hidden;background:#fff;display:inline-block;vertical-align:middle;width:200px;max-height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#3C8DBD}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#f5f7fa;margin:0;padding-left:15px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-container,.el-header{-webkit-box-sizing:border-box}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#fff;margin:0;padding:0;border-top:1px solid #ebeef5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.el-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;box-sizing:border-box;min-width:0}.el-container.is-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside,.el-main{overflow:auto;-webkit-box-sizing:border-box}.el-aside{box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-main{-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;box-sizing:border-box;padding:20px}.el-footer{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}

+ 1 - 0
src/icons/svg/icon-branchmeeting.svg

@ -0,0 +1 @@
1
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1609817383923" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8696" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M538 583.4l13 0c7.2 0 13 5.8 13 13l0 208c0 7.2-5.8 13-13 13l-13 0c-7.2 0-13-5.8-13-13l0-208C525 589.2 530.8 583.4 538 583.4zM473 583.4l13 0c7.2 0 13 5.8 13 13l0 208c0 7.2-5.8 13-13 13l-13 0c-7.2 0-13-5.8-13-13l0-208C460 589.2 465.8 583.4 473 583.4zM174 206.4c-14.4 0-26 11.6-26 26 0 14.3 11.7 26 26 26 14.4 0 26-11.7 26-26C200 218.1 188.4 206.4 174 206.4zM174 297.5c-35.9 0-65-29.1-65-65 0-35.9 29.1-65 65-65 35.9 0 65 29.1 65 65C239 268.3 209.9 297.5 174 297.5zM356 687.4l-143-78 0-221c0 0-3.7-26-39-26-31.9 0-39 26-39 26l0 195c0 0-2.2 20.2 13 26l195 91 0 156 13 0L356 687.4zM395 700.4l0 156c0 0-2.9 41.7-52 39-37.6-2.1-39-39-39-39l0-130-169-78c0 0-38.5-14.5-39-52 0-1.8 0-221 0-221s17.9-51.3 78-52c62.3-0.7 78 52 78 52l0 208 117 65C369 648.4 394.1 657.3 395 700.4zM512 167.3c-14.4 0-26 11.6-26 25.9 0 14.3 11.7 25.9 26 25.9s26-11.6 26-25.9C538 178.9 526.4 167.3 512 167.3zM512 258c-35.9 0-65-29-65-64.8 0-35.7 29.1-64.7 65-64.7 35.9 0 65 29 65 64.7C577 229 547.9 258 512 258zM564 348.6c0 0-2.3-26.7-52-25.9-53.6 0.8-52 25.9-52 25.9l0 156.8 104 0L564 348.6zM707 544.5 317 544.5c0 0-13-2.2-13-17.9 0-19.6 13-21.2 13-21.2l104 0 0-169.8c0 0-0.5-51.3 91-51.8 83.9-0.5 91 51.8 91 51.8l0 169.8 104 0c0 0 13 5 13 19.1C720 537.7 707 544.5 707 544.5zM850 206.3c-14.4 0-26 11.6-26 25.9 0 14.3 11.6 25.9 26 25.9 14.3 0 26-11.6 26-25.9C876 217.9 864.3 206.3 850 206.3zM850 296.9c-35.9 0-65-29-65-64.7s29.1-64.7 65-64.7c35.9 0 65 29 65 64.7S885.9 296.9 850 296.9zM889 581.9 889 387.6c0 0-7.1-25.9-38.9-25.9-35.4 0-39 25.9-39 25.9l0 220.2-143 77.7 0 168.4 13 0L681.1 698.5l195-90.6C891.1 602 889 581.9 889 581.9zM928 594.8c-0.5 37.4-39 51.8-39 51.8l-169 77.7 0 129.5c0 0-1.4 36.8-39 38.8-49.1 2.7-52-38.8-52-38.8L629 698.5c0.9-43 26-51.8 26-51.8l117-64.7L772 374.7c0 0 15.7-52.5 78-51.8 60.1 0.7 78 51.8 78 51.8S928 593.1 928 594.8z" p-id="8697"></path></svg>

+ 1 - 0
src/icons/svg/icon-invitation.svg

@ -0,0 +1 @@
1
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1609817232942" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7840" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M153.317874 943.149601c-17.451464 0-31.600719-14.149255-31.600719-31.600719 0-84.803431 106.327654-152.833851 273.388531-176.781262l0-4.582365c-75.391061-57.075927-123.285884-158.326958-123.285884-263.204587 0-248.12924 134.25675-300.205293 246.879784-300.205293s246.879784 52.076052 246.879784 300.205293c0 17.451464-14.149255 31.600719-31.600719 31.600719-17.451464 0-31.600719-14.149255-31.600719-31.600719 0-212.440413-104.83158-237.004879-183.678346-237.004879S335.02124 254.540254 335.02124 466.979644c0 89.215928 43.790342 177.768753 108.98211 220.386386 8.918114 5.832845 14.303774 15.784498 14.303774 26.447349l0 48.804543c0 16.124236-12.128225 29.656437-28.15934 31.4155-153.496953 16.819061-245.229191 72.952522-245.229191 117.514437C184.918593 929.000346 170.769338 943.149601 153.317874 943.149601z" p-id="7841"></path><path d="M884.08232 943.149601c-17.451464 0-31.600719-14.149255-31.600719-31.600719 0-44.561915-91.731214-100.6964-245.228167-117.514437-16.032138-1.759063-28.15934-15.291265-28.15934-31.4155l0-48.804543c0-17.451464 14.149255-31.600719 31.600719-31.600719s31.600719 14.149255 31.600719 31.600719l0 20.954241c167.060877 23.947412 273.388531 91.977831 273.388531 176.781262C915.683039 929.000346 901.533784 943.149601 884.08232 943.149601z" p-id="7842"></path><path d="M901.765051 584.633251c-17.451464 0-31.600719-14.149255-31.600719-31.600719L870.164333 439.452707l-39.269375-9.813506c-14.057157-3.518127-23.932062-16.154935-23.932062-30.659277 0-159.006434-129.349997-288.355407-288.355407-288.355407S230.252081 239.974513 230.252081 398.979924c0 9.397021-4.181229 18.315134-11.418051 24.317848l-23.468504 19.487843 0 110.246917c0 17.451464-14.149255 31.600719-31.600719 31.600719s-31.600719-14.149255-31.600719-31.600719L132.164089 427.942559c0-9.397021 4.181229-18.315134 11.418051-24.317848l23.792892-19.750833C175.321004 197.017142 329.821821 47.423079 518.607488 47.423079c185.483458 0 337.885474 144.378272 350.693174 326.667991l40.133046 10.029424c14.057157 3.518127 23.932062 16.154935 23.932062 30.659277l0 138.252761C933.36577 570.483996 919.216515 584.633251 901.765051 584.633251z" p-id="7843"></path><path d="M556.025703 636.447337c-17.451464 0-31.600719-14.149255-31.600719-31.600719 0-17.451464 14.149255-31.600719 31.600719-31.600719 176.781262 0 229.674936-43.327808 235.152694-60.038398l30.829146 6.711865 31.322379 4.13518C850.861708 542.817889 824.892243 636.447337 556.025703 636.447337z" p-id="7844"></path></svg>

+ 1 - 0
src/icons/svg/icon-meeting.svg

@ -0,0 +1 @@
1
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1609817132231" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6892" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M1024.342857 146.057143v-49.142857c0-13.257143-10.742857-24-24-24H24.228571c-13.257143 0-24 10.742857-24 24V704c0 13.257143 10.742857 24 24 24H123.428571v200c0 12.571429 10.285714 22.857143 22.857143 22.857143s22.857143-10.285714 22.857143-22.857143V728h685.714286v200c0 12.571429 10.285714 22.857143 22.857143 22.857143s22.857143-10.285714 22.857143-22.857143V728h99.771428c13.257143 0 24-10.742857 24-24V219.428571h-45.714286v462.857143H45.942857V118.628571h932.685714v27.428572h45.714286z" p-id="6893"></path><path d="M877.828571 349.942857h-228.571428c-12.571429 0-22.857143-10.285714-22.857143-22.857143s10.285714-22.857143 22.857143-22.857143h228.571428c12.571429 0 22.857143 10.285714 22.857143 22.857143s-10.171429 22.857143-22.857143 22.857143zM877.828571 496.685714h-228.571428c-12.571429 0-22.857143-10.285714-22.857143-22.857143s10.285714-22.857143 22.857143-22.857142h228.571428c12.571429 0 22.857143 10.285714 22.857143 22.857142s-10.171429 22.857143-22.857143 22.857143zM318.285714 594.857143c-107.085714 0-194.285714-87.2-194.285714-194.285714s87.2-194.285714 194.285714-194.285715c26.171429 0 51.657143 5.142857 75.657143 15.314286 11.657143 4.914286 17.028571 18.285714 12.114286 29.942857-4.914286 11.657143-18.285714 17.028571-29.942857 12.114286-18.285714-7.771429-37.714286-11.657143-57.828572-11.657143-81.942857 0-148.571429 66.628571-148.571428 148.571429s66.628571 148.571429 148.571428 148.571428 148.571429-66.628571 148.571429-148.571428c0-26.742857-7.2-52.914286-20.685714-75.771429-6.4-10.857143-2.857143-24.914286 8-31.314286 10.857143-6.4 24.914286-2.857143 31.314285 8 17.714286 29.828571 27.085714 64.114286 27.085715 99.085715 0 107.085714-87.2 194.285714-194.285715 194.285714z" p-id="6894"></path><path d="M318.285714 505.714286c-57.942857 0-105.142857-47.2-105.142857-105.142857s47.2-105.142857 105.142857-105.142858c14.171429 0 28 2.742857 40.914286 8.228572 11.657143 4.914286 17.028571 18.285714 12.114286 29.942857-4.914286 11.657143-18.285714 17.028571-29.942857 12.114286-7.314286-3.085714-15.085714-4.685714-23.085715-4.685715-32.8 0-59.428571 26.628571-59.428571 59.428572s26.628571 59.428571 59.428571 59.428571c12.571429 0 22.857143 10.285714 22.857143 22.857143s-10.285714 22.971429-22.857143 22.971429z" p-id="6895"></path></svg>

+ 1 - 0
src/icons/svg/icon-member.svg

@ -0,0 +1 @@
1
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1609816572615" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1135" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M372.536668 527.623839c0 0-0.025583-0.025583-0.025583-0.050142 0-0.036839 0.025583-0.064468 0.025583-0.090051 0-11.374048-9.441023-20.60427-21.118993-20.60427-76.603679 0-138.912793-64.965617-138.912793-144.841829 0-79.859839 62.309114-144.844899 138.912793-144.844899 11.67797 0 21.118993-9.216919 21.118993-20.603247 0-11.388375-9.441023-20.603247-21.118993-20.603247-99.883895 0-181.145663 83.463923-181.145663 186.051393 0 68.421322 36.245506 128.181381 89.963964 160.503531C146.127102 561.913806 63.582107 672.802336 63.582107 803.369044c0 11.388375 9.44307 20.603247 21.123087 20.603247 11.668761 0 21.11183-9.214872 21.11183-20.603247 0-140.684136 110.169145-255.115352 245.600651-255.115352C363.095645 548.253692 372.536668 539.050076 372.536668 527.623839z" p-id="1136"></path><path d="M701.996239 536.789593c68.468394-36.663014 115.049293-107.536178 115.049293-188.988282 0-119.013581-99.207489-215.821417-221.144656-215.821417-121.946376 0-221.138516 96.80886-221.138516 215.821417 0 82.259492 47.438429 153.865343 117.007901 190.259228C346.96527 581.577658 241.414305 713.329355 241.414305 868.722494c0 11.386328 9.44307 20.618597 21.113877 20.618597 11.664667 0 21.107737-9.232269 21.107737-20.618597 0-168.014598 140.103922-304.731376 310.704414-304.795844 1.432629 0.14224 2.771113-0.177032 4.134157-0.357134 1.919722 0.357134 3.876284 0.561795 5.9055 0.357134 170.786735 0.064468 311.035966 136.780223 311.035966 304.795844 0 11.386328 9.454326 20.618597 21.13639 20.618597 11.694343 0 21.135366-9.232269 21.135366-20.618597C957.686688 711.543685 849.514013 578.75538 701.996239 536.789593zM595.900875 522.374278c-98.662067 0-178.917926-78.320787-178.917926-174.572968 0-96.296183 80.255859-174.615946 178.917926-174.615946 98.651834 0 178.909739 78.320787 178.909739 174.615946C774.810614 444.054515 694.552709 522.374278 595.900875 522.374278z" p-id="1137"></path></svg>

+ 1 - 0
src/icons/svg/icon-paper.svg

@ -0,0 +1 @@
1
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1609816836152" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2152" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M291.3 959c-37.9 0-69.2-4.7-93-14-16.4-6.4-29.4-15.1-38.7-25.8-11.4-13.1-17.1-28.9-17.2-46.8 0-19.8 7.9-38.2 22.8-53.2 14.8-14.9 36.2-26.4 63.4-34.2 22.3-6.4 47.8-9.9 71.8-9.9v46c-42.5 0-84.7 12.6-102.6 30.6-6.4 6.4-9.4 13-9.4 20.6 0 9.1 3.1 20.7 26.6 29.9 18.2 7.1 44.6 10.8 76.3 10.8 23.7 0 89.3-16.1 104.9-23.4l19.6 41.6c-20.4 9.6-93.6 27.8-124.5 27.8zM168 212.2c-2.6 0-5.3-0.4-7.9-1.4-11.9-4.4-18.1-17.6-13.7-29.5 4.7-12.9 18.8-35.5 60.8-41.3 25.9-3.6 56.5 0.4 86.3 11.3 11.9 4.3 18.1 17.5 13.7 29.5-4.3 11.9-17.5 18.1-29.5 13.7-47.7-17.4-84.2-8.2-88.1 2.5-3.4 9.4-12.2 15.2-21.6 15.2z" fill="" p-id="2153"></path><path d="M163.9 891.5c-12.8 0-23-10.4-23-23.1v-0.1c0.9-225 1.5-393.7 1.9-506.2l0.7-168.6c0.1-12.7 10.4-23 23-23 12.7 0 23 10.3 23 23 0 3.2-0.8 224-2.6 675.1 0 12.6-10.3 22.9-23 22.9zM370 832.2h46v99.6h-46zM802 832H343c-39.1 0-71-31.9-71-71V201c0-39.1 31.9-71 71-71h459c39.1 0 71 31.9 71 71v560c0 39.1-31.9 71-71 71zM343 176c-13.8 0-25 11.2-25 25v560c0 13.8 11.2 25 25 25h459c13.8 0 25-11.2 25-25V201c0-13.8-11.2-25-25-25H343z" fill="" p-id="2154"></path><path d="M429 227h189c17.7 0 32 14.3 32 32s-14.3 32-32 32H429c-17.7 0-32-14.3-32-32s14.3-32 32-32zM415 356h335c12.7 0 23 10.3 23 23s-10.3 23-23 23H415c-12.7 0-23-10.3-23-23s10.3-23 23-23zM415 467h335c12.7 0 23 10.3 23 23s-10.3 23-23 23H415c-12.7 0-23-10.3-23-23s10.3-23 23-23zM415 578h335c12.7 0 23 10.3 23 23s-10.3 23-23 23H415c-12.7 0-23-10.3-23-23s10.3-23 23-23zM420 689h335c12.7 0 23 10.3 23 23s-10.3 23-23 23H420c-12.7 0-23-10.3-23-23s10.3-23 23-23z" fill="" p-id="2155"></path></svg>

+ 1 - 0
src/icons/svg/icon-report.svg

@ -0,0 +1 @@
1
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1609816992963" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3830" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M697.673956 568.888889 314.948267 568.888889c-23.665778 0-43.383467-18.147556-45.351822-41.733689l-5.848178-70.155378C262.633244 443.733333 273.112178 432.355556 286.424178 432.355556l439.785244 0c13.312 0 23.779556 11.377778 22.675911 24.644267l-5.848178 70.155378C741.0688 550.741333 721.351111 568.888889 697.673956 568.888889zM694.044444 591.644444 318.577778 591.644444l45.511111 341.333333 284.444444 0L694.044444 591.644444zM508.256711 261.563733c42.382222 0 76.731733-34.360889 76.731733-76.731733 0-42.382222-34.360889-76.731733-76.731733-76.731733s-76.731733 34.360889-76.731733 76.731733C431.5136 227.202844 465.874489 261.563733 508.256711 261.563733zM682.666667 409.6l-16.804978-75.036444c-4.266667-19.080533-19.8656-33.553067-39.207822-36.397511l-68.232533-10.0352-33.792 77.528178-4.357689-38.206578c-0.113778-1.206044-1.137778-2.127644-2.343822-2.127644l-19.308089 0c-1.2288 0-2.241422 0.932978-2.3552 2.1504l-3.959467 39.162311-34.212978-78.495289-68.232533 10.0352c-19.342222 2.844444-34.941156 17.316978-39.207822 36.397511L333.846756 409.6 682.666667 409.6zM484.647822 291.077689c0.022756 7.088356 5.870933 16.531911 9.409422 20.0704 3.538489 3.538489 9.477689 3.538489 14.199467 3.538489 4.721778 0 10.660978 0 14.199467-3.538489 3.538489-3.538489 9.386667-12.982044 9.409422-20.0704 0.034133-8.260267-14.415644-9.443556-23.608889-9.443556C499.052089 281.634133 484.613689 282.806044 484.647822 291.077689z" p-id="3831"></path></svg>

+ 7 - 1
src/main.js

@ -10,7 +10,13 @@ import '@/assets/scss/index.scss'
10 10
import httpRequest from '@/utils/httpRequest' // api: https://github.com/axios/axios
11 11
import { isAuth } from '@/utils'
12 12
import cloneDeep from 'lodash/cloneDeep'
13
13
import Print from 'vue-print-nb'
14
Vue.use(Print)
15
// import VueQuillEditor from 'vue-quill-editor'
16
// import 'quill/dist/quill.core.css'
17
// import 'quill/dist/quill.snow.css'
18
// import 'quill/dist/quill.bubble.css'
19
// Vue.use(VueQuillEditor)
14 20
Vue.use(VueCookie)
15 21
Vue.config.productionTip = false
16 22

+ 5 - 2
src/router/index.js

@ -34,6 +34,8 @@ const mainRoutes = {
34 34
    // 2. iframeUrl: 是否通过iframe嵌套展示内容, '以http[s]://开头': 是, '': 否
35 35
    // 提示: 如需要通过iframe嵌套展示内容, 但不通过tab打开, 请自行创建组件使用iframe处理!
36 36
    { path: '/home', component: _import('common/home'), name: 'home', meta: { title: '首页' } },
37
    { path: '/details', component: _import('modules/admin/organization-details'), name: 'admin-details', meta: { title: 'details' } },
38
    { path: '/branch/:id/bid/:bid', component: _import('modules/admin/branch-meeting'), name: 'admin-branch', meta: { title: 'branch' } },
37 39
    { path: '/theme', component: _import('common/theme'), name: 'theme', meta: { title: '主题' } }
38 40
  ],
39 41
  beforeEnter (to, from, next) {
@ -61,12 +63,13 @@ router.beforeEach((to, from, next) => {
61 63
    next()
62 64
  } else {
63 65
    http({
64
      // url: http.adornUrl('/sys/menu/nav'),
65
      url: http.adornUrl('/admin/adminmenu/nav'),
66
      url: http.adornUrl('/sys/menu/nav'),
67
      // url: http.adornUrl('/admin/adminmenu/nav'),
66 68
      method: 'get',
67 69
      params: http.adornParams()
68 70
    }).then(({data}) => {
69 71
      if (data && data.code === 0) {
72
70 73
        fnAddDynamicMenuRoutes(data.menuList)
71 74
        router.options.isAddDynamicMenuRoutes = true
72 75
        sessionStorage.setItem('menuList', JSON.stringify(data.menuList || '[]'))

+ 1 - 1
src/utils/httpRequest.js

@ -6,7 +6,7 @@ import merge from 'lodash/merge'
6 6
import { clearLoginInfo } from '@/utils'
7 7
8 8
const http = axios.create({
9
  timeout: 1000 * 30,
9
  timeout: 1000 * 50,
10 10
  withCredentials: true,
11 11
  headers: {
12 12
    'Content-Type': 'application/json; charset=utf-8'

+ 41 - 39
src/views/common/home.vue

@ -8,11 +8,12 @@
8 8
            v-if="isAuth('admin:meeting:save')"
9 9
            type="primary"
10 10
            @click="addOrUpdateHandle()"
11
          >+ 创建新会议</el-button>
11
            >+ 创建新会议</el-button
12
          >
12 13
        </div>
13 14
      </el-col>
14 15
    </el-row>
15
    <el-row v-if="reFresh" :gutter="10">
16
    <!-- <el-row v-if="reFresh" :gutter="10">
16 17
      <el-col :span="24">
17 18
        <div class="grid-content bg-purple-dark">
18 19
          <h2>未发布中的会议</h2>
@ -25,31 +26,30 @@
25 26
        style="margin-top:10px;"
26 27
        @statusMeeting="childrenStatus"
27 28
      ></meeting-box>
28
    </el-row>
29
    </el-row> -->
29 30
    <el-row>
30 31
      <el-col :span="24">
31 32
        <div class="grid-content bg-purple-dark">
32
          <h2>发布中的会议</h2>
33 33
        </div>
34 34
      </el-col>
35 35
    </el-row>
36 36
    <el-row :gutter="10">
37 37
      <meeting-box
38
        v-for="(item,index) in release"
38
        v-for="(item, index) in release"
39 39
        :key="item.id"
40 40
        :list="item"
41
        style="margin-top:20px;"
41
        style="margin-top: 20px"
42 42
        @statusMeeting="childrenStatus"
43 43
      ></meeting-box>
44 44
    </el-row>
45
    <el-row>
45
    <!-- <el-row>
46 46
      <el-col :span="24">
47 47
        <div class="grid-content bg-purple-dark">
48 48
          <h2>已结束的会议</h2>
49 49
        </div>
50 50
      </el-col>
51
    </el-row>
52
    <el-row :gutter="10">
51
    </el-row> -->
52
    <!-- <el-row :gutter="10">
53 53
      <meeting-box
54 54
        v-for="(item,index) in delRelease"
55 55
        :key="item.id"
@ -57,7 +57,7 @@
57 57
        style="margin-top:20px;"
58 58
        @statusMeeting="childrenStatus"
59 59
      ></meeting-box>
60
    </el-row>
60
    </el-row> -->
61 61
    <!-- 弹窗, 新增 / 修改 -->
62 62
    <add-or-update
63 63
      v-if="addOrUpdateVisible"
@ -75,7 +75,7 @@ export default {
75 75
  data() {
76 76
    return {
77 77
      dataForm: {
78
        key: ""
78
        key: "",
79 79
      },
80 80
      dataList: [], //获取数据
81 81
      unpublished: [], // 未发布
@ -89,12 +89,12 @@ export default {
89 89
      addOrUpdateVisible: false,
90 90
      meetingId: "",
91 91
      reFresh: true,
92
      timer: "" //重新加载子组件
92
      timer: "", //重新加载子组件
93 93
    };
94 94
  },
95 95
  components: {
96 96
    AddOrUpdate,
97
    MeetingBox
97
    MeetingBox,
98 98
  },
99 99
  activated() {},
100 100
@ -116,8 +116,8 @@ export default {
116 116
        params: this.$http.adornParams({
117 117
          page: this.pageIndex,
118 118
          limit: this.pageSize,
119
          key: this.dataForm.key
120
        })
119
          key: this.dataForm.key,
120
        }),
121 121
      }).then(({ data }) => {
122 122
        if (data && data.code === 0) {
123 123
          this.dataList = data.list;
@ -131,22 +131,25 @@ export default {
131 131
    },
132 132
    //将获取的数据分三个数组分别为发布/未发布/结束
133 133
    getHandleDataList(list) {
134
      const meetingList = list;
135
      meetingList.forEach(item => {
136
        // console.log(item.isCheck)
137
        switch (item.isCheck) {
138
          case 0: //未发布
139
            this.unpublished.push(item);
140
            break;
141
          case 1: //发布
142
            this.release.push(item);
143
            break;
144
          default:
145
            //已结束
146
            this.delRelease.push(item);
147
            break;
148
        }
149
      });
134
      this.release = list
135
      // const meetingList = list;
136
      // meetingList.forEach((item) => {
137
138
      //        this.release.push(item);
139
      //   // console.log(item.isCheck)
140
      //   // switch (item.isCheck) {
141
      //   //   case 0: //发布
142
      //   //     this.unpublished.push(item);
143
      //   //     break;
144
      //   //   case 1: //已发布
145
      //   //     this.release.push(item);
146
      //   //     break;
147
      //   //   default:
148
      //   //     //已结束
149
      //   //     this.delRelease.push(item);
150
      //   //     break;
151
      //   // }
152
      // });
150 153
    },
151 154
    // 每页数
152 155
    sizeChangeHandle(val) {
@ -176,7 +179,7 @@ export default {
176 179
    deleteHandle(id) {
177 180
      var ids = id
178 181
        ? [id]
179
        : this.dataListSelections.map(item => {
182
        : this.dataListSelections.map((item) => {
180 183
            return item.id;
181 184
          });
182 185
      this.$confirm(
@ -185,13 +188,13 @@ export default {
185 188
        {
186 189
          confirmButtonText: "确定",
187 190
          cancelButtonText: "取消",
188
          type: "warning"
191
          type: "warning",
189 192
        }
190 193
      ).then(() => {
191 194
        this.$http({
192 195
          url: this.$http.adornUrl("/admin/meeting/delete"),
193 196
          method: "post",
194
          data: this.$http.adornData(ids, false)
197
          data: this.$http.adornData(ids, false),
195 198
        }).then(({ data }) => {
196 199
          if (data && data.code === 0) {
197 200
            this.$message({
@ -200,7 +203,7 @@ export default {
200 203
              duration: 1500,
201 204
              onClose: () => {
202 205
                this.getDataList();
203
              }
206
              },
204 207
            });
205 208
          } else {
206 209
            this.$message.error(data.msg);
@ -219,16 +222,15 @@ export default {
219 222
      this.release = [];
220 223
      this.delRelease = [];
221 224
      this.getDataList();
222
      window.console.log(msg)
223
      if(msg){
225
      if (msg) {
224 226
        this.addOrUpdateHandle(msg);
225 227
      }
226 228
    },
227 229
    // 获取子元素id
228 230
    getID(data) {
229 231
      window.console.log(this.$refs.MeetingBox);
230
    }
231
  }
232
    },
233
  },
232 234
};
233 235
</script>
234 236
<style lang="scss" scoped>

+ 1 - 1
src/views/common/login.vue

@ -3,7 +3,7 @@
3 3
    <div class="site-content__wrapper">
4 4
      <div class="site-content">
5 5
        <div class="brand-info">
6
          <h2 class="brand-info__text">科袖会议管理系统</h2>
6
          <h2 class="brand-info__text">丰盈会议管理系统</h2>
7 7
          <p class="brand-info__intro">提供一套更优的会议管理解决方案。</p>
8 8
        </div>
9 9
        <div class="login-main">

+ 107 - 451
src/views/demo/echarts.vue

@ -1,472 +1,128 @@
1 1
<template>
2 2
  <div class="mod-demo-echarts">
3
    <el-alert
4
      title="提示:"
5
      type="warning"
6
      :closable="false">
7
      <div slot-scope="description">
8
        <p class="el-alert__description">1. 此Demo只提供ECharts官方使用文档,入门部署和体验功能。具体使用请参考:http://echarts.baidu.com/index.html</p>
9
      </div>
10
    </el-alert>
11
12 3
    <el-row :gutter="20">
13 4
      <el-col :span="24">
14 5
        <el-card>
15 6
          <div id="J_chartLineBox" class="chart-box"></div>
16 7
        </el-card>
17 8
      </el-col>
18
      <el-col :span="24">
19
        <el-card>
20
          <div id="J_chartBarBox" class="chart-box"></div>
21
        </el-card>
22
      </el-col>
23
      <el-col :span="12">
24
        <el-card>
25
          <div id="J_chartPieBox" class="chart-box"></div>
26
        </el-card>
27
      </el-col>
28
      <el-col :span="12">
29
        <el-card>
30
          <div id="J_chartScatterBox" class="chart-box"></div>
31
        </el-card>
32
      </el-col>
9
     
33 10
    </el-row>
34 11
  </div>
35 12
</template>
36 13
37 14
<script>
38
  import echarts from 'echarts'
39
  export default {
40
    data () {
41
      return {
42
        chartLine: null,
43
        chartBar: null,
44
        chartPie: null,
45
        chartScatter: null
46
      }
47
    },
48
    mounted () {
49
      this.initChartLine()
50
      this.initChartBar()
51
      this.initChartPie()
52
      this.initChartScatter()
53
    },
54
    activated () {
55
      // 由于给echart添加了resize事件, 在组件激活时需要重新resize绘画一次, 否则出现空白bug
56
      if (this.chartLine) {
57
        this.chartLine.resize()
58
      }
59
      if (this.chartBar) {
60
        this.chartBar.resize()
61
      }
62
      if (this.chartPie) {
63
        this.chartPie.resize()
64
      }
65
      if (this.chartScatter) {
66
        this.chartScatter.resize()
67
      }
68
    },
69
    methods: {
70
      // 折线图
71
      initChartLine () {
72
        var option = {
73
          'title': {
74
            'text': '折线图堆叠'
75
          },
76
          'tooltip': {
77
            'trigger': 'axis'
78
          },
79
          'legend': {
80
            'data': [ '邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎' ]
81
          },
82
          'grid': {
83
            'left': '3%',
84
            'right': '4%',
85
            'bottom': '3%',
86
            'containLabel': true
87
          },
88
          'toolbox': {
89
            'feature': {
90
              'saveAsImage': { }
91
            }
92
          },
93
          'xAxis': {
94
            'type': 'category',
95
            'boundaryGap': false,
96
            'data': [ '周一', '周二', '周三', '周四', '周五', '周六', '周日' ]
97
          },
98
          'yAxis': {
99
            'type': 'value'
100
          },
101
          'series': [
102
            {
103
              'name': '邮件营销',
104
              'type': 'line',
105
              'stack': '总量',
106
              'data': [ 120, 132, 101, 134, 90, 230, 210 ]
107
            },
108
            {
109
              'name': '联盟广告',
110
              'type': 'line',
111
              'stack': '总量',
112
              'data': [ 220, 182, 191, 234, 290, 330, 310 ]
113
            },
114
            {
115
              'name': '视频广告',
116
              'type': 'line',
117
              'stack': '总量',
118
              'data': [ 150, 232, 201, 154, 190, 330, 410 ]
119
            },
120
            {
121
              'name': '直接访问',
122
              'type': 'line',
123
              'stack': '总量',
124
              'data': [ 320, 332, 301, 334, 390, 330, 320 ]
125
            },
126
            {
127
              'name': '搜索引擎',
128
              'type': 'line',
129
              'stack': '总量',
130
              'data': [ 820, 932, 901, 934, 1290, 1330, 1320 ]
131
            }
132
          ]
133
        }
134
        this.chartLine = echarts.init(document.getElementById('J_chartLineBox'))
135
        this.chartLine.setOption(option)
136
        window.addEventListener('resize', () => {
137
          this.chartLine.resize()
138
        })
139
      },
140
      // 柱状图
141
      initChartBar () {
142
        var option = {
143
          tooltip: {
144
            trigger: 'axis',
145
            axisPointer: {
146
              type: 'shadow'
147
            }
148
          },
149
          legend: {
150
            data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎', '百度', '谷歌', '必应', '其他']
151
          },
152
          grid: {
153
            left: '3%',
154
            right: '4%',
155
            bottom: '3%',
156
            containLabel: true
157
          },
158
          xAxis: [
159
            {
160
              type: 'category',
161
              data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
162
            }
163
          ],
164
          yAxis: [
165
            {
166
              type: 'value'
167
            }
168
          ],
169
          series: [
170
            {
171
              name: '直接访问',
172
              type: 'bar',
173
              data: [320, 332, 301, 334, 390, 330, 320]
174
            },
175
            {
176
              name: '邮件营销',
177
              type: 'bar',
178
              stack: '广告',
179
              data: [120, 132, 101, 134, 90, 230, 210]
180
            },
181
            {
182
              name: '联盟广告',
183
              type: 'bar',
184
              stack: '广告',
185
              data: [220, 182, 191, 234, 290, 330, 310]
186
            },
187
            {
188
              name: '视频广告',
189
              type: 'bar',
190
              stack: '广告',
191
              data: [150, 232, 201, 154, 190, 330, 410]
192
            },
193
            {
194
              name: '搜索引擎',
195
              type: 'bar',
196
              data: [862, 1018, 964, 1026, 1679, 1600, 1570],
197
              markLine: {
198
                lineStyle: {
199
                  normal: {
200
                    type: 'dashed'
201
                  }
202
                },
203
                data: [
204
                  [{ type: 'min' }, { type: 'max' }]
205
                ]
206
              }
207
            },
208
            {
209
              name: '百度',
210
              type: 'bar',
211
              barWidth: 5,
212
              stack: '搜索引擎',
213
              data: [620, 732, 701, 734, 1090, 1130, 1120]
214
            },
215
            {
216
              name: '谷歌',
217
              type: 'bar',
218
              stack: '搜索引擎',
219
              data: [120, 132, 101, 134, 290, 230, 220]
220
            },
221
            {
222
              name: '必应',
223
              type: 'bar',
224
              stack: '搜索引擎',
225
              data: [60, 72, 71, 74, 190, 130, 110]
226
            },
227
            {
228
              name: '其他',
229
              type: 'bar',
230
              stack: '搜索引擎',
231
              data: [62, 82, 91, 84, 109, 110, 120]
232
            }
233
          ]
234
        }
235
        this.chartBar = echarts.init(document.getElementById('J_chartBarBox'))
236
        this.chartBar.setOption(option)
237
        window.addEventListener('resize', () => {
238
          this.chartBar.resize()
239
        })
240
      },
241
      // 饼状图
242
      initChartPie () {
243
        var option = {
244
          backgroundColor: '#2c343c',
245
          title: {
246
            text: 'Customized Pie',
247
            left: 'center',
248
            top: 20,
249
            textStyle: {
250
              color: '#ccc'
251
            }
252
          },
253
          tooltip: {
254
            trigger: 'item',
255
            formatter: '{a} <br/>{b} : {c} ({d}%)'
256
          },
257
          visualMap: {
258
            show: false,
259
            min: 80,
260
            max: 600,
261
            inRange: {
262
              colorLightness: [0, 1]
263
            }
264
          },
265
          series: [
266
            {
267
              name: '访问来源',
268
              type: 'pie',
269
              radius: '55%',
270
              center: ['50%', '50%'],
271
              data: [
272
                { value: 335, name: '直接访问' },
273
                { value: 310, name: '邮件营销' },
274
                { value: 274, name: '联盟广告' },
275
                { value: 235, name: '视频广告' },
276
                { value: 400, name: '搜索引擎' }
277
              ].sort(function (a, b) { return a.value - b.value }),
278
              roseType: 'radius',
279
              label: {
280
                normal: {
281
                  textStyle: {
282
                    color: 'rgba(255, 255, 255, 0.3)'
283
                  }
284
                }
285
              },
286
              labelLine: {
287
                normal: {
288
                  lineStyle: {
289
                    color: 'rgba(255, 255, 255, 0.3)'
290
                  },
291
                  smooth: 0.2,
292
                  length: 10,
293
                  length2: 20
294
                }
295
              },
296
              itemStyle: {
297
                normal: {
298
                  color: '#c23531',
299
                  shadowBlur: 200,
300
                  shadowColor: 'rgba(0, 0, 0, 0.5)'
301
                }
302
              },
303
              animationType: 'scale',
304
              animationEasing: 'elasticOut',
305
              animationDelay: function (idx) {
306
                return Math.random() * 200
307
              }
308
            }
309
          ]
310
        }
311
        this.chartPie = echarts.init(document.getElementById('J_chartPieBox'))
312
        this.chartPie.setOption(option)
313
        window.addEventListener('resize', () => {
314
          this.chartPie.resize()
315
        })
316
      },
317
      // 散点图
318
      initChartScatter () {
319
        var option = {
320
          backgroundColor: new echarts.graphic.RadialGradient(0.3, 0.3, 0.8, [
321
            { offset: 0, color: '#f7f8fa' },
322
            { offset: 1, color: '#cdd0d5' }
323
          ]),
324
          title: {
325
            text: '1990 与 2015 年各国家人均寿命与 GDP'
326
          },
327
          legend: {
328
            right: 10,
329
            data: ['1990', '2015']
330
          },
331
          xAxis: {
332
            splitLine: {
333
              lineStyle: {
334
                type: 'dashed'
335
              }
336
            }
337
          },
338
          yAxis: {
339
            splitLine: {
340
              lineStyle: {
341
                type: 'dashed'
342
              }
343
            },
344
            scale: true
345
          },
346
          series: [
347
            {
348
              name: '1990',
349
              data: [
350
                [28604, 77, 17096869, 'Australia', 1990],
351
                [31163, 77.4, 27662440, 'Canada', 1990],
352
                [1516, 68, 1154605773, 'China', 1990],
353
                [13670, 74.7, 10582082, 'Cuba', 1990],
354
                [28599, 75, 4986705, 'Finland', 1990],
355
                [29476, 77.1, 56943299, 'France', 1990],
356
                [31476, 75.4, 78958237, 'Germany', 1990],
357
                [28666, 78.1, 254830, 'Iceland', 1990],
358
                [1777, 57.7, 870601776, 'India', 1990],
359
                [29550, 79.1, 122249285, 'Japan', 1990],
360
                [2076, 67.9, 20194354, 'North Korea', 1990],
361
                [12087, 72, 42972254, 'South Korea', 1990],
362
                [24021, 75.4, 3397534, 'New Zealand', 1990],
363
                [43296, 76.8, 4240375, 'Norway', 1990],
364
                [10088, 70.8, 38195258, 'Poland', 1990],
365
                [19349, 69.6, 147568552, 'Russia', 1990],
366
                [10670, 67.3, 53994605, 'Turkey', 1990],
367
                [26424, 75.7, 57110117, 'United Kingdom', 1990],
368
                [37062, 75.4, 252847810, 'United States', 1990]
369
              ],
370
              type: 'scatter',
371
              symbolSize: function (data) {
372
                return Math.sqrt(data[2]) / 5e2
373
              },
374
              label: {
375
                emphasis: {
376
                  show: true,
377
                  formatter: function (param) {
378
                    return param.data[3]
379
                  },
380
                  position: 'top'
381
                }
382
              },
383
              itemStyle: {
384
                normal: {
385
                  shadowBlur: 10,
386
                  shadowColor: 'rgba(120, 36, 50, 0.5)',
387
                  shadowOffsetY: 5,
388
                  color: new echarts.graphic.RadialGradient(0.4, 0.3, 1, [
389
                    { offset: 0, color: 'rgb(251, 118, 123)' },
390
                    { offset: 1, color: 'rgb(204, 46, 72)' }
391
                  ])
392
                }
393
              }
394
            },
395
            {
396
              name: '2015',
397
              data: [
398
                [44056, 81.8, 23968973, 'Australia', 2015],
399
                [43294, 81.7, 35939927, 'Canada', 2015],
400
                [13334, 76.9, 1376048943, 'China', 2015],
401
                [21291, 78.5, 11389562, 'Cuba', 2015],
402
                [38923, 80.8, 5503457, 'Finland', 2015],
403
                [37599, 81.9, 64395345, 'France', 2015],
404
                [44053, 81.1, 80688545, 'Germany', 2015],
405
                [42182, 82.8, 329425, 'Iceland', 2015],
406
                [5903, 66.8, 1311050527, 'India', 2015],
407
                [36162, 83.5, 126573481, 'Japan', 2015],
408
                [1390, 71.4, 25155317, 'North Korea', 2015],
409
                [34644, 80.7, 50293439, 'South Korea', 2015],
410
                [34186, 80.6, 4528526, 'New Zealand', 2015],
411
                [64304, 81.6, 5210967, 'Norway', 2015],
412
                [24787, 77.3, 38611794, 'Poland', 2015],
413
                [23038, 73.13, 143456918, 'Russia', 2015],
414
                [19360, 76.5, 78665830, 'Turkey', 2015],
415
                [38225, 81.4, 64715810, 'United Kingdom', 2015],
416
                [53354, 79.1, 321773631, 'United States', 2015]
417
              ],
418
              type: 'scatter',
419
              symbolSize: function (data) {
420
                return Math.sqrt(data[2]) / 5e2
421
              },
422
              label: {
423
                emphasis: {
424
                  show: true,
425
                  formatter: function (param) {
426
                    return param.data[3]
427
                  },
428
                  position: 'top'
429
                }
430
              },
431
              itemStyle: {
432
                normal: {
433
                  shadowBlur: 10,
434
                  shadowColor: 'rgba(25, 100, 150, 0.5)',
435
                  shadowOffsetY: 5,
436
                  color: new echarts.graphic.RadialGradient(0.4, 0.3, 1, [
437
                    { offset: 0, color: 'rgb(129, 227, 238)' },
438
                    { offset: 1, color: 'rgb(25, 183, 207)' }
439
                  ])
440
                }
441
              }
442
            }
443
          ]
444
        }
445
        this.chartPie = echarts.init(document.getElementById('J_chartScatterBox'))
446
        this.chartPie.setOption(option)
447
        window.addEventListener('resize', () => {
448
          this.chartPie.resize()
449
        })
450
      }
15
import echarts from "echarts";
16
export default {
17
  data() {
18
    return {
19
      chartLine: null,
20
      chartBar: null,
21
      chartPie: null,
22
      chartScatter: null,
23
      name: this.$route.parmas.name
24
    };
25
  },
26
  mounted() {
27
    this.initChartLine();
28
    console.log(this.name);
29
  },
30
  activated() {
31
    // 由于给echart添加了resize事件, 在组件激活时需要重新resize绘画一次, 否则出现空白bug
32
    if (this.chartLine) {
33
      this.chartLine.resize();
34
    }
35
  },
36
  methods: {
37
    // 折线图
38
    initChartLine() {
39
      var option = {
40
        title: {
41
          text: "折线图"
42
        },
43
        tooltip: {
44
          trigger: "axis"
45
        },
46
        legend: {
47
          data: ["邮件营销", "联盟广告", "视频广告", "直接访问", "搜索引擎"]
48
        },
49
        grid: {
50
          left: "3%",
51
          right: "4%",
52
          bottom: "3%",
53
          containLabel: true
54
        },
55
        toolbox: {
56
          feature: {
57
            saveAsImage: {}
58
          }
59
        },
60
        xAxis: {
61
          type: "category",
62
          boundaryGap: false,
63
          data: ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
64
        },
65
        yAxis: {
66
          type: "value"
67
        },
68
        series: [
69
          {
70
            name: "邮件营销",
71
            type: "line",
72
            stack: "总量",
73
            data: [120, 132, 101, 134, 90, 230, 210]
74
          },
75
          {
76
            name: "联盟广告",
77
            type: "line",
78
            stack: "总量",
79
            data: [220, 182, 191, 234, 290, 330, 310]
80
          },
81
          {
82
            name: "视频广告",
83
            type: "line",
84
            stack: "总量",
85
            data: [150, 232, 201, 154, 190, 330, 410]
86
          },
87
          {
88
            name: "直接访问",
89
            type: "line",
90
            stack: "总量",
91
            data: [320, 332, 301, 334, 390, 330, 320]
92
          },
93
          {
94
            name: "搜索引擎",
95
            type: "line",
96
            stack: "总量",
97
            data: [820, 932, 901, 934, 1290, 1330, 1320]
98
          }
99
        ]
100
      };
101
      this.chartLine = echarts.init(document.getElementById("J_chartLineBox"));
102
      this.chartLine.setOption(option);
103
      window.addEventListener("resize", () => {
104
        this.chartLine.resize();
105
      });
451 106
    }
452 107
  }
108
};
453 109
</script>
454 110
455 111
<style lang="scss">
456
  .mod-demo-echarts {
457
    > .el-alert {
458
      margin-bottom: 10px;
459
    }
460
    > .el-row {
461
      margin-top: -10px;
462
      margin-bottom: -10px;
463
      .el-col {
464
        padding-top: 10px;
465
        padding-bottom: 10px;
466
      }
467
    }
468
    .chart-box {
469
      min-height: 400px;
112
.mod-demo-echarts {
113
  > .el-alert {
114
    margin-bottom: 10px;
115
  }
116
  > .el-row {
117
    margin-top: -10px;
118
    margin-bottom: -10px;
119
    .el-col {
120
      padding-top: 10px;
121
      padding-bottom: 10px;
470 122
    }
471 123
  }
124
  .chart-box {
125
    min-height: 400px;
126
  }
127
}
472 128
</style>

+ 40 - 3
src/views/main-navbar.vue

@ -2,8 +2,8 @@
2 2
  <nav class="site-navbar" :class="'site-navbar--' + navbarLayoutType">
3 3
    <div class="site-navbar__header">
4 4
      <h1 class="site-navbar__brand" @click="$router.push({ name: 'home' })">
5
        <a class="site-navbar__brand-lg" href="javascript:;">科袖会议</a>
6
        <a class="site-navbar__brand-mini" href="javascript:;">科袖</a>
5
        <a class="site-navbar__brand-lg" href="javascript:;">丰盈会议</a>
6
        <a class="site-navbar__brand-mini" href="javascript:;">丰盈</a>
7 7
      </h1>
8 8
    </div>
9 9
    <div class="site-navbar__body clearfix">
@ -40,7 +40,35 @@
40 40
            <span class="el-dropdown-link">
41 41
              <img src="~@/assets/img/avatar.png" :alt="userName">{{ userName }}
42 42
            </span>
43
            <!-- <el-form>
44
              <el-form-item label="上传会议封面图片" prop="titlePicture"> -->
45
              <!-- <el-upload
46
                :action="dialogImageUrl"
47
                list-type="picture-card"
48
                :on-success="handlePictureCardPreview"
49
                :file-list="titlePictureList"
50
                name="upload_file"
51
              >
52
                <i class="el-icon-plus"></i>
53
              </el-upload> -->
54
              <!-- <el-upload
55
                class="avatar-uploader"
56
                :action="dialogImageUrl"
57
                :show-file-list="false"
58
                :on-success="handlePictureCardPreview"
59
                name="upload_file"
60
              >
61
                <img
62
                  v-if="this.dataForm.titlepic"
63
                  :src="this.dataForm.titlepic"
64
                  class="avatar"
65
                />
66
                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
67
              </el-upload>
68
            </el-form-item>
69
            </el-from> -->
43 70
            <el-dropdown-menu slot="dropdown">
71
              <!-- <el-dropdown-item @click.native="uploadAvatar()">上传头像</el-dropdown-item> -->
44 72
              <el-dropdown-item @click.native="updatePasswordHandle()">修改密码</el-dropdown-item>
45 73
              <el-dropdown-item @click.native="logoutHandle()">退出</el-dropdown-item>
46 74
            </el-dropdown-menu>
@ -59,7 +87,9 @@
59 87
  export default {
60 88
    data () {
61 89
      return {
62
        updatePassowrdVisible: false
90
        updatePassowrdVisible: false,
91
        // uploadAvatarVisible: false,
92
        
63 93
      }
64 94
    },
65 95
    components: {
@ -82,6 +112,13 @@
82 112
      }
83 113
    },
84 114
    methods: {
115
      // 上传头像
116
      // uploadAvatar () {
117
      //   this.uploadAvatarVisible = true
118
      //   this.$nextTick(() => {
119
      //     console.log("上传头像中!!!!!!!!");
120
      //   })
121
      // },
85 122
      // 修改密码
86 123
      updatePasswordHandle () {
87 124
        this.updatePassowrdVisible = true

+ 215 - 0
src/views/modules/admin/advertise copy.vue

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

+ 127 - 0
src/views/modules/admin/advertise-add-or-update.vue

@ -0,0 +1,127 @@
1
<template>
2
  <el-dialog
3
    :title="!dataForm.id ? '新增' : '修改'"
4
    :close-on-click-modal="false"
5
    :visible.sync="visible"
6
  >
7
    <el-form
8
      :model="dataForm"
9
      :rules="dataRule"
10
      ref="dataForm"
11
      @keyup.enter.native="dataFormSubmit()"
12
      label-width="80px"
13
    >
14
      <el-form-item label="公司名称" prop="title">
15
        <el-input
16
          v-model="dataForm.title"
17
          placeholder="公司名称"
18
          :disabled="noCreation"
19
        ></el-input>
20
      </el-form-item>
21
      <el-form-item label="图 片" prop="picture">
22
        <!-- <el-input v-model="dataForm.picture" placeholder="picture"></el-input> -->
23
        <el-upload
24
          :action="diaImageUrl"
25
          list-type="picture-card"
26
          :on-success="handSu"
27
          :limit="num"
28
          name="upload_file"
29
        >
30
          <i class="el-icon-plus"></i>
31
        </el-upload>
32
      </el-form-item>
33
    </el-form>
34
35
    <span slot="footer" class="dialog-footer">
36
      <el-button @click="visible = false">取消</el-button>
37
      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
38
    </span>
39
  </el-dialog>
40
</template>
41
42
<script>
43
export default {
44
  data() {
45
    return {
46
      visible: false,
47
      dataForm: {
48
        id: 0,
49
        title: "",
50
        picture: "",
51
      },
52
      dataRule: {
53
        title: [{ required: true, message: "公司名称不能为空", trigger: "blur" }],
54
      },
55
      dialogVisible: false,
56
      diaImageUrl: "",
57
      dialogImageUrl: "",
58
      num: 1,
59
      totalPage: 0,
60
      noCreation: false,
61
    };
62
  },
63
  methods: {
64
    init(id, num) {
65
      this.totalPage = num;
66
      if (num === 6) {
67
        this.noCreation = true;
68
      }
69
      this.dataForm.id = id || 0;
70
      this.visible = true;
71
      this.$nextTick(() => {
72
        this.$refs["dataForm"].resetFields();
73
        if (this.dataForm.id) {
74
          this.$http({
75
            url: this.$http.adornUrl(
76
              `/admin/advertise/info/${this.dataForm.id}`
77
            ),
78
            method: "get",
79
            params: this.$http.adornParams(),
80
          }).then(({ data }) => {
81
            if (data && data.code === 0) {
82
              this.dataForm.title = data.advertise.title;
83
              this.dataForm.picture = data.advertise.picture;
84
            }
85
          });
86
        }
87
      });
88
      this.diaImageUrl = this.$http.adornUrl(`/app/filemanager/uploadimg`);
89
    },
90
    // 表单提交
91
    dataFormSubmit() {
92
      this.$refs["dataForm"].validate((valid) => {
93
        if (valid) {
94
          this.$http({
95
            url: this.$http.adornUrl(
96
              `/admin/advertise/${!this.dataForm.id ? "save" : "update"}`
97
            ),
98
            method: "post",
99
            data: this.$http.adornData({
100
              id: this.dataForm.id || undefined,
101
              title: this.dataForm.title,
102
              picture: this.dataForm.picture,
103
            }),
104
          }).then(({ data }) => {
105
            if (data && data.code === 0) {
106
              this.$message({
107
                message: "操作成功",
108
                type: "success",
109
                duration: 1500,
110
                onClose: () => {
111
                  this.visible = false;
112
                  this.$emit("refreshDataList");
113
                },
114
              });
115
            } else {
116
              this.$message.error(data.msg);
117
            }
118
          });
119
        }
120
      });
121
    },
122
    handSu(response, file) {
123
      this.dataForm.picture = response.picname;
124
    },
125
  },
126
};
127
</script>

+ 170 - 0
src/views/modules/admin/advertise.vue

@ -0,0 +1,170 @@
1
<template>
2
  <div class="mod-config">
3
    <el-form
4
      :inline="true"
5
      :model="dataForm"
6
      @keyup.enter.native="getDataList()"
7
    >
8
      <el-form-item>
9
        <el-button
10
          v-if="isAuth('admin:advertise:save')"
11
          type="primary"
12
          @click="addOrUpdateHandle()"
13
          >新增</el-button
14
        >
15
      </el-form-item>
16
    </el-form>
17
    <el-row :gutter="10">
18
      <el-col :span="8" :lg="13" :xl="8" style="margin-top: 30px" class="box" @click.native="deleteHandle(item.id)" v-for="(item,index) in dataList" :key="item.id">
19
        <div class="grid-content bg-purple"  >
20
          <img :src="item.picture" alt="" />
21
        </div>
22
      </el-col>
23
    </el-row>
24
    <!-- 弹窗, 新增 / 修改 -->
25
    <add-or-update
26
      v-if="addOrUpdateVisible"
27
      ref="addOrUpdate"
28
      @refreshDataList="getDataList"
29
    ></add-or-update>
30
  </div>
31
</template>
32
<style lang="scss">
33
.box {
34
  position: relative;
35
}
36
37
.box:hover.box::before {
38
  display: block;
39
}
40
41
.box::before {
42
  display: none;
43
  content: url('../../../assets/img/delete.png') ;
44
  color: #fff;
45
  text-align: center;
46
  line-height: 300px;
47
  position: absolute;
48
  top: 0px;
49
  left: 5px;
50
  width: 500px;
51
  height: 300px;
52
  background-color: rgba(0,0,0,0.4);
53
  color: #fff;
54
}
55
img {
56
  width: 500px;
57
  height: 300px;
58
}
59
</style>
60
<script>
61
import AddOrUpdate from "./advertise-add-or-update";
62
export default {
63
  data() {
64
    return {
65
      dataForm: {
66
        key: "",
67
      },
68
      dataList: [],
69
      pageIndex: 1,
70
      pageSize: 10,
71
      totalPage: 0,
72
      dataListLoading: false,
73
      dataListSelections: [],
74
      addOrUpdateVisible: false,
75
    };
76
  },
77
  components: {
78
    AddOrUpdate,
79
  },
80
  activated() {
81
    this.getDataList();
82
  },
83
  methods: {
84
    // 获取数据列表
85
    getDataList() {
86
      this.dataListLoading = true;
87
      this.$http({
88
        url: this.$http.adornUrl("/admin/advertise/list"),
89
        method: "get",
90
        params: this.$http.adornParams({
91
          page: this.pageIndex,
92
          limit: this.pageSize,
93
          key: this.dataForm.key,
94
        }),
95
      }).then(({ data }) => {
96
        if (data && data.code === 0) {
97
          this.dataList = data.page.list;
98
          this.totalPage = data.page.totalCount;
99
          
100
        } else {
101
          this.dataList = [];
102
          this.totalPage = 0;
103
        }
104
        this.dataListLoading = false;
105
      });
106
    },
107
    // 每页数
108
    sizeChangeHandle(val) {
109
      this.pageSize = val;
110
      this.pageIndex = 1;
111
      this.getDataList();
112
    },
113
    // 当前页
114
    currentChangeHandle(val) {
115
      this.pageIndex = val;
116
      this.getDataList();
117
    },
118
    // 多选
119
    selectionChangeHandle(val) {
120
      this.dataListSelections = val;
121
    },
122
    // 新增 / 修改
123
    addOrUpdateHandle(id) {
124
      this.addOrUpdateVisible = true;
125
      this.$nextTick(() => {
126
        this.$refs.addOrUpdate.init(id,this.totalPage);
127
      });
128
    },
129
    // 删除
130
    deleteHandle(id) {
131
      var ids = id
132
        ? [id]
133
        : this.dataListSelections.map((item) => {
134
            return item.id;
135
          });
136
      this.$confirm(
137
        `确定对[id=${ids.join(",")}]进行[${id ? "删除" : "批量删除"}]操作?`,
138
        "提示",
139
        {
140
          confirmButtonText: "确定",
141
          cancelButtonText: "取消",
142
          type: "warning",
143
        }
144
      ).then(() => {
145
        this.$http({
146
          url: this.$http.adornUrl("/admin/advertise/delete"),
147
          method: "post",
148
          data: this.$http.adornData(ids, false),
149
        }).then(({ data }) => {
150
          if (data && data.code === 0) {
151
            this.$message({
152
              message: "操作成功",
153
              type: "success",
154
              duration: 1500,
155
              onClose: () => {
156
                this.getDataList();
157
              },
158
            });
159
          } else {
160
            this.$message.error(data.msg);
161
          }
162
        });
163
      });
164
    },
165
    del(id){
166
      console.log(id)
167
    }
168
  },
169
};
170
</script>

+ 290 - 0
src/views/modules/admin/attenders-add-or-update copy.vue

@ -0,0 +1,290 @@
1
<template>
2
  <el-dialog
3
    :title="!dataForm.id ? '新增' : '修改'"
4
    :close-on-click-modal="false"
5
    :visible.sync="visible"
6
  >
7
    <el-form
8
      :model="dataForm"
9
      :rules="dataRule"
10
      ref="dataForm"
11
      @keyup.enter.native="dataFormSubmit()"
12
      label-width="100px"
13
    >
14
      <el-form-item label="姓名" prop="truename">
15
        <el-input v-model="dataForm.truename" placeholder="姓名"></el-input>
16
      </el-form-item>
17
18
      <el-form-item label="性别" prop="sex">
19
        <el-radio v-model="dataForm.sex" :label="0">未知</el-radio>
20
        <el-radio v-model="dataForm.sex" :label="1">男</el-radio>
21
        <el-radio v-model="dataForm.sex" :label="2">女</el-radio>
22
      </el-form-item>
23
24
      <el-form-item label="所属机构" prop="organization">
25
        <el-input
26
          v-model="dataForm.organization"
27
          placeholder="所属机构(单位名称、公司名称)"
28
        ></el-input>
29
      </el-form-item>
30
      <el-form-item label="手机号" prop="phone">
31
        <el-input v-model="dataForm.phone" placeholder="手机号"></el-input>
32
      </el-form-item>
33
34
      <el-form-item label="职位" prop="position">
35
        <el-input v-model="dataForm.position" placeholder="职位"></el-input>
36
      </el-form-item>
37
    </el-form>
38
    <span slot="footer" class="dialog-footer">
39
      <el-button @click="visible = false">取消</el-button>
40
      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
41
    </span>
42
  </el-dialog>
43
</template>
44
45
<script>
46
export default {
47
  data() {
48
    var checkphone = (rule, value, callback) => {
49
      // let phoneReg = /(^1[3|4|5|6|7|8|9]\d{9}$)|(^09\d{8}$)/;
50
      if (value == "") {
51
        callback(new Error("请输入手机号"));
52
      } else if (!this.isCellPhone(value)) {
53
        //引入methods中封装的检查手机格式的方法
54
        callback(new Error("请输入正确的手机号!"));
55
      } else {
56
        callback();
57
      }
58
    };
59
    return {
60
      visible: false,
61
      loading: false,
62
      dataForm: {
63
        id: 0,
64
        meetingId: "",
65
        memberId: "",
66
        truename: "",
67
        sex: 0,
68
        organization: "",
69
        phone: "", // 电话
70
        position: "",
71
      },
72
      dataRule: {
73
        truename: [
74
          {
75
            required: true,
76
            message: "姓名不能为空",
77
            trigger: "blur",
78
          },
79
        ],
80
        organization: [
81
          {
82
            required: true,
83
            message: "所属机构(单位名称、公司名称)不能为空",
84
            trigger: "blur",
85
          },
86
        ],
87
        phone: [{ required: true, validator: checkphone, trigger: "blur" }],
88
      },
89
90
      employeeList: [],
91
      typesofattendersList: [],
92
      restaurants: [],
93
    };
94
  },
95
  created() {
96
    // this.getEmployee();
97
    // this.getTypesofattenders();
98
    // this.getMember();
99
  },
100
  methods: {
101
    init(id) {
102
      this.dataForm.id = id || 0;
103
      this.dataForm.memberId = 0;
104
      this.visible = true;
105
      this.$nextTick(() => {
106
        this.$refs["dataForm"].resetFields();
107
        if (this.dataForm.id) {
108
          this.$http({
109
            url: this.$http.adornUrl(
110
              `/admin/attenders/info/${this.dataForm.id}`
111
            ),
112
            method: "get",
113
            params: this.$http.adornParams(),
114
          }).then(({ data }) => {
115
            if (data && data.code === 0) {
116
              this.dataForm.meetingId = data.attenders.meetingId;
117
              this.dataForm.memberId = data.attenders.memberId;
118
              this.dataForm.name = data.attenders.name;
119
              this.dataForm.organization = data.attenders.organization;
120
              this.dataForm.position = data.attenders.position;
121
              this.dataForm.jobTitle = data.attenders.jobTitle;
122
              this.dataForm.phone = data.attenders.phone;
123
              this.dataForm.email = data.attenders.email;
124
              this.dataForm.officephone = data.attenders.officephone;
125
              this.dataForm.typeId = data.attenders.typeId;
126
              this.dataForm.intention = data.attenders.intention;
127
              this.dataForm.room = data.attenders.room;
128
              this.dataForm.transfer = data.attenders.transfer;
129
              this.dataForm.servicer = data.attenders.servicer;
130
              this.dataForm.note = data.attenders.note;
131
              this.dataForm.state2 = data.attenders.name;
132
            }
133
          });
134
        } else {
135
          this.dataForm.meetingId = "";
136
          this.dataForm.memberId = "";
137
          this.dataForm.name = "";
138
          this.dataForm.organization = "";
139
          this.dataForm.position = "";
140
          this.dataForm.jobTitle = "";
141
          this.dataForm.phone = "";
142
          this.dataForm.email = "";
143
          this.dataForm.officephone = "";
144
          this.dataForm.typeId = "";
145
          this.dataForm.intention = "";
146
          this.dataForm.room = "";
147
          this.dataForm.transfer = "";
148
          this.dataForm.servicer = "";
149
          this.dataForm.note = "";
150
          this.dataForm.state2 = "";
151
        }
152
      });
153
    },
154
    // 表单提交
155
    dataFormSubmit() {
156
      this.$refs["dataForm"].validate((valid) => {
157
        if (valid) {
158
          this.$http({
159
            url: this.$http.adornUrl(
160
              `/admin/attenders/${!this.dataForm.id ? "save" : "update"}`
161
            ),
162
            method: "post",
163
            data: this.$http.adornData({
164
              id: this.dataForm.id || undefined,
165
              meetingId: this.$route.params.id,
166
              memberId: this.dataForm.memberId,
167
              truename: this.dataForm.truename,
168
              sex: this.dataForm.sex,
169
              organization: this.dataForm.organization,
170
              position: this.dataForm.position,
171
              phone: this.dataForm.phone,
172
            }),
173
          }).then(({ data }) => {
174
            if (data && data.code === 0) {
175
              this.$message({
176
                message: "操作成功",
177
                type: "success",
178
                duration: 1500,
179
                onClose: () => {
180
                  this.visible = false;
181
                  this.$emit("refreshDataList");
182
                },
183
              });
184
            } else {
185
              this.$message.error(data.msg);
186
            }
187
          });
188
        }
189
      });
190
    },
191
    isCellPhone(val) {
192
      if (!/^1(3|4|5|6|7|8)\d{9}$/.test(val)) {
193
        return false;
194
      } else {
195
        return true;
196
      }
197
    },
198
    //获取员工信息
199
    getEmployee() {
200
      this.loading = true;
201
      this.$http({
202
        url: this.$http.adornUrl(`/admin/employee/findAllByTrueName`),
203
        method: "get",
204
        params: this.$http.adornParams({
205
          truename: "",
206
        }),
207
      }).then(({ data }) => {
208
        if (data) {
209
          this.loading = false;
210
          this.employeeList = data;
211
        }
212
      });
213
    },
214
    //获取用户类型信息
215
    getTypesofattenders() {
216
      this.$http({
217
        url: this.$http.adornUrl(
218
          `/admin/typesofattenders/listbymid/${this.$route.params.id}`
219
        ),
220
        method: "get",
221
      }).then(({ data }) => {
222
        if (data && data.code === 0) {
223
          this.typesofattendersList = data.list;
224
        }
225
      });
226
    },
227
    createFilter(queryString) {
228
      return (restaurant) => {
229
        return (
230
          restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) ===
231
          0
232
        );
233
      };
234
    },
235
    querySearch(queryString, cb) {
236
      var restaurants = this.restaurants;
237
      var results = queryString
238
        ? restaurants.filter(this.createFilter(queryString))
239
        : restaurants;
240
      if (results.length === 0) {
241
        this.$message.error("没有会员信息,请添加会员信息");
242
      }
243
      cb(results);
244
    },
245
    //获取会员信息
246
    getMember() {
247
      this.$http({
248
        url: this.$http.adornUrl("/admin/member/listall"),
249
        method: "get",
250
      }).then(({ data }) => {
251
        if (data.code === 0 && data) {
252
          for (let i = 0; i < data.list.length; i++) {
253
            data.list[i].value =
254
              data.list[i].truename + "," + data.list[i].organization;
255
          }
256
          this.restaurants = data.list;
257
        }
258
      });
259
    },
260
    handleSelect(item) {
261
      if (item) {
262
        this.dataForm.jiobTitle = item.jiobTitle;
263
        this.dataForm.organization = item.organization;
264
        this.dataForm.phone = item.phone;
265
        this.dataForm.position = item.position;
266
        this.dataForm.memberId = item.id;
267
        this.dataForm.name = item.truename;
268
        this.dataForm.state2 = item.truename;
269
      }
270
    },
271
    creatorUser() {
272
      this.dataForm.name = this.dataForm.state2;
273
      if (this.dataForm.name) {
274
        this.$message({
275
          message: "添加成功",
276
          type: "success",
277
          duration: 1000,
278
        });
279
      }
280
    },
281
  },
282
};
283
</script>
284
<style lang="scss" scoped>
285
.ll-button {
286
  position: absolute;
287
  top: 0;
288
  right: 0;
289
}
290
</style>

+ 63 - 137
src/views/modules/admin/attenders-add-or-update.vue

@ -11,85 +11,28 @@
11 11
      @keyup.enter.native="dataFormSubmit()"
12 12
      label-width="100px"
13 13
    >
14
      <el-form-item label="姓名" prop="state2">
15
        <el-autocomplete
16
          class="inline-input"
17
          v-model="dataForm.state2"
18
          :fetch-suggestions="querySearch"
19
          placeholder="请输入内容"
20
          :trigger-on-focus="false"
21
          @select="handleSelect"
22
          :style="!dataForm.id ? 'width:80%' :'width:100%' "
23
        ></el-autocomplete>
24
        <el-button
25
          @click="creatorUser"
26
          class="ll-button"
27
          type="primary"
28
          v-show="!dataForm.id"
29
        >添加新的会员</el-button>
14
      <el-form-item label="姓名" prop="truename">
15
        <el-input v-model="dataForm.truename" placeholder="姓名"></el-input>
30 16
      </el-form-item>
31 17
32
      <el-form-item label="所属机构" prop="organization">
33
        <el-input v-model="dataForm.organization" placeholder="所属机构(单位名称、公司名称)"></el-input>
34
      </el-form-item>
35
      <el-form-item label="职位">
36
        <el-input v-model="dataForm.position" placeholder="职位"></el-input>
18
      <el-form-item label="性别" prop="sex">
19
        <el-radio v-model="dataForm.sex" :label="0">未知</el-radio>
20
        <el-radio v-model="dataForm.sex" :label="1">男</el-radio>
21
        <el-radio v-model="dataForm.sex" :label="2">女</el-radio>
37 22
      </el-form-item>
38
      <el-form-item label="职称">
39
        <el-input v-model="dataForm.jobTitle" placeholder="职称"></el-input>
23
24
      <el-form-item label="所属机构" prop="organization">
25
        <el-input
26
          v-model="dataForm.organization"
27
          placeholder="所属机构(单位名称、公司名称)"
28
        ></el-input>
40 29
      </el-form-item>
41 30
      <el-form-item label="手机号" prop="phone">
42 31
        <el-input v-model="dataForm.phone" placeholder="手机号"></el-input>
43 32
      </el-form-item>
44
      <el-form-item label="邮箱">
45
        <el-input v-model="dataForm.email" placeholder="邮箱"></el-input>
46
      </el-form-item>
47
      <el-form-item label="办公电话">
48
        <el-input v-model="dataForm.officephone" placeholder="办公电话"></el-input>
49
      </el-form-item>
50 33
51
      <el-form-item label="参会意向" prop="intention">
52
        <!-- <el-input v-model="dataForm.intention" placeholder="参会意向"></el-input> -->
53
        <el-radio v-model="dataForm.intention" :label="1">是</el-radio>
54
        <el-radio v-model="dataForm.intention" :label="0">否</el-radio>
55
      </el-form-item>
56
      <el-form-item label="住宿要求" prop="room">
57
        <!-- <el-input v-model="dataForm.room" placeholder="住宿要求"></el-input> -->
58
        <el-radio v-model="dataForm.room" :label="1">是</el-radio>
59
        <el-radio v-model="dataForm.room" :label="0">否</el-radio>
60
      </el-form-item>
61
      <el-form-item label="接送要求" prop="transfer">
62
        <!-- <el-input v-model="dataForm.transfer" placeholder="接送要求"></el-input> -->
63
        <el-radio v-model="dataForm.transfer" :label="1">是</el-radio>
64
        <el-radio v-model="dataForm.transfer" :label="0">否</el-radio>
65
      </el-form-item>
66
      <el-form-item label="负责人" prop="servicer">
67
        <el-select v-model="dataForm.servicer" filterable placeholder="请选择">
68
          <el-option
69
            v-for="item in employeeList"
70
            :key="item.id"
71
            :label="item.truename"
72
            :value="item.id"
73
          ></el-option>
74
        </el-select>
75
      </el-form-item>
76
      <el-form-item label="用户类型" prop="typeId">
77
        <el-select v-model="dataForm.typeId" filterable placeholder="请选择">
78
          <el-option
79
            v-for="item in typesofattendersList"
80
            :key="item.id"
81
            :label="item.name"
82
            :value="item.id"
83
          ></el-option>
84
        </el-select>
85
      </el-form-item>
86
      <el-form-item label="备注">
87
        <el-input
88
          type="textarea"
89
          :autosize="{ minRows: 2, maxRows: 4}"
90
          placeholder="请输入内容"
91
          v-model="dataForm.note"
92
        ></el-input>
34
      <el-form-item label="职位" prop="position">
35
        <el-input v-model="dataForm.position" placeholder="职位"></el-input>
93 36
      </el-form-item>
94 37
    </el-form>
95 38
    <span slot="footer" class="dialog-footer">
@ -102,6 +45,17 @@
102 45
<script>
103 46
export default {
104 47
  data() {
48
    var checkphone = (rule, value, callback) => {
49
      // let phoneReg = /(^1[3|4|5|6|7|8|9]\d{9}$)|(^09\d{8}$)/;
50
      if (value == "") {
51
        callback(new Error("请输入手机号"));
52
      } else if (!this.isCellPhone(value)) {
53
        //引入methods中封装的检查手机格式的方法
54
        callback(new Error("请输入正确的手机号!"));
55
      } else {
56
        callback();
57
      }
58
    };
105 59
    return {
106 60
      visible: false,
107 61
      loading: false,
@ -109,66 +63,39 @@ export default {
109 63
        id: 0,
110 64
        meetingId: "",
111 65
        memberId: "",
112
        name: "",
66
        truename: "",
67
        sex: 0,
113 68
        organization: "",
69
        phone: "", // 电话
114 70
        position: "",
115
        jobTitle: "",
116
        phone: "",
117
        email: "",
118
        officephone: "",
119
        typeId: "",
120
        intention: "",
121
        room: "",
122
        transfer: "",
123
        servicer: "",
124
        note: "",
125
        account: "",
126
        emailLx: "",
127
        regflag: "",
128
        state2: ""
129 71
      },
130 72
      dataRule: {
131
        meetingId: [
132
          { required: true, message: "会议id不能为空", trigger: "blur" }
73
        truename: [
74
          {
75
            required: true,
76
            message: "姓名不能为空",
77
            trigger: "blur",
78
          },
133 79
        ],
134
135
        // state2: [{ required: true, message: "没有会员信息", trigger: "blur" }],
136 80
        organization: [
137 81
          {
138 82
            required: true,
139 83
            message: "所属机构(单位名称、公司名称)不能为空",
140
            trigger: "blur"
141
          }
84
            trigger: "blur",
85
          },
142 86
        ],
143
        phone: [{ required: true, message: "电话不能为空", trigger: "blur" }],
144
        email: [{ required: true, message: "邮箱不能为空", trigger: "blur" }],
145
146
        intention: [
147
          { required: true, message: "参会意向不能为空", trigger: "blur" }
148
        ],
149
        room: [
150
          { required: true, message: "住宿要求不能为空", trigger: "blur" }
151
        ],
152
        transfer: [
153
          { required: true, message: "接送要求不能为空", trigger: "blur" }
154
        ],
155
        servicer: [
156
          {
157
            required: true,
158
            message: "负责人(员工id)不能为空",
159
            trigger: "blur"
160
          }
161
        ]
87
        phone: [{ required: true, validator: checkphone, trigger: "blur" }],
162 88
      },
89
163 90
      employeeList: [],
164 91
      typesofattendersList: [],
165
      restaurants: []
92
      restaurants: [],
166 93
    };
167 94
  },
168 95
  created() {
169
    this.getEmployee();
170
    this.getTypesofattenders();
171
    this.getMember();
96
    // this.getEmployee();
97
    // this.getTypesofattenders();
98
    // this.getMember();
172 99
  },
173 100
  methods: {
174 101
    init(id) {
@ -183,7 +110,7 @@ export default {
183 110
              `/admin/attenders/info/${this.dataForm.id}`
184 111
            ),
185 112
            method: "get",
186
            params: this.$http.adornParams()
113
            params: this.$http.adornParams(),
187 114
          }).then(({ data }) => {
188 115
            if (data && data.code === 0) {
189 116
              this.dataForm.meetingId = data.attenders.meetingId;
@ -226,7 +153,7 @@ export default {
226 153
    },
227 154
    // 表单提交
228 155
    dataFormSubmit() {
229
      this.$refs["dataForm"].validate(valid => {
156
      this.$refs["dataForm"].validate((valid) => {
230 157
        if (valid) {
231 158
          this.$http({
232 159
            url: this.$http.adornUrl(
@ -237,20 +164,12 @@ export default {
237 164
              id: this.dataForm.id || undefined,
238 165
              meetingId: this.$route.params.id,
239 166
              memberId: this.dataForm.memberId,
240
              name: this.dataForm.name,
167
              truename: this.dataForm.truename,
168
              sex: this.dataForm.sex,
241 169
              organization: this.dataForm.organization,
242 170
              position: this.dataForm.position,
243
              jobTitle: this.dataForm.jobTitle,
244 171
              phone: this.dataForm.phone,
245
              email: this.dataForm.email,
246
              officephone: this.dataForm.officephone,
247
              typeId: this.dataForm.typeId,
248
              intention: this.dataForm.intention,
249
              room: this.dataForm.room,
250
              transfer: this.dataForm.transfer,
251
              servicer: this.dataForm.servicer,
252
              note: this.dataForm.note
253
            })
172
            }),
254 173
          }).then(({ data }) => {
255 174
            if (data && data.code === 0) {
256 175
              this.$message({
@ -260,7 +179,7 @@ export default {
260 179
                onClose: () => {
261 180
                  this.visible = false;
262 181
                  this.$emit("refreshDataList");
263
                }
182
                },
264 183
              });
265 184
            } else {
266 185
              this.$message.error(data.msg);
@ -269,6 +188,13 @@ export default {
269 188
        }
270 189
      });
271 190
    },
191
    isCellPhone(val) {
192
      if (!/^1(3|4|5|6|7|8)\d{9}$/.test(val)) {
193
        return false;
194
      } else {
195
        return true;
196
      }
197
    },
272 198
    //获取员工信息
273 199
    getEmployee() {
274 200
      this.loading = true;
@ -276,8 +202,8 @@ export default {
276 202
        url: this.$http.adornUrl(`/admin/employee/findAllByTrueName`),
277 203
        method: "get",
278 204
        params: this.$http.adornParams({
279
          truename: ""
280
        })
205
          truename: "",
206
        }),
281 207
      }).then(({ data }) => {
282 208
        if (data) {
283 209
          this.loading = false;
@ -291,7 +217,7 @@ export default {
291 217
        url: this.$http.adornUrl(
292 218
          `/admin/typesofattenders/listbymid/${this.$route.params.id}`
293 219
        ),
294
        method: "get"
220
        method: "get",
295 221
      }).then(({ data }) => {
296 222
        if (data && data.code === 0) {
297 223
          this.typesofattendersList = data.list;
@ -299,7 +225,7 @@ export default {
299 225
      });
300 226
    },
301 227
    createFilter(queryString) {
302
      return restaurant => {
228
      return (restaurant) => {
303 229
        return (
304 230
          restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) ===
305 231
          0
@ -320,7 +246,7 @@ export default {
320 246
    getMember() {
321 247
      this.$http({
322 248
        url: this.$http.adornUrl("/admin/member/listall"),
323
        method: "get"
249
        method: "get",
324 250
      }).then(({ data }) => {
325 251
        if (data.code === 0 && data) {
326 252
          for (let i = 0; i < data.list.length; i++) {
@ -348,11 +274,11 @@ export default {
348 274
        this.$message({
349 275
          message: "添加成功",
350 276
          type: "success",
351
          duration: 1000
277
          duration: 1000,
352 278
        });
353 279
      }
354
    }
355
  }
280
    },
281
  },
356 282
};
357 283
</script>
358 284
<style lang="scss" scoped>

+ 358 - 0
src/views/modules/admin/attenders-meeting-update.vue

@ -0,0 +1,358 @@
1
<template>
2
  <el-dialog
3
    :title="!dataForm.id ? '新增' : '修改'"
4
    :close-on-click-modal="false"
5
    :visible.sync="visible"
6
  >
7
    <el-form
8
      :model="dataForm"
9
      :rules="dataRule"
10
      ref="dataForm"
11
      @keyup.enter.native="dataFormSubmit()"
12
      label-width="100px"
13
    >
14
      <el-form-item label="用户类型" prop="typeId">
15
        <el-select
16
          v-model="dataForm.memberType"
17
          filterable
18
          placeholder="请选择"
19
        >
20
          <el-option
21
            v-for="item in typesofattendersList"
22
            :key="item.value"
23
            :label="item.label"
24
            :value="item.value"
25
          ></el-option>
26
        </el-select>
27
      </el-form-item>
28
      <el-form-item label="注册费" prop="feeType">
29
        <el-radio v-model="dataForm.feeType" :label="1">正式代表</el-radio>
30
        <el-radio v-model="dataForm.feeType" :label="2">学生</el-radio>
31
        <el-radio v-model="dataForm.feeType" :label="3">会员</el-radio>
32
      </el-form-item>
33
34
      <el-form-item label="是否缴费" prop="intention">
35
        <el-radio v-model="dataForm.isPay" :label="1">是</el-radio>
36
        <el-radio v-model="dataForm.isPay" :label="0">否</el-radio>
37
      </el-form-item>
38
      <el-form-item label="报告题目">
39
        <el-input
40
          v-model="dataForm.reportTitle"
41
          placeholder="报告题目"
42
        ></el-input>
43
      </el-form-item>
44
      <el-form-item label="是否做报告" prop="intention">
45
        <el-radio v-model="dataForm.isReport" :label="1">是</el-radio>
46
        <el-radio v-model="dataForm.isReport" :label="0">否</el-radio>
47
      </el-form-item>
48
      <el-form-item label="是否发表论文" prop="intention">
49
        <el-radio v-model="dataForm.paperType" :label="1">中国腐蚀与防护学报</el-radio>
50
        <el-radio v-model="dataForm.paperType" :label="2">混凝土与水泥制品</el-radio>
51
        <el-radio v-model="dataForm.paperType" :label="3">华南理工大学学报</el-radio>
52
        <el-radio v-model="dataForm.paperType" :label="0">否</el-radio>
53
      </el-form-item>
54
      <el-form-item label="酒店类型">
55
        <el-radio v-model="dataForm.hotelType" :label="1">会议合作</el-radio>
56
        <el-radio v-model="dataForm.hotelType" :label="2">其他</el-radio>
57
      </el-form-item>
58
      <el-form-item label="房间类型">
59
        <el-radio v-model="dataForm.roomType" :label="1">双床房</el-radio>
60
        <el-radio v-model="dataForm.roomType" :label="2">大床房</el-radio>
61
      </el-form-item>
62
      <el-form-item label="是否接受合住" prop="intention">
63
        <el-radio v-model="dataForm.isShare" :label="1">是</el-radio>
64
        <el-radio v-model="dataForm.isShare" :label="0">否</el-radio>
65
      </el-form-item>
66
      <el-form-item label="入住离店时间">
67
      <el-date-picker
68
        v-model="checkDate"
69
        type="datetimerange"
70
        start-placeholder="入住时间"
71
        end-placeholder="离店时间"
72
        :default-time="['12:00:00']"
73
        value-format="yyyy-MM-dd HH:mm:ss"
74
        @change="timeTransformation"
75
        >
76
      </el-date-picker>
77
      </el-form-item>
78
      <!-- <p>&ensp;&ensp;&ensp;&ensp;&nbsp;入住时间&ensp;&ensp;{{this.dataForm.checkInDate}}</p>
79
      <p>&ensp;&ensp;&ensp;&ensp;&nbsp;离店时间&ensp;&ensp;{{this.dataForm.checkOutDate}}</p> -->
80
      
81
      <el-form-item label="缴费方式">
82
        <el-radio v-model="dataForm.payType" :label="1">现场缴费</el-radio>
83
        <el-radio v-model="dataForm.payType" :label="2">线上汇款</el-radio>
84
      </el-form-item>
85
      <el-form-item label="缴纳金额">
86
        <el-input v-model="dataForm.money" placeholder="缴纳金额"></el-input>
87
      </el-form-item>
88
    </el-form>
89
    <span slot="footer" class="dialog-footer">
90
      <el-button @click="visible = false">取消</el-button>
91
      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
92
    </span>
93
  </el-dialog>
94
</template>
95
96
<script>
97
export default {
98
  data() {
99
    return {
100
      checkDate:[],
101
      visible: false,
102
      loading: false,
103
      dataForm: {
104
        id: 0,
105
        memberId: 0, // 会员id
106
        memberType: 0, // 用户类型
107
        feeType: 1, // 费用类型
108
        paperType: 0, // 是否发论文
109
        isReport: 0, // 是否做报告
110
        reportTitle: "", // 报告题目
111
        payType: 1, // 付款方式
112
        isPay: 0, // 是否付款
113
        money: 0, // 金额
114
        hotelType: 1, //酒店类型
115
        roomType: 1, //房间类型
116
        isShare: 0, //是否接受合住
117
        checkInDate:"", //入住时间
118
        checkOutDate:"", //离店时间
119
      },
120
      dataRule: {
121
        meetingId: [
122
          { required: true, message: "会议id不能为空", trigger: "blur" },
123
        ],
124
        state2: [
125
          {
126
            required: true,
127
            message: "姓名不能为空",
128
            trigger: "blur",
129
          },
130
        ],
131
        organization: [
132
          {
133
            required: true,
134
            message: "所属机构(单位名称、公司名称)不能为空",
135
            trigger: "blur",
136
          },
137
        ],
138
        phone: [{ required: true, message: "电话不能为空", trigger: "blur" }],
139
        email: [{ required: true, message: "邮箱不能为空", trigger: "blur" }],
140
        room: [
141
          { required: true, message: "住宿要求不能为空", trigger: "blur" },
142
        ],
143
        transfer: [
144
          { required: true, message: "接送要求不能为空", trigger: "blur" },
145
        ],
146
      },
147
      employeeList: [],
148
      typesofattendersList: [
149
        {
150
          label: "正常",
151
          value: 0,
152
        },
153
        {
154
          label: "免注册",
155
          value: 1,
156
        },
157
      ],
158
      restaurants: [],
159
    };
160
  },
161
  created() {},
162
  methods: {
163
    timeTransformation(data1,data2){
164
      if (Array.isArray(data1)) {
165
        this.dataForm.checkInDate = data1[0];
166
        this.dataForm.checkOutDate = data1[1];
167
      } else {
168
        let arr = [data1, data2];
169
        return arr;
170
      }
171
    },
172
    init(id) {
173
      this.dataForm.id = id || 0;
174
      this.visible = true;
175
      this.$nextTick(() => {
176
        this.$refs["dataForm"].resetFields();
177
        if (this.dataForm.id) {
178
          this.$http({
179
            url: this.$http.adornUrl(
180
              `/admin/attenders/info/${this.dataForm.id}`
181
            ),
182
            method: "get",
183
            params: this.$http.adornParams(),
184
          }).then(({ data }) => {
185
            if (data && data.code === 0) {
186
              this.dataForm.memberType = data.attenders.memberType;
187
              this.dataForm.feeType = data.attenders.feeType;
188
              this.dataForm.paperType = data.attenders.paperType;
189
              this.dataForm.isReport = data.attenders.isReport;
190
              this.dataForm.reportTitle = data.attenders.reportTitle;
191
              this.dataForm.payType = data.attenders.payType;
192
              this.dataForm.isPay = data.attenders.isPay;
193
              this.dataForm.money = data.attenders.money;
194
              this.dataForm.isShare = data.attenders.isShare;
195
              this.dataForm.hotelType = data.attenders.hotelType;
196
              this.dataForm.roomType = data.attenders.roomType;
197
              this.checkDate = this.timeTransformation(
198
                data.attenders.checkInDate,
199
                data.attenders.checkOutDate
200
              )
201
              // this.dataForm.checkInDate = data.attenders.checkInDate;
202
              // this.dataForm.checkOutDate = data.attenders.checkOutDate;
203
            }
204
          });
205
        } else {
206
          this.dataForm.memberId = "";
207
          this.dataForm.memberType = "";
208
          this.dataForm.feeType = "";
209
          this.dataForm.school = "";
210
          this.dataForm.professional = "";
211
          this.dataForm.paperType = "";
212
          this.dataForm.isReport = "";
213
          this.dataForm.reportTitle = "";
214
          this.dataForm.payType = "";
215
          this.dataForm.isPay = "";
216
          this.dataForm.money = "";
217
          this.dataForm.isShare = "";
218
          this.dataForm.hotelType = "";
219
          this.dataForm.roomType = "";
220
          // this.dataForm.checkInDate = "";
221
          // this.dataForm.checkOutDate = "";
222
        }
223
      });
224
    },
225
    // 表单提交
226
    dataFormSubmit() {
227
      this.$refs["dataForm"].validate((valid) => {
228
        if (valid) {
229
          this.timeTransformation(this.checkDate);
230
          this.$http({
231
            url: this.$http.adornUrl(`/admin/attenders/updateattenders`),
232
            method: "post",
233
            data: this.$http.adornData({
234
              id: this.dataForm.id || undefined,
235
              memberType: this.dataForm.memberType,
236
              feeType: this.dataForm.feeType,
237
              paperType: this.dataForm.paperType,
238
              isReport: this.dataForm.isReport,
239
              reportTitle: this.dataForm.reportTitle,
240
              payType: this.dataForm.payType,
241
              isPay: this.dataForm.isPay,
242
              money: this.dataForm.money,
243
              isShare: this.dataForm.isShare,
244
              hotelType: this.dataForm.hotelType,
245
              roomType: this.dataForm.roomType,
246
              checkInDate: this.dataForm.checkInDate,
247
              checkOutDate: this.dataForm.checkOutDate,
248
            }),
249
          }).then(({ data }) => {
250
            if (data && data.code === 0) {
251
              this.$message({
252
                message: "操作成功",
253
                type: "success",
254
                duration: 1500,
255
                onClose: () => {
256
                  this.visible = false;
257
                  this.$emit("refreshDataList");
258
                },
259
              });
260
            } else {
261
              this.$message.error(data.msg);
262
            }
263
          });
264
        }
265
      });
266
    },
267
    //获取员工信息
268
    getEmployee() {
269
      this.loading = true;
270
      this.$http({
271
        url: this.$http.adornUrl(`/admin/employee/findAllByTrueName`),
272
        method: "get",
273
        params: this.$http.adornParams({
274
          truename: "",
275
        }),
276
      }).then(({ data }) => {
277
        if (data) {
278
          this.loading = false;
279
          this.employeeList = data;
280
        }
281
      });
282
    },
283
    //获取用户类型信息
284
    // getTypesofattenders() {
285
    //   this.$http({
286
    //     url: this.$http.adornUrl(`/admin/membertype/list`),
287
    //     method: "get"
288
    //   }).then(({ data }) => {
289
    //     console.log(data);
290
    //     if (data && data.code === 0) {
291
    //       this.typesofattendersList = data.list;
292
    //     }
293
    //   });
294
    // },
295
    createFilter(queryString) {
296
      return (restaurant) => {
297
        return (
298
          restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) ===
299
          0
300
        );
301
      };
302
    },
303
    querySearch(queryString, cb) {
304
      var restaurants = this.restaurants;
305
      var results = queryString
306
        ? restaurants.filter(this.createFilter(queryString))
307
        : restaurants;
308
      if (results.length === 0) {
309
        this.$message.error("没有会员信息,请添加会员信息");
310
      }
311
      cb(results);
312
    },
313
    //获取会员信息
314
    // getMember() {
315
    //   this.$http({
316
    //     url: this.$http.adornUrl("/admin/member/listall"),
317
    //     method: "get",
318
    //   }).then(({ data }) => {
319
    //     if (data.code === 0 && data) {
320
    //       for (let i = 0; i < data.list.length; i++) {
321
    //         data.list[i].value =
322
    //           data.list[i].truename + "," + data.list[i].organization;
323
    //       }
324
    //       this.restaurants = data.list;
325
    //     }
326
    //   });
327
    // },
328
    handleSelect(item) {
329
      if (item) {
330
        this.dataForm.jiobTitle = item.jiobTitle;
331
        this.dataForm.organization = item.organization;
332
        this.dataForm.phone = item.phone;
333
        this.dataForm.position = item.position;
334
        this.dataForm.memberId = item.id;
335
        this.dataForm.name = item.truename;
336
        this.dataForm.state2 = item.truename;
337
      }
338
    },
339
    creatorUser() {
340
      this.dataForm.name = this.dataForm.state2;
341
      if (this.dataForm.name) {
342
        this.$message({
343
          message: "添加成功",
344
          type: "success",
345
          duration: 1000,
346
        });
347
      }
348
    },
349
  },
350
};
351
</script>
352
<style lang="scss" scoped>
353
.ll-button {
354
  position: absolute;
355
  top: 0;
356
  right: 0;
357
}
358
</style>

+ 242 - 0
src/views/modules/admin/attenders-personal-update.vue

@ -0,0 +1,242 @@
1
<template>
2
  <el-dialog
3
    :title="!dataForm.id ? '新增' : '修改'"
4
    :close-on-click-modal="false"
5
    :visible.sync="visible"
6
  >
7
    <el-form
8
      :model="dataForm"
9
      :rules="dataRule"
10
      ref="dataForm"
11
      @keyup.enter.native="dataFormSubmit()"
12
      label-width="100px"
13
    >
14
      <el-form-item label="姓名" prop="truename">
15
        <el-input v-model="dataForm.truename" placeholder="姓名"></el-input>
16
      </el-form-item>
17
      <el-form-item label="性别" prop="sex">
18
        <el-radio v-model="dataForm.sex" :label="1">男</el-radio>
19
        <el-radio v-model="dataForm.sex" :label="2">女</el-radio>
20
        <el-radio v-model="dataForm.sex" :label="0">保密</el-radio>
21
      </el-form-item>
22
      <el-form-item label="所属机构" prop="organization">
23
        <el-input
24
          v-model="dataForm.organization"
25
          placeholder="所属机构(单位名称、公司名称)"
26
        ></el-input>
27
      </el-form-item>
28
      <el-form-item label="手机号" prop="phone">
29
        <el-input v-model="dataForm.phone" placeholder="手机号"></el-input>
30
      </el-form-item>
31
      <el-form-item label="邮箱">
32
        <el-input v-model="dataForm.email" placeholder="邮箱"></el-input>
33
      </el-form-item>
34
      <el-form-item label="职位" prop="position">
35
        <el-input v-model="dataForm.position" placeholder="职位"></el-input>
36
      </el-form-item>
37
      <el-form-item label="备注" prop="position">
38
        <el-input v-model="dataForm.remark" placeholder="备注" ></el-input>
39
      </el-form-item>
40
      <!-- <el-form-item label="座机" prop="officephone">
41
        <el-input v-model="dataForm.officephone" placeholder="座机"></el-input>
42
      </el-form-item> -->
43
    </el-form>
44
    <span slot="footer" class="dialog-footer">
45
      <el-button @click="visible = false">取消</el-button>
46
      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
47
    </span>
48
  </el-dialog>
49
</template>
50
51
<script>
52
export default {
53
  data() {
54
    return {
55
      visible: false,
56
      loading: false,
57
      dataForm: {
58
        memberId: 0, // 会员id
59
        truename: "", // 姓名
60
        sex: 0, // 性别
61
        organization: "", // 单位名称
62
        position: "", // 职务
63
        phone: "", // 电话
64
        email: "", // 邮箱
65
        remark: "", //备注
66
      },
67
      dataRule: {
68
        truename: [
69
          { required: true, message: "姓名不能为空", trigger: "blur" },
70
        ],
71
        phone: [{ required: true, message: "电话不能为空", trigger: "blur" }],
72
      },
73
      employeeList: [],
74
      typesofattendersList: [],
75
      restaurants: [],
76
    };
77
  },
78
  created() {
79
    // this.getEmployee();
80
    // this.getTypesofattenders();
81
    // this.getMember();
82
  },
83
  methods: {
84
    init(id) {
85
86
87
      this.visible = true;
88
      this.$nextTick(() => {
89
        this.$refs["dataForm"].resetFields();
90
91
          this.$http({
92
            url: this.$http.adornUrl(
93
              `/admin/member/info/${id}`
94
            ),
95
            method: "get",
96
            params: this.$http.adornParams(),
97
          }).then(({ data }) => {
98
            if (data && data.code === 0) {
99
              this.dataForm.id = data.member.id;
100
              this.dataForm.truename = data.member.truename;
101
              this.dataForm.sex = data.member.sex;
102
              this.dataForm.organization = data.member.organization;
103
              this.dataForm.position = data.member.position;
104
              this.dataForm.phone = data.member.phone;
105
              this.dataForm.email = data.member.email;
106
              this.dataForm.remark = data.member.remark;
107
            }
108
          });
109
       
110
      });
111
    },
112
    // 表单提交
113
    dataFormSubmit() {
114
      this.$refs["dataForm"].validate((valid) => {
115
        if (valid) {
116
          this.$http({
117
            url: this.$http.adornUrl(
118
              // `/admin/member/${!this.dataForm.id ? "save" : "update"}`
119
              `/admin/member/update`
120
            ),
121
            method: "post",
122
            data: this.$http.adornData({
123
              id: this.dataForm.id,
124
              truename: this.dataForm.truename, // 姓名
125
              phone: this.dataForm.phone, // 电话
126
              sex: this.dataForm.sex, // 性别,
127
              email: this.dataForm.email,
128
              organization: this.dataForm.organization, // 单位名称
129
              position: this.dataForm.position, // 职务
130
              remark: this.dataForm.remark, // 备注
131
            }),
132
          }).then(({ data }) => {
133
            if (data && data.code === 0) {
134
              this.$message({
135
                message: "操作成功",
136
                type: "success",
137
                duration: 1500,
138
                onClose: () => {
139
                  this.visible = false;
140
                  this.$emit("refreshDataList");
141
                },
142
              });
143
            } else {
144
              this.$message.error(data.msg);
145
            }
146
          });
147
        }
148
      });
149
    },
150
    //获取员工信息
151
    getEmployee() {
152
      this.loading = true;
153
      this.$http({
154
        url: this.$http.adornUrl(`/admin/employee/findAllByTrueName`),
155
        method: "get",
156
        params: this.$http.adornParams({
157
          truename: "",
158
        }),
159
      }).then(({ data }) => {
160
        if (data) {
161
          this.loading = false;
162
          this.employeeList = data;
163
        }
164
      });
165
    },
166
    //获取用户类型信息
167
    // getTypesofattenders() {
168
    //   this.$http({
169
    //     url: this.$http.adornUrl(
170
    //       `/admin/typesofattenders/listbymid/${this.$route.params.id}`
171
    //     ),
172
    //     method: "get",
173
    //   }).then(({ data }) => {
174
    //     if (data && data.code === 0) {
175
    //       this.typesofattendersList = data.list;
176
    //     }
177
    //   });
178
    // },
179
    createFilter(queryString) {
180
      return (restaurant) => {
181
        return (
182
          restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) ===
183
          0
184
        );
185
      };
186
    },
187
    querySearch(queryString, cb) {
188
      var restaurants = this.restaurants;
189
      var results = queryString
190
        ? restaurants.filter(this.createFilter(queryString))
191
        : restaurants;
192
      if (results.length === 0) {
193
        this.$message.error("没有会员信息,请添加会员信息");
194
      }
195
      cb(results);
196
    },
197
    //获取会员信息
198
    getMember() {
199
      this.$http({
200
        url: this.$http.adornUrl("/admin/member/listall"),
201
        method: "get",
202
      }).then(({ data }) => {
203
        if (data.code === 0 && data) {
204
          for (let i = 0; i < data.list.length; i++) {
205
            data.list[i].value =
206
              data.list[i].truename + "," + data.list[i].organization;
207
          }
208
          this.restaurants = data.list;
209
        }
210
      });
211
    },
212
    handleSelect(item) {
213
      if (item) {
214
        this.dataForm.jiobTitle = item.jiobTitle;
215
        this.dataForm.organization = item.organization;
216
        this.dataForm.phone = item.phone;
217
        this.dataForm.position = item.position;
218
        this.dataForm.memberId = item.id;
219
        this.dataForm.name = item.truename;
220
        this.dataForm.state2 = item.truename;
221
      }
222
    },
223
    creatorUser() {
224
      this.dataForm.name = this.dataForm.state2;
225
      if (this.dataForm.name) {
226
        this.$message({
227
          message: "添加成功",
228
          type: "success",
229
          duration: 1000,
230
        });
231
      }
232
    },
233
  },
234
};
235
</script>
236
<style lang="scss" scoped>
237
.ll-button {
238
  position: absolute;
239
  top: 0;
240
  right: 0;
241
}
242
</style>

+ 278 - 0
src/views/modules/admin/attenders-ticketing-update.vue

@ -0,0 +1,278 @@
1
<template>
2
  <el-dialog
3
    :title="!dataForm.id ? '新增' : '修改'"
4
    :close-on-click-modal="false"
5
    :visible.sync="visible"
6
  >
7
    <el-form
8
      :model="dataForm"
9
      :rules="dataRule"
10
      ref="dataForm"
11
      @keyup.enter.native="dataFormSubmit()"
12
      label-width="100px"
13
    >
14
      <el-form-item label="开票类型" prop="taxType">
15
        <el-radio v-model="dataForm.taxType" :label="1">普票</el-radio>
16
        <el-radio v-model="dataForm.taxType" :label="2">专票</el-radio>
17
      </el-form-item>
18
      <el-form-item label="发票抬头	" prop="taxTitle">
19
        <el-input
20
          v-model="dataForm.taxTitle"
21
          placeholder="发票抬头(公司名称)	"
22
        ></el-input>
23
      </el-form-item>
24
      <el-form-item label="纳税人识别号" prop="taxNumber">
25
        <el-input
26
          v-model="dataForm.taxNumber"
27
          placeholder="纳税人识别号"
28
        ></el-input>
29
      </el-form-item>
30
      <el-form-item label="开户行及账号" prop="bankAccount">
31
        <el-input
32
          v-model="dataForm.bankAccount"
33
          placeholder="开户行及账号"
34
        ></el-input>
35
      </el-form-item>
36
      <el-form-item label="电 话" prop="companyPhone">
37
        <el-input
38
          v-model="dataForm.companyPhone"
39
          placeholder="电 话"
40
        ></el-input>
41
      </el-form-item>
42
      <el-form-item label="地 址" prop="companyAddress">
43
        <el-input
44
          v-model="dataForm.companyAddress"
45
          placeholder="地 址"
46
        ></el-input>
47
      </el-form-item>
48
      <el-form-item label="邮 编" prop="postcode">
49
        <el-input v-model="dataForm.postcode" placeholder="邮 编"></el-input>
50
      </el-form-item>
51
      <el-form-item label="邮寄地址" prop="mailingAddress">
52
        <el-input
53
          v-model="dataForm.mailingAddress"
54
          placeholder="邮寄地址"
55
        ></el-input>
56
      </el-form-item>
57
    </el-form>
58
    <span slot="footer" class="dialog-footer">
59
      <el-button @click="visible = false">取消</el-button>
60
      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
61
    </span>
62
  </el-dialog>
63
</template>
64
65
<script>
66
export default {
67
  data() {
68
    return {
69
      visible: false,
70
      loading: false,
71
      dataForm: {
72
        id: 0, // 会员id
73
        taxType: 0, // 开票类型
74
        taxTitle: "", // 发票抬头(公司名称)
75
        taxNumber: "", // 税号
76
        companyAddress: "", // 公司地址(注册)
77
        companyPhone: "", // 公司电话(注册)
78
        bankAccount: "", // 开户行及账号
79
        mailingAddress: "", // 发票邮寄地址
80
        postcode: "", // 邮箱
81
        phone: "", // 个人电话
82
        truename: "", //姓名
83
      },
84
      dataRule: {
85
        meetingId: [
86
          { required: true, message: "会议id不能为空", trigger: "blur" },
87
        ],
88
        state2: [
89
          {
90
            required: true,
91
            message: "姓名不能为空",
92
            trigger: "blur",
93
          },
94
        ],
95
        organization: [
96
          {
97
            required: true,
98
            message: "所属机构(单位名称、公司名称)不能为空",
99
            trigger: "blur",
100
          },
101
        ],
102
        phone: [{ required: true, message: "电话不能为空", trigger: "blur" }],
103
        email: [{ required: true, message: "邮箱不能为空", trigger: "blur" }],
104
        room: [
105
          { required: true, message: "住宿要求不能为空", trigger: "blur" },
106
        ],
107
        transfer: [
108
          { required: true, message: "接送要求不能为空", trigger: "blur" },
109
        ],
110
      },
111
      employeeList: [],
112
      typesofattendersList: [],
113
      restaurants: [],
114
    };
115
  },
116
  created() {
117
    // this.getEmployee();
118
    // this.getTypesofattenders();
119
    // this.getMember();
120
  },
121
  methods: {
122
    init(id) {
123
      this.visible = true;
124
      this.$nextTick(() => {
125
        this.$refs["dataForm"].resetFields();
126
        this.$http({
127
          url: this.$http.adornUrl(`/admin/member/info/${id}`),
128
          method: "get",
129
          params: this.$http.adornParams(),
130
        }).then(({ data }) => {
131
          window.console.log(data);
132
          if (data && data.code === 0) {
133
            this.dataForm.id = data.member.id;
134
            this.dataForm.taxType = data.member.taxType;
135
            this.dataForm.taxTitle = data.member.taxTitle;
136
            this.dataForm.taxNumber = data.member.taxNumber;
137
            this.dataForm.companyAddress = data.member.companyAddress;
138
            this.dataForm.companyPhone = data.member.companyPhone;
139
            this.dataForm.bankAccount = data.member.bankAccount;
140
            this.dataForm.mailingAddress = data.member.mailingAddress;
141
            this.dataForm.postcode = data.member.postcode;
142
            this.dataForm.phone = data.member.phone;
143
            this.dataForm.truename = data.member.truename;
144
          }
145
        });
146
      });
147
    },
148
    // 表单提交
149
    dataFormSubmit() {
150
      this.$refs["dataForm"].validate((valid) => {
151
        if (valid) {
152
          this.$http({
153
            url: this.$http.adornUrl(`/admin/member/update`),
154
            method: "post",
155
            data: this.$http.adornData({
156
              id: this.dataForm.id, // 会员id
157
              taxType: this.dataForm.taxType, // 开票类型
158
              taxTitle: this.dataForm.taxTitle, // 发票抬头(公司名称)
159
              taxNumber: this.dataForm.taxNumber, // 税号
160
              companyAddress: this.dataForm.companyAddress, // 公司地址(注册)
161
              companyPhone: this.dataForm.companyPhone, // 公司电话(注册)
162
              bankAccount: this.dataForm.bankAccount, // 开户行及账号
163
              mailingAddress: this.dataForm.mailingAddress, // 发票邮寄地址
164
              postcode: this.dataForm.postcode,
165
              phone: this.dataForm.phone,
166
              truename: this.dataForm.truename,
167
            }),
168
          }).then(({ data }) => {
169
            if (data && data.code === 0) {
170
              this.$message({
171
                message: "操作成功",
172
                type: "success",
173
                duration: 1500,
174
                onClose: () => {
175
                  this.visible = false;
176
                  this.$emit("refreshDataList");
177
                },
178
              });
179
            } else {
180
              this.$message.error(data.msg);
181
            }
182
          });
183
        }
184
      });
185
    },
186
    //获取员工信息
187
    getEmployee() {
188
      this.loading = true;
189
      this.$http({
190
        url: this.$http.adornUrl(`/admin/employee/findAllByTrueName`),
191
        method: "get",
192
        params: this.$http.adornParams({
193
          truename: "",
194
        }),
195
      }).then(({ data }) => {
196
        if (data) {
197
          this.loading = false;
198
          this.employeeList = data;
199
        }
200
      });
201
    },
202
    //获取用户类型信息
203
    getTypesofattenders() {
204
      this.$http({
205
        url: this.$http.adornUrl(
206
          `/admin/typesofattenders/listbymid/${this.$route.params.id}`
207
        ),
208
        method: "get",
209
      }).then(({ data }) => {
210
        if (data && data.code === 0) {
211
          this.typesofattendersList = data.list;
212
        }
213
      });
214
    },
215
    createFilter(queryString) {
216
      return (restaurant) => {
217
        return (
218
          restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) ===
219
          0
220
        );
221
      };
222
    },
223
    querySearch(queryString, cb) {
224
      var restaurants = this.restaurants;
225
      var results = queryString
226
        ? restaurants.filter(this.createFilter(queryString))
227
        : restaurants;
228
      if (results.length === 0) {
229
        this.$message.error("没有会员信息,请添加会员信息");
230
      }
231
      cb(results);
232
    },
233
    //获取会员信息
234
    getMember() {
235
      this.$http({
236
        url: this.$http.adornUrl("/admin/member/listall"),
237
        method: "get",
238
      }).then(({ data }) => {
239
        if (data.code === 0 && data) {
240
          for (let i = 0; i < data.list.length; i++) {
241
            data.list[i].value =
242
              data.list[i].truename + "," + data.list[i].organization;
243
          }
244
          this.restaurants = data.list;
245
        }
246
      });
247
    },
248
    handleSelect(item) {
249
      if (item) {
250
        this.dataForm.jiobTitle = item.jiobTitle;
251
        this.dataForm.organization = item.organization;
252
        this.dataForm.phone = item.phone;
253
        this.dataForm.position = item.position;
254
        this.dataForm.memberId = item.id;
255
        this.dataForm.name = item.truename;
256
        this.dataForm.state2 = item.truename;
257
      }
258
    },
259
    creatorUser() {
260
      this.dataForm.name = this.dataForm.state2;
261
      if (this.dataForm.name) {
262
        this.$message({
263
          message: "添加成功",
264
          type: "success",
265
          duration: 1000,
266
        });
267
      }
268
    },
269
  },
270
};
271
</script>
272
<style lang="scss" scoped>
273
.ll-button {
274
  position: absolute;
275
  top: 0;
276
  right: 0;
277
}
278
</style>

+ 427 - 41
src/views/modules/admin/attenders.vue

@ -1,22 +1,44 @@
1 1
<template>
2 2
  <div class="mod-config">
3
    <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
3
    <el-form
4
      :inline="true"
5
      :model="dataForm"
6
      @keyup.enter.native="getDataList()"
7
    >
8
      <el-form-item>
9
        <el-input
10
          v-model="dataForm.key"
11
          placeholder="姓名/所属机构"
12
          clearable
13
        ></el-input>
14
      </el-form-item>
4 15
      <el-form-item>
5
        <el-input v-model="dataForm.key" placeholder="姓名/所属机构" clearable></el-input>
16
        <el-select style="width:120px;" @change="se()" v-model="dataForm.isOnline" placeholder="123">
17
    <el-option
18
      v-for="item in options"
19
      :key="item.value"
20
      :label="item.label"
21
      :value="item.value">
22
    </el-option>
23
  </el-select>
6 24
      </el-form-item>
7 25
      <el-form-item>
8
        <el-button @click="getDataList()">查询</el-button>
26
        <el-button @click="se()">查询</el-button>
27
        <el-button @click="dialogVisible = true" type="warning">导入</el-button>
28
        <el-button @click="exportList()" type="success">导出</el-button>
9 29
        <el-button
10 30
          v-if="isAuth('admin:attenders:save')"
11 31
          type="primary"
12 32
          @click="addOrUpdateHandle()"
13
        >新增</el-button>
33
          >新增</el-button
34
        >
14 35
        <!-- <el-button type="primary" @click="deleteHandle()">导入会员名单</el-button> -->
15 36
        <el-button
16 37
          v-if="isAuth('admin:attenders:delete')"
17 38
          type="danger"
18 39
          @click="deleteHandle()"
19
        >批量删除</el-button>
40
          >批量删除</el-button
41
        >
20 42
      </el-form-item>
21 43
    </el-form>
22 44
    <el-table
@ -24,12 +46,100 @@
24 46
      border
25 47
      v-loading="dataListLoading"
26 48
      @selection-change="selectionChangeHandle"
27
      style="width: 100%;"
49
      style="width: 100%"
50
      :row-class-name="tabColor"
51
      @cell-mouse-enter="demo"
28 52
    >
29
      <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
30
      <el-table-column prop="name" header-align="center" align="center" label="姓名"></el-table-column>
31
      <el-table-column prop="organization" header-align="center" align="center" label="所属机构"></el-table-column>
32
      <el-table-column prop="intention" header-align="center" align="center" label="参会意向">
53
      <el-table-column
54
        type="selection"
55
        header-align="center"
56
        align="center"
57
        width="50"
58
      ></el-table-column>
59
60
      <el-table-column
61
        prop="id"
62
        header-align="center"
63
        align="center"
64
        label="id"
65
        width="70"
66
      >
67
      </el-table-column>
68
      <!-- <el-table-column
69
        prop="name"
70
        header-align="center"
71
        align="center"
72
        label="flag"
73
      > -->
74
        <!-- <template slot-scope="scope">
75
          <div>
76
            <img
77
              v-if="scope.row.flag === 1"
78
              src="../../../assets/img/flag.png"
79
              alt
80
              @click="handFlag(scope.row.memberId, 0)"
81
              style="height: 22px"
82
            />
83
            <img
84
              v-else
85
              src="../../../assets/img/flag (1).png"
86
              alt
87
              @click="handFlag(scope.row.memberId, 1)"
88
              style="height: 22px"
89
            />
90
          </div>
91
        </template> -->
92
      <!-- </el-table-column> -->
93
94
      <el-table-column
95
        prop="truename"
96
        header-align="center"
97
        align="center"
98
        label="姓名"
99
        style="color: red"
100
      ></el-table-column>
101
      <el-table-column
102
        prop="phone"
103
        header-align="center"
104
        align="center"
105
        label="电话"
106
      ></el-table-column>
107
      <el-table-column
108
        prop="email"
109
        header-align="center"
110
        align="center"
111
        label="邮箱"
112
      ></el-table-column>
113
114
      <el-table-column
115
        prop="organization"
116
        header-align="center"
117
        align="center"
118
        label="所属机构"
119
      ></el-table-column>
120
      <!-- <el-table-column prop="position" header-align="center" align="center" label="职位"></el-table-column> -->
121
      <!-- <el-table-column prop="email" header-align="center" align="center" label="座机"></el-table-column> -->
122
      <!-- <el-table-column
123
        prop="email"
124
        header-align="center"
125
        align="center"
126
        label="邮箱"
127
      ></el-table-column> -->
128
      <el-table-column
129
        prop="isPay"
130
        header-align="center"
131
        align="center"
132
        label="是否缴费"
133
      >
134
        <template slot-scope="scope">
135
          <div>
136
            <el-tag v-if="scope.row.isPay === 1">已缴费</el-tag>
137
            <el-tag v-else type="danger">未交费</el-tag>
138
          </div>
139
        </template>
140
      </el-table-column>
141
      <!-- <el-table-column prop="email" header-align="center" align="center" label="缴费金额"></el-table-column> -->
142
      <!-- <el-table-column prop="intention" header-align="center" align="center" label="参会意向">
33 143
        <template slot-scope="scope">
34 144
          <el-button
35 145
            v-if="scope.row.intention===1"
@ -38,8 +148,8 @@
38 148
          >是</el-button>
39 149
          <el-button v-else @click="changeStatus(scope.row.id, 'intention', 1)">否</el-button>
40 150
        </template>
41
      </el-table-column>
42
      <el-table-column prop="room" header-align="center" align="center" label="住宿要求">
151
      </el-table-column>-->
152
      <!-- <el-table-column prop="room" header-align="center" align="center" label="住宿要求">
43 153
        <template slot-scope="scope">
44 154
          <el-button
45 155
            v-if="scope.row.room===1"
@ -58,18 +168,90 @@
58 168
          >是</el-button>
59 169
          <el-button v-else @click="changeStatus(scope.row.id, 'transfer', 1) ">否</el-button>
60 170
        </template>
171
      </el-table-column>-->
172
      <!-- <el-table-column
173
        prop="memberType"
174
        header-align="center"
175
        align="center"
176
        label="用户类型"
177
      >
178
        <template slot-scope="scope">
179
          <div>{{ listType2[scope.row.memberType] }}</div>
180
        </template>
181
      </el-table-column> -->
182
183
      <!-- <el-table-column
184
        prop="feeType"
185
        header-align="center"
186
        align="center"
187
        label="注册费"
188
      >
189
        <template slot-scope="scope">
190
          <div v-if="scope.row.feeType === 1">普通</div>
191
          <div v-else>学生</div>
192
        </template>
193
      </el-table-column> -->
194
195
      <!-- <el-table-column prop="servicerName" header-align="center" align="center" label="负责人"></el-table-column> -->
196
      <el-table-column
197
        prop="createTime"
198
        header-align="center"
199
        align="center"
200
        label="报名时间"
201
      >
61 202
      </el-table-column>
62
      <el-table-column prop="typeName" header-align="center" align="center" label="用户类型"></el-table-column>
63
      <el-table-column prop="servicerName" header-align="center" align="center" label="负责人"></el-table-column>
64
      <el-table-column prop="note" header-align="center" align="center" label="备注"></el-table-column>
65
      <el-table-column prop="modify_time" header-align="center" align="center" label="修改时间"></el-table-column>
66
      <el-table-column fixed="right" header-align="center" align="center" width="150" label="操作">
203
      <!-- <el-table-column
204
        label="备注"
205
        header-align="center"
206
        align="center"
207
        width="280px"
208
      >
67 209
        <template slot-scope="scope">
68
          <el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
69
          <el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
210
          <el-input
211
            type="textarea"
212
            @blur="getNot(scope.row.memberId, scope.row.remark)"
213
            resize="none"
214
            v-model="scope.row.remark"
215
          ></el-input>
216
        </template>
217
      </el-table-column> -->
218
      <!-- <el-table-column prop="modify_time" header-align="center" align="center" label="修改时间"></el-table-column> -->
219
      <el-table-column
220
        fixed="right"
221
        header-align="center"
222
        align="center"
223
        width="250"
224
        label="操作"
225
      >
226
        <template slot-scope="scope">
227
          <el-button
228
            type="text"
229
            size="small"
230
            @click="personalUpdateHandle(scope.row.memberId)"
231
            >个人信息</el-button
232
          >
233
          <el-button
234
            type="text"
235
            size="small"
236
            @click="meetingUpdateHandle(scope.row.id)"
237
            >参会信息</el-button
238
          >
239
          <el-button
240
            type="text"
241
            size="small"
242
            @click="tickeTingUpdateHandle(scope.row.memberId)"
243
            >开票信息</el-button
244
          >
245
          <el-button
246
            type="text"
247
            size="small"
248
            @click="deleteHandle(scope.row.id)"
249
            >删除</el-button
250
          >
70 251
        </template>
71 252
      </el-table-column>
72 253
    </el-table>
254
    
73 255
    <el-pagination
74 256
      @size-change="sizeChangeHandle"
75 257
      @current-change="currentChangeHandle"
@ -80,34 +262,134 @@
80 262
      layout="total, sizes, prev, pager, next, jumper"
81 263
    ></el-pagination>
82 264
    <!-- 弹窗, 新增 / 修改 -->
83
    <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
265
    <add-or-update
266
      v-if="addOrUpdateVisible"
267
      ref="addOrUpdate"
268
      @refreshDataList="getDataList"
269
    ></add-or-update>
270
    <update-personal
271
      v-if="personalUpdateVisible"
272
      ref="personalUpdate"
273
      @refreshDataList="getDataList"
274
    ></update-personal>
275
    <update-meeting
276
      v-if="meetingUpdateVisible"
277
      ref="meetingUpdate"
278
      @refreshDataList="getDataList"
279
    ></update-meeting>
280
    <update-ticketing
281
      v-if="tickeTingUpdateVisible"
282
      ref="tickeTingUpdate"
283
      @refreshDataList="getDataList"
284
    ></update-ticketing>
285
    <el-dialog title="导入表单" :visible.sync="dialogVisible">
286
      <el-form>
287
        <el-form-item label="上传投稿">
288
          <el-upload
289
            class="upload-demo"
290
            ref="upload"
291
            :action="upload_url"
292
            :on-success="successHandle"
293
            :file-list="fileList"
294
            :limit="1"
295
            :data="meetingId"
296
            :auto-upload="false"
297
            name="file"
298
          >
299
            <el-button slot="trigger" size="small" type="primary"
300
              >选取文件</el-button
301
            >
302
            <!-- <el-button
303
              style="margin-left: 10px;"
304
              size="small"
305
              type="success"
306
              @click="submitUpload"
307
            >上传到服务器</el-button>-->
308
            <div slot="tip" class="el-upload__tip" style="color: red">
309
              只能上传 pdf doc docx 文件,上传大小为4M
310
            </div>
311
          </el-upload>
312
        </el-form-item>
313
      </el-form>
314
      <span slot="footer" class="dialog-footer">
315
        <el-button @click="dialogVisible = false">取 消</el-button>
316
        <el-button type="primary" @click="submitUpload">确 定</el-button>
317
      </span>
318
    </el-dialog>
84 319
  </div>
85 320
</template>
86
87 321
<script>
88 322
import AddOrUpdate from "./attenders-add-or-update";
323
import UpdatePersonal from "./attenders-personal-update";
324
import UpdateMeeting from "./attenders-meeting-update";
325
import UpdateTicketing from "./attenders-ticketing-update";
89 326
export default {
90 327
  data() {
91 328
    return {
92 329
      dataForm: {
93
        key: ""
330
        key: "",
331
        isOnline:null,
94 332
      },
95 333
      dataList: [],
334
      fileList: [],
96 335
      pageIndex: 1,
97
      pageSize: 10,
336
      pageSize: 20,
98 337
      totalPage: 0,
99 338
      dataListLoading: false,
100 339
      dataListSelections: [],
101
      addOrUpdateVisible: false
340
      addOrUpdateVisible: false,
341
      personalUpdateVisible: false,
342
      meetingUpdateVisible: false,
343
      tickeTingUpdateVisible: false,
344
      isFlag: true,
345
      remark: "",
346
      dialogVisible: false,
347
      upload_url: "",
348
      meetingId: {
349
        meetingId: this.$route.params.id,
350
      },
351
      options:[
352
        {
353
          value: null,
354
          label: '全部'
355
        }, {
356
          value: 1,
357
          label: '线上报名'
358
        }, {
359
          value: 0,
360
          label: '非线上报名'
361
        }
362
      ],
363
364
      listType2: {
365
        10: "正常缴费",
366
        50: "北科大",
367
        60: "理事会",
368
        70: "媒体",
369
        80: "参展商",
370
        90: "免注册",
371
      },
102 372
    };
103 373
  },
104 374
  components: {
105
    AddOrUpdate
375
    AddOrUpdate,
376
    UpdatePersonal,
377
    UpdateMeeting,
378
    UpdateTicketing,
106 379
  },
107 380
  activated() {
108 381
    this.getDataList();
382
    this.upload_url = this.$http.adornUrl(
383
      `/admin/attenders/import?token=${this.$cookie.get("token")}`
384
    );
109 385
  },
386
  computed: {},
110 387
  methods: {
388
    // 查询
389
    se() {
390
      this.pageIndex = 1;
391
      this.getDataList();
392
    },
111 393
    // 获取数据列表
112 394
    getDataList() {
113 395
      this.dataListLoading = true;
@ -118,8 +400,9 @@ export default {
118 400
          page: this.pageIndex,
119 401
          limit: this.pageSize,
120 402
          key: this.dataForm.key,
121
          meetingId: this.$route.params.id
122
        })
403
          isOnline: this.dataForm.isOnline,
404
          meetingId: this.$route.params.id,
405
        }),
123 406
      }).then(({ data }) => {
124 407
        if (data && data.code === 0) {
125 408
          this.dataList = data.page.list;
@ -153,25 +436,22 @@ export default {
153 436
        this.$refs.addOrUpdate.init(id);
154 437
      });
155 438
    },
156
    handclick(id) {
157
      window.console.log(id);
158
    },
159 439
    // 删除
160 440
    deleteHandle(id) {
161 441
      var ids = id
162 442
        ? [id]
163
        : this.dataListSelections.map(item => {
443
        : this.dataListSelections.map((item) => {
164 444
            return item.id;
165 445
          });
166 446
      this.$confirm(`确定删除?`, "提示", {
167 447
        confirmButtonText: "确定",
168 448
        cancelButtonText: "取消",
169
        type: "warning"
449
        type: "warning",
170 450
      }).then(() => {
171 451
        this.$http({
172 452
          url: this.$http.adornUrl("/admin/attenders/delete"),
173 453
          method: "post",
174
          data: this.$http.adornData(ids, false)
454
          data: this.$http.adornData(ids, false),
175 455
        }).then(({ data }) => {
176 456
          if (data && data.code === 0) {
177 457
            this.$message({
@ -180,7 +460,7 @@ export default {
180 460
              duration: 1500,
181 461
              onClose: () => {
182 462
                this.getDataList();
183
              }
463
              },
184 464
            });
185 465
          } else {
186 466
            this.$message.error(data.msg);
@ -188,8 +468,27 @@ export default {
188 468
        });
189 469
      });
190 470
    },
471
    //个人信息弹窗
472
    personalUpdateHandle(id) {
473
      this.personalUpdateVisible = true;
474
      this.$nextTick(() => {
475
        this.$refs.personalUpdate.init(id);
476
      });
477
    },
478
    //参会信息
479
    meetingUpdateHandle(id) {
480
      this.meetingUpdateVisible = true;
481
      this.$nextTick(() => {
482
        this.$refs.meetingUpdate.init(id);
483
      });
484
    },
485
    tickeTingUpdateHandle(id) {
486
      this.tickeTingUpdateVisible = true;
487
      this.$nextTick(() => {
488
        this.$refs.tickeTingUpdate.init(id);
489
      });
490
    },
191 491
    changeStatus(id, column, value) {
192
      console.log(id);
193 492
      // console.log(obj)
194 493
      this.$http({
195 494
        url: this.$http.adornUrl("/admin/attenders/status"),
@ -197,8 +496,8 @@ export default {
197 496
        data: this.$http.adornData({
198 497
          id: id,
199 498
          column: column,
200
          value: value
201
        })
499
          value: value,
500
        }),
202 501
      }).then(({ data }) => {
203 502
        if (data && data.code === 0) {
204 503
          this.$message({
@ -208,19 +507,106 @@ export default {
208 507
            onClose: () => {
209 508
              //  this.getDataList()
210 509
              var dList = this.dataList;
211
              dList.forEach(element => {
510
              dList.forEach((element) => {
212 511
                if (element.id === id) {
213 512
                  element[column] = value;
214 513
                }
215 514
              });
216 515
              this.dataList = dList;
217
            }
516
            },
218 517
          });
219 518
        } else {
220 519
          this.$message.error(data.msg);
221 520
        }
222 521
      });
223
    }
224
  }
522
    },
523
524
    getNot(data, text) {
525
      this.$http({
526
        url: this.$http.adornUrl("/admin/member/remark"),
527
        method: "post",
528
        data: this.$http.adornData({
529
          id: data,
530
          remark: text,
531
        }),
532
      }).then(({ data }) => {
533
        if (data && data.code === 0) {
534
          return;
535
        } else {
536
          this.$message.error(data.msg);
537
        }
538
      });
539
    },
540
541
    tabColor({ row, rowIndex }) {
542
      if (row.flag === 1) {
543
        return "f_red";
544
      }
545
    },
546
    handFlag(id, flag) {
547
      this.$http({
548
        url: this.$http.adornUrl("/admin/member/flag"),
549
        method: "post",
550
        data: {
551
          id: id,
552
          flag: flag,
553
        },
554
      }).then(({ data }) => {
555
        if (data && data.code === 0) {
556
          let dlist = this.dataList;
557
          dlist.forEach((item, index) => {
558
            if (item.memberId === id) {
559
              item.flag = flag;
560
            }
561
          });
562
          // this.dataList = dlist;
563
        }
564
      });
565
    },
566
    exportList() {
567
      window.open(
568
        this.$http.adornUrl(
569
          `/admin/attenders/export?token=${this.$cookie.get(
570
            "token"
571
          )}&meetingId=${this.$route.params.id}`
572
        )
573
      );
574
    },
575
    successHandle(response) {
576
      let { statistics } = response;
577
      if (response && response.code === 0) {
578
        this.dialogVisible = false;
579
        this.$refs.upload.clearFiles();
580
581
        this.getDataList();
582
        this.$message({
583
          message:
584
            "上传成功,成功" +
585
            statistics.succes +
586
            "条,失败" +
587
            statistics.fail +
588
            "条",
589
          type: "success",
590
        });
591
      } else {
592
        this.$message.error(response.msg);
593
      }
594
    },
595
    submitUpload() {
596
      this.$refs.upload.submit();
597
      this.dialogVisible = false;
598
      this.getDataList();
599
    },
600
    demo(row, column, cell, event) {
601
      cell.onmouseover = () => {
602
        cell.style.cursor = "pointer";
603
      };
604
    },
605
  },
225 606
};
226 607
</script>
608
<style lang="scss" scope>
609
.f_red {
610
  color: #d81e06;
611
}
612
</style>

+ 190 - 0
src/views/modules/admin/branch-add-or-update.vue

@ -0,0 +1,190 @@
1
<template>
2
  <el-dialog
3
    :title="!dataForm.id ? '新增' : '修改'"
4
    :close-on-click-modal="false"
5
    :visible.sync="visible"
6
  >
7
    <el-form
8
      :model="dataForm"
9
      :rules="dataRule"
10
      ref="dataForm"
11
      @keyup.enter.native="dataFormSubmit()"
12
      label-width="128px"
13
    >
14
      <el-form-item label="会场名称	" prop="name">
15
        <el-input v-model="dataForm.name" placeholder="会场名称"></el-input>
16
      </el-form-item>
17
      <el-form-item label="地点" prop="address">
18
        <el-input v-model="dataForm.address" placeholder="地点"></el-input>
19
      </el-form-item>
20
      <el-form-item label="负责人" prop="username">
21
        <el-input v-model="dataForm.username" placeholder="负责人"></el-input>
22
      </el-form-item>
23
      <el-form-item label="时间	" prop="startTime">
24
        <!-- <el-input v-model="dataForm.startTime" placeholder="时间	"></el-input> -->
25
        <el-date-picker
26
          v-model="dataForm.startTime"
27
          type="date"
28
          placeholder="选择日期"
29
          value-format="yyyy-MM-dd HH:mm:ss"
30
        >
31
        </el-date-picker>
32
      </el-form-item>
33
      <el-form-item label="上传会议封面图片" prop="titlePicture">
34
        <!-- <el-upload
35
          :action="dialogImageUrl"
36
          list-type="picture-card"
37
          :on-success="handlePictureCardPreview"
38
          :file-list="titlePictureList"
39
          name="upload_file"
40
        >
41
          <i class="el-icon-plus"></i>
42
        </el-upload> -->
43
        <el-upload
44
          class="avatar-uploader"
45
          :action="dialogImageUrl"
46
          :show-file-list="false"
47
          :on-success="handlePictureCardPreview"
48
          name="upload_file"
49
        >
50
          <img
51
            v-if="this.dataForm.titlepic"
52
            :src="this.dataForm.titlepic"
53
            class="avatar"
54
          />
55
          <i v-else class="el-icon-plus avatar-uploader-icon"></i>
56
        </el-upload>
57
      </el-form-item>
58
    </el-form>
59
    <span slot="footer" class="dialog-footer">
60
      <el-button @click="visible = false">取消</el-button>
61
      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
62
    </span>
63
  </el-dialog>
64
</template>
65
66
<script>
67
export default {
68
  data() {
69
    return {
70
      dialogImageUrl: "",
71
      visible: false,
72
      dataForm: {
73
        id: 0,
74
        pid: 0,
75
        name: "",
76
        address: "",
77
        startTime: "",
78
        username: "",
79
        titlepic: "",
80
      },
81
      dataRule: {
82
        name: [{ required: true, message: "会场不能为空", trigger: "blur" }],
83
        address: [{ required: true, message: "地点不能为空", trigger: "blur" }],
84
        startTime: [
85
          { required: true, message: "时间不能为空", trigger: "blur" },
86
        ],
87
        username: [
88
          { required: true, message: "负责人不能为空", trigger: "blur" },
89
        ],
90
      },
91
    };
92
  },
93
  methods: {
94
    // 上传成功
95
    handlePictureCardPreview(response, file) {
96
       this.dataForm.titlepic = response.picname
97
     
98
    },
99
    init(id) {
100
      this.dataForm.id = id || 0;
101
      this.dataForm.pid = this.$route.params.id;
102
      this.visible = true;
103
      this.$nextTick(() => {
104
        this.$refs["dataForm"].resetFields();
105
        if (this.dataForm.id) {
106
          this.$http({
107
            url: this.$http.adornUrl(`/admin/meeting/info/${this.dataForm.id}`),
108
            method: "get",
109
            params: this.$http.adornParams(),
110
          }).then(({ data }) => {
111
            if (data && data.code === 0) {
112
              console.log(data);
113
              this.dataForm.id = data.meeting.id;
114
              this.dataForm.pid = data.meeting.pid;
115
              this.dataForm.name = data.meeting.name;
116
              this.dataForm.address = data.meeting.address;
117
              this.dataForm.startTime = data.meeting.startTime;
118
              this.dataForm.username = data.meeting.username;
119
              this.dataForm.titlepic = data.meeting.titlepic;
120
            }
121
          });
122
        }
123
      });
124
      this.dialogImageUrl = this.$http.adornUrl(`/app/filemanager/uploadimg`);
125
    },
126
    // 表单提交
127
    dataFormSubmit() {
128
      this.$refs["dataForm"].validate((valid) => {
129
        if (valid) {
130
          this.$http({
131
            url: this.$http.adornUrl(
132
              `/admin/meeting/${!this.dataForm.id ? "savebranch" : "update"}`
133
            ),
134
            method: "post",
135
            data: this.$http.adornData({
136
              id: this.dataForm.id || undefined,
137
              pid: this.dataForm.pid,
138
              name: this.dataForm.name,
139
              address: this.dataForm.address,
140
              startTime: this.dataForm.startTime,
141
              username: this.dataForm.username,
142
              titlepic: this.dataForm.titlepic
143
            }),
144
          }).then(({ data }) => {
145
            if (data && data.code === 0) {
146
              this.titlePictureList = [];
147
              this.$message({
148
                message: "操作成功",
149
                type: "success",
150
                duration: 1500,
151
                onClose: () => {
152
                  this.visible = false;
153
                  this.$emit("refreshDataList");
154
                },
155
              });
156
            } else {
157
              this.$message.error(data.msg);
158
            }
159
          });
160
        }
161
      });
162
    },
163
  },
164
};
165
</script>
166
<style lang="scss">
167
  .avatar-uploader .el-upload {
168
    border: 1px dashed #d9d9d9;
169
    border-radius: 6px;
170
    cursor: pointer;
171
    position: relative;
172
    overflow: hidden;
173
  }
174
  .avatar-uploader .el-upload:hover {
175
    border-color: #409eff;
176
  }
177
  .avatar-uploader-icon {
178
    font-size: 28px;
179
    color: #8c939d;
180
    width: 178px;
181
    height: 178px;
182
    line-height: 178px;
183
    text-align: center;
184
  }
185
  .avatar {
186
  width: 178px;
187
  height: 178px;
188
  display: block;
189
  }
190
</style>

+ 160 - 0
src/views/modules/admin/branch-meeting.vue

@ -0,0 +1,160 @@
1
<template>
2
  <div>
3
    <el-form>
4
      <el-form-item>
5
        <el-button type="primary" @click="getDataList">排序</el-button>
6
      </el-form-item>
7
      <el-table
8
        :data="dataList"
9
        border
10
        v-loading="dataListLoading"
11
        style="width: 100%"
12
      >
13
        <!-- <el-table-column
14
          type="selection"
15
          header-align="center"
16
          align="center"
17
          width="50"
18
        >
19
        </el-table-column> -->
20
        <el-table-column
21
          prop="title"
22
          header-align="center"
23
          align="center"
24
          label="开始时间"
25
        >
26
          <template slot-scope="scope">
27
            <el-time-picker
28
              style="width: 130px"
29
              v-model="scope.row.startTime"
30
              :picker-options="{
31
                selectableRange: '08:00:00 - 22:00:00',
32
              }"
33
              value-format="HH:mm:ss"
34
              @change="getTime(scope.row.startTime, scope.row.id)"
35
              placeholder="任意时间点"
36
            >
37
            </el-time-picker>
38
          </template>
39
        </el-table-column>
40
        <el-table-column
41
          prop="title"
42
          header-align="center"
43
          align="center"
44
          label="报告题目"
45
        >
46
        </el-table-column>
47
48
        <el-table-column
49
          prop="truename"
50
          header-align="center"
51
          align="center"
52
          label="名字"
53
        >
54
        </el-table-column>
55
        <el-table-column
56
          prop="phone"
57
          header-align="center"
58
          align="center"
59
          label="电话"
60
        >
61
        </el-table-column>
62
        <el-table-column
63
          prop="organization"
64
          header-align="center"
65
          align="center"
66
          label="单位名称"
67
        >
68
        </el-table-column>
69
        <el-table-column
70
          prop="position"
71
          header-align="center"
72
          align="center"
73
          label="职位"
74
        >
75
        </el-table-column>
76
        <el-table-column
77
          prop="branchName"
78
          header-align="center"
79
          align="center"
80
          label="分会场"
81
        >
82
        </el-table-column>
83
        <el-table-column
84
          fixed="right"
85
          header-align="center"
86
          align="center"
87
          width="150"
88
          label="操作"
89
        >
90
          <template slot-scope="scope">
91
            <el-button
92
              type="text"
93
              size="small"
94
              @click="deleteHandle(scope.row.aid)"
95
              >删除</el-button
96
            >
97
          </template>
98
        </el-table-column>
99
      </el-table>
100
    </el-form>
101
  </div>
102
</template>
103
<script>
104
export default {
105
  name: "",
106
  data() {
107
    return {
108
      id: this.$route.params.id, //会议id
109
      bid: this.$route.params.bid, //分会id
110
      dataList: [],
111
      dataListLoading: false,
112
      startTime: "",
113
    };
114
  },
115
  components: {},
116
  computed: {},
117
  beforeMount() {},
118
  activated() {
119
    this.getDataList();
120
  },
121
  created() {},
122
  mounted() {},
123
  methods: {
124
    getDataList() {
125
      this.dataListLoading = true;
126
      this.$http({
127
        url: this.$http.adornUrl(
128
          `/admin/report/listbranch/${this.$route.params.id}/${this.$route.params.bid}/start_time`
129
        ),
130
        method: "get",
131
        params: this.$http.adornParams({}),
132
      }).then(({ data }) => {
133
        if (data && data.code === 0) {
134
          this.dataList = data.list;
135
        } else {
136
          this.dataList = [];
137
        }
138
        this.dataListLoading = false;
139
      });
140
    },
141
    getTime(time, id) {
142
      this.$http({
143
        url: this.$http.adornUrl(`/admin/report/time`),
144
        method: "post",
145
        data: this.$http.adornData({
146
          startTime: time,
147
          id: id,
148
        }),
149
      }).then((data) => {
150
        if (data && data.code == 200) {
151
          return;
152
        }
153
      });
154
    },
155
  },
156
  watch: {},
157
};
158
</script>
159
<style scoped>
160
</style>

+ 207 - 0
src/views/modules/admin/branch.vue

@ -0,0 +1,207 @@
1
2
<template>
3
  <div class="mod-config" v-loading="dataListLoading">
4
    <el-row>
5
      <el-col :span="6">
6
        <div class="grid-content bg-purple-light">
7
          <el-button
8
            v-if="isAuth('admin:meeting:save')"
9
            type="primary"
10
            @click="addOrUpdateHandle()"
11
            >+ 创建会场</el-button
12
          >
13
        </div>
14
      </el-col>
15
    </el-row>
16
    <el-row>
17
      <el-col :span="24">
18
        <div class="grid-content bg-purple-dark"></div>
19
      </el-col>
20
    </el-row>
21
    <el-row :gutter="10">
22
      <meeting-box
23
        v-for="(item, index) in release"
24
        :key="item.id"
25
        :list="item"
26
        style="margin-top: 20px"
27
        @statusMeeting="childrenStatus"
28
      ></meeting-box>
29
    </el-row>
30
31
    <!-- 弹窗, 新增 / 修改 -->
32
    <add-or-update
33
      v-if="addOrUpdateVisible"
34
      ref="addOrUpdate"
35
      @refreshDataList="getDataList"
36
      :key="timer"
37
    ></add-or-update>
38
  </div>
39
</template>
40
41
<script>
42
import AddOrUpdate from "../admin/branch-add-or-update";
43
import MeetingBox from "../../../components/meeting-branch/index";
44
export default {
45
  data() {
46
    return {
47
      dataForm: {
48
        key: "",
49
      },
50
      dataList: [], //获取数据
51
      release: [], //已发布
52
      pageIndex: 0,
53
      pageSize: 30,
54
      totalPage: 0,
55
      dataListLoading: false,
56
      dataListSelections: [],
57
      addOrUpdateVisible: false,
58
      meetingId: "",
59
      reFresh: true,
60
      timer: "", //重新加载子组件
61
    };
62
  },
63
  components: {
64
    MeetingBox,
65
    AddOrUpdate,
66
  },
67
  activated() {
68
    this.getDataList();
69
  },
70
71
  created() {},
72
73
  methods: {
74
    // 获取数据列表
75
    getDataList() {
76
      this.release = [];
77
78
      this.dataListLoading = true;
79
      this.$http({
80
        url: this.$http.adornUrl(
81
          `/admin/meeting/listbranch/${this.$route.params.id}`
82
        ),
83
        method: "get",
84
        params: this.$http.adornParams({
85
          page: this.pageIndex,
86
          limit: this.pageSize,
87
          key: this.dataForm.key,
88
        }),
89
      }).then(({ data }) => {
90
        if (data && data.code === 0) {
91
          this.release = data.list;
92
          // this.getHandleDataList(data.list);
93
        } else {
94
          this.dataList = [];
95
          this.totalPage = 0;
96
        }
97
        this.dataListLoading = false;
98
      });
99
    },
100
    //将获取的数据分三个数组分别为发布/未发布/结束
101
    // getHandleDataList(list) {
102
    //   this.release = list
103
    //   // const meetingList = list;
104
    //   // meetingList.forEach((item) => {
105
106
    //   //        this.release.push(item);
107
    //   //   // console.log(item.isCheck)
108
    //   //   // switch (item.isCheck) {
109
    //   //   //   case 0: //未发布
110
    //   //   //     this.unpublished.push(item);
111
    //   //   //     break;
112
    //   //   //   case 1: //已发布
113
    //   //   //     this.release.push(item);
114
    //   //   //     break;
115
    //   //   //   default:
116
    //   //   //     //已结束
117
    //   //   //     this.delRelease.push(item);
118
    //   //   //     break;
119
    //   //   // }
120
    //   // });
121
    // },
122
    // 每页数
123
    sizeChangeHandle(val) {
124
      this.pageSize = val;
125
      this.pageIndex = 1;
126
      this.getDataList();
127
    },
128
    // 当前页
129
    currentChangeHandle(val) {
130
      this.pageIndex = val;
131
      this.getDataList();
132
    },
133
    // 多选
134
    selectionChangeHandle(val) {
135
      this.dataListSelections = val;
136
    },
137
    // 新增 / 修改
138
    addOrUpdateHandle(id) {
139
      //重新加载子组件
140
      this.timer = new Date().getTime();
141
      this.addOrUpdateVisible = true;
142
      this.$nextTick(() => {
143
        this.$refs.addOrUpdate.init(id);
144
      });
145
    },
146
    // 删除
147
    deleteHandle(id) {
148
      var ids = id
149
        ? [id]
150
        : this.dataListSelections.map((item) => {
151
            return item.id;
152
          });
153
      this.$confirm(
154
        `确定对[id=${ids.join(",")}]进行[${id ? "删除" : "批量删除"}]操作?`,
155
        "提示",
156
        {
157
          confirmButtonText: "确定",
158
          cancelButtonText: "取消",
159
          type: "warning",
160
        }
161
      ).then(() => {
162
        this.$http({
163
          url: this.$http.adornUrl("/admin/meeting/delete"),
164
          method: "post",
165
          data: this.$http.adornData(ids, false),
166
        }).then(({ data }) => {
167
          if (data && data.code === 0) {
168
            this.$message({
169
              message: "操作成功",
170
              type: "success",
171
              duration: 1500,
172
              onClose: () => {
173
                this.getDataList();
174
              },
175
            });
176
          } else {
177
            this.$message.error(data.msg);
178
          }
179
        });
180
      });
181
    },
182
    // 获取会议id
183
    getMeetingListId(data) {
184
      this.meetingId = data;
185
      console.log(this.meetingId);
186
    },
187
    //接受组件修改状态 刷新视图
188
    childrenStatus(msg) {
189
      this.unpublished = [];
190
      this.release = [];
191
      this.delRelease = [];
192
      this.getDataList();
193
      window.console.log(msg);
194
      if (msg) {
195
        this.addOrUpdateHandle(msg);
196
      }
197
    },
198
    // 获取子元素id
199
    getID(data) {
200
      window.console.log(this.$refs.MeetingBox);
201
    },
202
  },
203
};
204
</script>
205
<style lang="scss" scoped>
206
</style>>
207

+ 234 - 0
src/views/modules/admin/invitation-add-or-update.vue

@ -0,0 +1,234 @@
1
<template>
2
  <el-dialog
3
    :title="!dataForm.id ? '新增' : '修改'"
4
    :close-on-click-modal="false"
5
    :visible.sync="visible"
6
  >
7
    <el-form
8
      :model="dataForm"
9
      :rules="dataRule"
10
      ref="dataForm"
11
      @keyup.enter.native="dataFormSubmit()"
12
      label-width="80px"
13
    >
14
      <!-- <el-form-item label="头像" prop="titlePic">
15
        <el-upload
16
          class="avatar-uploader"
17
          :action="upload_url"
18
          :show-file-list="false"
19
          :on-success="successHandle"
20
          :before-upload="beforeUploadHandle"
21
          ref="upload"
22
          :data="thumb"
23
          name="upload_file"
24
        >
25
          <img v-if="showimg" :src="showimg" class="avatar" />
26
          <i v-else class="el-icon-plus avatar-uploader-icon"></i>
27
        </el-upload>
28
      </el-form-item>-->
29
      <el-form-item label="姓名" prop="truename">
30
        <el-input v-model="dataForm.truename" placeholder="姓名"></el-input>
31
      </el-form-item>
32
      <!-- <el-form-item label="用户名" prop="username">
33
        <el-input v-model="dataForm.username" placeholder="手机号"></el-input>
34
      </el-form-item>-->
35
      <el-form-item label="所属机构" prop="organization">
36
        <el-input v-model="dataForm.organization" placeholder="所属机构"></el-input>
37
      </el-form-item>
38
      <el-form-item label="联系电话" prop="phone">
39
        <el-input v-model="dataForm.phone" placeholder="联系电话"></el-input>
40
      </el-form-item>
41
42
      <el-form-item label="职位" prop="position">
43
        <el-input v-model="dataForm.position" placeholder="职位"></el-input>
44
      </el-form-item>
45
      <!-- <el-form-item label="性别" prop="sex">
46
        <el-radio v-model="dataForm.sex" :label="0">未知</el-radio>
47
        <el-radio v-model="dataForm.sex" :label="1">男</el-radio>
48
        <el-radio v-model="dataForm.sex" :label="2">女</el-radio>
49
      </el-form-item> -->
50
      <el-form-item label="邮箱" prop="email">
51
        <el-input v-model="dataForm.email" placeholder="邮箱"></el-input>
52
      </el-form-item>
53
      <!-- <el-form-item label="座机" prop="officephone">
54
        <el-input v-model="dataForm.officephone" placeholder="座机"></el-input>
55
      </el-form-item> -->
56
      <!-- <el-form-item label="职称" prop="jobTitle">
57
        <el-input v-model="dataForm.jobTitle" placeholder="职称"></el-input>
58
      </el-form-item>-->
59
60
      <!-- <el-form-item label="审核" prop="isCheck">
61
        <el-radio v-model="dataForm.isCheck" :label="0">否</el-radio>
62
        <el-radio v-model="dataForm.isCheck" :label="1">是</el-radio>
63
      </el-form-item>-->
64
    </el-form>
65
    <span slot="footer" class="dialog-footer">
66
      <el-button @click="visible = false">取消</el-button>
67
      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
68
    </span>
69
  </el-dialog>
70
</template>
71
<script>
72
export default {
73
  data() {
74
    return {
75
      add: false,
76
      visible: false,
77
      dataForm: {
78
        meetingId: this.$route.params.id,
79
        id: 0,
80
        truename: "",
81
        sex: 0,
82
        organization: "",
83
        position: "",
84
        phone: "",
85
        email: "",
86
        officephone: "",
87
        isReceipt: 0,
88
        remark: ""
89
      },
90
      dataRule: {
91
        truename: [
92
          { required: true, message: "姓名不能为空", trigger: "blur" }
93
        ],
94
        organization: [
95
          { required: true, message: "所属机构不能为空", trigger: "blur" }
96
        ]
97
      },
98
      upload_url: "",
99
      radio: "0",
100
      thumb: { isthumb: 0 },
101
      showimg: ""
102
    };
103
  },
104
  methods: {
105
    init(id) {
106
      this.dataForm.id = id || 0;
107
      if (this.dataForm.id === 0) {
108
        this.add = true;
109
      }
110
      this.visible = true;
111
      this.$nextTick(() => {
112
        this.$refs["dataForm"].resetFields();
113
        if (this.dataForm.id) {
114
          this.$http({
115
            url: this.$http.adornUrl(`/admin/member/info/${this.dataForm.id}`),
116
            method: "get",
117
            params: this.$http.adornParams()
118
          }).then(({ data }) => {
119
            if (data && data.code === 0) {
120
              (this.dataForm.truename = data.member.truename),
121
                (this.dataForm.organization = data.member.organization),
122
                (this.dataForm.position = data.member.position),
123
                (this.dataForm.phone = data.member.phone),
124
                (this.dataForm.email = data.member.email),
125
                (this.dataForm.officephone = data.member.officephone);
126
            }
127
          });
128
        }
129
      });
130
      // 上传路径
131
      this.upload_url = this.$http.adornUrl(
132
        `/sys/filemanager/uploadimg?token=${this.$cookie.get("token")}`
133
      );
134
    },
135
    // 表单提交
136
    dataFormSubmit() {
137
      this.$refs["dataForm"].validate(valid => {
138
        if (valid) {
139
          this.$http({
140
            url: this.$http.adornUrl(
141
              `/admin/member/${!this.dataForm.id ? "save" : "update"}`
142
            ),
143
            method: "post",
144
            data: this.$http.adornData({
145
              meetingId: this.dataForm.meetingId,
146
              id: this.dataForm.id,
147
              truename: this.dataForm.truename,
148
              sex: this.dataForm.sex,
149
              organization: this.dataForm.organization,
150
              position: this.dataForm.position,
151
              phone: this.dataForm.phone,
152
              email: this.dataForm.email,
153
              officephone: this.dataForm.officephone
154
              // isReceipt: 0,
155
              // remark: "测试测试"
156
            })
157
          }).then(({ data }) => {
158
            if (data && data.code === 0) {
159
              this.$message({
160
                message: "操作成功",
161
                type: "success",
162
                duration: 1500,
163
                onClose: () => {
164
                  this.visible = false;
165
                  this.$emit("refreshDataList");
166
                }
167
              });
168
            } else {
169
              this.$message.error(data.msg);
170
            }
171
          });
172
        }
173
      });
174
    },
175
    // 上传图像
176
    submitUpload() {
177
      this.$refs.upload.submit();
178
    },
179
    // 上传之前
180
    beforeUploadHandle(file) {
181
      this.thumb.isthumb = this.radio;
182
      if (
183
        file.type !== "image/jpg" &&
184
        file.type !== "image/jpeg" &&
185
        file.type !== "image/png" &&
186
        file.type !== "image/gif"
187
      ) {
188
        this.$message.error("只支持jpg、png、gif格式的图片!");
189
        return false;
190
      }
191
    },
192
    // 上传成功
193
    successHandle(response, file) {
194
      if (response && response.code === 0) {
195
        if (response.hasOwnProperty("thumb")) {
196
          this.dataForm.titlePic = response.thumb;
197
          this.showimg = response.thumb;
198
        } else {
199
          this.showimg = response.picname;
200
          this.dataForm.titlePic = response.picname;
201
          this.dialogVisible = true;
202
        }
203
      } else {
204
        this.$message.error(response.msg);
205
      }
206
    }
207
  }
208
};
209
</script>
210
<style>
211
.avatar-uploader .el-upload {
212
  border: 1px dashed #d9d9d9;
213
  border-radius: 6px;
214
  cursor: pointer;
215
  position: relative;
216
  overflow: hidden;
217
}
218
.avatar-uploader .el-upload:hover {
219
  border-color: #409eff;
220
}
221
.avatar-uploader-icon {
222
  font-size: 28px;
223
  color: #8c939d;
224
  width: 178px;
225
  height: 178px;
226
  line-height: 178px;
227
  text-align: center;
228
}
229
.avatar {
230
  width: 178px;
231
  height: 178px;
232
  display: block;
233
}
234
</style>

+ 437 - 0
src/views/modules/admin/invitation.vue

@ -0,0 +1,437 @@
1
<template>
2
  <div class="mod-config" v-loading="loading">
3
    <el-form
4
      :inline="true"
5
      :model="dataForm"
6
      @keyup.enter.native="getDataList()"
7
    >
8
      <el-form-item>
9
        <el-input
10
          v-model="dataForm.key"
11
          placeholder="账号名/姓名"
12
          clearable
13
        ></el-input>
14
      </el-form-item>
15
      <el-form-item>
16
        <el-button @click="se()">查询</el-button>
17
        <!-- <el-button @click="dialogVisible = true" type="success">导入</el-button> -->
18
        <el-button
19
          v-if="isAuth('admin:member:save')"
20
          type="primary"
21
          @click="addOrUpdateHandle()"
22
          >新增</el-button
23
        >
24
        <el-button
25
          v-if="isAuth('admin:member:delete')"
26
          type="danger"
27
          @click="deleteHandle()"
28
          :disabled="dataListSelections.length <= 0"
29
          >批量删除</el-button
30
        >
31
      </el-form-item>
32
    </el-form>
33
    <el-table
34
      :data="dataList"
35
      border
36
      v-loading="dataListLoading"
37
      @selection-change="selectionChangeHandle"
38
      style="width: 100%"
39
    >
40
      <el-table-column
41
        type="selection"
42
        header-align="center"
43
        align="center"
44
        width="50"
45
      ></el-table-column>
46
      <!-- <el-table-column prop="id" header-align="center" align="center" label="id"></el-table-column> -->
47
      <el-table-column
48
        prop="truename"
49
        header-align="center"
50
        align="center"
51
        label="姓名"
52
      ></el-table-column>
53
      <!-- <el-table-column prop="username" header-align="center" align="center" label="账号"></el-table-column> -->
54
      <el-table-column
55
        prop="organization"
56
        header-align="center"
57
        align="center"
58
        label="所属机构"
59
      ></el-table-column>
60
      <el-table-column
61
        prop="position"
62
        header-align="center"
63
        align="center"
64
        label="职位"
65
      ></el-table-column>
66
      <!-- <el-table-column prop="position" header-align="center" align="center" label="职位"></el-table-column> -->
67
      <!-- <el-table-column prop="jobTitle" header-align="center" align="center" label="职称"></el-table-column> -->
68
      <el-table-column
69
        prop="phone"
70
        header-align="center"
71
        align="center"
72
        label="电话"
73
      ></el-table-column>
74
      <!-- <el-table-column prop="officephone" header-align="center" align="center" label="座机"></el-table-column> -->
75
      <!-- <el-table-column prop="email" header-align="center" align="center" label="邮箱"></el-table-column> -->
76
      <!-- <el-table-column prop="meetingCounts" header-align="center" align="center" label="参会场次"></el-table-column> -->
77
      <!-- <el-table-column prop="meetingName" header-align="center" align="center" label="最后参加会议"></el-table-column> -->
78
      <!-- <el-table-column prop="servicerName" header-align="center" align="center" label="负责人"></el-table-column> -->
79
      <!-- <el-table-column
80
        prop="createTime"
81
        header-align="center"
82
        align="center"
83
        width="160"
84
        label="创建时间"
85
      ></el-table-column>-->
86
      <!-- <el-table-column prop="isCheck" header-align="center" align="center" label="是否通过审核">
87
        <template slot-scope="scope">
88
          <el-button
89
            v-if="scope.row.isCheck === 0"
90
            size="medium"
91
            hit="true"
92
            @click="changeStatus(1,scope.row.id)"
93
          >否</el-button>
94
          <el-button
95
            v-else-if="scope.row.isCheck === 1"
96
            size="medium"
97
            hit="true"
98
            type="success"
99
            @click="changeStatus(0,scope.row.id)"
100
          >是</el-button>
101
        </template>
102
      </el-table-column>-->
103
      <el-table-column
104
        prop="isCheck"
105
        header-align="center"
106
        align="center"
107
        label="是否回执"
108
      >
109
        <template slot-scope="scope">
110
          <el-button
111
            v-if="scope.row.receipt === 0"
112
            size="medium"
113
            hit="true"
114
            @click="changeStatus(1, scope.row.id,scope.row.aid)"
115
            >否</el-button
116
          >
117
          <el-button
118
            v-else-if="scope.row.receipt === 1"
119
            size="medium"
120
            hit="true"
121
            type="success"
122
            @click="changeStatus(0, scope.row.id,scope.row.aid)"
123
            >是</el-button
124
          >
125
        </template>
126
      </el-table-column>
127
      <el-table-column
128
        label="备注"
129
        header-align="center"
130
        align="center"
131
        width="280px"
132
      >
133
        <template slot-scope="scope">
134
          <el-input
135
            type="textarea"
136
            @blur="getNot(scope.row.id, scope.row.remark)"
137
            resize="none"
138
            v-model="scope.row.remark"
139
          ></el-input>
140
        </template>
141
      </el-table-column>
142
      <el-table-column
143
        fixed="right"
144
        header-align="center"
145
        align="center"
146
        width="200"
147
        label="操作"
148
      >
149
        <template slot-scope="scope">
150
          <el-button
151
            type="text"
152
            size="small"
153
            @click="addOrUpdateHandle(scope.row.id)"
154
            >修改</el-button
155
          >
156
          <!-- <el-button type="text" size="small" @click="repasswordHandle(scope.row.id)">重置密码</el-button> -->
157
          <el-button
158
            type="text"
159
            size="small"
160
            @click="deleteHandle(scope.row.id)"
161
            >删除</el-button
162
          >
163
        </template>
164
      </el-table-column>
165
    </el-table>
166
    <el-pagination
167
      @size-change="sizeChangeHandle"
168
      @current-change="currentChangeHandle"
169
      :current-page="pageIndex"
170
      :page-sizes="[10, 20, 50, 100]"
171
      :page-size="pageSize"
172
      :total="totalPage"
173
      layout="total, sizes, prev, pager, next, jumper"
174
    ></el-pagination>
175
    <!-- 弹窗, 新增 / 修改 -->
176
    <add-or-update
177
      v-if="addOrUpdateVisible"
178
      ref="addOrUpdate"
179
      @refreshDataList="getDataList"
180
    ></add-or-update>
181
182
    <!-- 导入弹窗 -->
183
    <el-dialog title="导入表单" :visible.sync="dialogVisible">
184
      <el-form>
185
        <el-form-item label="上传投稿">
186
          <el-upload
187
            class="upload-demo"
188
            ref="upload"
189
            :action="upload_url"
190
            :on-success="successHandle"
191
            :file-list="fileList"
192
            :limit="1"
193
            :data="meId"
194
            :auto-upload="false"
195
            name="file"
196
          >
197
            <el-button slot="trigger" size="small" type="primary"
198
              >选取文件</el-button
199
            >
200
            <!-- <el-button
201
              style="margin-left: 10px;"
202
              size="small"
203
              type="success"
204
              @click="submitUpload"
205
            >上传到服务器</el-button>-->
206
            <div slot="tip" class="el-upload__tip" style="color: red">
207
              只能上传 pdf doc docx 文件,上传大小为4M
208
            </div>
209
          </el-upload>
210
        </el-form-item>
211
      </el-form>
212
      <span slot="footer" class="dialog-footer">
213
        <el-button @click="dialogVisible = false">取 消</el-button>
214
        <el-button type="primary" @click="submitUpload">确 定</el-button>
215
      </span>
216
    </el-dialog>
217
  </div>
218
</template>
219
<script>
220
import AddOrUpdate from "./invitation-add-or-update";
221
export default {
222
  data() {
223
    return {
224
      dataForm: {
225
        key: "",
226
      },
227
      fileList: [],
228
      dataList: [],
229
      baa: true,
230
      pageIndex: 1,
231
      pageSize: 10,
232
      totalPage: 0,
233
      dataListLoading: false,
234
      dataListSelections: [],
235
      addOrUpdateVisible: false,
236
      text: "",
237
      dialogVisible: false,
238
      upload_url: "",
239
      meId: {
240
        meetingId: this.$route.params.id,
241
      },
242
      loading: true,
243
    };
244
  },
245
  components: {
246
    AddOrUpdate,
247
  },
248
  created() {
249
    this.upload_url = this.$http.adornUrl(
250
      `/admin/member/importexcel?token=${this.$cookie.get("token")}`
251
    );
252
  },
253
  activated() {
254
    this.getDataList();
255
  },
256
  methods: {
257
    // 查询
258
    se() {
259
      this.pageIndex = 1;
260
      this.getDataList();
261
    },
262
    // 获取数据列表
263
    getDataList() {
264
      this.dataListLoading = true;
265
      this.$http({
266
        url: this.$http.adornUrl("/admin/invitation/list"),
267
        method: "get",
268
        params: this.$http.adornParams({
269
          meetingId: this.$route.params.id,
270
          page: this.pageIndex,
271
          limit: this.pageSize,
272
          key: this.dataForm.key,
273
        }),
274
      }).then(({ data }) => {
275
        if (data && data.code === 0) {
276
          this.dataList = data.page.list;
277
          this.totalPage = data.page.totalCount;
278
          this.loading = false;
279
        } else {
280
          this.dataList = [];
281
          this.totalPage = 0;
282
        }
283
        this.dataListLoading = false;
284
      });
285
    },
286
    // 每页数
287
    sizeChangeHandle(val) {
288
      this.pageSize = val;
289
      this.pageIndex = 1;
290
      this.getDataList();
291
    },
292
    // 当前页
293
    currentChangeHandle(val) {
294
      this.pageIndex = val;
295
      this.getDataList();
296
    },
297
    // 多选
298
    selectionChangeHandle(val) {
299
      this.dataListSelections = val;
300
    },
301
    // 新增 / 修改
302
    addOrUpdateHandle(id) {
303
      this.addOrUpdateVisible = true;
304
      this.$nextTick(() => {
305
        this.$refs.addOrUpdate.init(id);
306
      });
307
    },
308
    // 重置密码
309
    // repasswordHandle(id) {
310
    //   this.$http({
311
    //     url: this.$http.adornUrl(`/admin/member/repassword/${id}`),
312
    //     method: "post",
313
    //     data: this.$http.adornParams()
314
    //   }).then(({ data }) => {
315
    //     if (data && data.code === 0) {
316
    //       this.$message({
317
    //         message: "操作成功",
318
    //         type: "success",
319
    //         duration: 1000,
320
    //         onClose: () => {}
321
    //       });
322
    //     } else {
323
    //       this.$message.error(data.msg);
324
    //     }
325
    //   });
326
    // },
327
    // 删除
328
    deleteHandle(id) {
329
      var ids = id
330
        ? [id]
331
        : this.dataListSelections.map((item) => {
332
            return item.id;
333
          });
334
      this.$confirm(`确定删除?`, "提示", {
335
        confirmButtonText: "确定",
336
        cancelButtonText: "取消",
337
        type: "warning",
338
      }).then(() => {
339
        this.$http({
340
          url: this.$http.adornUrl("/admin/member/delete"),
341
          method: "post",
342
          data: this.$http.adornData(ids, false),
343
        }).then(({ data }) => {
344
          if (data && data.code === 0) {
345
            this.$message({
346
              message: "操作成功",
347
              type: "success",
348
              duration: 1500,
349
              onClose: () => {
350
                this.getDataList();
351
              },
352
            });
353
          } else {
354
            this.$message.error(data.msg);
355
          }
356
        });
357
      });
358
    },
359
    // 改变审核状态
360
    changeStatus(status, id, aid) {
361
      this.$http({
362
        url: this.$http.adornUrl("/admin/invitation/isreceipt"),
363
        method: "post",
364
        data: this.$http.adornData({
365
          meetingId: this.$route.params.id,
366
          id: id,
367
          receipt: status,
368
          aid: aid,
369
        }),
370
      }).then(({ data }) => {
371
        if (data && data.code === 0) {
372
          this.$message({
373
            message: "操作成功",
374
            type: "success",
375
            duration: 500,
376
            onClose: () => {
377
              // this.getDataList()
378
              var dList = this.dataList;
379
              dList.forEach((element) => {
380
                if (element.id === id) {
381
                  element.receipt = status;
382
                }
383
              });
384
              this.dataList = dList;
385
            },
386
          });
387
        } else {
388
          this.$message.error(data.msg);
389
        }
390
      });
391
    },
392
    getNot(data, text) {
393
      window.console.log(data);
394
      this.$http({
395
        url: this.$http.adornUrl("/admin/member/remark"),
396
        method: "post",
397
        data: this.$http.adornData({
398
          id: data,
399
          remark: text,
400
        }),
401
      }).then(({ data }) => {
402
        if (data && data.code === 0) {
403
          return;
404
        } else {
405
          this.$message.error(data.msg);
406
        }
407
      });
408
    },
409
    //导入
410
    successHandle(response) {
411
      let { statistics } = response;
412
      if (response && response.code === 0) {
413
        this.dialogVisible = false;
414
        this.$refs.upload.clearFiles();
415
416
        this.getDataList();
417
        this.$message({
418
          message:
419
            "上传成功,成功" +
420
            statistics.succes +
421
            "条,失败" +
422
            statistics.fail +
423
            "条",
424
          type: "success",
425
        });
426
      } else {
427
        this.$message.error(response.msg);
428
      }
429
    },
430
    submitUpload() {
431
      this.$refs.upload.submit();
432
      this.dialogVisible = false;
433
      this.getDataList();
434
    },
435
  },
436
};
437
</script>

+ 182 - 252
src/views/modules/admin/meeting-add-or-update.vue

@ -11,166 +11,53 @@
11 11
      @keyup.enter.native="dataFormSubmit()"
12 12
      label-width="136px"
13 13
    >
14
      <el-form-item label="上传会议封面图片" prop="titlePicture">
15
        <!-- <el-upload
16
          :action="dialogImageUrl"
17
          list-type="picture-card"
18
          :on-success="successHandle"
19
          :file-list="titlePictureList"
20
          name="upload_file"
21
        >
22
          <i class="el-icon-plus"></i>
23
        </el-upload>
24
        <el-dialog :visible.sync="dialogVisible">
25
          <img width="100%" :src="dialogImageUrl" alt />
26
        </el-dialog>-->
27
        <!--  -->
28
        <el-upload
29
          :action="dialogImageUrl"
30
          list-type="picture-card"
31
          :on-success="handlePictureCardPreview"
32
          :on-remove="handleRemove"
33
          :file-list="titlePictureList"
34
          name="upload_file"
35
        >
36
          <i class="el-icon-plus"></i>
37
        </el-upload>
14
      <el-form-item label="会议名称" prop="name">
15
        <el-input v-model="dataForm.name" placeholder="会议名称"></el-input>
38 16
      </el-form-item>
39
      <el-form-item label="会议名称(中文)" prop="nameCn">
40
        <el-input v-model="dataForm.nameCn" placeholder="会议名称(中文)"></el-input>
41
      </el-form-item>
42
      <el-form-item label="会议名称(英文)" prop="nameEn">
43
        <el-input v-model="dataForm.nameEn" placeholder="会议名称(英文)"></el-input>
44
      </el-form-item>
45
      <el-form-item label="举办地点" prop="address">
46
        <el-input v-model="dataForm.address" placeholder="举办地点"></el-input>
47
      </el-form-item>
48
49 17
      <el-form-item label="起始时间">
50 18
        <el-date-picker
51
          v-model="dataForm.startAndEndTime"
19
          v-model="startAndEndTime"
52 20
          type="datetimerange"
53 21
          start-placeholder="开始日期"
54 22
          end-placeholder="结束日期"
55 23
          :default-time="['12:00:00']"
56 24
          value-format="yyyy-MM-dd HH:mm:ss"
25
          @change="timeTransformation"
57 26
        ></el-date-picker>
58
      </el-form-item>
59 27
60
      <el-form-item label="官方网址" prop="officeWebsite">
61
        <el-input v-model="dataForm.officeWebsite" placeholder="官方网址">
62
          <template slot="prepend">Http://</template>
63
        </el-input>
28
        <!-- <el-input v-model="time"></el-input> -->
64 29
      </el-form-item>
65
66
      <el-form-item label="涉及学科" prop="subjects" class="doc">
67
        <el-autocomplete
68
          v-model="dataForm.subjects"
69
          :fetch-suggestions="querySearchAsync"
70
          placeholder="每次添加一个学科"
71
          style="width:90%"
72
        ></el-autocomplete>
73
        <el-button @click="handSubject" class>添加</el-button>
74
      </el-form-item>
75
      <el-form-item v-if="this.subjects.length!==0">
76
        <el-tag
77
          v-for="(item) in subjects"
78
          style="margin-right:8px"
79
          closable
80
          @close="handleClose(item,'subjects')"
81
        >{{item}}</el-tag>
82
      </el-form-item>
83
      <el-form-item label="涉及行业" prop="industries" class="doc">
84
        <el-autocomplete
85
          v-model="dataForm.industries"
86
          :fetch-suggestions="queryIndustriesAsync"
87
          placeholder="每次添加一个行业"
88
          style="width:90%"
89
        ></el-autocomplete>
90
        <el-button @click="handIndustries">添加</el-button>
91
      </el-form-item>
92
      <el-form-item v-if="this.industry.length!==0">
93
        <el-tag
94
          v-for="(item) in industry"
95
          style="margin-right:8px"
96
          closable
97
          @close="handleClose(item,'industry')"
98
        >{{item}}</el-tag>
99
      </el-form-item>
100
      <el-form-item label="参会人员类型" prop="attendersType" class="doc">
101
        <el-autocomplete
102
          v-model="dataForm.attendersType"
103
          :fetch-suggestions="queryAttendersTypeAsync"
104
          placeholder="每次添加一个类型"
105
          style="width:90%"
106
        ></el-autocomplete>
107
        <el-button @click="handAttendersType">添加</el-button>
108
      </el-form-item>
109
      <el-form-item v-if="this.typesofattender.length!==0">
110
        <el-tag
111
          v-for="(item) in typesofattender"
112
          style="margin-right:8px"
113
          closable
114
          @close="handleClose(item,'typesofattender')"
115
        >{{item}}</el-tag>
116
      </el-form-item>
117
      <el-form-item label="联系人" prop="serviceEm">
118
        <el-select
119
          v-model="dataForm.contactNames"
120
          filterable
121
          placeholder="请选择"
122
          style="width:220px"
123
          @change="handEmploye"
124
        >
30
      <el-form-item label="会议地点" prop="address">
31
        <!-- <el-select v-model="dataForm.serviceIds" filterable placeholder="请选择" style="width:220px">
125 32
          <el-option
126 33
            v-for="item in employeeList"
127 34
            :key="item.id"
128 35
            :label="item.truename"
129 36
            :value="item.id"
130 37
          ></el-option>
131
        </el-select>
132
      </el-form-item>
133
      <el-form-item>
134
        <el-tag v-for="(item) in employeePerson" :key="item" style="margin-right:8px">{{item}}</el-tag>
38
        </el-select> -->
39
        <el-input v-model="dataForm.address"></el-input>
135 40
      </el-form-item>
136
      <el-form-item label="会议负责人" prop="serviceEmp">
137
        <el-select v-model="dataForm.serviceIds" filterable placeholder="请选择" style="width:220px">
138
          <el-option
139
            v-for="item in employeeList"
140
            :key="item.id"
141
            :label="item.truename"
142
            :value="item.id"
143
          ></el-option>
144
        </el-select>
145
      </el-form-item>
146
      <el-form-item label="线上报名截止时间" prop="onlineRegDeadline">
147
        <el-date-picker
148
          v-model="dataForm.onlineRegDeadline"
149
          type="datetime"
150
          placeholder="开始时间"
151
          value-format="yyyy-MM-dd HH:mm:ss"
152
        ></el-date-picker>
153
      </el-form-item>
154
      <el-form-item label="现场报名截止时间" prop="onsiteRegDeadline">
155
        <el-date-picker
156
          v-model="dataForm.onsiteRegDeadline"
157
          type="datetime"
158
          placeholder="截止时间"
159
          value-format="yyyy-MM-dd HH:mm:ss"
160
        ></el-date-picker>
161
      </el-form-item>
162
      <!-- <el-form-item label="线上报名起始时间">
163
        <el-date-picker
164
          v-model="dataForm.onsiteRegDeadEndTime"
165
          type="datetimerange"
166
          start-placeholder="开始日期"
167
          end-placeholder="结束日期"
168
          :default-time="['12:00:00']"
169
          value-format="yyyy-MM-dd HH:mm:ss"
170
        ></el-date-picker>
171
      </el-form-item>-->
172
      <el-form-item label="会议介绍">
173
        <u-e @ue="getCotent" ref="ue" :txt="this.txt"></u-e>
41
      <el-form-item label="上传会议封面图片" prop="titlePicture">
42
        <!-- <el-upload
43
          :action="dialogImageUrl"
44
          list-type="picture-card"
45
          :on-success="handlePictureCardPreview"
46
          :file-list="titlePictureList"
47
          name="upload_file"
48
        >
49
          <i class="el-icon-plus"></i>
50
        </el-upload> -->
51
        <el-upload
52
          class="avatar-uploader"
53
          :action="dialogImageUrl"
54
          :show-file-list="false"
55
          :on-success="handlePictureCardPreview"
56
          name="upload_file"
57
        >
58
          <img v-if="this.dataForm.titlepic" :src="this.dataForm.titlepic" class="avatar" />
59
          <i v-else class="el-icon-plus avatar-uploader-icon"></i>
60
        </el-upload>
174 61
      </el-form-item>
175 62
    </el-form>
176 63
    <span slot="footer" class="dialog-footer">
@ -180,101 +67,119 @@
180 67
  </el-dialog>
181 68
</template>
182 69
<script>
183
import ueditor from "ueditor";
184
import uE from "../../../components/ue/ueditor";
185 70
export default {
186 71
  data() {
187 72
    return {
188 73
      url: "",
189 74
      visible: false,
190 75
      dialogVisible: false,
76
      time: "",
191 77
      dataForm: {
78
        id: 0,
192 79
        companyId: 1,
193
        nameCn: "",
194
        nameEn: "",
80
        name: "",
195 81
        address: "",
196
        officeWebsite: "",
197
        titlePicture: "",
198
        subjects: "",
199
        industries: "",
200
        attendersType: "",
201
        serviceName: "",
202
        serviceIds: "",
203
        contactNames: "", // 联系人ids
204
        contactIds: "", // 联系人姓名
205
        onlineRegDeadline: "",
206
        onsiteRegDeadline: "",
207
        introduction: "",
208
        startAndEndTime: [],
209
        onsiteRegDeadEndTime: []
82
        startTime: "",
83
        endTime: "",
84
        titlepic: "",
85
        // nameCn: "",
86
        // nameEn: "",
87
        // address: "",
88
        // officeWebsite: "",
89
        // titlePicture: "",
90
        // subjects: "",
91
        // industries: "",
92
        // attendersType: "",
93
        // serviceName: "",
94
        // serviceIds: "",
95
        // contactNames: "", // 联系人ids
96
        // contactIds: "", // 联系人姓名
97
        // onlineRegDeadline: "",
98
        // onsiteRegDeadline: "",
99
        // introduction: "",
100
        // startAndEndTime: [],
101
        // onsiteRegDeadEndTime: [],
210 102
      },
211 103
      dataRule: {
212 104
        companyId: [
213
          { required: true, message: "举办单位id不能为空", trigger: "blur" }
105
          { required: true, message: "举办单位id不能为空", trigger: "blur" },
214 106
        ],
215 107
        nameCn: [
216
          { required: true, message: "会议名称(中文)不能为空", trigger: "blur" }
108
          {
109
            required: true,
110
            message: "会议名称(中文)不能为空",
111
            trigger: "blur",
112
          },
217 113
        ],
218 114
        nameEn: [
219
          { required: true, message: "会议名称(英文)不能为空", trigger: "blur" }
115
          {
116
            required: true,
117
            message: "会议名称(英文)不能为空",
118
            trigger: "blur",
119
          },
220 120
        ],
221 121
        address: [
222
          { required: true, message: "举办地点不能为空", trigger: "blur" }
122
          { required: true, message: "举办地点不能为空", trigger: "blur" },
223 123
        ],
224 124
        startTime: [
225
          { required: true, message: "开始时间不能为空", trigger: "blur" }
125
          { required: true, message: "开始时间不能为空", trigger: "blur" },
226 126
        ],
227 127
        endTime: [
228
          { required: true, message: "结束时间不能为空", trigger: "blur" }
128
          { required: true, message: "结束时间不能为空", trigger: "blur" },
229 129
        ],
230 130
231 131
        onlineRegDeadline: [
232 132
          {
233 133
            required: true,
234 134
            message: "线上报名截止时间不能为空",
235
            trigger: "blur"
236
          }
135
            trigger: "blur",
136
          },
237 137
        ],
238 138
        onsiteRegDeadline: [
239 139
          {
240 140
            required: true,
241 141
            message: "现场报名截止时间不能为空",
242
            trigger: "blur"
243
          }
142
            trigger: "blur",
143
          },
244 144
        ],
245 145
        subDeadline: [
246
          { required: true, message: "投稿截止时间不能为空", trigger: "blur" }
146
          { required: true, message: "投稿截止时间不能为空", trigger: "blur" },
247 147
        ],
248 148
        subRequirement: [
249
          { required: true, message: "投稿范围及要求不能为空", trigger: "blur" }
149
          {
150
            required: true,
151
            message: "投稿范围及要求不能为空",
152
            trigger: "blur",
153
          },
250 154
        ],
251 155
        introduction: [
252
          { required: true, message: "会议介绍不能为空", trigger: "blur" }
156
          { required: true, message: "会议介绍不能为空", trigger: "blur" },
253 157
        ],
254 158
        paperRequireId: [
255
          { required: true, message: "投稿要求id不能为空", trigger: "blur" }
159
          { required: true, message: "投稿要求id不能为空", trigger: "blur" },
256 160
        ],
257 161
        createTime: [
258
          { required: true, message: "创建时间不能为空", trigger: "blur" }
162
          { required: true, message: "创建时间不能为空", trigger: "blur" },
259 163
        ],
260 164
        modifyTime: [
261
          { required: true, message: "修改时间不能为空", trigger: "blur" }
165
          { required: true, message: "修改时间不能为空", trigger: "blur" },
262 166
        ],
263 167
        isCheck: [
264 168
          {
265 169
            required: true,
266 170
            message: "是否通过审核 0:未通过 1:通过不能为空",
267
            trigger: "blur"
268
          }
171
            trigger: "blur",
172
          },
269 173
        ],
270 174
        isDel: [
271 175
          {
272 176
            required: true,
273 177
            message: "是否被删除 状态  0:正常   1:删除不能为空",
274
            trigger: "blur"
275
          }
276
        ]
178
            trigger: "blur",
179
          },
180
        ],
277 181
      },
182
      startAndEndTime: [], //起始时间
278 183
      dialogImageUrl: "",
279 184
      dialogVisible: false,
280 185
      titlePictureList: [],
@ -291,18 +196,15 @@ export default {
291 196
      employeePersonId: [],
292 197
      employeePerson: [],
293 198
      txt: "",
294
      loading: true
295 199
    };
296 200
  },
297 201
  mounted() {
298
    this.getSubject();
299
    this.getIndustries();
300
    this.getAttendersType();
301
    this.getEmployeeList();
302
  },
303
  components: {
304
    uE
202
    // this.getSubject();
203
    // this.getIndustries();
204
    // this.getAttendersType();
205
    // this.getEmployeeList();
305 206
  },
207
  components: {},
306 208
  methods: {
307 209
    init(id) {
308 210
      this.dataForm.id = id || 0;
@ -313,38 +215,44 @@ export default {
313 215
          this.$http({
314 216
            url: this.$http.adornUrl(`/admin/meeting/info/${this.dataForm.id}`),
315 217
            method: "get",
316
            params: this.$http.adornParams()
218
            params: this.$http.adornParams(),
317 219
          }).then(({ data }) => {
318 220
            if (data && data.code === 0) {
319
              this.dataForm.nameCn = data.meeting.nameCn;
320
              this.dataForm.nameEn = data.meeting.nameEn;
221
              this.dataForm.id = data.meeting.id;
222
              this.dataForm.name = data.meeting.name;
321 223
              this.dataForm.address = data.meeting.address;
322
              this.titlePictureList = data.titlePictures;
323
              this.dataForm.startAndEndTime = data.startAndEndTime;
324
              this.dataForm.officeWebsite = data.meeting.officeWebsite;
325
              this.dataForm.subjects = data.meeting.subjects;
326
              this.dataForm.industries = data.meeting.industries;
327
              this.dataForm.attendersType = data.meeting.attendersType;
328
              this.dataForm.serviceIds = data.meeting.serviceId;
329
              this.employeePerson = data.meeting.contactNames.split(",");
330
              // 线上起始时间
331
              this.dataForm.onlineRegDeadline = data.meeting.onlineRegDeadline;
332
              this.dataForm.onsiteRegDeadline = data.meeting.onsiteRegDeadline;
333
              this.dataForm.introduction = data.meeting.introduction;
334
              this.txt = this.dataForm.introduction;
224
              this.startAndEndTime = this.timeTransformation(
225
                data.meeting.startTime,
226
                data.meeting.endTime
227
              );
228
              this.dataForm.titlepic = data.meeting.titlepic;
229
              // this.dataForm.nameCn = data.meeting.nameCn;
230
              // this.dataForm.nameEn = data.meeting.nameEn;
231
              // this.dataForm.address = data.meeting.address;
232
              // this.titlePictureList = data.titlePictures;
233
              // this.dataForm.startAndEndTime = data.startAndEndTime;
234
              // this.dataForm.officeWebsite = data.meeting.officeWebsite;
235
              // this.dataForm.subjects = data.meeting.subjects;
236
              // this.dataForm.industries = data.meeting.industries;
237
              // this.dataForm.attendersType = data.meeting.attendersType;
238
              // this.dataForm.serviceIds = data.meeting.serviceId;
239
              // this.employeePerson = data.meeting.contactNames.split(",");
240
              // // 线上起始时间
241
              // this.dataForm.onlineRegDeadline = data.meeting.onlineRegDeadline;
242
              // this.dataForm.onsiteRegDeadline = data.meeting.onsiteRegDeadline;
243
              // this.dataForm.introduction = data.meeting.introduction;
244
              // this.txt = this.dataForm.introduction;
335 245
            }
336 246
          });
337 247
        }
338 248
      });
339
      this.dialogImageUrl = this.$http.adornUrl(
340
        `/sys/filemanager/uploadimg?token=${this.$cookie.get("token")}`
341
      );
249
      this.dialogImageUrl = this.$http.adornUrl(`/app/filemanager/uploadimg`);
342 250
    },
343 251
    // 表单提交
344 252
    dataFormSubmit() {
345
      this.$refs.ue.getContent();
346
      this.$refs["dataForm"].validate(valid => {
253
      this.$refs["dataForm"].validate((valid) => {
347 254
        if (valid) {
255
          this.timeTransformation(this.startAndEndTime);
348 256
          this.$http({
349 257
            url: this.$http.adornUrl(
350 258
              `/admin/meeting/${!this.dataForm.id ? "save" : "update"}`
@ -352,30 +260,35 @@ export default {
352 260
            method: "post",
353 261
            data: this.$http.adornData({
354 262
              id: this.dataForm.id,
355
              companyId: 1,
356
              nameCn: this.dataForm.nameCn,
357
              nameEn: this.dataForm.nameEn,
263
              name: this.dataForm.name,
358 264
              address: this.dataForm.address,
359
              // 会议开始时间
360
              startAndEndTime: this.dataForm.startAndEndTime,
361
              officeWebsite: this.dataForm.officeWebsite,
362
              titlePicture: this.titlePictureList,
363
              subjects: this.subjects,
364
              industries: this.industry,
365
              attendersType: this.typesofattender,
366
              serviceId: this.dataForm.serviceIds,
367
              contactNames: this.employeePerson,
368
              contactIds: this.employeePersonId,
369
              onlineRegDeadline: this.dataForm.onlineRegDeadline,
370
              onsiteRegDeadline: this.dataForm.onsiteRegDeadline,
371
              introduction: this.dataForm.introduction
372
            })
265
              startTime: this.dataForm.startTime,
266
              endTime: this.dataForm.endTime,
267
              titlepic: this.dataForm.titlepic
268
              // companyId: 1,
269
              // nameCn: this.dataForm.nameCn,
270
              // nameEn: this.dataForm.nameEn,
271
              // address: this.dataForm.address,
272
              // // 会议开始时间
273
              // startAndEndTime: this.dataForm.startAndEndTime,
274
              // officeWebsite: this.dataForm.officeWebsite,
275
              // titlePicture: this.titlePictureList,
276
              // subjects: this.subjects,
277
              // industries: this.industry,
278
              // attendersType: this.typesofattender,
279
              // serviceId: this.dataForm.serviceIds,
280
              // contactNames: this.employeePerson,
281
              // contactIds: this.employeePersonId,
282
              // onlineRegDeadline: this.dataForm.onlineRegDeadline,
283
              // onsiteRegDeadline: this.dataForm.onsiteRegDeadline,
284
              // introduction: this.dataForm.introduction,
285
            }),
373 286
          }).then(({ data }) => {
374 287
            if (data && data.code === 0) {
375
              this.subjects = [];
288
              // this.subjects = [];
376 289
              this.titlePictureList = [];
377
              this.industry = [];
378
              this.typesofattender = [];
290
              // this.industry = [];
291
              // this.typesofattender = [];
379 292
              this.$message({
380 293
                message: "操作成功",
381 294
                type: "success",
@ -383,7 +296,7 @@ export default {
383 296
                onClose: () => {
384 297
                  this.visible = false;
385 298
                  this.$emit("refreshDataList");
386
                }
299
                },
387 300
              });
388 301
            } else {
389 302
              this.$message.error(data.msg);
@ -393,14 +306,30 @@ export default {
393 306
      });
394 307
    },
395 308
    // 上传会议图片
396
    handleRemove(file, fileList) {
397
      let img = file.uid;
398
      this.titlePictureList.splice(this.titlePictureList.indexOf(img), 1);
309
    // handleRemove(file, fileList) {
310
    //   console.log(123)
311
    //   // console.log(file,fileList)
312
    //   // let img = file.uid;
313
    //   // this.titlePictureList.splice(this.titlePictureList.indexOf(img), 1);
314
    // },
315
    // 上传成功
316
    handlePictureCardPreview(response, file) {
317
       this.dataForm.titlepic = response.picname
318
     
399 319
    },
400
    handlePictureCardPreview(response, file, fileList) {
401
      response.url = "http://192.168.3.233/" + response.picname;
402
      this.titlePictureList.push(response);
320
321
    // 日期转换
322
    timeTransformation(data1, data2) {
323
      if (Array.isArray(data1)) {
324
        this.dataForm.startTime = data1[0];
325
        this.dataForm.endTime = data1[1];
326
      } else {
327
        let arr = [data1, data2];
328
        return arr;
329
      }
403 330
    },
331
332
    // 废弃别碰别删
404 333
    //获取会议学科
405 334
    getSubject() {
406 335
      this.$http({
@ -408,9 +337,9 @@ export default {
408 337
        method: "get",
409 338
        params: {
410 339
          page: this.page,
411
          limit: this.limit
412
        }
413
      }).then(res => {
340
          limit: this.limit,
341
        },
342
      }).then((res) => {
414 343
        if (res && res.data.code === 0) {
415 344
          this.restaurants = res.data.page.list;
416 345
          for (let i of this.restaurants) {
@ -431,7 +360,7 @@ export default {
431 360
      }, 1000 * Math.random());
432 361
    },
433 362
    createStateFilter(queryString) {
434
      return restaurant => {
363
      return (restaurant) => {
435 364
        return (
436 365
          restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) ===
437 366
          0
@ -451,9 +380,9 @@ export default {
451 380
        method: "get",
452 381
        params: {
453 382
          page: this.page,
454
          limit: this.limit
455
        }
456
      }).then(res => {
383
          limit: this.limit,
384
        },
385
      }).then((res) => {
457 386
        if (res && res.data.code === 0) {
458 387
          this.industryRestaurants = res.data.page.list;
459 388
          for (let i of this.industryRestaurants) {
@ -487,9 +416,9 @@ export default {
487 416
        method: "get",
488 417
        params: {
489 418
          page: this.page,
490
          limit: this.limit
491
        }
492
      }).then(res => {
419
          limit: this.limit,
420
        },
421
      }).then((res) => {
493 422
        if (res && res.data.code === 0) {
494 423
          this.typesofattendersRestaurants = res.data.page.list;
495 424
          for (let i of this.typesofattendersRestaurants) {
@ -521,8 +450,8 @@ export default {
521 450
        url: this.$http.adornUrl(`/admin/employee/findAllByTrueName`),
522 451
        method: "get",
523 452
        params: this.$http.adornParams({
524
          truename: ""
525
        })
453
          truename: "",
454
        }),
526 455
      }).then(({ data }) => {
527 456
        if (data) {
528 457
          this.employeeList = data;
@ -538,7 +467,7 @@ export default {
538 467
        this.$message.error({
539 468
          message: "联系人最多添加三个",
540 469
          type: "danger",
541
          duration: 1500
470
          duration: 1500,
542 471
        });
543 472
      } else {
544 473
        this.employeePersonId.push(this.dataForm.contactNames);
@ -551,6 +480,7 @@ export default {
551 480
    },
552 481
    //获取富文本框内容
553 482
    getCotent(data) {
483
      // window.console.log(data);
554 484
      this.dataForm.introduction = data;
555 485
    },
556 486
    handleClose(data, name) {
@ -567,8 +497,8 @@ export default {
567 497
        default:
568 498
          break;
569 499
      }
570
    }
571
  }
500
    },
501
  },
572 502
};
573 503
</script>
574 504
<style lang='scss'>

+ 53 - 37
src/views/modules/admin/meeting.vue

@ -1,25 +1,25 @@
1 1
<template>
2 2
  <div class="ll-content" v-loading="loading">
3
    <h1>{{meetingData.nameCn}}</h1>
3
    <h1>{{ meetingData.name }}</h1>
4
    
4 5
    <div class="box">
5
      <img :src="imageNull" class="bgMeeting" />
6
      
7
      <img :src="meetingData.titlepic" class="bgMeeting" />
8
6 9
      <el-form label-width="200px" style="margin-top:20px">
7 10
        <el-form-item
8
          label="开始时间"
9
        >{{meetingData.startTime}}&nbsp;&nbsp;&nbsp;&nbsp;结束时间 {{meetingData.endTime}}</el-form-item>
10
        <el-form-item label="举办地点">{{meetingData.address}}</el-form-item>
11
        <el-form-item label="涉及学科">
12
          <el-tag v-for="(item) in subjectsList" :key="item" style="margin-right:10px">{{item}}</el-tag>
13
        </el-form-item>
14
        <el-form-item label="涉及行业">
15
          <el-tag v-for="(item) in industries" :key="item" style="margin-right:10px">{{item}}</el-tag>
16
        </el-form-item>
17
        <el-form-item label="会议负责人">{{this.meetingData.serviceName}}</el-form-item>
18
        <el-form-item label="会议介绍" style="height:150px;overflow: hidden; ">
19
          <div class="introduction" v-html="this.meetingData.introduction"></div>
20
        </el-form-item>
11
          label="开始时间:"
12
        >{{meetingData.startTime}}&nbsp;&nbsp;&nbsp;&nbsp;结束时间: {{meetingData.endTime}}</el-form-item>
13
        <el-form-item label="举办地点:">{{meetingData.address}}</el-form-item>
21 14
      </el-form>
22
      <div class="code"></div>
15
      <!-- <div class="code"></div> -->
16
    <p>
17
        <span><router-link class="branch" :to="{path:`/admin-branch/${id}`}">分会场管理</router-link></span>
18
        <span><router-link class="invitation" :to="{path:`/admin-invitation/${id}`}">邀请名单</router-link></span>
19
        <span><router-link class="attenders" :to="{path:`/admin-attenders/${id}`}">参会名单</router-link></span>
20
        <span><router-link class="sign" :to="{path:`/admin-sign/${id}`}">现场管理</router-link></span>
21
        <span><router-link class="report" :to="{path:`/admin-report/${id}`}">报告管理</router-link></span>
22
      </p>
23 23
    </div>
24 24
  </div>
25 25
</template>
@ -35,25 +35,19 @@ export default {
35 35
      subjectsList: [],
36 36
      industries: [],
37 37
      image: "",
38
      loading: false
38
      loading: false,
39 39
    };
40 40
  },
41 41
  components: {},
42 42
  computed: {
43 43
    imageNull() {
44 44
      return this.image.includes(",")
45
        ? this.imageUrl +
46
            this.image
47
              .split(",")
48
              .splice(0, 1)
49
              .join()
50
        : this.imageUrl + this.image;
51
    }
45
        ? this.image.split(",").splice(0, 1).join()
46
        : this.image;
47
    },
52 48
  },
53 49
  beforeMount() {},
54 50
  created() {
55
    this.demo();
56
    window.console.log(this.dataForm.introduction);
57 51
  },
58 52
  activated() {
59 53
    this.getMeeting();
@ -66,22 +60,18 @@ export default {
66 60
        this.$http({
67 61
          url: this.$http.adornUrl(`/admin/meeting/info/${this.id}`),
68 62
          method: "get",
69
          params: this.$http.adornParams()
70
        }).then(res => {
71
          if (res.data && res.data.code === 0) {
72
            this.meetingData = res.data.meeting;
73
            this.industries = res.data.meeting.industries.split(",");
74
            this.image = res.data.meeting.titlePicture;
75
            this.subjectsList = res.data.meeting.subjects.split(",");
63
          params: this.$http.adornParams(),
64
        }).then((res) => {
65
          console.log(res);
66
          if (res.data && res.data.code == 0) {
76 67
            this.loading = false;
68
            this.meetingData = res.data.meeting;
69
            // this.meetingData.titlepic = "http://192.168.3.233:89/" + this.meetingData.titlepic
77 70
          }
78 71
        });
79 72
      }
80 73
    },
81
    demo() {
82
      // let ll = set(this.subjectsList);
83
    }
84
  }
74
  },
85 75
};
86 76
</script>
87 77
<style scoped lang='scss'>
@ -109,6 +99,32 @@ export default {
109 99
      -webkit-line-clamp: 6;
110 100
      -webkit-box-orient: vertical;
111 101
    }
102
    span{
103
      float: left;
104
      display: block;
105
      height: 50px;
106
      background-color: #DCDFE6;
107
      line-height: 50px;
108
      width: 150px;
109
      margin-right: 20px;
110
      border-radius: 30px;
111
      box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);
112
      text-align: center;
113
    }
114
    span:first-of-type{
115
      margin-left: 25px;
116
    }
117
    a{
118
      font-size: 18px;
119
      text-align: center;
120
      display: block;
121
      
122
    }
123
    a:hover{
124
      text-decoration:none;
125
    }
126
    
127
    
112 128
  }
113 129
}
114 130
</style>

+ 97 - 91
src/views/modules/admin/member-add-or-update.vue

@ -11,8 +11,7 @@
11 11
      @keyup.enter.native="dataFormSubmit()"
12 12
      label-width="80px"
13 13
    >
14
      <el-form-item label="头像" prop="titlePic">
15
        <!-- <el-input v-model="dataForm.titlePic" placeholder="头像"></el-input> -->
14
      <!-- <el-form-item label="头像" prop="titlePic">
16 15
        <el-upload
17 16
          class="avatar-uploader"
18 17
          :action="upload_url"
@ -26,34 +25,70 @@
26 25
          <img v-if="showimg" :src="showimg" class="avatar" />
27 26
          <i v-else class="el-icon-plus avatar-uploader-icon"></i>
28 27
        </el-upload>
29
      </el-form-item>
28
      </el-form-item>-->
30 29
      <el-form-item label="姓名" prop="truename">
31 30
        <el-input v-model="dataForm.truename" placeholder="姓名"></el-input>
32 31
      </el-form-item>
33
      <el-form-item label="用户名" prop="username">
32
      <!-- <el-form-item label="用户名" prop="username">
34 33
        <el-input v-model="dataForm.username" placeholder="手机号"></el-input>
35
      </el-form-item>
36
       <el-form-item label="联系电话" prop="phone">
37
        <el-input v-model="dataForm.phone" placeholder="联系电话"></el-input>
34
      </el-form-item>-->
35
      <el-form-item label="性别" prop="sex">
36
        <el-radio v-model="dataForm.sex" :label="0">未知</el-radio>
37
        <el-radio v-model="dataForm.sex" :label="1">男</el-radio>
38
        <el-radio v-model="dataForm.sex" :label="2">女</el-radio>
38 39
      </el-form-item>
39 40
      <el-form-item label="所属机构" prop="organization">
40 41
        <el-input v-model="dataForm.organization" placeholder="所属机构"></el-input>
41 42
      </el-form-item>
43
      <el-form-item label="联系电话" prop="phone">
44
        <el-input v-model="dataForm.phone" placeholder="联系电话"></el-input>
45
      </el-form-item>
46
42 47
      <el-form-item label="职位" prop="position">
43 48
        <el-input v-model="dataForm.position" placeholder="职位"></el-input>
44 49
      </el-form-item>
45
      <el-form-item label="职称" prop="jobTitle">
46
        <el-input v-model="dataForm.jobTitle" placeholder="职称"></el-input>
47
      </el-form-item>
48
49
     
50
      <el-form-item label="邮箱" >
50
      <el-form-item label="邮箱" prop="email">
51 51
        <el-input v-model="dataForm.email" placeholder="邮箱"></el-input>
52 52
      </el-form-item>
53
      <el-form-item label="备注" prop="position">
54
        <el-input v-model="dataForm.remark" placeholder="备注" ></el-input>
55
      </el-form-item>
56
      <el-form-item label="开票类型" prop="taxType">
57
        <el-radio v-model="dataForm.taxType" :label="1">普</el-radio>
58
        <el-radio v-model="dataForm.taxType" :label="2">专</el-radio>
59
      </el-form-item>
60
      <el-form-item label="发票抬头" prop="taxTitle">
61
        <el-input v-model="dataForm.taxTitle" placeholder="发票抬头" ></el-input>
62
      </el-form-item>
63
      <el-form-item label="税号" prop="taxNumber">
64
        <el-input v-model="dataForm.taxNumber" placeholder="税号" ></el-input>
65
      </el-form-item>
66
      <el-form-item label="公司地址" prop="companyAddress">
67
        <el-input v-model="dataForm.companyAddress" placeholder="公司地址" ></el-input>
68
      </el-form-item>
69
      <el-form-item label="公司电话" prop="companyPhone">
70
        <el-input v-model="dataForm.companyPhone" placeholder="公司电话" ></el-input>
71
      </el-form-item>
72
      <el-form-item label="开户行及账号" prop="bankAccount">
73
        <el-input v-model="dataForm.bankAccount" placeholder="开户行及账号" ></el-input>
74
      </el-form-item>
75
      <el-form-item label="发票邮寄地址" prop="mailingAddress">
76
        <el-input v-model="dataForm.mailingAddress" placeholder="发票邮寄地址" ></el-input>
77
      </el-form-item>
78
      <el-form-item label="邮编" prop="postcode">
79
        <el-input v-model="dataForm.postcode" placeholder="邮编" ></el-input>
80
      </el-form-item>
81
      <!-- <el-form-item label="座机" prop="officephone">
82
        <el-input v-model="dataForm.officephone" placeholder="座机"></el-input>
83
      </el-form-item> -->
84
      <!-- <el-form-item label="职称" prop="jobTitle">
85
        <el-input v-model="dataForm.jobTitle" placeholder="职称"></el-input>
86
      </el-form-item>-->
87
53 88
      <!-- <el-form-item label="审核" prop="isCheck">
54 89
        <el-radio v-model="dataForm.isCheck" :label="0">否</el-radio>
55 90
        <el-radio v-model="dataForm.isCheck" :label="1">是</el-radio>
56
      </el-form-item> -->
91
      </el-form-item>-->
57 92
    </el-form>
58 93
    <span slot="footer" class="dialog-footer">
59 94
      <el-button @click="visible = false">取消</el-button>
@ -64,76 +99,37 @@
64 99
<script>
65 100
export default {
66 101
  data() {
67
    var checkPwd = (rule, value, callback) => {
68
      if (!value) {
69
        if (this.dataForm.id === 0) {
70
          return callback(new Error("密码不可为空"));
71
        } else {
72
          return callback();
73
        }
74
      } else {
75
        if (!value.match(/^.*(?=.{6,})/)) {
76
          return callback(new Error("密码需6位或以上"));
77
        }
78
        return callback();
79
      }
80
    };
81
    var checkEmail = (rule, value, callback) => {
82
      if (!value) {
83
        return callback();
84
      } else {
85
        if (
86
          !value.match(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/)
87
        ) {
88
          return callback(new Error("邮箱格式错误"));
89
        }
90
        return callback();
91
      }
92
    };
93
    var checkPhone = (rule, value, callback) => {
94
      if (!value) {
95
        return callback(new Error("电话不能为空"));
96
      } else {
97
        if (!value.match(/^1(3|4|5|6|7|8)\d{9}$/)) {
98
          return callback(new Error("电话格式错误"));
99
        } else {
100
          return callback();
101
        }
102
      }
103
    };
104 102
    return {
105 103
      add: false,
106 104
      visible: false,
107 105
      dataForm: {
106
        meetingId: this.$route.params.id,
108 107
        id: 0,
109
        username: "",
110
        password: "",
111 108
        truename: "",
112
        titlePic: "",
109
        sex: 0,
113 110
        organization: "",
114 111
        position: "",
115
        jobTitle: "",
116 112
        phone: "",
117 113
        email: "",
118
        createTime: "",
119
        isCheck: 0
114
        officephone: "",
115
        isReceipt: 0,
116
        remark: "",
117
        taxType: 1,
118
        taxTitle: "",
119
        taxNumber: "",
120
        companyAddress: "",
121
        companyPhone: "",
122
        bankAccount: "",
123
        mailingAddress: "",
124
        postcode: "",
120 125
      },
121 126
      dataRule: {
122
        username: [
123
          { required: true, message: "用户名不能为空", trigger: "blur" }
124
        ],
125 127
        truename: [
126 128
          { required: true, message: "姓名不能为空", trigger: "blur" }
127 129
        ],
128
        // password: [
129
        //   { required: true, message: '密码不能为空', trigger: 'blur' }
130
        // ],
131
        // phone: [
132
        //   { required: true, message: '电话不能为空', trigger: 'blur' }
133
        // ]
134
        password: [{ validator: checkPwd, trigger: "blur" }],
135
        phone: [{ validator: checkPhone, trigger: "blur" }],
136
        email: [{ validator: checkEmail, trigger: "blur" }]
130
        organization: [
131
          { required: true, message: "所属机构不能为空", trigger: "blur" }
132
        ]
137 133
      },
138 134
      upload_url: "",
139 135
      radio: "0",
@ -156,20 +152,23 @@ export default {
156 152
            method: "get",
157 153
            params: this.$http.adornParams()
158 154
          }).then(({ data }) => {
159
            window.console.log(data);
160 155
            if (data && data.code === 0) {
161
              this.dataForm.username = data.member.username;
162
              this.dataForm.truename = data.member.truename;
163
              this.dataForm.titlePic = data.member.titlePic;
164
              this.dataForm.organization = data.member.organization;
165
              this.dataForm.position = data.member.position;
166
              this.dataForm.jobTitle = data.member.jobTitle;
167
              this.dataForm.phone = data.member.phone;
168
              this.dataForm.email = data.member.email;
169
              this.dataForm.createTime = data.member.createTime;
170
              this.dataForm.modifyTime = data.member.modifyTime;
171
              this.dataForm.isCheck = data.member.isCheck;
172
              this.showimg = this.imageUrl + data.member.titlePic;
156
              (this.dataForm.truename = data.member.truename),
157
                (this.dataForm.organization = data.member.organization),
158
                (this.dataForm.position = data.member.position),
159
                (this.dataForm.phone = data.member.phone),
160
                (this.dataForm.email = data.member.email),
161
                (this.dataForm.officephone = data.member.officephone);
162
                (this.dataForm.sex = data.member.sex);
163
                (this.dataForm.remark = data.member.remark);
164
                (this.dataForm.taxType = data.member.taxType);
165
                (this.dataForm.taxTitle = data.member.taxTitle);
166
                (this.dataForm.taxNumber = data.member.taxNumber);
167
                (this.dataForm.companyAddress = data.member.companyAddress);
168
                (this.dataForm.companyPhone = data.member.companyPhone);
169
                (this.dataForm.bankAccount = data.member.bankAccount);
170
                (this.dataForm.mailingAddress = data.member.mailingAddress);
171
                (this.dataForm.postcode = data.member.postcode);
173 172
            }
174 173
          });
175 174
        }
@ -189,19 +188,26 @@ export default {
189 188
            ),
190 189
            method: "post",
191 190
            data: this.$http.adornData({
192
              id: this.dataForm.id || undefined,
193
              username: this.dataForm.username,
194
              password: this.dataForm.password,
191
              meetingId: this.dataForm.meetingId,
192
              id: this.dataForm.id,
195 193
              truename: this.dataForm.truename,
196 194
              sex: this.dataForm.sex,
197
              titlePic: this.dataForm.titlePic,
198 195
              organization: this.dataForm.organization,
199 196
              position: this.dataForm.position,
200
              jobTitle: this.dataForm.jobTitle,
201 197
              phone: this.dataForm.phone,
202 198
              email: this.dataForm.email,
203
              createTime: this.dataForm.createTime,
204
              modifyTime: this.dataForm.modifyTime
199
              officephone: this.dataForm.officephone,
200
              remark: this.dataForm.remark,
201
              taxType: this.dataForm.taxType,
202
              taxTitle: this.dataForm.taxTitle,
203
              taxNumber: this.dataForm.taxNumber,
204
              companyAddress: this.dataForm.companyAddress,
205
              companyPhone: this.dataForm.companyPhone,
206
              bankAccount: this.dataForm.bankAccount,
207
              mailingAddress: this.dataForm.mailingAddress,
208
              postcode: this.dataForm.postcode,
209
              // isReceipt: 0,
210
              // remark: "测试测试"
205 211
            })
206 212
          }).then(({ data }) => {
207 213
            if (data && data.code === 0) {
@ -243,9 +249,9 @@ export default {
243 249
      if (response && response.code === 0) {
244 250
        if (response.hasOwnProperty("thumb")) {
245 251
          this.dataForm.titlePic = response.thumb;
246
          this.showimg = this.imageUrl + response.thumb;
252
          this.showimg = response.thumb;
247 253
        } else {
248
          this.showimg = this.imageUrl + response.picname;
254
          this.showimg = response.picname;
249 255
          this.dataForm.titlePic = response.picname;
250 256
          this.dialogVisible = true;
251 257
        }

+ 265 - 53
src/views/modules/admin/member.vue

@ -1,18 +1,34 @@
1 1
<template>
2
  <div class="mod-config">
3
    <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
2
  <div class="mod-config" v-loading="loading">
3
    <el-form
4
      :inline="true"
5
      :model="dataForm"
6
      @keyup.enter.native="getDataList()"
7
    >
4 8
      <el-form-item>
5
        <el-input v-model="dataForm.key" placeholder="账号名/姓名" clearable></el-input>
9
        <el-input
10
          v-model="dataForm.key"
11
          placeholder="账号名/姓名"
12
          clearable
13
        ></el-input>
6 14
      </el-form-item>
7 15
      <el-form-item>
8
        <el-button @click="getDataList()">查询</el-button>
9
        <el-button v-if="isAuth('admin:member:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button>
16
        <el-button @click="se()">查询</el-button>
17
        <el-button @click="dialogVisible = true" type="success">导入</el-button>
18
        <el-button
19
          v-if="isAuth('admin:member:save')"
20
          type="primary"
21
          @click="addOrUpdateHandle()"
22
          >新增</el-button
23
        >
10 24
        <el-button
11 25
          v-if="isAuth('admin:member:delete')"
12 26
          type="danger"
13 27
          @click="deleteHandle()"
14 28
          :disabled="dataListSelections.length <= 0"
15
        >批量删除</el-button>
29
          >批量删除</el-button
30
        >
31
        <el-button @click="demo()" type="success">下载错误信息</el-button>
16 32
      </el-form-item>
17 33
    </el-form>
18 34
    <el-table
@ -20,28 +36,59 @@
20 36
      border
21 37
      v-loading="dataListLoading"
22 38
      @selection-change="selectionChangeHandle"
23
      style="width: 100%;"
39
      style="width: 100%"
24 40
    >
25
      <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
41
      <el-table-column
42
        type="selection"
43
        header-align="center"
44
        align="center"
45
        width="50"
46
      ></el-table-column>
26 47
      <!-- <el-table-column prop="id" header-align="center" align="center" label="id"></el-table-column> -->
27
      <el-table-column prop="truename" header-align="center" align="center" label="姓名"></el-table-column>
28
      <el-table-column prop="username" header-align="center" align="center" label="账号"></el-table-column>
29
      <el-table-column prop="organization" header-align="center" align="center" label="所属机构"></el-table-column>
30
      <el-table-column prop="position" header-align="center" align="center" label="职位"></el-table-column>
48
      <el-table-column
49
        prop="truename"
50
        header-align="center"
51
        align="center"
52
        label="姓名"
53
      ></el-table-column>
54
      <el-table-column
55
        prop="sex"
56
        header-align="center"
57
        align="center"
58
        label="性别"
59
      ></el-table-column>
60
      <!-- <el-table-column prop="username" header-align="center" align="center" label="账号"></el-table-column> -->
61
      <el-table-column
62
        prop="organization"
63
        header-align="center"
64
        align="center"
65
        label="所属机构"
66
      ></el-table-column>
67
      <el-table-column
68
        prop="position" 
69
        header-align="center" 
70
        align="center" label="职位"
71
      ></el-table-column>/
31 72
      <!-- <el-table-column prop="jobTitle" header-align="center" align="center" label="职称"></el-table-column> -->
32
      <el-table-column prop="phone" header-align="center" align="center" label="电话"></el-table-column>
73
      <el-table-column
74
        prop="phone"
75
        header-align="center"
76
        align="center"
77
        label="电话"
78
      ></el-table-column>
79
      <!-- <el-table-column prop="officephone" header-align="center" align="center" label="座机"></el-table-column> -->
33 80
      <el-table-column prop="email" header-align="center" align="center" label="邮箱"></el-table-column>
34
      <el-table-column prop="meetingCounts" header-align="center" align="center" label="参会场次"></el-table-column>
35
      <el-table-column prop="meetingName" header-align="center" align="center" label="最后参加会议"></el-table-column>
81
      <!-- <el-table-column prop="meetingCounts" header-align="center" align="center" label="参会场次"></el-table-column> -->
82
      <!-- <el-table-column prop="meetingName" header-align="center" align="center" label="最后参加会议"></el-table-column> -->
36 83
      <!-- <el-table-column prop="servicerName" header-align="center" align="center" label="负责人"></el-table-column> -->
37
      <el-table-column
84
      <!-- <el-table-column
38 85
        prop="createTime"
39 86
        header-align="center"
40 87
        align="center"
41 88
        width="160"
42 89
        label="创建时间"
43
      ></el-table-column>
44
      <el-table-column prop="isCheck" header-align="center" align="center" label="是否通过审核">
90
      ></el-table-column>-->
91
      <!-- <el-table-column prop="isCheck" header-align="center" align="center" label="是否通过审核">
45 92
        <template slot-scope="scope">
46 93
          <el-button
47 94
            v-if="scope.row.isCheck === 0"
@ -57,12 +104,60 @@
57 104
            @click="changeStatus(0,scope.row.id)"
58 105
          >是</el-button>
59 106
        </template>
60
      </el-table-column>
61
      <el-table-column fixed="right" header-align="center" align="center" width="200" label="操作">
107
      </el-table-column>-->
108
      <!-- <el-table-column prop="isCheck" header-align="center" align="center" label="是否回执">
109
        <template slot-scope="scope">
110
          <el-button
111
            v-if="scope.row.isReceipt === 0"
112
            size="medium"
113
            hit="true"
114
            @click="changeStatus(1,scope.row.id)"
115
          >否</el-button>
116
          <el-button
117
            v-else-if="scope.row.isReceipt === 1"
118
            size="medium"
119
            hit="true"
120
            type="success"
121
            @click="changeStatus(0,scope.row.id)"
122
          >是</el-button>
123
        </template>
124
      </el-table-column> -->
125
      <!-- <el-table-column
126
        label="备注"
127
        header-align="center"
128
        align="center"
129
        width="280px"
130
      >
62 131
        <template slot-scope="scope">
63
          <el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
64
          <el-button type="text" size="small" @click="repasswordHandle(scope.row.id)">重置密码</el-button>
65
          <el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
132
          <el-input
133
            type="textarea"
134
            @blur="getNot(scope.row.id, scope.row.remark)"
135
            resize="none"
136
            v-model="scope.row.remark"
137
          ></el-input>
138
        </template>
139
      </el-table-column> -->
140
      <el-table-column
141
        fixed="right"
142
        header-align="center"
143
        align="center"
144
        width="200"
145
        label="操作"
146
      >
147
        <template slot-scope="scope">
148
          <el-button
149
            type="text"
150
            size="small"
151
            @click="addOrUpdateHandle(scope.row.id)"
152
            >修改</el-button
153
          >
154
          <!-- <el-button type="text" size="small" @click="repasswordHandle(scope.row.id)">重置密码</el-button> -->
155
          <el-button
156
            type="text"
157
            size="small"
158
            @click="deleteHandle(scope.row.id)"
159
            >删除</el-button
160
          >
66 161
        </template>
67 162
      </el-table-column>
68 163
    </el-table>
@ -76,7 +171,46 @@
76 171
      layout="total, sizes, prev, pager, next, jumper"
77 172
    ></el-pagination>
78 173
    <!-- 弹窗, 新增 / 修改 -->
79
    <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
174
    <add-or-update
175
      v-if="addOrUpdateVisible"
176
      ref="addOrUpdate"
177
      @refreshDataList="getDataList"
178
    ></add-or-update>
179
180
    <!-- 导入弹窗 -->
181
    <el-dialog title="导入表单" :visible.sync="dialogVisible">
182
      <el-form>
183
        <el-form-item label="上传投稿">
184
          <el-upload
185
            class="upload-demo"
186
            ref="upload"
187
            :action="upload_url"
188
            :on-success="successHandle"
189
            :file-list="fileList"
190
            :limit="1"
191
            :auto-upload="false"
192
            name="file"
193
          >
194
            <el-button slot="trigger" size="small" type="primary"
195
              >选取文件</el-button
196
            >
197
            <!-- <el-button
198
              style="margin-left: 10px;"
199
              size="small"
200
              type="success"
201
              @click="submitUpload"
202
            >上传到服务器</el-button>-->
203
            <div slot="tip" class="el-upload__tip" style="color: red">
204
              只能上传 pdf doc docx 文件,上传大小为4M
205
            </div>
206
          </el-upload>
207
        </el-form-item>
208
      </el-form>
209
      <span slot="footer" class="dialog-footer">
210
        <el-button @click="dialogVisible = false">取 消</el-button>
211
        <el-button type="primary" @click="submitUpload">确 定</el-button>
212
      </span>
213
    </el-dialog>
80 214
  </div>
81 215
</template>
82 216
<script>
@ -85,25 +219,41 @@ export default {
85 219
  data() {
86 220
    return {
87 221
      dataForm: {
88
        key: ""
222
        key: "",
89 223
      },
224
      fileList: [],
90 225
      dataList: [],
91 226
      baa: true,
92 227
      pageIndex: 1,
93
      pageSize: 10,
228
      pageSize: 20,
94 229
      totalPage: 0,
95 230
      dataListLoading: false,
96 231
      dataListSelections: [],
97
      addOrUpdateVisible: false
232
      addOrUpdateVisible: false,
233
      text: "",
234
      dialogVisible: false,
235
      upload_url: "",
236
237
      loading: true,
98 238
    };
99 239
  },
100 240
  components: {
101
    AddOrUpdate
241
    AddOrUpdate,
242
  },
243
  created() {
244
    this.upload_url = this.$http.adornUrl(
245
      `/admin/member/import?token=${this.$cookie.get("token")}`
246
    );
102 247
  },
103 248
  activated() {
104 249
    this.getDataList();
105 250
  },
106 251
  methods: {
252
    // 查询
253
    se() {
254
      this.pageIndex = 1;
255
      this.getDataList();
256
    },
107 257
    // 获取数据列表
108 258
    getDataList() {
109 259
      this.dataListLoading = true;
@ -113,12 +263,25 @@ export default {
113 263
        params: this.$http.adornParams({
114 264
          page: this.pageIndex,
115 265
          limit: this.pageSize,
116
          key: this.dataForm.key
117
        })
266
          key: this.dataForm.key,
267
        }),
118 268
      }).then(({ data }) => {
119 269
        if (data && data.code === 0) {
120 270
          this.dataList = data.page.list;
271
          for(var i =0;i <this.dataList.length;i++){    //性别判断
272
            console.log(this.dataList[i].sex)
273
            if(this.dataList[i].sex === 0){
274
              this.dataList[i].sex = "未知"
275
            }
276
            if(this.dataList[i].sex === 1){
277
              this.dataList[i].sex = "男"
278
            }
279
            if(this.dataList[i].sex === 2){
280
              this.dataList[i].sex = "女"
281
            }
282
          }
121 283
          this.totalPage = data.page.totalCount;
284
          this.loading = false;
122 285
        } else {
123 286
          this.dataList = [];
124 287
          this.totalPage = 0;
@ -153,14 +316,14 @@ export default {
153 316
      this.$http({
154 317
        url: this.$http.adornUrl(`/admin/member/repassword/${id}`),
155 318
        method: "post",
156
        data: this.$http.adornParams()
319
        data: this.$http.adornParams(),
157 320
      }).then(({ data }) => {
158 321
        if (data && data.code === 0) {
159 322
          this.$message({
160 323
            message: "操作成功",
161 324
            type: "success",
162 325
            duration: 1000,
163
            onClose: () => {}
326
            onClose: () => {},
164 327
          });
165 328
        } else {
166 329
          this.$message.error(data.msg);
@ -171,22 +334,18 @@ export default {
171 334
    deleteHandle(id) {
172 335
      var ids = id
173 336
        ? [id]
174
        : this.dataListSelections.map(item => {
337
        : this.dataListSelections.map((item) => {
175 338
            return item.id;
176 339
          });
177
      this.$confirm(
178
        `确定删除?`,
179
        "提示",
180
        {
181
          confirmButtonText: "确定",
182
          cancelButtonText: "取消",
183
          type: "warning"
184
        }
185
      ).then(() => {
340
      this.$confirm(`确定删除?`, "提示", {
341
        confirmButtonText: "确定",
342
        cancelButtonText: "取消",
343
        type: "warning",
344
      }).then(() => {
186 345
        this.$http({
187 346
          url: this.$http.adornUrl("/admin/member/delete"),
188 347
          method: "post",
189
          data: this.$http.adornData(ids, false)
348
          data: this.$http.adornData(ids, false),
190 349
        }).then(({ data }) => {
191 350
          if (data && data.code === 0) {
192 351
            this.$message({
@ -195,7 +354,7 @@ export default {
195 354
              duration: 1500,
196 355
              onClose: () => {
197 356
                this.getDataList();
198
              }
357
              },
199 358
            });
200 359
          } else {
201 360
            this.$message.error(data.msg);
@ -206,12 +365,12 @@ export default {
206 365
    // 改变审核状态
207 366
    changeStatus(status, id) {
208 367
      this.$http({
209
        url: this.$http.adornUrl("/admin/member/status"),
368
        url: this.$http.adornUrl("/admin/member/isreceipt"),
210 369
        method: "post",
211
        data: this.$http.adornParams({
370
        data: this.$http.adornData({
212 371
          id: id,
213
          status: status
214
        })
372
          isReceipt: status,
373
        }),
215 374
      }).then(({ data }) => {
216 375
        if (data && data.code === 0) {
217 376
          this.$message({
@ -221,19 +380,72 @@ export default {
221 380
            onClose: () => {
222 381
              // this.getDataList()
223 382
              var dList = this.dataList;
224
              dList.forEach(element => {
383
              dList.forEach((element) => {
225 384
                if (element.id === id) {
226
                  element.isCheck = status;
385
                  element.isReceipt = status;
227 386
                }
228 387
              });
229 388
              this.dataList = dList;
230
            }
389
            },
231 390
          });
232 391
        } else {
233 392
          this.$message.error(data.msg);
234 393
        }
235 394
      });
236
    }
237
  }
395
    },
396
    getNot(data, text) {
397
      window.console.log(data);
398
      this.$http({
399
        url: this.$http.adornUrl("/admin/member/remark"),
400
        method: "post",
401
        data: this.$http.adornData({
402
          id: data,
403
          remark: text,
404
        }),
405
      }).then(({ data }) => {
406
        if (data && data.code === 0) {
407
          return;
408
        } else {
409
          this.$message.error(data.msg);
410
        }
411
      });
412
    },
413
    //导入
414
    successHandle(response) {
415
      let { statistics } = response;
416
      if (response && response.code === 0) {
417
        this.dialogVisible = false;
418
        this.$refs.upload.clearFiles();
419
420
        this.getDataList();
421
        this.$message({
422
          message:
423
            "上传成功,成功" +
424
            statistics.succes +
425
            "条,失败" +
426
            statistics.fail +
427
            "条",
428
          type: "success",
429
        });
430
      } else {
431
        this.$message.error(response.msg);
432
      }
433
    },
434
    submitUpload() {
435
      this.$refs.upload.submit();
436
      this.dialogVisible = false;
437
      this.getDataList();
438
    },
439
    // 错误信息
440
    demo() {
441
      window.open(
442
        this.$http.adornUrl(
443
          `/admin/member/downloadfails?token=${this.$cookie.get(
444
            "token"
445
          )}`
446
        )
447
      );
448
    },
449
  },
238 450
};
239 451
</script>

+ 167 - 0
src/views/modules/admin/organization-add-or-update.vue

@ -0,0 +1,167 @@
1
<template>
2
  <el-dialog
3
    :title="!dataForm.id ? '新增' : '修改'"
4
    :close-on-click-modal="false"
5
    :visible.sync="visible"
6
  >
7
    <el-form
8
      :model="dataForm"
9
      :rules="dataRule"
10
      ref="dataForm"
11
      @keyup.enter.native="dataFormSubmit()"
12
      label-width="128px"
13
    >
14
      <!-- <el-form-item label="账号" prop="username">
15
        <el-input v-model="dataForm.username" placeholder="账号"></el-input>
16
      </el-form-item>
17
      <el-form-item label="密码" prop="password">
18
        <el-input v-model="dataForm.password" placeholder="密码"></el-input>
19
      </el-form-item> -->
20
      <el-form-item label="单位名称" prop="companyname">
21
        <el-input v-model="dataForm.companyname" placeholder="单位名称"></el-input>
22
      </el-form-item>
23
      <el-form-item label="单位地址" prop="address">
24
        <el-input v-model="dataForm.address" placeholder="单位地址"></el-input>
25
      </el-form-item>
26
27
      <el-form-item label="联系人姓名" prop="contactname">
28
        <el-input v-model="dataForm.contactname" placeholder="联系人姓名"></el-input>
29
      </el-form-item>
30
      <el-form-item label="联系人电话" prop="cellphone">
31
        <el-input v-model="dataForm.cellphone" placeholder="联系人电话"></el-input>
32
      </el-form-item>
33
      <el-form-item label="单位电话">
34
        <el-input v-model="dataForm.telephone" placeholder="单位电话"></el-input>
35
      </el-form-item>
36
      <!-- <el-form-item label="统一社会信用代码">
37
        <el-input v-model="dataForm.uscCode" placeholder="统一社会信用代码"></el-input>
38
      </el-form-item> -->
39
    </el-form>
40
    <span slot="footer" class="dialog-footer">
41
      <el-button @click="visible = false">取消</el-button>
42
      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
43
    </span>
44
  </el-dialog>
45
</template>
46
47
<script>
48
export default {
49
  data() {
50
    return {
51
      visible: false,
52
      dataForm: {
53
        id: 0,
54
        username: "",
55
        password: "",
56
        companyname: "",
57
        address: "",
58
        telephone: "",
59
        contactname: "",
60
        cellphone: "",
61
        uscCode: "",
62
        uscPicture: ""
63
      },
64
      dataRule: {
65
        // username: [
66
        //   { required: true, message: "账号不能为空", trigger: "blur" }
67
        // ],
68
        // password: [
69
        //   { required: true, message: "密码不能为空", trigger: "blur" }
70
        // ],
71
        companyname: [
72
          { required: true, message: "单位名称不能为空", trigger: "blur" }
73
        ],
74
        address: [
75
          { required: true, message: "单位地址不能为空", trigger: "blur" }
76
        ]
77
        // telephone: [
78
        //   { required: true, message: "单位电话不能为空", trigger: "blur" }
79
        // ],
80
        // contactname: [
81
        //   { required: true, message: "联系人姓名不能为空", trigger: "blur" }
82
        // ],
83
        // cellphone: [
84
        //   { required: true, message: "联系人电话不能为空", trigger: "blur" }
85
        // ]
86
      }
87
    };
88
  },
89
  methods: {
90
    init(id) {
91
      this.dataForm.id = id || 0;
92
      this.visible = true;
93
      this.$nextTick(() => {
94
        this.$refs["dataForm"].resetFields();
95
        if (this.dataForm.id) {
96
          this.$http({
97
            url: this.$http.adornUrl(`/admin/company/info/${this.dataForm.id}`),
98
            method: "get",
99
            params: this.$http.adornParams()
100
          }).then(({ data }) => {
101
            if (data && data.code === 0) {
102
              this.dataForm.username = data.company.username;
103
              this.dataForm.password = data.company.password;
104
              this.dataForm.companyname = data.company.companyname;
105
              this.dataForm.address = data.company.address;
106
              this.dataForm.telephone = data.company.telephone;
107
              this.dataForm.contactname = data.company.contactname;
108
              this.dataForm.cellphone = data.company.cellphone;
109
              this.dataForm.uscCode = data.company.uscCode;
110
              this.dataForm.uscPicture = data.company.uscPicture;
111
              this.dataForm.level = data.company.level;
112
              this.dataForm.isCheck = data.company.isCheck;
113
              this.dataForm.createTime = data.company.createTime;
114
              this.dataForm.modifyTime = data.company.modifyTime;
115
              this.dataForm.isDel = data.company.isDel;
116
            }
117
          });
118
        }
119
      });
120
    },
121
    // 表单提交
122
    dataFormSubmit() {
123
      this.$refs["dataForm"].validate(valid => {
124
        if (valid) {
125
          this.$http({
126
            url: this.$http.adornUrl(
127
              `/admin/company/${!this.dataForm.id ? "save" : "update"}`
128
            ),
129
            method: "post",
130
            data: this.$http.adornData({
131
              id: this.dataForm.id || undefined,
132
              username: this.dataForm.username,
133
              password: this.dataForm.password,
134
              companyname: this.dataForm.companyname,
135
              address: this.dataForm.address,
136
              telephone: this.dataForm.telephone,
137
              contactname: this.dataForm.contactname,
138
              cellphone: this.dataForm.cellphone,
139
              uscCode: this.dataForm.uscCode,
140
              uscPicture: this.dataForm.uscPicture,
141
              level: this.dataForm.level,
142
              isCheck: this.dataForm.isCheck,
143
              createTime: this.dataForm.createTime,
144
              modifyTime: this.dataForm.modifyTime,
145
              isDel: this.dataForm.isDel
146
            })
147
          }).then(({ data }) => {
148
            if (data && data.code === 0) {
149
              this.$message({
150
                message: "操作成功",
151
                type: "success",
152
                duration: 1500,
153
                onClose: () => {
154
                  this.visible = false;
155
                  this.$emit("refreshDataList");
156
                }
157
              });
158
            } else {
159
              this.$message.error(data.msg);
160
            }
161
          });
162
        }
163
      });
164
    }
165
  }
166
};
167
</script>

+ 201 - 0
src/views/modules/admin/organization-details.vue

@ -0,0 +1,201 @@
1
<template>
2
  <div class="mod-demo-echarts">
3
    <el-alert type="warning" :closable="false" :title="this.name"></el-alert>
4
    <el-row :gutter="20">
5
      <el-col :span="24">
6
        <el-card>
7
          <div id="J_chartLineBox" class="chart-box"></div>
8
        </el-card>
9
      </el-col>
10
      <el-col :span="24">
11
        <el-card>
12
          <el-table :data="tableData" style="width: 100%">
13
            <el-table-column type="expand" header-align="center" align="center">
14
              <template slot-scope="props">
15
                <el-form label-position="left" inline class="demo-table-expand">
16
                  <el-form-item label="邮 箱">
17
                    <span>{{ props.row.email }}</span>
18
                  </el-form-item>
19
                  <el-form-item label="性 别">
20
                    <span v-if="props.row.sex===0">未知</span>
21
                    <span v-else-if="props.row.sex===1">男</span>
22
                    <span v-else>女</span>
23
                  </el-form-item>
24
                  <el-form-item label="往届会议">
25
                    <span>{{ props.row.previous }}</span>
26
                  </el-form-item>
27
                </el-form>
28
              </template>
29
            </el-table-column>
30
            <el-table-column label="姓名" prop="truename" header-align="center" align="center"></el-table-column>
31
            <el-table-column label="职位" prop="position" header-align="center" align="center"></el-table-column>
32
            <el-table-column label="电话" prop="phone" header-align="center" align="center"></el-table-column>
33
          </el-table>
34
          <el-pagination
35
            @size-change="sizeChangeHandle"
36
            @current-change="currentChangeHandle"
37
            :current-page="pageIndex"
38
            :page-sizes="[10, 20, 50, 100]"
39
            :page-size="pageSize"
40
            :total="totalPage"
41
            layout="total, sizes, prev, pager, next, jumper"
42
          ></el-pagination>
43
        </el-card>
44
      </el-col>
45
    </el-row>
46
  </div>
47
</template>
48
<script>
49
import echarts from "echarts";
50
export default {
51
  data() {
52
    return {
53
      chartLine: null,
54
      name: this.$route.params.name,
55
      tableData: [],
56
      pageIndex: 1,
57
      pageSize: 10,
58
      totalPage: 0,
59
      meetingList: ["2019防腐蚀", "2020防腐蚀"],
60
      personNum: ["1", "2"]
61
    };
62
  },
63
64
  mounted() {
65
    this.initChartLine();
66
    if (this.chartLine) {
67
      this.chartLine.resize();
68
    }
69
  },
70
  created() {
71
    this.getData(this.$route.query.name);
72
    this.echar(this.$route.query.name);
73
  },
74
  updated() {
75
    // window.location.reload();
76
  },
77
  activated() {
78
    // 由于给echart添加了resize事件, 在组件激活时需要重新resize绘画一次, 否则出现空白bug
79
  },
80
  watch: {
81
    $route(to, form) {
82
      if (this.$route.query.name) {
83
        this.getData(this.$route.query.name);
84
        // this.echar(this.$route.query.name);
85
      }
86
    }
87
  },
88
89
  methods: {
90
    // 折线图
91
    initChartLine() {
92
      var option = {
93
        xAxis: {
94
          type: "category",
95
          data: this.meetingList
96
        },
97
        yAxis: {
98
          type: "value"
99
        },
100
        series: [
101
          {
102
            data: this.personNum,
103
            type: "bar",
104
            showBackground: true,
105
            backgroundStyle: {
106
              color: "rgba(220, 220, 220, 0.8)"
107
            }
108
          }
109
        ]
110
      };
111
112
      this.chartLine = echarts.init(document.getElementById("J_chartLineBox"));
113
      this.chartLine.setOption(option);
114
      window.addEventListener("resize", () => {
115
        this.chartLine.resize();
116
      });
117
    },
118
    getData(data) {
119
      this.$http({
120
        url: this.$http.adornUrl("/admin/organization/attendlist"),
121
        methods: "get",
122
        params: this.$http.adornParams({
123
          organization: data,
124
          page: this.pageIndex,
125
          limit: this.pageSize
126
        })
127
      }).then(({ data }) => {
128
        if (data && data.code === 0) {
129
          this.tableData = data.page.list;
130
          this.totalPage = data.page.totalCount;
131
        } else {
132
          this.tableData = [];
133
          this.totalPage = 0;
134
        }
135
      });
136
    },
137
    // 每页数
138
    sizeChangeHandle(val) {
139
      this.pageSize = val;
140
      this.pageIndex = 1;
141
      this.getData();
142
    },
143
    // 当前页
144
    currentChangeHandle(val) {
145
      this.pageIndex = val;
146
      this.getData();
147
    },
148
    echar(data) {
149
      this.$http({
150
        url: this.$http.adornUrl("/admin/organization/prelist"),
151
        methods: "get",
152
        params: this.$http.adornParams({
153
          organization: data
154
        })
155
      }).then(({ data }) => {
156
        if (data && data.code === 0) {
157
          data.list.forEach(element => {
158
            this.meetingList.push(element.nameCn);
159
            this.personNum.push(element.num);
160
          });
161
        }
162
      });
163
    }
164
  }
165
};
166
</script>
167
168
<style lang="scss">
169
.mod-demo-echarts {
170
  > .el-alert {
171
    margin-bottom: 10px;
172
  }
173
  > .el-row {
174
    margin-top: -10px;
175
    margin-bottom: -10px;
176
    .el-col {
177
      padding-top: 10px;
178
      padding-bottom: 10px;
179
    }
180
  }
181
  .chart-box {
182
    min-height: 400px;
183
  }
184
  .el-alert__title {
185
    font-size: 20px;
186
    line-height: 25px;
187
  }
188
  .demo-table-expand {
189
    font-size: 0;
190
  }
191
  .demo-table-expand label {
192
    width: 90px;
193
    color: #99a9bf;
194
  }
195
  .demo-table-expand .el-form-item {
196
    margin-right: 0;
197
    margin-bottom: 0;
198
    width: 50%;
199
  }
200
}
201
</style>

+ 178 - 0
src/views/modules/admin/organization.vue

@ -0,0 +1,178 @@
1
<template>
2
  <div class="mod-config">
3
    <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
4
      <el-form-item>
5
        <el-input v-model="dataForm.key" placeholder="公司名" clearable></el-input>
6
      </el-form-item>
7
      <el-form-item>
8
        <el-button @click="getDataList()">查询</el-button>
9
        <el-button
10
          v-if="isAuth('admin:company:save')"
11
          type="primary"
12
          @click="addOrUpdateHandle()"
13
        >新增</el-button>
14
        <el-button
15
          v-if="isAuth('admin:company:delete')"
16
          type="danger"
17
          @click="deleteHandle()"
18
          :disabled="dataListSelections.length <= 0"
19
        >批量删除</el-button>
20
      </el-form-item>
21
    </el-form>
22
    <el-table
23
      :data="dataList"
24
      border
25
      v-loading="dataListLoading"
26
      @selection-change="selectionChangeHandle"
27
      style="width: 100%;"
28
    >
29
      <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
30
      <!-- <el-table-column prop="id" header-align="center" align="center" label="单位id (单位表)"></el-table-column> -->
31
      <!-- <el-table-column prop="username" header-align="center" align="center" label="账号"></el-table-column>
32
      <el-table-column prop="password" header-align="center" align="center" label="密码"></el-table-column>-->
33
      <el-table-column prop="organization" header-align="center" align="center" label="单位名称"></el-table-column>
34
      <!-- <el-table-column prop="address" header-align="center" align="center" label="单位地址"></el-table-column>
35
      <el-table-column prop="telephone" header-align="center" align="center" label="单位电话"></el-table-column>
36
      <el-table-column prop="contactname" header-align="center" align="center" label="联系人姓名"></el-table-column>
37
      <el-table-column prop="cellphone" header-align="center" align="center" label="联系人电话"></el-table-column> -->
38
      <el-table-column prop="total" header-align="center" align="center" label="总人数"></el-table-column> -->
39
      <!-- <el-table-column
40
        prop="uscCode"
41
        header-align="center"
42
        align="center"
43
        label="统一社会信用代码(Uniform Social Credit Code"
44
      ></el-table-column>-->
45
      <!-- <el-table-column prop="uscPicture" header-align="center" align="center" label="证件扫码件(图片)地址"></el-table-column> -->
46
      <!-- <el-table-column prop="level" header-align="center" align="center" label="账号等级"></el-table-column> -->
47
48
      <!-- <el-table-column prop="createTime" header-align="center" align="center" label="创建时间"></el-table-column> -->
49
      <el-table-column fixed="right" header-align="center" align="center" width="150" label="操作">
50
        <template slot-scope="scope">
51
          <el-button type="text" size="small" @click="pushDetails(scope.row.organization)">详情 </el-button>
52
          <el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
53
          <el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
54
        </template>
55
      </el-table-column>
56
    </el-table>
57
    <el-pagination
58
      @size-change="sizeChangeHandle"
59
      @current-change="currentChangeHandle"
60
      :current-page="pageIndex"
61
      :page-sizes="[10, 20, 50, 100]"
62
      :page-size="pageSize"
63
      :total="totalPage"
64
      layout="total, sizes, prev, pager, next, jumper"
65
    ></el-pagination>
66
    <!-- 弹窗, 新增 / 修改 -->
67
    <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
68
  </div>
69
</template>
70
71
<script>
72
import AddOrUpdate from "./organization-add-or-update";
73
export default {
74
  data() {
75
    return {
76
      dataForm: {
77
        companyname: ""
78
      },
79
      dataList: [],
80
      pageIndex: 1,
81
      pageSize: 10,
82
      totalPage: 0,
83
      dataListLoading: false,
84
      dataListSelections: [],
85
      addOrUpdateVisible: false
86
    };
87
  },
88
  components: {
89
    AddOrUpdate
90
  },
91
  activated() {
92
    this.getDataList();
93
  },
94
  methods: {
95
    // 获取数据列表
96
    getDataList() {
97
      this.dataListLoading = true;
98
      this.$http({
99
        url: this.$http.adornUrl("/admin/organization/list"),
100
        method: "get",
101
        params: this.$http.adornParams({
102
          page: this.pageIndex,
103
          limit: this.pageSize,
104
          companyname: this.dataForm.key
105
        })
106
      }).then(({ data }) => {
107
        if (data && data.code === 0) {
108
          this.dataList = data.page.list;
109
          this.totalPage = data.page.totalCount;
110
        } else {
111
          this.dataList = [];
112
          this.totalPage = 0;
113
        }
114
        this.dataListLoading = false;
115
      });
116
    },
117
    // 每页数
118
    sizeChangeHandle(val) {
119
      this.pageSize = val;
120
      this.pageIndex = 1;
121
      this.getDataList();
122
    },
123
    // 当前页
124
    currentChangeHandle(val) {
125
      this.pageIndex = val;
126
      this.getDataList();
127
    },
128
    // 多选
129
    selectionChangeHandle(val) {
130
      this.dataListSelections = val;
131
    },
132
    // 新增 / 修改
133
    addOrUpdateHandle(id) {
134
      this.addOrUpdateVisible = true;
135
      this.$nextTick(() => {
136
        this.$refs.addOrUpdate.init(id);
137
      });
138
    },
139
    // 删除
140
    deleteHandle(id) {
141
      console.log(id);
142
      var ids = id
143
        ? [id]
144
        : this.dataListSelections.map(item => {
145
            return item.id;
146
          });
147
      this.$confirm(`确定删除?`, "提示", {
148
        confirmButtonText: "确定",
149
        cancelButtonText: "取消",
150
        type: "warning"
151
      }).then(() => {
152
        this.$http({
153
          url: this.$http.adornUrl("/admin/company/delete"),
154
          method: "post",
155
          data: this.$http.adornData(ids, false)
156
        }).then(({ data }) => {
157
          if (data && data.code === 0) {
158
            this.$message({
159
              message: "操作成功",
160
              type: "success",
161
              duration: 1500,
162
              onClose: () => {
163
                this.getDataList();
164
              }
165
            });
166
          } else {
167
            this.$message.error(data.msg);
168
          }
169
        });
170
      });
171
    },
172
    //详情跳转
173
    pushDetails(name) {
174
      this.$router.push({ name: "admin-details", query: { name:name } });
175
    }
176
  }
177
};
178
</script>

+ 114 - 33
src/views/modules/admin/paper-add-or-update.vue

@ -13,15 +13,52 @@
13 13
    >
14 14
      <el-form-item label="投稿人姓名" prop="attendersId">
15 15
        <!-- <el-input v-model="dataForm.attendersId" placeholder="参会人员id"></el-input> -->
16
        <el-select v-model="dataForm.attendersId" filterable placeholder="请选择">
17
          <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
16
        <el-select
17
          v-model="dataForm.attendersId"
18
          allow-create
19
          filterable
20
          placeholder="请选择"
21
        >
22
          <el-option
23
            v-for="item in options"
24
            :key="item.id"
25
            :label="item.truename"
26
            :value="item.id"
27
          ></el-option>
18 28
        </el-select>
19 29
      </el-form-item>
20 30
      <el-form-item label="论文题目" prop="title">
21 31
        <el-input v-model="dataForm.title" placeholder="论文题目"></el-input>
22 32
      </el-form-item>
23
      <el-form-item label="摘要" prop="summary">
24
        <el-input v-model="dataForm.summary" placeholder="摘要" type="textarea"></el-input>
33
      <el-form-item label="审核状态" prop="status">
34
        <!-- <el-input v-model="dataForm.attendersId" placeholder="参会人员id"></el-input> -->
35
        <el-select v-model="dataForm.status" filterable placeholder="请选择">
36
          <el-option
37
            v-for="(item, index) in optionStatus"
38
            :key="index"
39
            :label="item.label"
40
            :value="item.value"
41
          ></el-option>
42
        </el-select>
43
      </el-form-item>
44
      <el-form-item label="论文种类	" prop="type">
45
        <el-input v-model="dataForm.type" placeholder="请输入内容"></el-input>
46
      </el-form-item>
47
      <el-form-item label="金额" prop="money">
48
        <el-input v-model="dataForm.money" placeholder="请输入内容" ></el-input>
49
      </el-form-item>
50
      <el-form-item label="发票号" prop="tax">
51
        <el-input v-model="dataForm.tax" placeholder="请输入内容"></el-input>
52
      </el-form-item>
53
      <el-form-item label="快递单号	" prop="mail">
54
        <el-input v-model="dataForm.mail" placeholder="请输入内容"></el-input>
55
      </el-form-item>
56
      <el-form-item label="备注" prop="remark">
57
        <el-input
58
          v-model="dataForm.remark"
59
          placeholder="备注"
60
          type="textarea"
61
        ></el-input>
25 62
      </el-form-item>
26 63
      <el-form-item label="上传投稿">
27 64
        <el-upload
@ -35,14 +72,19 @@
35 72
          :auto-upload="false"
36 73
          name="upload_file"
37 74
        >
38
          <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
75
          <el-button slot="trigger" size="small" type="primary"
76
            >选取文件</el-button
77
          >
39 78
          <el-button
40
            style="margin-left: 10px;"
79
            style="margin-left: 10px"
41 80
            size="small"
42 81
            type="success"
43 82
            @click="submitUpload"
44
          >上传到服务器</el-button>
45
          <div slot="tip" class="el-upload__tip" style="color:red">只能上传 pdf doc docx 文件,上传大小为4M</div>
83
            >上传到服务器</el-button
84
          >
85
          <div slot="tip" class="el-upload__tip" style="color: red">
86
            只能上传 pdf doc docx 文件,上传大小为4M
87
          </div>
46 88
        </el-upload>
47 89
      </el-form-item>
48 90
    </el-form>
@ -62,19 +104,50 @@ export default {
62 104
        meetingId: "",
63 105
        attendersId: "",
64 106
        title: "",
65
        summary: "",
66
        paperurl: ""
107
        paperurl: "",
108
        status: "",
109
        type: "",
110
        money: 0,
111
        remark: "",
112
        tax: "",
113
        mail: "",
67 114
      },
68 115
      dataRule: {
69 116
        attendersId: [
70
          { required: true, message: "参会人员id不能为空", trigger: "blur" }
117
          { required: true, message: "参会人员id不能为空", trigger: "blur" },
71 118
        ],
72
        summary: [{ required: true, message: "摘要不能为空", trigger: "blur" }]
119
        money:[
120
            { required: false, message: "金额只能是数字", trigger: "change",type:"number",transform: (value) => Number(value)},
121
        ]
73 122
      },
123
      value: "",
74 124
      options: [],
125
      optionStatus: [
126
        {
127
          value: 0,
128
          label: "未提交审核",
129
        },
130
        {
131
          value: 1,
132
          label: "初审中",
133
        },
134
        {
135
          value: 2,
136
          label: "复审中",
137
        },
138
        {
139
          value: 3,
140
          label: "通过",
141
        },
142
        {
143
          value: 4,
144
          label: "未通过",
145
        },
146
      ],
147
75 148
      upload_url: "",
76 149
      successNum: 0,
77
      fileList: []
150
      fileList: [],
78 151
    };
79 152
  },
80 153
  created() {
@ -90,25 +163,29 @@ export default {
90 163
          this.$http({
91 164
            url: this.$http.adornUrl(`/admin/paper/info/${this.dataForm.id}`),
92 165
            method: "get",
93
            params: this.$http.adornParams()
166
            params: this.$http.adornParams(),
94 167
          }).then(({ data }) => {
168
            console.log(data);
95 169
            if (data && data.code === 0) {
96 170
              this.dataForm.meetingId = this.$route.params.id;
97 171
              this.dataForm.attendersId = data.paper.attendersId;
98 172
              this.dataForm.title = data.paper.title;
99
              this.dataForm.summary = data.paper.summary;
100
              this.dataForm.paperurl = data.paper.paperurl;
173
              this.dataForm.remark = data.paper.remark;
174
              this.dataForm.url = data.paper.url;
175
              this.dataForm.status = data.paper.status;
176
              this.dataForm.money = data.paper.money;
177
              this.dataForm.type = data.paper.type;
178
              this.dataForm.tax = data.paper.tax;
179
              this.dataForm.mail = data.paper.mail;
101 180
            }
102 181
          });
103 182
        }
104 183
      });
105
      this.upload_url = this.$http.adornUrl(
106
        `/sys/filemanager/uploadfile?token=${this.$cookie.get("token")}`
107
      );
184
      this.upload_url = this.$http.adornUrl(`/app/filemanager/uploadpaper`);
108 185
    },
109 186
    // 表单提交
110 187
    dataFormSubmit() {
111
      this.$refs["dataForm"].validate(valid => {
188
      this.$refs["dataForm"].validate((valid) => {
112 189
        if (valid) {
113 190
          this.$http({
114 191
            url: this.$http.adornUrl(
@ -120,9 +197,14 @@ export default {
120 197
              meetingId: this.$route.params.id,
121 198
              attendersId: this.dataForm.attendersId,
122 199
              title: this.dataForm.title,
123
              summary: this.dataForm.summary,
124
              paperurl: this.dataForm.paperurl
125
            })
200
              remark: this.dataForm.remark,
201
              url: this.dataForm.url,
202
              status: this.dataForm.status,
203
              money: this.dataForm.money,
204
              tax: this.dataForm.tax,
205
              mail: this.dataForm.mail,
206
              type:this.dataForm.type
207
            }),
126 208
          }).then(({ data }) => {
127 209
            if (data && data.code === 0) {
128 210
              this.$message({
@ -132,7 +214,7 @@ export default {
132 214
                onClose: () => {
133 215
                  this.visible = false;
134 216
                  this.$emit("refreshDataList");
135
                }
217
                },
136 218
              });
137 219
              this.fileList = [];
138 220
            } else {
@ -145,12 +227,11 @@ export default {
145 227
    },
146 228
    getPerson() {
147 229
      this.$http({
148
        url: this.$http.adornUrl("/admin/attenders/selectbyname"),
230
        url: this.$http.adornUrl(
231
          `/admin/attenders/listall/${this.$route.params.id}`
232
        ),
149 233
        methods: "get",
150
        params: {
151
          name: "",
152
          meetingId: this.$route.params.id
153
        }
234
        params: {},
154 235
      }).then(({ data }) => {
155 236
        if (data && data.code === 0) {
156 237
          this.options = data.list;
@ -162,10 +243,10 @@ export default {
162 243
    },
163 244
    successHandle(response) {
164 245
      if (response && response.code === 0) {
165
        this.dataForm.paperurl = response.filename;
246
        this.dataForm.url = response.filename;
166 247
        this.$message({
167 248
          message: "上传成功",
168
          type: "success"
249
          type: "success",
169 250
        });
170 251
      } else {
171 252
        this.$message.error(response.msg);
@ -174,7 +255,7 @@ export default {
174 255
    handleExceed(files, fileList) {
175 256
      //上传限制
176 257
      this.$message.warning(`只能上传 1 个文件`);
177
    }
178
  }
258
    },
259
  },
179 260
};
180 261
</script>

+ 30 - 12
src/views/modules/admin/paper.vue

@ -5,7 +5,7 @@
5 5
        <el-input v-model="dataForm.key" placeholder="投稿人/论文题目" clearable></el-input>
6 6
      </el-form-item>
7 7
      <el-form-item>
8
        <el-button @click="getDataList()">查询</el-button>
8
        <el-button @click="se()">查询</el-button>
9 9
        <el-button v-if="isAuth('admin:paper:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button>
10 10
        <el-button
11 11
          v-if="isAuth('admin:paper:delete')"
@ -14,13 +14,13 @@
14 14
          :disabled="dataListSelections.length <= 0"
15 15
        >批量删除</el-button>
16 16
      </el-form-item>
17
      <el-form-item>
17
      <!-- <el-form-item>
18 18
        <el-button
19 19
          v-if="isAuth('admin:paperrequire:save')"
20 20
          type="primary"
21 21
          @click="setPagerRequireHandle()"
22 22
        >征文要求设置</el-button>
23
      </el-form-item>
23
      </el-form-item>-->
24 24
    </el-form>
25 25
    <el-table
26 26
      :data="dataList"
@ -35,8 +35,19 @@
35 35
      <!-- <el-table-column prop="summary" header-align="center" align="center" label="摘要"></el-table-column> -->
36 36
      <!-- <el-table-column prop="paperurl" header-align="center" align="center" label="论文存放地址"></el-table-column> -->
37 37
      <el-table-column prop="phone" header-align="center" align="center" label="联系电话"></el-table-column>
38
      <el-table-column prop="email" header-align="center" align="center" label="联系邮箱"></el-table-column>
39
      <el-table-column prop="create_time" header-align="center" align="center" label="投稿时间"></el-table-column>
38
      <el-table-column prop="createTime" header-align="center" align="center" label="投稿时间"></el-table-column>
39
      <el-table-column prop="type	" header-align="center" align="center" label="论文种类"></el-table-column>
40
      <el-table-column prop="status" header-align="center" align="center" label="论文审核状态">
41
        <template slot-scope="scope">
42
         <el-tag type="warning" v-if="scope.row.status===0">未提交审核</el-tag>
43
         <el-tag type="warning" v-else-if="scope.row.status===1">初审中</el-tag>
44
         <el-tag type="warning" v-else-if="scope.row.status===2">复审中</el-tag>
45
         <el-tag type="success" v-else-if="scope.row.status===3">通过</el-tag>
46
         <el-tag type="danger" v-else="scope.row.status===4">未通过</el-tag>
47
      </template>
48
49
50
      </el-table-column>
40 51
      <el-table-column header-align="center" align="center" label="下载">
41 52
        <template slot-scope="scope">
42 53
          <el-button type="text" size="small" @click="exportList(scope.row)">下载</el-button>
@ -98,9 +109,13 @@ export default {
98 109
  activated() {
99 110
    this.getDataList();
100 111
  },
101
  created() {
102
  },
112
  created() {},
103 113
  methods: {
114
    // 查询
115
    se() {
116
      this.pageIndex = 1;
117
      this.getDataList();
118
    },
104 119
    // 获取数据列表
105 120
    getDataList() {
106 121
      this.dataListLoading = true;
@ -181,11 +196,14 @@ export default {
181 196
182 197
    // 导出数据表
183 198
    exportList(res) {
184
      if (res && !res.paperurl == "") {
185
        const a = document.createElement("a");
186
        a.setAttribute("download", `${res.paperurl}`);
187
        a.setAttribute("href", `${res.paperurl}`);
188
        a.click();
199
      console.log(res)
200
201
      if (res && !res.url == "") {
202
        window.open(window.SITE_CONFIG['img'] + res['url']);
203
        // const a = document.createElement("a");
204
        // a.setAttribute("download", `${res.paperurl}`);
205
        // a.setAttribute("href", `${res.paperurl}`);
206
        // a.click();
189 207
      } else {
190 208
        this.$message.error("未上传投稿文件");
191 209
      }

+ 7 - 10
src/views/modules/admin/paperrequire-add-or-update.vue

@ -16,15 +16,8 @@
16 16
          value-format="yyyy-MM-dd HH:mm:ss"
17 17
        ></el-date-picker>
18 18
      </el-form-item>
19
      <el-form-item label="要求" prop="content">
20
        <!-- <el-input
21
          type="textarea"
22
          :rows="2"
23
          placeholder="请输入内容"
24
          v-model="dataForm.content"
25
          :autosize="{ minRows: 10, maxRows: 30}"
26
        ></el-input>-->
27
        <u-e @ue="getCotent" ref="ue">{{this.dataForm.content}}</u-e>
19
      <el-form-item label="要求" prop="content" style="height:450px">
20
        <u-e @changText="getCotent" ref="ue" :txt="txt"></u-e>
28 21
      </el-form-item>
29 22
    </el-form>
30 23
    <span slot="footer" class="dialog-footer">
@ -51,6 +44,7 @@ export default {
51 44
        ],
52 45
        content: [{ required: true, message: "要求不能为空", trigger: "blur" }]
53 46
      },
47
      txt: "",
54 48
      loading: true
55 49
    };
56 50
  },
@ -77,11 +71,14 @@ export default {
77 71
              this.dataForm.meetingId = data.paperRequire.meetingId;
78 72
              this.dataForm.deadline = data.paperRequire.deadline;
79 73
              this.dataForm.content = data.paperRequire.content;
74
              this.txt = this.dataForm.content;
75
              this.$refs.ue.getTxt(this.txt);
80 76
            } else {
81 77
              this.dataForm.id = 0;
82 78
              this.dataForm.meetingId = id;
83 79
              this.dataForm.deadline = "";
84 80
              this.dataForm.content = "";
81
              this.txt = "";
85 82
            }
86 83
          });
87 84
        }
@ -89,7 +86,7 @@ export default {
89 86
    },
90 87
    // 表单提交
91 88
    dataFormSubmit() {
92
      this.$refs.ue.getContent();
89
      this.$refs.ue.getText();
93 90
      this.$refs["dataForm"].validate(valid => {
94 91
        if (valid) {
95 92
          this.$http({

+ 20 - 12
src/views/modules/admin/payment.vue

@ -18,6 +18,12 @@
18 18
          :disabled="dataListSelections.length <= 0"
19 19
        >批量删除</el-button>
20 20
      </el-form-item>
21
      <el-form-item style="float:right">
22
        <el-tag type="warning">总人数 : {{this.gather.total}}</el-tag>
23
        <el-tag type="warning">总金额 : {{this.gather.totalMoney}}元</el-tag>
24
        <el-tag type="warning">现场总金额 : {{this.gather.totalMoney2}}元</el-tag>
25
        <el-tag type="warning">线上总金额 : {{this.gather.totalMoney1}}元</el-tag>
26
      </el-form-item>
21 27
    </el-form>
22 28
    <el-table
23 29
      :data="dataList"
@ -29,6 +35,8 @@
29 35
      <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
30 36
      <el-table-column prop="orderId" header-align="center" align="center" label="订单号"></el-table-column>
31 37
      <el-table-column prop="truename" header-align="center" align="center" label="缴费人"></el-table-column>
38
      <el-table-column prop="phone" header-align="center" align="center" label="联系电话"></el-table-column>
39
32 40
      <el-table-column prop="organization" header-align="center" align="center" label="所在机构"></el-table-column>
33 41
      <!-- <el-table-column prop="feeId" header-align="center" align="center" label="费用类型id"></el-table-column> -->
34 42
      <el-table-column prop="payType" header-align="center" align="center" label="缴费方式">
@ -44,9 +52,10 @@
44 52
          <el-tag v-else="scope.row.isPay===1">是</el-tag>
45 53
        </template>
46 54
      </el-table-column>
55
      <el-table-column prop="phone" header-align="center" align="center" label="金额(单位元)"></el-table-column>
56
47 57
      <!-- <el-table-column prop="taxTitle" header-align="center" align="center" label="发票抬头"></el-table-column>
48 58
      <el-table-column prop="taxNumber" header-align="center" align="center" label="纳税人税号"></el-table-column>-->
49
      <el-table-column prop="phone" header-align="center" align="center" label="联系电话"></el-table-column>
50 59
      <!-- <el-table-column prop="bankAddrAccount" header-align="center" align="center" label="开户行及账号"></el-table-column> -->
51 60
      <!-- <el-table-column prop="taxAddress" header-align="center" align="center" label="邮寄地址"></el-table-column> -->
52 61
      <!-- <el-table-column prop="isCheck" header-align="center" align="center" label="确认是否已缴费"></el-table-column>
@ -60,6 +69,7 @@
60 69
        </template>
61 70
      </el-table-column>
62 71
    </el-table>
72
63 73
    <el-pagination
64 74
      @size-change="sizeChangeHandle"
65 75
      @current-change="currentChangeHandle"
@ -88,7 +98,8 @@ export default {
88 98
      totalPage: 0,
89 99
      dataListLoading: false,
90 100
      dataListSelections: [],
91
      addOrUpdateVisible: false
101
      addOrUpdateVisible: false,
102
      gather: {}
92 103
    };
93 104
  },
94 105
  components: {
@ -112,12 +123,13 @@ export default {
112 123
        })
113 124
      }).then(({ data }) => {
114 125
        if (data && data.code === 0) {
115
          
116 126
          this.dataList = data.page.list;
117 127
          this.totalPage = data.page.totalCount;
128
          this.gather = data.gather;
118 129
        } else {
119 130
          this.dataList = [];
120 131
          this.totalPage = 0;
132
          this.gather = {};
121 133
        }
122 134
        this.dataListLoading = false;
123 135
      });
@ -151,15 +163,11 @@ export default {
151 163
        : this.dataListSelections.map(item => {
152 164
            return item.id;
153 165
          });
154
      this.$confirm(
155
        `确定删除?`,
156
        "提示",
157
        {
158
          confirmButtonText: "确定",
159
          cancelButtonText: "取消",
160
          type: "warning"
161
        }
162
      ).then(() => {
166
      this.$confirm(`确定删除?`, "提示", {
167
        confirmButtonText: "确定",
168
        cancelButtonText: "取消",
169
        type: "warning"
170
      }).then(() => {
163 171
        this.$http({
164 172
          url: this.$http.adornUrl("/admin/payment/delete"),
165 173
          method: "post",

+ 226 - 0
src/views/modules/admin/report-add-or-update.vue

@ -0,0 +1,226 @@
1
<template>
2
  <el-dialog
3
    :title="!showId ? '新增' : '修改'"
4
    :close-on-click-modal="false"
5
    :visible.sync="visible"
6
  >
7
    <el-form
8
      :model="dataForm"
9
      :rules="dataRule"
10
      ref="dataForm"
11
      @keyup.enter.native="dataFormSubmit()"
12
      label-width="80px"
13
    >
14
      <el-form-item label="报告题目" prop="title">
15
        <el-input v-model="dataForm.title" placeholder="报告题目"></el-input>
16
      </el-form-item>
17
18
      <el-form-item label="姓名" prop="truename">
19
        <!-- <el-input v-model="dataForm.truename" placeholder="名字"></el-input> -->
20
        <el-select
21
          v-model="dataForm.aid"
22
          filterable
23
          placeholder="请选择"
24
          :disabled="!!showId"
25
          @change="personInt(dataForm.aid)"
26
        >
27
          <el-option
28
            v-for="item in personList"
29
            :key="item.id"
30
            :label="item.truename"
31
            :value="item.id"
32
          >
33
          </el-option>
34
        </el-select>
35
      </el-form-item>
36
      <el-form-item label="电话" prop="phone">
37
        <el-input
38
          v-model="dataForm.phone"
39
          placeholder="电话"
40
          :disabled="true"
41
        ></el-input>
42
      </el-form-item>
43
      <el-form-item label="单位名称" prop="organization">
44
        <el-input
45
          v-model="dataForm.organization"
46
          placeholder="单位名称"
47
          :disabled="true"
48
        ></el-input>
49
      </el-form-item>
50
      <el-form-item label="职位" prop="position">
51
        <el-input
52
          v-model="dataForm.position"
53
          placeholder="职位"
54
          :disabled="true"
55
        ></el-input>
56
      </el-form-item>
57
      <el-form-item label="分会场" prop="startTime">
58
        <el-select v-model="dataForm.branchId" filterable placeholder="请选择">
59
          <el-option
60
            v-for="(item, index) in branchList"
61
            :key="item.id"
62
            :label="item.name"
63
            :value="item.id"
64
          ></el-option>
65
        </el-select>
66
      </el-form-item>
67
    </el-form>
68
    <span slot="footer" class="dialog-footer">
69
      <el-button @click="visible = false">取消</el-button>
70
      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
71
    </span>
72
  </el-dialog>
73
</template>
74
75
<script>
76
export default {
77
  data() {
78
    return {
79
      visible: false,
80
      dataForm: {
81
        aid: 0,
82
        meetingId: "",
83
        title: "",
84
        branchId: "",
85
        id: "",
86
        sort: "",
87
        truename: "",
88
        phone: "",
89
        organization: "",
90
        position: "",
91
        branchName: "",
92
      },
93
      dataRule: {
94
        title: [
95
          { required: true, message: "报告题目不能为空", trigger: "blur" },
96
        ],
97
      },
98
      branchList: [],
99
      personList: [],
100
      showId: 0,
101
    };
102
  },
103
  created() {
104
    this.getListBranch();
105
    this.getPerson();
106
  },
107
  methods: {
108
    personInt(id) {
109
      this.$http({
110
        url: this.$http.adornUrl(`/admin/attenders/info/${id}`),
111
        method: "get",
112
        params: this.$http.adornParams(),
113
      }).then(({ data }) => {
114
        console.log(data.attenders);
115
        if (data && data.code === 0) {
116
          this.dataForm.meetingId = data.attenders.meetingId;
117
          this.dataForm.title = data.attenders.title;
118
          this.dataForm.truename = data.attenders.truename;
119
          this.dataForm.phone = data.attenders.phone;
120
          this.dataForm.organization = data.attenders.organization;
121
          this.dataForm.position = data.attenders.position;
122
        }
123
      });
124
    },
125
    init(id) {
126
      this.showId = id || 0; // 修改隐藏
127
      this.dataForm.aid = id || 0; // 参会id
128
      this.visible = true;
129
      this.$nextTick(() => {
130
        this.$refs["dataForm"].resetFields();
131
        if (this.dataForm.aid) {
132
          this.$http({
133
            url: this.$http.adornUrl(`/admin/report/info/${this.dataForm.aid}`),
134
            method: "get",
135
            params: this.$http.adornParams(),
136
          }).then(({ data }) => {
137
            console.log(data.report);
138
            if (data && data.code === 0) {
139
              this.dataForm.meetingId = data.report.meetingId;
140
              this.dataForm.title = data.report.title;
141
              this.dataForm.branchId = data.report.branchId || null;
142
              this.dataForm.id = data.report.id;
143
              this.dataForm.aid = data.report.aid;
144
              this.dataForm.branchName = data.report.branchName;
145
              this.dataForm.sort = data.report.sort;
146
              this.dataForm.truename = data.report.truename;
147
              this.dataForm.phone = data.report.phone;
148
              this.dataForm.organization = data.report.organization;
149
              this.dataForm.position = data.report.position;
150
            }
151
          });
152
        } else {
153
          this.dataForm.title = "";
154
          this.dataForm.aid = null;
155
        }
156
      });
157
    },
158
    // 表单提交
159
    dataFormSubmit() {
160
      this.$refs["dataForm"].validate((valid) => {
161
        if (valid) {
162
          this.$http({
163
            url: this.$http.adornUrl(
164
              `/admin/report/${!this.dataForm.aid ? "save" : "update"}`
165
            ),
166
            method: "post",
167
            data: this.$http.adornData({
168
              aid: this.dataForm.aid || undefined,
169
              meetingId: this.dataForm.meetingId,
170
              title: this.dataForm.title,
171
              branchId: this.dataForm.branchId,
172
              id: this.dataForm.id,
173
              sort: this.dataForm.sort,
174
              truename: this.dataForm.truename,
175
              phone: this.dataForm.phone,
176
              organization: this.dataForm.organization,
177
              position: this.dataForm.position,
178
            }),
179
          }).then(({ data }) => {
180
            if (data && data.code === 0) {
181
              this.$message({
182
                message: "操作成功",
183
                type: "success",
184
                duration: 1500,
185
                onClose: () => {
186
                  this.visible = false;
187
                  this.$emit("refreshDataList");
188
                },
189
              });
190
            } else {
191
              this.$message.error(data.msg);
192
            }
193
          });
194
        }
195
      });
196
    },
197
    // 获取分会场
198
    getListBranch() {
199
      this.$http({
200
        url: this.$http.adornUrl(
201
          `/admin/meeting/listbranch/${this.$route.params.id}`
202
        ),
203
        method: "get",
204
        params: this.$http.adornParams(),
205
      }).then(({ data }) => {
206
        if (data && data.code === 0) {
207
          this.branchList = data.list;
208
        }
209
      });
210
    },
211
    getPerson() {
212
      this.$http({
213
        url: this.$http.adornUrl(
214
          `/admin/attenders/listall/${this.$route.params.id}`
215
        ),
216
        methods: "get",
217
        params: {},
218
      }).then(({ data }) => {
219
        if (data && data.code === 0) {
220
          this.personList = data.list;
221
        }
222
      });
223
    },
224
  },
225
};
226
</script>

+ 288 - 0
src/views/modules/admin/report.vue

@ -0,0 +1,288 @@
1
<template>
2
  <div class="mod-config">
3
    <el-form
4
      :inline="true"
5
      :model="dataForm"
6
      @keyup.enter.native="getDataList()"
7
    >
8
      <el-form-item>
9
        <el-input
10
          v-model="dataForm.key"
11
          placeholder="报告名称/姓名/单位"
12
          clearable
13
        ></el-input>
14
      </el-form-item>
15
16
      <el-form-item>
17
        <el-button @click="getDataList()">查询</el-button>
18
        <el-button
19
          v-if="isAuth('admin:report:save')"
20
          type="primary"
21
          @click="addOrUpdateHandle()"
22
          >新增</el-button
23
        >
24
      </el-form-item>
25
      <el-form-item>
26
        <el-select
27
          v-model="dataForm.branchKey"
28
          placeholder="分会场过滤"
29
          @change="getDataList"
30
        >
31
          <el-option
32
            v-for="(item, index) in options"
33
            :key="item.id"
34
            :label="item.name"
35
            :value="item.id"
36
          >
37
          </el-option>
38
        </el-select>
39
      </el-form-item>
40
    </el-form>
41
    <el-table
42
      :data="dataList"
43
      border
44
      v-loading="dataListLoading"
45
      @selection-change="selectionChangeHandle"
46
      style="width: 100%"
47
    >
48
      <el-table-column
49
        type="selection"
50
        header-align="center"
51
        align="center"
52
        width="50"
53
      >
54
      </el-table-column>
55
56
      <el-table-column
57
        prop="title"
58
        header-align="center"
59
        align="center"
60
        label="报告题目"
61
      >
62
      </el-table-column>
63
64
      <el-table-column
65
        prop="truename"
66
        header-align="center"
67
        align="center"
68
        label="名字"
69
      >
70
      </el-table-column>
71
      <el-table-column
72
        prop="phone"
73
        header-align="center"
74
        align="center"
75
        label="电话"
76
      >
77
      </el-table-column>
78
      <el-table-column
79
        prop="organization"
80
        header-align="center"
81
        align="center"
82
        label="单位名称"
83
      >
84
      </el-table-column>
85
      <el-table-column
86
        prop="position"
87
        header-align="center"
88
        align="center"
89
        label="职位"
90
      >
91
      </el-table-column>
92
      <el-table-column
93
        prop="branchName"
94
        header-align="center"
95
        align="center"
96
        label="分会场"
97
      >
98
      </el-table-column>
99
      <el-table-column
100
        fixed="right"
101
        header-align="center"
102
        align="center"
103
        width="150"
104
        label="操作"
105
      >
106
        <template slot-scope="scope">
107
          <el-button
108
            type="text"
109
            size="small"
110
            @click="addOrUpdateHandle(scope.row.aid)"
111
            >修改</el-button
112
          >
113
          <el-button
114
            type="text"
115
            size="small"
116
            @click="deleteHandle(scope.row.aid)"
117
            >删除</el-button
118
          >
119
        </template>
120
      </el-table-column>
121
    </el-table>
122
    <el-pagination
123
      @size-change="sizeChangeHandle"
124
      @current-change="currentChangeHandle"
125
      :current-page="pageIndex"
126
      :page-sizes="[10, 20, 50, 100]"
127
      :page-size="pageSize"
128
      :total="totalPage"
129
      layout="total, sizes, prev, pager, next, jumper"
130
    >
131
    </el-pagination>
132
    <!-- 弹窗, 新增 / 修改 -->
133
    <add-or-update
134
      v-if="addOrUpdateVisible"
135
      ref="addOrUpdate"
136
      @refreshDataList="getDataList"
137
    ></add-or-update>
138
  </div>
139
</template>
140
141
<script>
142
import AddOrUpdate from "./report-add-or-update";
143
export default {
144
  data() {
145
    return {
146
      dataForm: {
147
        key: "",
148
        branchKey: "",
149
      },
150
      dataList: [],
151
      pageIndex: 1,
152
      pageSize: 20,
153
      totalPage: 0,
154
      dataListLoading: false,
155
      dataListSelections: [],
156
      addOrUpdateVisible: false,
157
      options: [
158
        {
159
          value: "选项1",
160
          label: "黄金糕",
161
        },
162
        {
163
          value: "选项2",
164
          label: "双皮奶",
165
        },
166
        {
167
          value: "选项3",
168
          label: "蚵仔煎",
169
        },
170
        {
171
          value: "选项4",
172
          label: "龙须面",
173
        },
174
        {
175
          value: "选项5",
176
          label: "北京烤鸭",
177
        },
178
      ],
179
    };
180
  },
181
  components: {
182
    AddOrUpdate,
183
  },
184
  activated() {
185
    this.getDataList();
186
    this.getBranch();
187
  },
188
  methods: {
189
    // 获取数据列表
190
    getDataList() {
191
      this.dataListLoading = true;
192
      this.$http({
193
        url: this.$http.adornUrl("/admin/report/list"),
194
        method: "get",
195
        params: this.$http.adornParams({
196
          meetingId: this.$route.params.id,
197
          page: this.pageIndex,
198
          limit: this.pageSize,
199
          key: this.dataForm.key,
200
          bid: this.dataForm.branchKey || null,
201
        }),
202
      }).then(({ data }) => {
203
        if (data && data.code === 0) {
204
          this.dataList = data.page.list;
205
          this.totalPage = data.page.totalCount;
206
        } else {
207
          this.dataList = [];
208
          this.totalPage = 0;
209
        }
210
        this.dataListLoading = false;
211
      });
212
    },
213
    // 获取分会场list
214
    getBranch() {
215
      this.$http({
216
        url: this.$http.adornUrl(
217
          `/admin/meeting/listbranch/${this.$route.params.id}`
218
        ),
219
        method: "get",
220
        params: this.$http.adornParams(),
221
      }).then(({ data }) => {
222
        if (data && data.code === 0) {
223
          this.options = data.list;
224
        }
225
      });
226
    },
227
228
    // 每页数
229
    sizeChangeHandle(val) {
230
      this.pageSize = val;
231
      this.pageIndex = 1;
232
      this.getDataList();
233
    },
234
    // 当前页
235
    currentChangeHandle(val) {
236
      this.pageIndex = val;
237
      this.getDataList();
238
    },
239
    // 多选
240
    selectionChangeHandle(val) {
241
      this.dataListSelections = val;
242
    },
243
    // 新增 / 修改
244
    addOrUpdateHandle(id ) {
245
      this.addOrUpdateVisible = true;
246
      this.$nextTick(() => {
247
        this.$refs.addOrUpdate.init(id);
248
      });
249
    },
250
    // 删除
251
    deleteHandle(id) {
252
      var ids = id
253
        ? [id]
254
        : this.dataListSelections.map((item) => {
255
            return item.aid;
256
          });
257
      this.$confirm(
258
        `确定对[id=${ids.join(",")}]进行[${id ? "删除" : "批量删除"}]操作?`,
259
        "提示",
260
        {
261
          confirmButtonText: "确定",
262
          cancelButtonText: "取消",
263
          type: "warning",
264
        }
265
      ).then(() => {
266
        this.$http({
267
          url: this.$http.adornUrl(`/admin/report/delete/${id}`),
268
          method: "post",
269
          data: this.$http.adornData(),
270
        }).then(({ data }) => {
271
          if (data && data.code === 0) {
272
            this.$message({
273
              message: "操作成功",
274
              type: "success",
275
              duration: 1500,
276
              onClose: () => {
277
                this.getDataList();
278
              },
279
            });
280
          } else {
281
            this.$message.error(data.msg);
282
          }
283
        });
284
      });
285
    },
286
  },
287
};
288
</script>

+ 168 - 0
src/views/modules/admin/sign-add-or-update.vue

@ -0,0 +1,168 @@
1
<template>
2
  <el-dialog
3
    :title="!dataForm.id ? '新增' : '修改'"
4
    :close-on-click-modal="false"
5
    :visible.sync="visible"
6
  >
7
    <el-form
8
      :model="dataForm"
9
      :rules="dataRule"
10
      ref="dataForm"
11
      @keyup.enter.native="dataFormSubmit()"
12
      label-width="100px"
13
    >
14
      <el-form-item label="姓名" prop="truename">
15
        <el-input v-model="dataForm.truename" placeholder="姓名"></el-input>
16
      </el-form-item>
17
      <el-form-item label="电话" prop="phone">
18
        <el-input v-model="dataForm.phone" placeholder="电话"></el-input>
19
      </el-form-item>
20
      <!-- <el-form-item label="职位" prop="position">
21
        <el-input v-model="dataForm.position" placeholder="职位"></el-input>
22
      </el-form-item> -->
23
      <el-form-item label="所属机构" prop="organization">
24
        <el-input
25
          v-model="dataForm.organization"
26
          placeholder="所属机构"
27
        ></el-input>
28
      </el-form-item>
29
30
      <!-- <el-form-item label="费用类型" prop="feeType">
31
        <el-radio v-model="dataForm.feeType" :label="1" @click.native="dataForm.money=2600">普通2600</el-radio>
32
        <el-radio v-model="dataForm.feeType" :label="2" @click.native="dataForm.money=1600">学生1600</el-radio>
33
      </el-form-item> -->
34
35
      <el-form-item label="备注" prop="remark">
36
        <el-input
37
          type="textarea"
38
          :rows="2"
39
          :autosize="{ minRows: 15, maxRows: 15 }"
40
          placeholder="请输入内容"
41
          v-model="dataForm.remark"
42
        ></el-input>
43
      </el-form-item>
44
    </el-form>
45
    <span slot="footer" class="dialog-footer">
46
      <el-button @click="visible = false">取消</el-button>
47
      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
48
    </span>
49
  </el-dialog>
50
</template>
51
52
<script>
53
export default {
54
  data() {
55
    return {
56
      visible: false,
57
      dataForm: {
58
        meetingId: this.$route.params.id,
59
        truename: "",
60
        organization: "",
61
        phone: "",
62
        money: 0,
63
        position: "",
64
        feeType: "",
65
        remark: "",
66
        feeType: 1,
67
        aid: "",
68
        id: "",
69
      },
70
      dataRule: {
71
        truename: [
72
          { required: true, message: "姓名不能为空", trigger: "blur" },
73
        ],
74
        phone: [{ required: true, message: "电话不能为空", trigger: "blur" }],
75
      },
76
      employeeList: [],
77
    };
78
  },
79
  created() {
80
    // this.getEmployee();
81
  },
82
  methods: {
83
    init(id) {
84
      this.dataForm.aid = id || 0;
85
      this.dataForm.id = 0;
86
      this.visible = true;
87
      this.$nextTick(() => {
88
        this.$refs["dataForm"].resetFields();
89
        if (this.dataForm.aid) {
90
          this.$http({
91
            url: this.$http.adornUrl(`/admin/sign/infobyaid/${id}`),
92
            method: "get",
93
            params: this.$http.adornParams(),
94
          }).then(({ data }) => {
95
            if (data && data.code === 0) {
96
              this.dataForm.meetingId = data.signinfo.meetingId;
97
              this.dataForm.aid = data.signinfo.aid;
98
              this.dataForm.id = data.signinfo.id;
99
              this.dataForm.truename = data.signinfo.truename;
100
              this.dataForm.organization = data.signinfo.organization;
101
              this.dataForm.position = data.signinfo.position;
102
              this.dataForm.phone = data.signinfo.phone;
103
              this.dataForm.isPay = data.signinfo.isPay;
104
              this.dataForm.remark = data.signinfo.remark;
105
            }
106
          });
107
        }
108
      });
109
    },
110
    // 表单提交
111
    dataFormSubmit() {
112
      this.$refs["dataForm"].validate((valid) => {
113
        if (valid) {
114
          this.$http({
115
            url: this.$http.adornUrl(
116
              `/admin/sign/${!this.dataForm.aid ? "save" : "update"}`
117
            ),
118
            method: "post",
119
            data: this.$http.adornData({
120
              id: this.dataForm.id,
121
              aid: this.dataForm.aid,
122
              meetingId: this.dataForm.meetingId,
123
              truename: this.dataForm.truename,
124
              phone: this.dataForm.phone,
125
              sex: this.dataForm.sex,
126
              organization: this.dataForm.organization,
127
              position: this.dataForm.position,
128
              feeType: this.dataForm.feeType,
129
              remark: this.dataForm.remark,
130
            }),
131
          }).then(({ data }) => {
132
            if (data && data.code === 0) {
133
              this.$message({
134
                message: "操作成功",
135
                type: "success",
136
                duration: 1500,
137
                onClose: () => {
138
                  this.visible = false;
139
                  this.$emit("refreshDataList");
140
                },
141
              });
142
            } else {
143
              this.$message.error(data.msg);
144
            }
145
          });
146
        }
147
      });
148
    },
149
150
    //获取负责人
151
    getEmployee() {
152
      this.loading = true;
153
      this.$http({
154
        url: this.$http.adornUrl(`/admin/employee/findAllByTrueName`),
155
        method: "get",
156
        params: this.$http.adornParams({
157
          truename: "",
158
        }),
159
      }).then(({ data }) => {
160
        if (data) {
161
          this.loading = false;
162
          this.employeeList = data;
163
        }
164
      });
165
    },
166
  },
167
};
168
</script>

+ 329 - 43
src/views/modules/admin/sign.vue

@ -1,53 +1,201 @@
1 1
<template>
2 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>
3
    <el-form
4
      :inline="true"
5
      :model="dataForm"
6
      @keyup.enter.native="getDataList()"
7
    >
7 8
      <el-form-item>
8
        <el-input v-model="dataForm.key" placeholder="请输入参数人员/负责人" clearable></el-input>
9
        <el-input
10
          v-model="dataForm.key"
11
          placeholder="姓名/负责人"
12
          clearable
13
        ></el-input>
9 14
      </el-form-item>
10 15
      <el-form-item>
11
        <el-button @click="getDataList()">查询</el-button>
16
        <el-button @click="se()">查询</el-button>
17
        <el-button
18
          v-if="isAuth('admin:sign:save')"
19
          type="primary"
20
          @click="addOrUpdateHandle()"
21
          >新增</el-button
22
        >
23
        <el-button type="success" @click="exportList">导出</el-button>
24
        <el-button
25
          v-if="isAuth('admin:sign:delete')"
26
          type="danger"
27
          @click="deleteHandle()"
28
          :disabled="dataListSelections.length <= 0"
29
          >批量删除</el-button
30
        >
12 31
      </el-form-item>
32
      <!-- <el-form-item style="float: right">
33
        <div>
34
          普通总人数:
35
          <span style="color: #f56c6c">人</span>
36
          学生总人数:
37
          <span style="color: #f56c6c">人</span>
38
        </div>
39
      </el-form-item> -->
13 40
    </el-form>
14 41
    <el-table
15 42
      :data="dataList"
16 43
      border
17 44
      v-loading="dataListLoading"
18 45
      @selection-change="selectionChangeHandle"
19
      style="width: 100%;"
46
      style="width: 100%"
20 47
    >
21
      <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
22
      <el-table-column prop="id" header-align="center" align="center" label="id"></el-table-column>
23
      <el-table-column prop="truename" header-align="center" align="center" label="姓名"></el-table-column>
24
      <el-table-column prop="organization" header-align="center" align="center" label="所属机构"></el-table-column>
25
      <el-table-column prop="position" header-align="center" align="center" label="职位"></el-table-column>
26
      <el-table-column prop="phone" header-align="center" align="center" label="联系电话"></el-table-column>
27
      <el-table-column prop="typeAttenders" header-align="center" align="center" label="用户参会类型"></el-table-column>
28
      <el-table-column prop="isPay" header-align="center" align="center" label="是否已缴费">
48
      <el-table-column
49
        type="selection"
50
        header-align="center"
51
        align="center"
52
        width="50"
53
      ></el-table-column>
54
      <el-table-column
55
        prop="truename"
56
        header-align="center"
57
        align="center"
58
        label="姓名"
59
      ></el-table-column>
60
      <el-table-column
61
        prop="organization"
62
        header-align="center"
63
        align="center"
64
        label="所属机构"
65
      ></el-table-column>
66
      <el-table-column
67
        prop="phone"
68
        header-align="center"
69
        align="center"
70
        label="电话"
71
      ></el-table-column>
72
73
      <el-table-column
74
        prop="feeType"
75
        header-align="center"
76
        align="center"
77
        label="费用类型"
78
      >
29 79
        <template slot-scope="scope">
30
          <el-tag v-if="scope.row.isPay === 1">是</el-tag>
31
          <el-tag v-else type="danger">否</el-tag>
80
          <div v-if="scope.row.feeType === 1">普通</div>
81
          <div v-else>学生</div>
32 82
        </template>
33 83
      </el-table-column>
34
      <el-table-column prop="status" header-align="center" align="center" label="签到状态">
84
85
      <el-table-column
86
        prop="badge"
87
        header-align="center"
88
        align="center"
89
        label="是否打印"
90
      >
35 91
        <template slot-scope="scope">
36
          <el-tag v-if="scope.row.status === 1">是</el-tag>
92
          <el-tag v-if="scope.row.badge">是</el-tag>
37 93
          <el-tag v-else type="danger">否</el-tag>
38 94
        </template>
39 95
      </el-table-column>
40
      <el-table-column prop="badge" header-align="center" align="center" label="胸卡">
96
97
      <!-- <el-table-column prop="printNum" header-align="center" align="center" label="胸卡打印次数"></el-table-column> -->
98
      <el-table-column
99
        prop="status"
100
        header-align="center"
101
        align="center"
102
        label="是否签到"
103
      >
41 104
        <template slot-scope="scope">
42
          <el-tag v-if="scope.row.badge === 1">是</el-tag>
105
          <el-tag v-if="scope.row.status">是</el-tag>
43 106
          <el-tag v-else type="danger">否</el-tag>
44 107
        </template>
45 108
      </el-table-column>
46
      <el-table-column prop="servername" header-align="center" align="center" label="负责人"></el-table-column>
47
      <el-table-column prop="lastTime" header-align="center" align="center" label="最后签到时间"></el-table-column>
48
      <el-table-column fixed="right" header-align="center" align="center" width="100" label="操作">
109
      <el-table-column
110
        prop="isPay"
111
        header-align="center"
112
        align="center"
113
        label="是否缴费"
114
      >
115
        <template slot-scope="scope">
116
          <el-button
117
            v-if="scope.row.isPay === 0"
118
            size="medium"
119
            hit="true"
120
            @click="changeStatus(1, scope.row.aid)"
121
            >否</el-button
122
          >
123
          <el-button
124
            v-else-if="scope.row.isPay === 1"
125
            size="medium"
126
            hit="true"
127
            type="success"
128
            @click="changeStatus(0, scope.row.aid)"
129
            >是</el-button
130
          >
131
        </template>
132
      </el-table-column>
133
134
      <!-- <el-table-column
135
        prop="remark"
136
        header-align="center"
137
        align="center"
138
        label="金额"
139
        width="200px"
140
      >
141
        <template slot-scope="scope">
142
          <el-input
143
            type="textarea"
144
            @blur="getNot(scope.row.member_id, scope.row.money)"
145
            resize="none"
146
            v-model="scope.row.money"
147
          ></el-input>
148
        </template>
149
      </el-table-column> -->
150
151
      <!-- <el-table-column
152
        prop="receiptNumber"
153
        header-align="center"
154
        align="center"
155
        label="收据号"
156
        width="200px"
157
      >
158
        <template slot-scope="scope">
159
          <el-input
160
            type="textarea"
161
            @blur="setNot(scope.row.member_id, scope.row.receiptNumber)"
162
            resize="none"
163
            v-model="scope.row.receiptNumber"
164
          ></el-input>
165
        </template>
166
      </el-table-column> -->
167
168
      <el-table-column
169
        fixed="right"
170
        header-align="center"
171
        align="center"
172
        width="150"
173
        label="操作"
174
      >
49 175
        <template slot-scope="scope">
50
          <el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
176
          <!-- <el-popover placement="left-end" width="300" trigger="hover">
177
            <div :id="scope.row.member_id" style="text-align:center">
178
              <vue-qr text="xxx" :size="200"></vue-qr>
179
              <p style="font-size:18px">姓名:{{scope.row.truename}}</p>
180
              <p style="font-size:18px">单位:{{scope.row.organization}}</p>
181
            </div>
182
          </el-popover>-->
183
184
          <el-button slot="reference" type="text" @click="printCode(scope.row)"
185
            >打印</el-button
186
          >
187
          <el-button
188
            type="text"
189
            size="small"
190
            @click="addOrUpdateHandle(scope.row.aid)"
191
            >修改</el-button
192
          >
193
          <el-button
194
            type="text"
195
            size="small"
196
            @click="deleteHandle(scope.row.id)"
197
            >删除</el-button
198
          >
51 199
        </template>
52 200
      </el-table-column>
53 201
    </el-table>
@ -60,52 +208,69 @@
60 208
      :total="totalPage"
61 209
      layout="total, sizes, prev, pager, next, jumper"
62 210
    ></el-pagination>
211
212
    <!-- 弹窗, 新增 / 修改 -->
213
    <add-or-update
214
      v-if="addOrUpdateVisible"
215
      ref="addOrUpdate"
216
      @refreshDataList="getDataList"
217
    ></add-or-update>
218
    <!-- 打印弹窗 -->
219
    <!-- <print-dialog v-if="printVisible" ref="printCode"></print-dialog> -->
220
    <print ref="printCode" v-if="printVisible" @getData="getDataList"></print>
63 221
  </div>
64 222
</template>
65 223
66 224
<script>
225
import AddOrUpdate from "./sign-add-or-update";
226
import Print from "../../../components/print-dialog/index";
227
67 228
export default {
68 229
  data() {
69 230
    return {
70 231
      dataForm: {
71
        key: ""
232
        key: "",
72 233
      },
73 234
      dataList: [],
74 235
      pageIndex: 1,
75
      pageSize: 10,
236
      pageSize: 20,
76 237
      totalPage: 0,
77 238
      dataListLoading: false,
78 239
      dataListSelections: [],
79
      meetingId: this.$route.params.id
240
      addOrUpdateVisible: false,
241
      printVisible: false, //打印弹窗
242
      meetingId:this.$route.params.id
80 243
    };
81 244
  },
245
  components: {
246
    AddOrUpdate,
247
    Print,
248
  },
82 249
  created() {
83 250
    this.getDataList();
84 251
  },
252
  activated() {},
85 253
  methods: {
86
    // 导出数据表
87
    exportList() {
88
      window.open(
89
        this.$http.adornUrl(
90
          `/admin/signinfo/downloadxls?token=${this.$cookie.get(
91
            "token"
92
          )}&meetingId=${this.meetingId}`
93
        )
94
      );
254
    // 查询
255
    se() {
256
      this.pageIndex = 1;
257
      this.getDataList();
95 258
    },
259
96 260
    // 获取数据列表
97 261
    getDataList() {
98 262
      this.dataListLoading = true;
99 263
      this.$http({
100
        url: this.$http.adornUrl("/admin/signinfo/list"),
264
        url: this.$http.adornUrl("/admin/sign/list"),
101 265
        method: "get",
102 266
        params: this.$http.adornParams({
103
          meetingId: this.meetingId,
104 267
          page: this.pageIndex,
105 268
          limit: this.pageSize,
106
          key: this.dataForm.key
107
        })
269
          key: this.dataForm.key,
270
          meetingId: this.$route.params.id,
271
        }),
108 272
      }).then(({ data }) => {
273
        console.log(data);
109 274
        if (data && data.code === 0) {
110 275
          this.dataList = data.page.list;
111 276
          this.totalPage = data.page.totalCount;
@ -131,7 +296,124 @@ export default {
131 296
    selectionChangeHandle(val) {
132 297
      this.dataListSelections = val;
133 298
    },
299
    // 新增 / 修改
300
    addOrUpdateHandle(id) {
301
      this.addOrUpdateVisible = true;
302
      this.$nextTick(() => {
303
        this.$refs.addOrUpdate.init(id);
304
      });
305
    },
306
    // 打印
307
    printCode(data) {
308
      this.printVisible = true;
309
      this.$nextTick(() => {
310
        this.$refs.printCode.init(data);
311
      });
312
    },
134 313
    // 删除
314
    deleteHandle(id) {
315
      var ids = id
316
        ? [id]
317
        : this.dataListSelections.map((item) => {
318
            return item.member_id;
319
          });
320
      this.$confirm(`确定删除?`, "提示", {
321
        confirmButtonText: "确定",
322
        cancelButtonText: "取消",
323
        type: "warning",
324
      }).then(() => {
325
        this.$http({
326
          url: this.$http.adornUrl("/admin/member/delete"),
327
          method: "post",
328
          data: this.$http.adornData(ids, false),
329
        }).then(({ data }) => {
330
          if (data && data.code === 0) {
331
            this.$message({
332
              message: "操作成功",
333
              type: "success",
334
              duration: 1500,
335
              onClose: () => {
336
                this.getDataList();
337
              },
338
            });
339
          } else {
340
            this.$message.error(data.msg);
341
          }
342
        });
343
      });
344
    },
345
    // 修改缴费状态
346
    changeStatus(status, id) {
347
      console.log(status, id);
348
      this.$http({
349
        url: this.$http.adornUrl("/admin/attenders/ispay"),
350
        method: "post",
351
        data: this.$http.adornParams({
352
          aid: id,
353
          isPay: status,
354
        }),
355
      }).then(({ data }) => {
356
        if (data && data.code === 0) {
357
          this.$message({
358
            message: "操作成功",
359
            type: "success",
360
            duration: 500,
361
            onClose: () => {
362
              var dList = this.dataList;
363
              dList.forEach((element) => {
364
                if (element.aid === id) {
365
                  element.isPay = status;
366
                }
367
              });
368
            },
369
          });
370
        } else {
371
          this.$message.error(data.msg);
372
        }
373
      });
374
    },
375
    getNot(data, money) {
376
      this.$http({
377
        url: this.$http.adornUrl("/admin/attenders/money"),
378
        method: "post",
379
        data: this.$http.adornData({
380
          memberId: data,
381
          money: money,
382
        }),
383
      }).then(({ data }) => {
384
        if (data && data.code === 0) {
385
          return;
386
        } else {
387
          this.$message.error(data.msg);
388
        }
389
      });
390
    },
391
    setNot(data, num) {
392
      this.$http({
393
        url: this.$http.adornUrl("/admin/attenders/receiptnumber"),
394
        method: "post",
395
        data: this.$http.adornData({
396
          memberId: data,
397
          receiptNumber: num,
398
        }),
399
      }).then(({ data }) => {
400
        if (data && data.code === 0) {
401
          return;
402
        } else {
403
          this.$message.error(data.msg);
404
        }
405
      });
406
    },
407
    // 导出
408
    exportList() {
409
      window.open(
410
        this.$http.adornUrl(
411
          `/admin/sign/export?token=${this.$cookie.get(
412
            "token"
413
          )}&meetingId=${this.meetingId}`
414
        )
415
      );
416
    },
135 417
    deleteHandle(id) {
136 418
      var ids = id
137 419
        ? [id]
@ -144,7 +426,7 @@ export default {
144 426
        type: "warning"
145 427
      }).then(() => {
146 428
        this.$http({
147
          url: this.$http.adornUrl("/admin/signinfo/delete"),
429
          url: this.$http.adornUrl("/admin/sign/delete"),
148 430
          method: "post",
149 431
          data: this.$http.adornData(ids, false)
150 432
        }).then(({ data }) => {
@ -163,6 +445,10 @@ export default {
163 445
        });
164 446
      });
165 447
    }
166
  }
448
  },
167 449
};
168 450
</script>
451
452
453
454

+ 168 - 0
src/views/modules/admin/sign1.vue

@ -0,0 +1,168 @@
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
    >
21
      <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
22
      <el-table-column prop="id" header-align="center" align="center" label="id"></el-table-column>
23
      <el-table-column prop="truename" header-align="center" align="center" label="姓名"></el-table-column>
24
      <el-table-column prop="organization" header-align="center" align="center" label="所属机构"></el-table-column>
25
      <el-table-column prop="position" header-align="center" align="center" label="职位"></el-table-column>
26
      <el-table-column prop="phone" header-align="center" align="center" label="联系电话"></el-table-column>
27
      <el-table-column prop="typeAttenders" header-align="center" align="center" label="用户参会类型"></el-table-column>
28
      <el-table-column prop="isPay" header-align="center" align="center" label="是否已缴费">
29
        <template slot-scope="scope">
30
          <el-tag v-if="scope.row.isPay === 1">是</el-tag>
31
          <el-tag v-else type="danger">否</el-tag>
32
        </template>
33
      </el-table-column>
34
      <el-table-column prop="status" header-align="center" align="center" label="签到状态">
35
        <template slot-scope="scope">
36
          <el-tag v-if="scope.row.status === 1">是</el-tag>
37
          <el-tag v-else type="danger">否</el-tag>
38
        </template>
39
      </el-table-column>
40
      <el-table-column prop="badge" header-align="center" align="center" label="胸卡">
41
        <template slot-scope="scope">
42
          <el-tag v-if="scope.row.badge === 1">是</el-tag>
43
          <el-tag v-else type="danger">否</el-tag>
44
        </template>
45
      </el-table-column>
46
      <el-table-column prop="servername" header-align="center" align="center" label="负责人"></el-table-column>
47
      <el-table-column prop="lastTime" header-align="center" align="center" label="最后签到时间"></el-table-column>
48
      <el-table-column fixed="right" header-align="center" align="center" width="100" label="操作">
49
        <template slot-scope="scope">
50
          <el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
51
        </template>
52
      </el-table-column>
53
    </el-table>
54
    <el-pagination
55
      @size-change="sizeChangeHandle"
56
      @current-change="currentChangeHandle"
57
      :current-page="pageIndex"
58
      :page-sizes="[10, 20, 50, 100]"
59
      :page-size="pageSize"
60
      :total="totalPage"
61
      layout="total, sizes, prev, pager, next, jumper"
62
    ></el-pagination>
63
  </div>
64
</template>
65
66
<script>
67
export default {
68
  data() {
69
    return {
70
      dataForm: {
71
        key: ""
72
      },
73
      dataList: [],
74
      pageIndex: 1,
75
      pageSize: 10,
76
      totalPage: 0,
77
      dataListLoading: false,
78
      dataListSelections: [],
79
      meetingId: this.$route.params.id
80
    };
81
  },
82
  created() {
83
    this.getDataList();
84
  },
85
  methods: {
86
    // 导出数据表
87
    exportList() {
88
      window.open(
89
        this.$http.adornUrl(
90
          `/admin/signinfo/downloadxls?token=${this.$cookie.get(
91
            "token"
92
          )}&meetingId=${this.meetingId}`
93
        )
94
      );
95
    },
96
    // 获取数据列表
97
    getDataList() {
98
      this.dataListLoading = true;
99
      this.$http({
100
        url: this.$http.adornUrl("/admin/signinfo/list"),
101
        method: "get",
102
        params: this.$http.adornParams({
103
          meetingId: this.meetingId,
104
          page: this.pageIndex,
105
          limit: this.pageSize,
106
          key: this.dataForm.key
107
        })
108
      }).then(({ data }) => {
109
        if (data && data.code === 0) {
110
          this.dataList = data.page.list;
111
          this.totalPage = data.page.totalCount;
112
        } else {
113
          this.dataList = [];
114
          this.totalPage = 0;
115
        }
116
        this.dataListLoading = false;
117
      });
118
    },
119
    // 每页数
120
    sizeChangeHandle(val) {
121
      this.pageSize = val;
122
      this.pageIndex = 1;
123
      this.getDataList();
124
    },
125
    // 当前页
126
    currentChangeHandle(val) {
127
      this.pageIndex = val;
128
      this.getDataList();
129
    },
130
    // 多选
131
    selectionChangeHandle(val) {
132
      this.dataListSelections = val;
133
    },
134
    // 删除
135
    deleteHandle(id) {
136
      var ids = id
137
        ? [id]
138
        : this.dataListSelections.map(item => {
139
            return item.id;
140
          });
141
      this.$confirm(`确定删除?`, "提示", {
142
        confirmButtonText: "确定",
143
        cancelButtonText: "取消",
144
        type: "warning"
145
      }).then(() => {
146
        this.$http({
147
          url: this.$http.adornUrl("/admin/signinfo/delete"),
148
          method: "post",
149
          data: this.$http.adornData(ids, false)
150
        }).then(({ data }) => {
151
          if (data && data.code === 0) {
152
            this.$message({
153
              message: "操作成功",
154
              type: "success",
155
              duration: 1500,
156
              onClose: () => {
157
                this.getDataList();
158
              }
159
            });
160
          } else {
161
            this.$message.error(data.msg);
162
          }
163
        });
164
      });
165
    }
166
  }
167
};
168
</script>

+ 83 - 101
src/views/modules/admin/signinfo.vue

@ -5,8 +5,8 @@
5 5
        <el-input v-model="dataForm.key" placeholder="姓名/负责人" clearable></el-input>
6 6
      </el-form-item>
7 7
      <el-form-item>
8
        <el-button @click="getDataList()">查询</el-button>
9
        <el-button
8
        <el-button @click="se()">查询</el-button>
9
        <!-- <el-button
10 10
          v-if="isAuth('admin:signinfo:save')"
11 11
          type="primary"
12 12
          @click="addOrUpdateHandle()"
@ -16,8 +16,40 @@
16 16
          type="danger"
17 17
          @click="deleteHandle()"
18 18
          :disabled="dataListSelections.length <= 0"
19
        >批量删除</el-button>
19
        >批量删除</el-button>-->
20
        <el-button type="primary" @click="exportList()">导出</el-button>
21
      </el-form-item>
22
      
23
      <el-form-item style="float:right">
24
        <div>
25
          普通总人数:
26
          <span
27
            style="color:#F56C6C
28
"
29
          >{{gatherPerson.generalPerson}}人</span>
30
          学生总人数:
31
          <span
32
            style="color:#F56C6C
33
"
34
          >{{gatherPerson.studentPerson}}人</span>
35
          线上缴费(汇款):
36
          <span
37
            style="color:#F56C6C
38
"
39
          >{{gatherMoney.totalMoney2?gatherMoney.totalMoney2:0 }}元</span>
40
          现场缴费:
41
          <span
42
            style="color:#F56C6C
43
"
44
          >{{gatherMoney.totalMoney1?gatherMoney.totalMoney1:0}}元</span>
45
          总金额:
46
          <span
47
            style="color:#F56C6C
48
"
49
          >{{gatherMoney.totalMoney?gatherMoney.totalMoney:0}}元</span>
50
        </div>
20 51
      </el-form-item>
52
21 53
    </el-form>
22 54
    <el-table
23 55
      :data="dataList"
@ -28,49 +60,32 @@
28 60
    >
29 61
      <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
30 62
      <el-table-column prop="truename" header-align="center" align="center" label="姓名"></el-table-column>
31
      <el-table-column prop="organization" header-align="center" align="center" label="所属机构"></el-table-column>
32
      <!-- <el-table-column prop="jobTitle" header-align="center" align="center" label="职称"></el-table-column> -->
33
      <el-table-column prop="phone" header-align="center" align="center" label="电话"></el-table-column>
34
      <el-table-column prop="status" header-align="center" align="center" label="签到状态">
63
      <el-table-column prop="sex" header-align="center" align="center" label="性别">
35 64
        <template slot-scope="scope">
36
          <el-tag v-if="scope.row.status===1">已签到</el-tag>
37
          <el-tag v-else type="danger">未签到</el-tag>
65
          <el-tag v-if="scope.row.sex===0">未知</el-tag>
66
          <el-tag v-else-if="scope.row.sex===1">男</el-tag>
67
          <el-tag v-else type="danger">女</el-tag>
38 68
        </template>
39 69
      </el-table-column>
40
      <el-table-column prop="badge" header-align="center" align="center" label="是否完成胸卡打印">
70
      <el-table-column prop="organization" header-align="center" align="center" label="所属机构"></el-table-column>
71
      <!-- <el-table-column prop="jobTitle" header-align="center" align="center" label="职称"></el-table-column> -->
72
      <el-table-column prop="phone" header-align="center" align="center" label="电话"></el-table-column>
73
      <el-table-column prop="feeType" header-align="center" align="center" label="费用类型">
41 74
        <template slot-scope="scope">
42
          <el-tag v-if="scope.row.badge===1">是</el-tag>
43
          <el-tag v-else type="danger">否</el-tag>
75
          <div v-if="scope.row.feeType===1">普通</div>
76
          <div v-else>学生</div>
44 77
        </template>
45 78
      </el-table-column>
46 79
      <el-table-column prop="money" header-align="center" align="center" label="金额(单位元)"></el-table-column>
47
      <el-table-column prop="servername" header-align="center" align="center" label="负责人"></el-table-column>
80
      <el-table-column prop="phone" header-align="center" align="center" label="收据号"></el-table-column>
81
48 82
      <el-table-column prop="isPay" header-align="center" align="center" label="是否缴费">
49 83
        <template slot-scope="scope">
50
          <el-button
51
            v-if="scope.row.isPay === 0"
52
            size="medium"
53
            hit="true"
54
            @click="changeStatus(1,scope.row.pid)"
55
          >否</el-button>
56
          <el-button
57
            v-else-if="scope.row.isPay === 1"
58
            size="medium"
59
            hit="true"
60
            type="success"
61
            @click="changeStatus(0,scope.row.pid)"
62
          >是</el-button>
84
          <el-tag v-if="scope.row.isPay===0" type="danger">否</el-tag>
85
          <el-tag v-else>是</el-tag>
63 86
        </template>
64 87
      </el-table-column>
65
      <el-table-column prop="createTime" header-align="center" align="center" label="创建时间"></el-table-column>
66 88
      <el-table-column prop="lastTime" header-align="center" align="center" label="最后签到时间"></el-table-column>
67
      <el-table-column prop="note" header-align="center" align="center" label="备注"></el-table-column>
68
      <el-table-column fixed="right" header-align="center" align="center" width="150" label="操作">
69
        <template slot-scope="scope">
70
          <el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
71
          <!-- <el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button> -->
72
        </template>
73
      </el-table-column>
74 89
    </el-table>
75 90
    <el-pagination
76 91
      @size-change="sizeChangeHandle"
@ -100,7 +115,17 @@ export default {
100 115
      totalPage: 0,
101 116
      dataListLoading: false,
102 117
      dataListSelections: [],
103
      addOrUpdateVisible: false
118
      addOrUpdateVisible: false,
119
      drawer: false,
120
      gatherMoney: {
121
        totalMoney2: 0,
122
        totalMoney1: 0,
123
        totalMoney: 0
124
      },
125
      gatherPerson:{
126
        generalPerson:0,
127
        studentPerson:0
128
      }
104 129
    };
105 130
  },
106 131
  components: {
@ -108,13 +133,19 @@ export default {
108 133
  },
109 134
  activated() {
110 135
    this.getDataList();
136
    this.getMoney();
111 137
  },
112 138
  methods: {
139
140
    se() {
141
      this.pageIndex = 1;
142
      this.getDataList();
143
    },
113 144
    // 获取数据列表
114 145
    getDataList() {
115 146
      this.dataListLoading = true;
116 147
      this.$http({
117
        url: this.$http.adornUrl("/admin/signinfo/listreg"),
148
        url: this.$http.adornUrl("/admin/signinfo/list"),
118 149
        method: "get",
119 150
        params: this.$http.adornParams({
120 151
          page: this.pageIndex,
@ -123,7 +154,6 @@ export default {
123 154
          meetingId: this.$route.params.id
124 155
        })
125 156
      }).then(({ data }) => {
126
        window.console.log(data)
127 157
        if (data && data.code === 0) {
128 158
          this.dataList = data.page.list;
129 159
          this.totalPage = data.page.totalCount;
@ -149,75 +179,27 @@ export default {
149 179
    selectionChangeHandle(val) {
150 180
      this.dataListSelections = val;
151 181
    },
152
    // 新增 / 修改
153
    addOrUpdateHandle(id) {
154
      this.addOrUpdateVisible = true;
155
      this.$nextTick(() => {
156
        this.$refs.addOrUpdate.init(id);
157
      });
158
    },
159
    // 删除
160
    deleteHandle(id) {
161
      var ids = id
162
        ? [id]
163
        : this.dataListSelections.map(item => {
164
            return item.id;
165
          });
166
      this.$confirm(`确定删除?`, "提示", {
167
        confirmButtonText: "确定",
168
        cancelButtonText: "取消",
169
        type: "warning"
170
      }).then(() => {
171
        this.$http({
172
          url: this.$http.adornUrl("/admin/signinfo/delete"),
173
          method: "post",
174
          data: this.$http.adornData(ids, false)
175
        }).then(({ data }) => {
176
          if (data && data.code === 0) {
177
            this.$message({
178
              message: "操作成功",
179
              type: "success",
180
              duration: 1500,
181
              onClose: () => {
182
                this.getDataList();
183
              }
184
            });
185
          } else {
186
            this.$message.error(data.msg);
187
          }
188
        });
189
      });
190
    },
191
    // 修改缴费状态
192
    changeStatus(status, id) {
193
      window.console.log(status,id)
182
    // 统计
183
    getMoney() {
194 184
      this.$http({
195
        url: this.$http.adornUrl("/admin/payment/paystatus"),
196
        method: "post",
197
        data: this.$http.adornParams({
198
          id: id,
199
          status: status
200
        })
185
        url: this.$http.adornUrl(
186
          "/admin/attenders/totalinfo/" + this.$route.params.id
187
        )
201 188
      }).then(({ data }) => {
202 189
        if (data && data.code === 0) {
203
          this.$message({
204
            message: "操作成功",
205
            type: "success",
206
            duration: 500,
207
            onClose: () => {
208
              var dList = this.dataList;
209
              dList.forEach(element => {
210
                if (element.pid === id) {
211
                  element.isPay = status;
212
                }
213
              });
214
              this.dataList = dList;
215
            }
216
          });
217
        } else {
218
          this.$message.error(data.msg);
190
          this.gatherMoney = data.gatherMoney;
191
          this.gatherPerson = data.gatherPerson
219 192
        }
220 193
      });
194
    },
195
    exportList() {
196
      window.open(
197
        this.$http.adornUrl(
198
          `/admin/signinfo/exportexcel?token=${this.$cookie.get(
199
            "token"
200
          )}&meetingId=${this.$route.params.id}`
201
        )
202
      );
221 203
    }
222 204
  }
223 205
};

+ 55 - 2
src/views/modules/sys/user-add-or-update.vue

@ -30,6 +30,22 @@
30 30
          <el-radio :label="1">正常</el-radio>
31 31
        </el-radio-group>
32 32
      </el-form-item>
33
      <!-- <el-form-item label="上传头像" prop="titlePicture">
34
        <el-upload
35
          class="avatar-uploader"
36
          :action="dialogImageUrl"
37
          :show-file-list="false"
38
          :on-success="handlePictureCardPreview"
39
          name="upload_file"
40
        >
41
          <img
42
            v-if="this.dataForm.titlepic"
43
            :src="this.dataForm.titlepic"
44
            class="avatar"
45
          />
46
          <i v-else class="el-icon-plus avatar-uploader-icon"></i>
47
        </el-upload>
48
      </el-form-item> -->
33 49
    </el-form>
34 50
    <span slot="footer" class="dialog-footer">
35 51
      <el-button @click="visible = false">取消</el-button>
@ -74,6 +90,7 @@
74 90
      }
75 91
      return {
76 92
        visible: false,
93
        // dialogImageUrl: '',
77 94
        roleList: [],
78 95
        dataForm: {
79 96
          id: 0,
@ -84,7 +101,9 @@
84 101
          email: '',
85 102
          mobile: '',
86 103
          roleIdList: [],
87
          status: 1
104
          status: 1,
105
          // titlepic:'',
106
88 107
        },
89 108
        dataRule: {
90 109
          userName: [
@ -108,6 +127,11 @@
108 127
      }
109 128
    },
110 129
    methods: {
130
        // 上传成功
131
      // handlePictureCardPreview(response, file) {
132
      //   this.dataForm.titlepic = response.picname
133
      
134
      // },
111 135
      init (id) {
112 136
        this.dataForm.id = id || 0
113 137
        this.$http({
@ -135,10 +159,12 @@
135 159
                this.dataForm.mobile = data.user.mobile
136 160
                this.dataForm.roleIdList = data.user.roleIdList
137 161
                this.dataForm.status = data.user.status
162
                // this.dataForm.titlepic = data.user.titlepic
138 163
              }
139 164
            })
140 165
          }
141 166
        })
167
        // this.dialogImageUrl = this.$http.adornUrl(`/app/filemanager/uploadimg`);
142 168
      },
143 169
      // 表单提交
144 170
      dataFormSubmit () {
@ -155,7 +181,8 @@
155 181
                'email': this.dataForm.email,
156 182
                'mobile': this.dataForm.mobile,
157 183
                'status': this.dataForm.status,
158
                'roleIdList': this.dataForm.roleIdList
184
                'roleIdList': this.dataForm.roleIdList,
185
                // 'titlepic': this.dataForm.titlepic
159 186
              })
160 187
            }).then(({data}) => {
161 188
              if (data && data.code === 0) {
@ -178,3 +205,29 @@
178 205
    }
179 206
  }
180 207
</script>
208
<style lang="scss">
209
  // .avatar-uploader .el-upload {
210
  //   border: 1px dashed #d9d9d9;
211
  //   border-radius: 6px;
212
  //   cursor: pointer;
213
  //   position: relative;
214
  //   overflow: hidden;
215
  // }
216
  // .avatar-uploader .el-upload:hover {
217
  //   border-color: #409eff;
218
  // }
219
  // .avatar-uploader-icon {
220
  //   font-size: 28px;
221
  //   color: #8c939d;
222
  //   width: 178px;
223
  //   height: 178px;
224
  //   line-height: 178px;
225
  //   text-align: center;
226
  // }
227
  // .avatar {
228
  // width: 178px;
229
  // height: 178px;
230
  // display: block;
231
  // }
232
</style>
233

+ 2 - 1
static/config/index-prod.js

@ -6,7 +6,8 @@
6 6
  window.SITE_CONFIG = {};
7 7
8 8
  // api接口请求地址
9
  window.SITE_CONFIG['baseUrl'] = 'http://192.168.3.233:8002/renren-fast';
9
  window.SITE_CONFIG['baseUrl'] = '/fyhs-meeting';
10
  window.SITE_CONFIG['img'] = 'http://meeting.ecorr.org/';
10 11
11 12
  // cdn地址 = 域名 + 版本号
12 13
  window.SITE_CONFIG['domain'] = './'; // 域名

+ 6 - 4
static/config/index.js

@ -1,14 +1,16 @@
1 1
/**
2 2
 * 开发环境
3 3
 */
4
;(function () {
4
;
5
(function () {
5 6
  window.SITE_CONFIG = {};
6 7
7 8
  // api接口请求地址
8
  window.SITE_CONFIG['baseUrl'] = 'http://192.168.3.233:8002/renren-fast';
9
  window.SITE_CONFIG['baseUrl'] = 'http://192.168.3.233:8002/fyhs-meeting';
10
  window.SITE_CONFIG['img'] = 'http://192.168.3.233';
9 11
10 12
  // cdn地址 = 域名 + 版本号
11
  window.SITE_CONFIG['domain']  = './'; // 域名
12
  window.SITE_CONFIG['version'] = '';   // 版本号(年月日时分)
13
  window.SITE_CONFIG['domain'] = './'; // 域名
14
  window.SITE_CONFIG['version'] = ''; // 版本号(年月日时分)
13 15
14 16
})();

BIN
static/img/favicon.ico