leisure-core 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -3,6 +3,7 @@ import { parseTime, formatMoney } from "leisure-js/common/dformat";
3
3
  import LeLogin from "./le-login/index.js";
4
4
  import LeHome from "./le-home/index.js";
5
5
  import LeButton from "./le-button/index.js";
6
+ import LeButtonQr from "./le-button-qr/index.js";
6
7
  import LeButtonMsg from "./le-button-msg/index.js";
7
8
  import LeCompany from "./le-company/index.js";
8
9
  import LeDialogContainer from "./le-dialog-container/index.js";
@@ -25,9 +26,11 @@ import LeButtonSelectMedia from "./le-button-select-media/index.js";
25
26
  import LeImage from "./le-image/index.js";
26
27
  import LeBackUp from "./le-backup/index.js";
27
28
  import LeSeting from "./le-seting/index.js";
29
+ import LeRate from "./le-rate/index.js";
28
30
 
29
31
  const components = [
30
32
  LeButton,
33
+ LeButtonQr,
31
34
  LeButtonMsg,
32
35
  LeCompany,
33
36
  LeDialogContainer,
@@ -52,6 +55,7 @@ const components = [
52
55
  LeImage,
53
56
  LeBackUp,
54
57
  LeSeting,
58
+ LeRate,
55
59
  ];
56
60
 
57
61
  const install = function (Vue) {
@@ -123,6 +127,7 @@ if (typeof window !== "undefined" && window.Vue) {
123
127
  export default {
124
128
  install,
125
129
  LeButton,
130
+ LeButtonQr,
126
131
  LeButtonMsg,
127
132
  LeCompany,
128
133
  LeDialogContainer,
@@ -148,4 +153,5 @@ export default {
148
153
  LeImage,
149
154
  LeBackUp,
150
155
  LeSeting,
156
+ LeRate,
151
157
  };
@@ -0,0 +1,7 @@
1
+ import LeButtonQr from "./src/main.vue";
2
+
3
+ LeButtonQr.install = function (Vue) {
4
+ Vue.component(LeButtonQr.name, LeButtonQr);
5
+ };
6
+
7
+ export default LeButtonQr;
@@ -0,0 +1,70 @@
1
+ <template>
2
+ <div>
3
+ <le-button text="显示二维码" @click="qrMake"></le-button>
4
+ <le-dialog-container
5
+ title="二维码"
6
+ width="239px"
7
+ :showDialog="showQrMake"
8
+ :showFooter="true"
9
+ saveBtnText="下 载"
10
+ @close="closeQrMake"
11
+ @saveData="qrDownLoad"
12
+ >
13
+ <div id="qrcodemake" v-if="showQrMake"></div>
14
+ </le-dialog-container>
15
+ </div>
16
+ </template>
17
+ <script>
18
+ import QRCode from "qrcodejs2";
19
+ export default {
20
+ name: "le-button-qr",
21
+ props: {
22
+ qrCodeUrl: {
23
+ type: String,
24
+ default: "",
25
+ },
26
+ },
27
+ data() {
28
+ return {
29
+ showQrMake: false,
30
+ };
31
+ },
32
+ methods: {
33
+ closeQrMake() {
34
+ this.showQrMake = false;
35
+ },
36
+ qrMake() {
37
+ this.showQrMake = true;
38
+ setTimeout(() => {
39
+ this.qrcode("qrcodemake");
40
+ }, 100);
41
+ },
42
+ qrcode(id) {
43
+ return new Promise((resolve, reject) => {
44
+ try {
45
+ new QRCode(id, {
46
+ width: 200,
47
+ height: 200,
48
+ text: this.qrCodeUrl,
49
+ colorDark: "#000",
50
+ colorLight: "#fff",
51
+ });
52
+ resolve();
53
+ } catch (e) {
54
+ reject("二维码生成错误:" + e);
55
+ }
56
+ });
57
+ },
58
+ qrDownLoad() {
59
+ let myCanvas = document
60
+ .getElementById("qrcodemake")
61
+ .getElementsByTagName("canvas");
62
+ let a = document.createElement("a");
63
+ a.href = myCanvas[0].toDataURL("image/png");
64
+ a.download = "服务评价二维码";
65
+ a.click();
66
+ this.$message.success("正在进行下载保存");
67
+ },
68
+ },
69
+ };
70
+ </script>
@@ -12,9 +12,9 @@
12
12
  <div slot="footer" v-if="showFooter" class="dialog-footer">
13
13
  <template>
14
14
  <el-button type="info" @click="closeDialog">关闭</el-button>
15
- <el-button type="primary" v-if="showSaveBtn" @click="saveData"
16
- >确 定</el-button
17
- >
15
+ <el-button type="primary" v-if="showSaveBtn" @click="saveData">{{
16
+ saveBtnText
17
+ }}</el-button>
18
18
  </template>
19
19
  </div>
20
20
  </el-dialog>
@@ -47,6 +47,10 @@ export default {
47
47
  type: Boolean,
48
48
  default: true,
49
49
  },
50
+ saveBtnText: {
51
+ type: String,
52
+ default: "确 定",
53
+ },
50
54
  },
51
55
  data() {
52
56
  return {};
@@ -3,20 +3,20 @@
3
3
  <el-form-item label="等级标题" prop="title">
4
4
  <el-input v-model="form.title"></el-input>
5
5
  </el-form-item>
6
- <el-form-item label="会员标准" prop="rule">
6
+ <el-form-item label="计算标准" prop="rule">
7
7
  <el-radio-group v-model="form.rule">
8
8
  <el-radio-button :label="1">销售额</el-radio-button>
9
9
  <el-radio-button :label="2" disabled>积分</el-radio-button>
10
10
  </el-radio-group>
11
11
  </el-form-item>
12
- <el-form-item label="起始" prop="start">
12
+ <el-form-item label="区域范围" prop="start">
13
13
  <el-input-number
14
14
  v-model="form.start"
15
15
  :min="0"
16
16
  :max="999999999999"
17
17
  ></el-input-number>
18
18
  </el-form-item>
19
- <el-form-item label="结束" prop="end">
19
+ <el-form-item label="区域范围" prop="end">
20
20
  <el-input-number
21
21
  v-model="form.end"
22
22
  :min="1"
@@ -0,0 +1,7 @@
1
+ import LeRate from "./src/main.vue";
2
+
3
+ LeRate.install = function (Vue) {
4
+ Vue.component(LeRate.name, LeRate);
5
+ };
6
+
7
+ export default LeRate;
@@ -0,0 +1,194 @@
1
+ <template>
2
+ <div class="page-container">
3
+ <el-form :inline="true" class="demo-form-inline">
4
+ <el-form-item label="订单时间">
5
+ <el-date-picker
6
+ v-model="timeArr"
7
+ type="datetimerange"
8
+ value-format="yyyy-MM-dd HH:mm:ss"
9
+ range-separator="至"
10
+ start-placeholder="开始日期"
11
+ end-placeholder="结束日期"
12
+ >
13
+ </el-date-picker>
14
+ </el-form-item>
15
+ <el-form-item>
16
+ <el-button type="primary" @click="getRateList()"> 查询 </el-button>
17
+ <el-button type="info" @click="resetSearch()">重置</el-button>
18
+ <el-button type="primary" @click="openQr()">二维码</el-button>
19
+ </el-form-item>
20
+ </el-form>
21
+ <vxe-table
22
+ :data="tableData"
23
+ :align="'center'"
24
+ :row-config="{ isHover: true }"
25
+ :column-config="{ resizable: true }"
26
+ ref="eltablemain"
27
+ :max-height="elTableMaxHeight"
28
+ border
29
+ stripe
30
+ style="width: 100%"
31
+ >
32
+ <vxe-column
33
+ field="uid"
34
+ title="用户Id"
35
+ width="100"
36
+ show-overflow="tooltip"
37
+ ></vxe-column>
38
+ <vxe-column field="nick" title="用户手机号" width="160"></vxe-column>
39
+ <vxe-column
40
+ field="r_average"
41
+ title="调研结果"
42
+ header-align="center"
43
+ align="center"
44
+ width="160"
45
+ ></vxe-column>
46
+ <vxe-column title="调研日期" width="150">
47
+ <template slot-scope="scope">
48
+ <span>{{ parseTime(scope.row.cdate) }}</span>
49
+ </template>
50
+ </vxe-column>
51
+ <vxe-column title="操作">
52
+ <template slot-scope="scope">
53
+ <el-button
54
+ type="primary"
55
+ size="small"
56
+ id="btnDetail"
57
+ @click="detail(scope.row)"
58
+ style="margin-right: 2px"
59
+ >
60
+ 详情
61
+ </el-button>
62
+ </template>
63
+ </vxe-column>
64
+ </vxe-table>
65
+ <div style="text-align: center; margin-top: 30px">
66
+ <vxe-pager
67
+ auto-hidden
68
+ align="center"
69
+ :current-page="pageNo"
70
+ :page-size="10"
71
+ :total="total"
72
+ :layouts="['PrevPage', 'JumpNumber', 'NextPage', 'Total']"
73
+ @page-change="current_change"
74
+ >
75
+ </vxe-pager>
76
+ </div>
77
+ <le-dialog-container
78
+ :showDialog="showPageModal"
79
+ :showSaveBtn="false"
80
+ :showFooter="true"
81
+ title="评价详情"
82
+ @close="handleClose"
83
+ >
84
+ <le-rate-sub ref="rateDetail" :rowData="detailRow" v-if="showPageModal">
85
+ </le-rate-sub>
86
+ </le-dialog-container>
87
+ <le-dialog-container
88
+ :showDialog="showQrCode"
89
+ :showSaveBtn="false"
90
+ :showFooter="true"
91
+ title="服务评价二维码"
92
+ @close="handleQrClose"
93
+ >
94
+ <le-rate-qrinfo v-if="showQrCode"> </le-rate-qrinfo>
95
+ </le-dialog-container>
96
+ </div>
97
+ </template>
98
+ <script>
99
+ import { del as rateDel, list as rateList } from "@/api/SystemRate";
100
+ import leMixins from "leisure-core/le-libs/mixins/main";
101
+ import LeRateSub from "./sub";
102
+ import LeRateQrinfo from "./qrinfo";
103
+ export default {
104
+ name: "le-rate",
105
+ mixins: [leMixins],
106
+ components: { LeRateSub,LeRateQrinfo },
107
+ data() {
108
+ return {
109
+ pageNo: 1,
110
+ total: 0,
111
+ pageSize: 10,
112
+ tableData: [],
113
+ showPageModal: false,
114
+ showQrCode: false,
115
+ detailRow: {},
116
+ timeArr: "",
117
+ searchData: {
118
+ date_end: "",
119
+ date_start: "",
120
+ },
121
+ };
122
+ },
123
+ computed: {},
124
+ mounted() {
125
+ this.getRateList();
126
+ },
127
+ methods: {
128
+ filterParams(obj) {
129
+ var _newPar = {};
130
+ for (var key in obj) {
131
+ if (
132
+ (obj[key] === false || obj[key]) &&
133
+ obj[key].toString().replace(/(^\s*)|(\s*$)/g, "") !== ""
134
+ ) {
135
+ _newPar[key] = obj[key];
136
+ }
137
+ }
138
+ return _newPar;
139
+ },
140
+ resetSearch() {
141
+ this.searchData.pageNo = 1;
142
+ this.searchName = "";
143
+ this.searchCode = "";
144
+ this.getRateList();
145
+ },
146
+ current_change({ currentPage }) {
147
+ this.pageNo = currentPage;
148
+ this.getRateList();
149
+ },
150
+ handleClose() {
151
+ this.detailRow = null;
152
+ this.showPageModal = false;
153
+ },
154
+ detail(obj) {
155
+ this.detailRow = obj;
156
+ this.showPageModal = true;
157
+ },
158
+ handleQrClose() {
159
+ this.showQrCode = false;
160
+ },
161
+ openQr() {
162
+ this.showQrCode = true;
163
+ },
164
+ getRateList() {
165
+ if (this.timeArr && this.timeArr.length == 2) {
166
+ this.searchData.date_start = new Date(this.timeArr[0]).getTime() / 1000;
167
+ this.searchData.date_end = new Date(this.timeArr[1]).getTime() / 1000;
168
+ } else {
169
+ this.searchData.date_start = 0;
170
+ this.searchData.date_end = 0;
171
+ }
172
+ let params = this.filterParams(this.searchData);
173
+ params.pageNo = this.pageNo;
174
+ rateList(params).then((res) => {
175
+ this.tableData = res.data.data.list || [];
176
+ this.total = res.data.data.count || 0;
177
+ this.pageSize = res.data.data.pageSize || 10;
178
+ if (this.total > 0) {
179
+ this.tableData.forEach((rate) => {
180
+ if (rate.ranswer2 && rate.ranswer2.length > 10) {
181
+ rate.ranswer2 = rate.ranswer2.split(",");
182
+ }
183
+ });
184
+ }
185
+ });
186
+ },
187
+ del(id) {
188
+ rateDel(id).then((response) => {
189
+ this.getRateList(this.pageNo);
190
+ });
191
+ },
192
+ },
193
+ };
194
+ </script>
@@ -0,0 +1,28 @@
1
+ <template>
2
+ <div>
3
+ <el-form ref="form" label-width="120px">
4
+ <el-form-item label="小程序地址">
5
+ <el-input v-model="miUrl" readonly></el-input>
6
+ </el-form-item>
7
+ <el-form-item label="二维码地址">
8
+ <el-input v-model="qrCodeUrl" readonly></el-input>
9
+ </el-form-item>
10
+ <el-form-item>
11
+ <le-button-qr :qrCodeUrl="qrCodeUrl"></le-button-qr>
12
+ </el-form-item>
13
+ </el-form>
14
+ </div>
15
+ </template>
16
+ <script>
17
+ export default {
18
+ name: "le-rate-qrinfo",
19
+ data() {
20
+ return {
21
+ miUrl: "/pkgA/pages/service-rate/index",
22
+ qrCodeUrl: "http://sct.changyu.cn:8081/rate",
23
+ };
24
+ },
25
+ mounted() {},
26
+ methods: {},
27
+ };
28
+ </script>
@@ -0,0 +1,183 @@
1
+ <template>
2
+ <vxe-table
3
+ ref="xTable"
4
+ :data="tableData"
5
+ :align="'center'"
6
+ :row-config="{ isHover: true }"
7
+ :column-config="{ resizable: true }"
8
+ border
9
+ stripe
10
+ style="width: 100%"
11
+ >
12
+ <vxe-column
13
+ field="title"
14
+ title="调研项目"
15
+ header-align="center"
16
+ align="left"
17
+ width="160"
18
+ ></vxe-column>
19
+ <vxe-column title="调研结果">
20
+ <template slot-scope="scope">
21
+ <span v-if="scope.row.seq <= 15">{{ scope.row.value }}</span>
22
+ <div
23
+ v-if="
24
+ scope.row.seq == 16 && scope.row.value && scope.row.value.length > 0
25
+ "
26
+ >
27
+ <el-image
28
+ v-for="img in scope.row.value"
29
+ :key="img.img"
30
+ :src="img.img"
31
+ :preview-src-list="img.imgPre"
32
+ style="width: 100px; height: 100px; margin-left: 5px"
33
+ >
34
+ </el-image>
35
+ </div>
36
+ </template>
37
+ </vxe-column>
38
+ </vxe-table>
39
+ </template>
40
+ <script>
41
+ export default {
42
+ name: "le-rate-sub",
43
+ props: ["rowData"],
44
+ data() {
45
+ return {
46
+ imgs: [],
47
+ ImgsPre: [],
48
+ tableData: [],
49
+ };
50
+ },
51
+ mounted() {
52
+ this.changeData();
53
+ },
54
+ methods: {
55
+ preClick(item) {
56
+ this.ImgsPre = [];
57
+ this.ImgsPre.push(item);
58
+ },
59
+
60
+ changeData() {
61
+ let rowdata = this.rowData;
62
+
63
+ let row1 = {};
64
+ row1.seq = 1;
65
+ row1.title = "售票人员的服务和办理效率是否满意";
66
+ row1.value = rowdata.r1;
67
+ this.tableData.push(row1);
68
+
69
+ let row2 = {};
70
+ row2.seq = 2;
71
+ row2.title = "前台人员是否微笑服务";
72
+ row2.value = rowdata.r2;
73
+ this.tableData.push(row2);
74
+
75
+ let row3 = {};
76
+ row3.seq = 3;
77
+ row3.title = "讲解员是否微笑服务";
78
+ row3.value = rowdata.r3;
79
+ this.tableData.push(row3);
80
+
81
+ let row4 = {};
82
+ row4.seq = 4;
83
+ row4.title = "讲解员是否耐心解答";
84
+ row4.value = rowdata.r4;
85
+ this.tableData.push(row4);
86
+
87
+ let row5 = {};
88
+ row5.seq = 5;
89
+ row5.title = "讲解员是否生动易懂";
90
+ row5.value = rowdata.row5;
91
+ this.tableData.push(row5);
92
+
93
+ let row6 = {};
94
+ row6.seq = 6;
95
+ row6.title = "品酒讲解是否微笑服务";
96
+ row6.value = rowdata.r6;
97
+ this.tableData.push(row6);
98
+
99
+ let row7 = {};
100
+ row7.seq = 7;
101
+ row7.title = "品酒讲解是否主动服务";
102
+ row7.value = rowdata.r7;
103
+ this.tableData.push(row7);
104
+
105
+ let row8 = {};
106
+ row8.seq = 8;
107
+ row8.title = "综合销售区手造人员是否微笑服务";
108
+ row8.value = rowdata.r8;
109
+ this.tableData.push(row8);
110
+
111
+ let row9 = {};
112
+ row9.seq = 9;
113
+ row9.title = "综合销售区手造人员是否主动服务";
114
+ row9.value = rowdata.r9;
115
+ this.tableData.push(row9);
116
+
117
+ let row10 = {};
118
+ row10.seq = 10;
119
+ row10.title = "综合销售区商品销售人员是否微笑服务";
120
+ row10.value = rowdata.r10;
121
+ this.tableData.push(row10);
122
+
123
+ let row11 = {};
124
+ row11.seq = 11;
125
+ row11.title = "综合销售区商品销售人员是否主动服务";
126
+ row11.value = rowdata.r11;
127
+ this.tableData.push(row11);
128
+
129
+ let row12 = {};
130
+ row12.seq = 12;
131
+ row12.title = "1892艺术中心品酒讲解是否主动服务";
132
+ row12.value = rowdata.r12;
133
+ this.tableData.push(row12);
134
+
135
+ let row13 = {};
136
+ row13.seq = 13;
137
+ row13.title = "1892艺术中心品酒讲解是否微笑服务";
138
+ row13.value = rowdata.r13;
139
+ this.tableData.push(row13);
140
+
141
+ let row14 = {};
142
+ row14.seq = 14;
143
+ row14.title = "您对哪个项目最感兴趣";
144
+ row14.value = rowdata.r14;
145
+ this.tableData.push(row14);
146
+
147
+ let row15 = {};
148
+ row15.seq = 15;
149
+ row15.title = "意见及建议";
150
+ row15.value = rowdata.r15;
151
+ this.tableData.push(row15);
152
+
153
+ let row16 = {};
154
+ row16.seq = 16;
155
+ row16.title = "现场图片";
156
+ row16.value = this.splitImages(rowdata.r16);
157
+ this.tableData.push(row16);
158
+ },
159
+
160
+ splitImages(imgs) {
161
+ if (imgs) {
162
+ let images = imgs.split(",");
163
+ if (images && images.length > 0) {
164
+ let maps = images.map((item) => {
165
+ let param = {};
166
+ param.img = item;
167
+ let imgPre = [];
168
+ imgPre.push(item);
169
+ param.imgPre = imgPre;
170
+ return param;
171
+ });
172
+ imgs = maps;
173
+ } else {
174
+ imgs = [];
175
+ }
176
+ } else {
177
+ imgs = [];
178
+ }
179
+ return imgs;
180
+ },
181
+ },
182
+ };
183
+ </script>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "leisure-core",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "leisure-core是leisure-ui-core的简称,是京心数据基于vue2.0开发的一套后台系统框架与js库,包含登录,首页框架等",
5
5
  "private": false,
6
6
  "author": "北方乐逍遥(zcx7878)",