This commit is contained in:
pengxiaolong
2025-05-13 19:39:53 +08:00
parent 37da6765b8
commit c006a8e63d
1232 changed files with 96963 additions and 883 deletions

View File

@@ -0,0 +1,58 @@
"use strict";
const TUIKit_tuiCustomerServicePlugin_adapterVue = require("../../adapter-vue.js");
const TUIKit_tuiCustomerServicePlugin_utils_index = require("../../utils/index.js");
const TUIKit_tuiCustomerServicePlugin_constant = require("../../constant.js");
const common_vendor = require("../../../../common/vendor.js");
const RatingStar = () => "./message-rating-star.js";
const RatingNumber = () => "./message-rating-number.js";
const { computed } = TUIKit_tuiCustomerServicePlugin_adapterVue.vue;
const _sfc_main = {
components: {
RatingStar,
RatingNumber
},
props: {
message: {
type: Object,
default: () => ({})
}
},
emits: ["sendMessage"],
setup(props, { emit }) {
const ratingTemplate = computed(() => {
const data = props.message && TUIKit_tuiCustomerServicePlugin_utils_index.JSONToObject(props.message.payload.data);
return data == null ? void 0 : data.menuContent;
});
const sendCustomMessage = (data) => {
emit("sendMessage", data);
};
return {
sendCustomMessage,
ratingTemplate,
RATING_TEMPLATE_TYPE: TUIKit_tuiCustomerServicePlugin_constant.RATING_TEMPLATE_TYPE
};
}
};
if (!Array) {
const _component_RatingStar = common_vendor.resolveComponent("RatingStar");
const _component_RatingNumber = common_vendor.resolveComponent("RatingNumber");
(_component_RatingStar + _component_RatingNumber)();
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: $setup.ratingTemplate.type === $setup.RATING_TEMPLATE_TYPE.STAR
}, $setup.ratingTemplate.type === $setup.RATING_TEMPLATE_TYPE.STAR ? {
b: common_vendor.o$1($setup.sendCustomMessage),
c: common_vendor.p({
ratingTemplate: $setup.ratingTemplate
})
} : {
d: common_vendor.o$1($setup.sendCustomMessage),
e: common_vendor.p({
ratingTemplate: $setup.ratingTemplate
})
});
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../../../.sourcemap/mp-weixin/TUIKit/tui-customer-service-plugin/components/message-rating/index.js.map

View File

@@ -0,0 +1,7 @@
{
"component": true,
"usingComponents": {
"rating-star": "./message-rating-star",
"rating-number": "./message-rating-number"
}
}

View File

@@ -0,0 +1 @@
<rating-star wx:if="{{a}}" bindsendMessage="{{b}}" u-i="26f3a104-0" bind:__l="__l" u-p="{{c}}"/><rating-number wx:else bindsendMessage="{{d}}" u-i="26f3a104-1" bind:__l="__l" u-p="{{e||''}}"/>

View File

@@ -0,0 +1,115 @@
"use strict";
const TUIKit_tuiCustomerServicePlugin_adapterVue = require("../../adapter-vue.js");
const TUIKit_tuiCustomerServicePlugin_constant = require("../../constant.js");
const common_vendor = require("../../../../common/vendor.js");
const { computed, ref, watchEffect } = TUIKit_tuiCustomerServicePlugin_adapterVue.vue;
const _sfc_main = {
props: {
ratingTemplate: {
type: Object,
default: () => ({})
}
},
emits: ["sendMessage"],
setup(props, { emit }) {
const hasReply = ref(false);
const sessionId = ref("");
const selectValue = ref(-1);
const hoverValue = ref(-1);
const hasExpire = ref(false);
const desc = computed(() => {
var _a;
return (_a = props.ratingTemplate) == null ? void 0 : _a.menu.map((item) => item.content);
});
const numberList = computed(() => {
var _a;
return (_a = props.ratingTemplate) == null ? void 0 : _a.menu.map((item, index) => index);
});
watchEffect(() => {
sessionId.value = props.ratingTemplate.sessionId || "";
if (props.ratingTemplate.selected != void 0) {
for (let i = 0; i < props.ratingTemplate.menu.length; i++) {
if (props.ratingTemplate.menu[i].id == props.ratingTemplate.selected.id) {
hasReply.value = true;
selectValue.value = i;
break;
}
}
}
const timestamp = Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3);
if (timestamp > props.ratingTemplate.expireTime) {
hasExpire.value = true;
}
});
const setValue = (val) => {
if (!hasReply.value) {
selectValue.value = val;
}
};
const setHoverValue = (value) => {
if (!hasReply.value) {
hoverValue.value = value;
}
};
const submitRatingStar = () => {
if (selectValue.value >= 0) {
const submitData = {
data: JSON.stringify({
src: TUIKit_tuiCustomerServicePlugin_constant.CUSTOM_MESSAGE_SRC.MENU_SELECTED,
menuSelected: {
id: props.ratingTemplate.menu[selectValue.value].id,
content: props.ratingTemplate.menu[selectValue.value].content,
sessionId: sessionId.value
},
customerServicePlugin: 0
})
};
hasReply.value = true;
emit("sendMessage", submitData);
}
};
return {
props,
hasReply,
sessionId,
selectValue,
hoverValue,
hasExpire,
desc,
numberList,
setValue,
setHoverValue,
submitRatingStar
};
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: common_vendor.t($setup.props.ratingTemplate.head),
b: common_vendor.f($setup.numberList, (item, index, i0) => {
return {
a: common_vendor.t(item + 1),
b: index,
c: !(index !== $setup.selectValue && index !== $setup.hoverValue) ? 1 : "",
d: index !== $setup.selectValue && index !== $setup.hoverValue ? 1 : "",
e: index === 0 ? "0px" : "20px",
f: common_vendor.o$1(($event) => $setup.setValue(index), index),
g: common_vendor.o$1(($event) => $setup.setHoverValue(index), index),
h: common_vendor.o$1(($event) => $setup.setHoverValue(-1), index)
};
}),
c: "5px",
d: common_vendor.t($setup.hoverValue === -1 ? $setup.selectValue === -1 ? "如果满意请给好评哦~" : $setup.desc[$setup.selectValue] : $setup.desc[$setup.hoverValue]),
e: "10px",
f: "10px",
g: $setup.hasReply || $setup.hasExpire,
h: common_vendor.o$1((...args) => $setup.submitRatingStar && $setup.submitRatingStar(...args)),
i: $setup.hasReply
}, $setup.hasReply ? {
j: common_vendor.t($setup.props.ratingTemplate.tail),
k: "20px"
} : {});
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-1a21fdf4"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../../../.sourcemap/mp-weixin/TUIKit/tui-customer-service-plugin/components/message-rating/message-rating-number.js.map

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="message-rating-star data-v-1a21fdf4"><view class="rating-head data-v-1a21fdf4">{{a}}</view><view class="rating-card data-v-1a21fdf4"><label class="card-title data-v-1a21fdf4">请对本次服务进行评价</label><view class="card-wrapper data-v-1a21fdf4"><view class="data-v-1a21fdf4" style="max-width:250px"><view wx:for="{{b}}" wx:for-item="item" wx:key="b" class="{{['data-v-1a21fdf4', item.c && 'active', item.d && 'de-active']}}" style="{{'margin-left:' + item.e + ';' + ('margin:' + c)}}" bindtap="{{item.f}}" bindmouseenter="{{item.g}}" bindmouseleave="{{item.h}}">{{item.a}}</view></view></view><view class="data-v-1a21fdf4" style="{{'margin-top:' + e + ';' + ('margin-bottom:' + f)}}">{{d}}</view><button class="submit-button data-v-1a21fdf4" disabled="{{g}}" bindtap="{{h}}"> 提交评价 </button></view><view wx:if="{{i}}" class="rating-tail data-v-1a21fdf4" style="{{'margin-top:' + k}}">{{j}}</view></view>

View File

@@ -0,0 +1,103 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场https://ext.dcloud.net.cn上很多三方插件均使用了这些样式变量
* 如果你是插件开发者建议你使用scss预处理并在插件代码中直接使用这些变量无需 import 这个文件方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者插件使用者你可以通过修改这些变量来定制自己的插件主题实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.rating-head.data-v-1a21fdf4 {
font-size: 14px;
font-weight: 400;
color: #999;
}
.rating-tail.data-v-1a21fdf4 {
font-size: 14px;
font-weight: 400;
color: #999;
}
.card-title.data-v-1a21fdf4 {
font-size: 14px;
font-weight: 500;
}
.rating-card.data-v-1a21fdf4 {
min-width: 270px;
width: 50%;
background: #fbfbfb;
border-radius: 20px;
border: 0;
margin-top: 10px;
padding-top: 20px;
padding-bottom: 20px;
}
.rating-card button.data-v-1a21fdf4:disabled {
background: #d8d8d8;
}
.message-rating-star.data-v-1a21fdf4 {
text-align: center;
display: flex;
flex-flow: column wrap;
justify-content: center;
padding-bottom: 30px;
align-items: center;
}
.card-wrapper.data-v-1a21fdf4 {
display: flex;
flex-wrap: wrap;
justify-content: center;
padding-top: 10px;
}
.submit-button.data-v-1a21fdf4 {
width: 50%;
height: 50px;
background-color: #0365f9;
font-size: 18px;
font-weight: 400;
color: white;
border: 0;
border-radius: 8px;
cursor: pointer;
}
.de-active.data-v-1a21fdf4 {
height: 34px;
width: 34px;
display: inline-block;
border: 0 solid #006eff0d;
border-radius: 5px;
color: #006eff;
font-weight: 400;
font-size: 16px;
text-align: center;
line-height: 34px;
background: #006eff0d;
}
.active.data-v-1a21fdf4 {
width: 34px;
height: 34px;
display: inline-block;
background: linear-gradient(136.96deg, rgba(10, 124, 255, 0.3) -39.64%, #0a7cff 131.39%);
border-radius: 5px;
color: white;
font-weight: 400;
font-size: 16px;
border: 0 solid #0a7cff;
text-align: center;
line-height: 34px;
}

View File

@@ -0,0 +1,148 @@
"use strict";
const TUIKit_tuiCustomerServicePlugin_adapterVue = require("../../adapter-vue.js");
const TUIKit_tuiCustomerServicePlugin_constant = require("../../constant.js");
const common_assets = require("../../../../common/assets.js");
const common_vendor = require("../../../../common/vendor.js");
const Icon = () => "../customer-icon.js";
const { computed, ref, watchEffect } = TUIKit_tuiCustomerServicePlugin_adapterVue.vue;
const _sfc_main = {
components: {
Icon
},
props: {
ratingTemplate: {
type: Object,
default: () => ({})
}
},
emits: ["sendMessage"],
setup(props, { emit }) {
const hasReply = ref(false);
const sessionId = ref("");
const value = ref(-1);
const hoverValue = ref(-1);
const hasExpire = ref(false);
watchEffect(() => {
sessionId.value = props.ratingTemplate.sessionId || "";
if (props.ratingTemplate.selected != void 0) {
for (let i = 0; i < props.ratingTemplate.menu.length; i++) {
if (props.ratingTemplate.menu[i].id == props.ratingTemplate.selected.id) {
hasReply.value = true;
value.value = i;
break;
}
}
}
const timestamp = Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3);
if (timestamp > props.ratingTemplate.expireTime) {
hasExpire.value = true;
}
});
const desc = computed(() => {
var _a;
return (_a = props.ratingTemplate) == null ? void 0 : _a.menu.map((item) => {
return item.content;
});
});
const starList = computed(() => {
var _a;
return (_a = props.ratingTemplate) == null ? void 0 : _a.menu.map((item, index) => {
if (hoverValue.value !== -1) {
return index <= hoverValue.value ? 1 : 0;
} else {
return index <= value.value ? 1 : 0;
}
});
});
const setValue = (val) => {
if (hasReply.value) {
return;
}
value.value = val;
};
const setHoverValue = (value2) => {
if (hasReply.value) {
return;
}
hoverValue.value = value2;
};
const submitRatingStar = async () => {
if (value.value < 0) {
return;
}
const submitData = {
data: JSON.stringify({
src: TUIKit_tuiCustomerServicePlugin_constant.CUSTOM_MESSAGE_SRC.MENU_SELECTED,
menuSelected: {
id: props.ratingTemplate.menu[value.value].id,
content: props.ratingTemplate.menu[value.value].content,
sessionId: sessionId.value
},
customerServicePlugin: 0
})
};
hasReply.value = true;
emit("sendMessage", submitData);
};
return {
props,
hasReply,
sessionId,
value,
hoverValue,
hasExpire,
desc,
starList,
setValue,
setHoverValue,
submitRatingStar,
star: common_assets.star$1,
starLine: common_assets.starLine
};
}
};
if (!Array) {
const _component_Icon = common_vendor.resolveComponent("Icon");
_component_Icon();
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: common_vendor.t($setup.props.ratingTemplate.head),
b: common_vendor.f($setup.starList, (item, index, i0) => {
return common_vendor.e({
a: item === 1
}, item === 1 ? {
b: "da3c7d81-0-" + i0,
c: common_vendor.p({
src: $setup.star,
width: "30px",
height: "30px"
})
} : {
d: "da3c7d81-1-" + i0,
e: common_vendor.p({
src: $setup.starLine,
width: "30px",
height: "30px"
})
}, {
f: index,
g: common_vendor.o$1(($event) => $setup.setValue(index), index),
h: common_vendor.o$1(($event) => $setup.setHoverValue(index), index),
i: common_vendor.o$1(($event) => $setup.setHoverValue(-1), index)
});
}),
c: common_vendor.t($setup.hoverValue === -1 ? $setup.value === -1 ? "如果满意请给好评哦~" : $setup.desc[$setup.value] : $setup.desc[$setup.hoverValue]),
d: "10px",
e: "10px",
f: $setup.hasReply || $setup.hasExpire,
g: common_vendor.o$1((...args) => $setup.submitRatingStar && $setup.submitRatingStar(...args)),
h: $setup.hasReply
}, $setup.hasReply ? {
i: common_vendor.t($setup.props.ratingTemplate.tail),
j: "20px"
} : {});
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-da3c7d81"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../../../.sourcemap/mp-weixin/TUIKit/tui-customer-service-plugin/components/message-rating/message-rating-star.js.map

View File

@@ -0,0 +1,6 @@
{
"component": true,
"usingComponents": {
"icon": "../customer-icon"
}
}

View File

@@ -0,0 +1 @@
<view class="message-rating-star data-v-da3c7d81"><view class="rating-head data-v-da3c7d81">{{a}}</view><view class="rating-card data-v-da3c7d81"><label class="card-title data-v-da3c7d81">请对本次服务进行评价</label><view class="card-wrapper data-v-da3c7d81"><view class="data-v-da3c7d81" style="max-width:200px"><view wx:for="{{b}}" wx:for-item="item" wx:key="f" class="data-v-da3c7d81" style="display:inline-block" bindtap="{{item.g}}" bindmouseenter="{{item.h}}" bindmouseleave="{{item.i}}"><icon wx:if="{{item.a}}" class="data-v-da3c7d81" u-i="{{item.b}}" bind:__l="__l" u-p="{{item.c}}"/><icon wx:else class="data-v-da3c7d81" u-i="{{item.d}}" bind:__l="__l" u-p="{{item.e||''}}"/></view></view></view><view class="data-v-da3c7d81" style="{{'margin-top:' + d + ';' + ('margin-bottom:' + e)}}">{{c}}</view><button class="submit-button data-v-da3c7d81" disabled="{{f}}" bindtap="{{g}}"> 提交评价 </button></view><view wx:if="{{h}}" class="rating-tail data-v-da3c7d81" style="{{'margin-top:' + j}}">{{i}}</view></view>

View File

@@ -0,0 +1,77 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场https://ext.dcloud.net.cn上很多三方插件均使用了这些样式变量
* 如果你是插件开发者建议你使用scss预处理并在插件代码中直接使用这些变量无需 import 这个文件方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者插件使用者你可以通过修改这些变量来定制自己的插件主题实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.rating-head.data-v-da3c7d81 {
font-size: 14px;
font-weight: 400;
color: #999;
}
.rating-tail.data-v-da3c7d81 {
font-size: 14px;
font-weight: 400;
color: #999;
}
.card-title.data-v-da3c7d81 {
font-size: 14px;
font-weight: 500;
}
.rating-card.data-v-da3c7d81 {
min-width: 270px;
width: 50%;
background: #fbfbfb;
border-radius: 20px;
border: 0;
margin-top: 10px;
padding-top: 20px;
padding-bottom: 20px;
}
.rating-card button.data-v-da3c7d81:disabled {
background: #d8d8d8;
}
.message-rating-star.data-v-da3c7d81 {
text-align: center;
display: flex;
flex-flow: column wrap;
justify-content: center;
padding-bottom: 30px;
align-items: center;
}
.card-wrapper.data-v-da3c7d81 {
display: flex;
flex-wrap: wrap;
justify-content: center;
padding-top: 10px;
}
.submit-button.data-v-da3c7d81 {
width: 50%;
height: 50px;
background-color: #0365f9;
font-size: 18px;
font-weight: 400;
color: white;
border: 0;
border-radius: 8px;
cursor: pointer;
}