if (typeof Promise !== "undefined" && !Promise.prototype.finally) {
Promise.prototype.finally = function(callback) {
const promise = this.constructor;
return this.then(
(value) => promise.resolve(callback()).then(() => value),
(reason) => promise.resolve(callback()).then(() => {
throw reason;
})
);
};
}
;
if (typeof uni !== "undefined" && uni && uni.requireGlobal) {
const global2 = uni.requireGlobal();
ArrayBuffer = global2.ArrayBuffer;
Int8Array = global2.Int8Array;
Uint8Array = global2.Uint8Array;
Uint8ClampedArray = global2.Uint8ClampedArray;
Int16Array = global2.Int16Array;
Uint16Array = global2.Uint16Array;
Int32Array = global2.Int32Array;
Uint32Array = global2.Uint32Array;
Float32Array = global2.Float32Array;
Float64Array = global2.Float64Array;
BigInt64Array = global2.BigInt64Array;
BigUint64Array = global2.BigUint64Array;
}
;
if (uni.restoreGlobal) {
uni.restoreGlobal(Vue, weex, plus, setTimeout, clearTimeout, setInterval, clearInterval);
}
(function(vue) {
"use strict";
const _export_sfc = (sfc, props2) => {
const target = sfc.__vccOpts || sfc;
for (const [key, val] of props2) {
target[key] = val;
}
return target;
};
const _sfc_main$2y = {
data() {
return {};
},
onLoad() {
this.navigatHandler();
},
methods: {
navigatHandler: function() {
uni.reLaunch({
url: "/pages/index/index",
animationType: "pop-in",
animationDuration: 100
});
}
}
};
function _sfc_render$2L(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view")
]);
}
const PagesCommonLaunch = /* @__PURE__ */ _export_sfc(_sfc_main$2y, [["render", _sfc_render$2L], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/common/launch.vue"]]);
const ON_SHOW = "onShow";
const ON_LOAD = "onLoad";
const ON_READY = "onReady";
const ON_UNLOAD = "onUnload";
const ON_NAVIGATION_BAR_BUTTON_TAP = "onNavigationBarButtonTap";
function requireNativePlugin(name) {
return weex.requireModule(name);
}
function formatAppLog(type2, filename, ...args) {
if (uni.__log__) {
uni.__log__(type2, filename, ...args);
} else {
console[type2].apply(console, [...args, filename]);
}
}
function resolveEasycom(component, easycom) {
return typeof component === "string" ? easycom : component;
}
const createHook = (lifecycle) => (hook, target = vue.getCurrentInstance()) => {
!vue.isInSSRComponentSetup && vue.injectHook(lifecycle, hook, target);
};
const onShow = /* @__PURE__ */ createHook(ON_SHOW);
const onLoad = /* @__PURE__ */ createHook(ON_LOAD);
const onReady = /* @__PURE__ */ createHook(ON_READY);
const onUnload = /* @__PURE__ */ createHook(ON_UNLOAD);
const onNavigationBarButtonTap = /* @__PURE__ */ createHook(ON_NAVIGATION_BAR_BUTTON_TAP);
let Request$1 = class Request {
http(router, data = {}, method, contentType) {
let path = "https://userapp.his.cdwjyyh.com";
uni.setStorageSync("requestPath", path);
return new Promise((resolve, reject2) => {
let token = uni.getStorageSync("AppToken");
let CompanyUserToken = uni.getStorageSync("CompanyUserToken");
var httpContentType = "application/x-www-form-urlencoded";
if (contentType != void 0) {
httpContentType = contentType;
}
uni.request({
header: {
// 'Content-Type': 'application/x-www-form-urlencoded',
"Content-Type": httpContentType,
"AppToken": token,
"CompanyUserToken": CompanyUserToken
},
url: `${path}${router}`,
data,
method,
success: (res) => {
if (res.data.code == 401) {
let pages2 = getCurrentPages();
let url2 = pages2[pages2.length - 1];
formatAppLog("log", "at common/request.js:37", url2);
if (url2 != void 0 && url2.route == "pages/auth/login") {
resolve(res.data);
return;
}
uni.navigateTo({
url: "/pages/auth/login",
success: () => {
},
fail: () => {
}
});
return;
}
if (res.data.token) {
uni.setStorageSync("AppToken", res.data.token);
}
resolve(res.data);
},
fail: (res) => {
},
complete: (res) => {
if (res.data.code == 401) {
return false;
}
}
});
});
}
};
let request$n = new Request$1().http;
function wxLogin(data) {
return request$n("/app/wx/login", data, "POST", "application/json;charset=UTF-8");
}
function loginByMiniApp(data) {
return request$n("/app/wx/loginByMiniApp", data, "POST", "application/json;charset=UTF-8");
}
function getUserInfo$1() {
return request$n("/app/user/getUserInfo", null, "GET");
}
function checkLogin() {
return request$n("/app/user/checkLogin", null, "GET");
}
function editUser(data) {
return request$n("/app/user/editUser", data, "POST", "application/json;charset=UTF-8");
}
function registerDoctor(data) {
return request$n("/app/user/registerDoctor", data, "POST", "application/json;charset=UTF-8");
}
function getMyCouponList(data) {
return request$n("/app/user/getMyCouponList", data, "GET");
}
function getMyEnableCouponList(data) {
return request$n("/app/user/getMyEnableCouponList", data, "GET");
}
const _sfc_main$2x = {
data() {
return {
isAgreement: false,
code: null
};
},
computed: {},
onLoad(option) {
uni.$on("refreshLogin", () => {
uni.navigateBack({
delta: 1
});
});
this.getCode();
},
onUnload() {
},
mounted() {
},
methods: {
wxLogin() {
var that = this;
if (!this.isAgreement) {
uni.showToast({
icon: "none",
title: "请先同意协议后再登录"
});
return false;
}
uni.showLoading({
title: "处理中..."
});
that.$getProvider().then((provider) => {
formatAppLog("log", "at pages/auth/login.vue:78", "当前的环境商", provider);
if (!provider) {
reject();
}
uni.login({
provider,
success: async (loginRes) => {
formatAppLog("log", "at pages/auth/login.vue:86", loginRes);
let code2 = loginRes.code;
var tuiUserId = uni.getStorageSync("tuiUserId");
loginByMiniApp({
// encryptedData: e.mp.detail.encryptedData,
// iv: e.mp.detail.iv,
code: code2,
tuiUserId
}).then((res) => {
uni.hideLoading();
if (res.code == 200) {
uni.showToast({
icon: "none",
title: "登录成功"
});
uni.setStorageSync("AppToken", res.token);
uni.setStorageSync("userId", res.user.userId);
uni.setStorageSync("avatar", res.user.avatar);
uni.setStorageSync("nickName", res.user.nickName);
uni.$emit("refreshLogin");
} else {
uni.showToast({
icon: "none",
title: "授权登录失败,请重新登录"
});
}
}).catch((error2) => {
formatAppLog("log", "at pages/auth/login.vue:119", error2);
uni.hideLoading();
uni.showToast({
icon: "none",
title: "登录接口调用失败"
});
});
}
});
}).catch((err) => {
uni.showToast({
icon: "none",
title: err
});
});
},
handleAgree() {
if (!this.isAgreement) {
uni.showToast({
icon: "none",
title: "请先同意协议后再登录"
});
}
},
openContent(type2) {
formatAppLog("log", "at pages/auth/login.vue:146", type2);
uni.navigateTo({
url: "/pages_user/agreement?type=" + type2
});
},
handleAgreement() {
this.isAgreement = !this.isAgreement;
},
getCode() {
var that = this;
that.$getProvider().then((provider) => {
if (!provider) {
reject();
}
uni.login({
provider,
success: async (loginRes) => {
that.code = loginRes.code;
}
});
}).catch((err) => {
});
},
// 微信用户手机号登录
phoneLogin(e) {
uni.showLoading({
title: "处理中"
});
formatAppLog("log", "at pages/auth/login.vue:181", e);
if (e.detail.errMsg == "getPhoneNumber:ok") {
this.$getProvider().then((provider) => {
formatAppLog("log", "at pages/auth/login.vue:185", "当前的环境商", provider);
if (!provider) {
reject();
}
uni.login({
provider,
success: async (loginRes) => {
formatAppLog("log", "at pages/auth/login.vue:193", loginRes);
let code2 = loginRes.code;
var tuiUserId = uni.getStorageSync("tuiUserId");
wxLogin({
encryptedData: e.detail.encryptedData,
iv: e.detail.iv,
code: code2,
tuiUserId
}).then((res) => {
uni.hideLoading();
if (res.code == 200) {
uni.showToast({
icon: "none",
title: "登录成功"
});
uni.setStorageSync("AppToken", res.token);
uni.setStorageSync("userId", res.user.userId);
uni.setStorageSync("avatar", res.user.avatar);
uni.setStorageSync("nickName", res.user.nickName);
uni.$emit("refreshLogin");
uni.$emit("refreshIM");
} else {
uni.showToast({
icon: "none",
title: "授权登录失败,请重新登录"
});
}
}).catch((error2) => {
formatAppLog("log", "at pages/auth/login.vue:226", error2);
uni.hideLoading();
uni.showToast({
icon: "none",
title: "授权登录失败,请重新登录"
});
});
}
});
}).catch((err) => {
});
} else {
uni.showToast({
title: "已拒绝授权",
icon: "none",
duration: 2e3
});
}
},
back() {
uni.reLaunch({
url: "/pages/index/index",
animationType: "pop-in",
animationDuration: 100
});
}
}
};
function _sfc_render$2K(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "force-login-wrap" }, [
vue.createElementVNode("view", { class: "force-login__content y-f" }, [
vue.createElementVNode("view", { class: "logo" }, [
vue.createElementVNode("view", { class: "logo-img" }, [
vue.createElementVNode("image", { src: "https://cos.his.cdwjyyh.com/fs/20240423/1287b2bf7c944538905f5092e8ff7db9.png" })
]),
vue.createElementVNode("view", { class: "title" }, "芸医汇互联网医院")
]),
vue.createElementVNode("view", { class: "login-notice" }, "为了提供更优质的服务,请先登录"),
vue.createElementVNode("view", { class: "btns" }, [
vue.createElementVNode(
"button",
{
class: "author-btn",
"open-type": "getPhoneNumber",
onGetphonenumber: _cache[0] || (_cache[0] = (...args) => $options.phoneLogin && $options.phoneLogin(...args))
},
"一键授权手机号登录",
32
/* NEED_HYDRATION */
),
$data.isAgreement == false ? (vue.openBlock(), vue.createElementBlock("button", {
key: 0,
class: "author-btn",
onClick: _cache[1] || (_cache[1] = ($event) => $options.handleAgree())
}, "一键授权手机号登录")) : vue.createCommentVNode("v-if", true)
]),
vue.createCommentVNode(' '),
vue.createElementVNode("button", {
class: "close-btn",
onClick: _cache[2] || (_cache[2] = (...args) => $options.back && $options.back(...args))
}, "暂不登录"),
vue.createElementVNode("view", { class: "tips" }, [
vue.createElementVNode("checkbox", {
checked: $data.isAgreement,
onClick: _cache[3] || (_cache[3] = ($event) => $options.handleAgreement())
}, null, 8, ["checked"]),
vue.createElementVNode("view", {
onClick: _cache[4] || (_cache[4] = ($event) => $options.handleAgreement())
}, "您同意并接受"),
vue.createElementVNode("view", {
class: "btn",
onClick: _cache[5] || (_cache[5] = ($event) => $options.openContent("userRegister"))
}, "《用户协议》"),
vue.createElementVNode("view", {
class: "btn",
onClick: _cache[6] || (_cache[6] = ($event) => $options.openContent("userPrivacy"))
}, "《隐私保护》")
])
])
])
]);
}
const PagesAuthLogin = /* @__PURE__ */ _export_sfc(_sfc_main$2x, [["render", _sfc_render$2K], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/auth/login.vue"]]);
const version = "3";
{
formatAppLog("log", "at uni_modules/uview-plus/libs/config/config.js:5", `
%c uview-plus V${version} %c https://ijry.github.io/uview-plus/
`, "color: #ffffff; background: #3c9cff; padding:5px 0;", "color: #3c9cff;background: #ffffff; padding:5px 0;");
}
const config$2 = {
v: version,
version,
// 主题名称
type: [
"primary",
"success",
"info",
"error",
"warning"
],
// 颜色部分,本来可以通过scss的:export导出供js使用,但是奈何nvue不支持
color: {
"u-primary": "#2979ff",
"u-warning": "#ff9900",
"u-success": "#19be6b",
"u-error": "#fa3534",
"u-info": "#909399",
"u-main-color": "#303133",
"u-content-color": "#606266",
"u-tips-color": "#909399",
"u-light-color": "#c0c4cc"
},
// 默认单位,可以通过配置为rpx,那么在用于传入组件大小参数为数值时,就默认为rpx
unit: "px"
};
const ActionSheet = {
// action-sheet组件
actionSheet: {
show: false,
title: "",
description: "",
actions: () => [],
index: "",
cancelText: "",
closeOnClickAction: true,
safeAreaInsetBottom: true,
openType: "",
closeOnClickOverlay: true,
round: 0
}
};
const Album = {
// album 组件
album: {
urls: () => [],
keyName: "",
singleSize: 180,
multipleSize: 70,
space: 6,
singleMode: "scaleToFill",
multipleMode: "aspectFill",
maxCount: 9,
previewFullImage: true,
rowCount: 3,
showMore: true
}
};
const Alert = {
// alert警告组件
alert: {
title: "",
type: "warning",
description: "",
closable: false,
showIcon: false,
effect: "light",
center: false,
fontSize: 14
}
};
const Avatar = {
// avatar 组件
avatar: {
src: "",
shape: "circle",
size: 40,
mode: "scaleToFill",
text: "",
bgColor: "#c0c4cc",
color: "#ffffff",
fontSize: 18,
icon: "",
mpAvatar: false,
randomBgColor: false,
defaultUrl: "",
colorIndex: "",
name: ""
}
};
const AvatarGroup = {
// avatarGroup 组件
avatarGroup: {
urls: () => [],
maxCount: 5,
shape: "circle",
mode: "scaleToFill",
showMore: true,
size: 40,
keyName: "",
gap: 0.5,
extraValue: 0
}
};
const Backtop = {
// backtop组件
backtop: {
mode: "circle",
icon: "arrow-upward",
text: "",
duration: 100,
scrollTop: 0,
top: 400,
bottom: 100,
right: 20,
zIndex: 9,
iconStyle: () => ({
color: "#909399",
fontSize: "19px"
})
}
};
const Badge = {
// 徽标数组件
badge: {
isDot: false,
value: "",
show: true,
max: 999,
type: "error",
showZero: false,
bgColor: null,
color: null,
shape: "circle",
numberType: "overflow",
offset: () => [],
inverted: false,
absolute: false
}
};
const Button = {
// button组件
button: {
hairline: false,
type: "info",
size: "normal",
shape: "square",
plain: false,
disabled: false,
loading: false,
loadingText: "",
loadingMode: "spinner",
loadingSize: 15,
openType: "",
formType: "",
appParameter: "",
hoverStopPropagation: true,
lang: "en",
sessionFrom: "",
sendMessageTitle: "",
sendMessagePath: "",
sendMessageImg: "",
showMessageCard: false,
dataName: "",
throttleTime: 0,
hoverStartTime: 0,
hoverStayTime: 200,
text: "",
icon: "",
iconColor: "",
color: ""
}
};
const Calendar = {
// calendar 组件
calendar: {
title: "日期选择",
showTitle: true,
showSubtitle: true,
mode: "single",
startText: "开始",
endText: "结束",
customList: () => [],
color: "#3c9cff",
minDate: 0,
maxDate: 0,
defaultDate: null,
maxCount: Number.MAX_SAFE_INTEGER,
// Infinity
rowHeight: 56,
formatter: null,
showLunar: false,
showMark: true,
confirmText: "确定",
confirmDisabledText: "确定",
show: false,
closeOnClickOverlay: false,
readonly: false,
showConfirm: true,
maxRange: Number.MAX_SAFE_INTEGER,
// Infinity
rangePrompt: "",
showRangePrompt: true,
allowSameDay: false,
round: 0,
monthNum: 3
}
};
const CarKeyboard = {
// 车牌号键盘
carKeyboard: {
random: false
}
};
const Cell = {
// cell组件的props
cell: {
customClass: "",
title: "",
label: "",
value: "",
icon: "",
disabled: false,
border: true,
center: false,
url: "",
linkType: "navigateTo",
clickable: false,
isLink: false,
required: false,
arrowDirection: "",
iconStyle: {},
rightIconStyle: {},
rightIcon: "arrow-right",
titleStyle: {},
size: "",
stop: true,
name: ""
}
};
const CellGroup = {
// cell-group组件的props
cellGroup: {
title: "",
border: true,
customStyle: {}
}
};
const Checkbox = {
// checkbox组件
checkbox: {
name: "",
shape: "",
size: "",
checkbox: false,
disabled: "",
activeColor: "",
inactiveColor: "",
iconSize: "",
iconColor: "",
label: "",
labelSize: "",
labelColor: "",
labelDisabled: ""
}
};
const CheckboxGroup = {
// checkbox-group组件
checkboxGroup: {
name: "",
value: () => [],
shape: "square",
disabled: false,
activeColor: "#2979ff",
inactiveColor: "#c8c9cc",
size: 18,
placement: "row",
labelSize: 14,
labelColor: "#303133",
labelDisabled: false,
iconColor: "#ffffff",
iconSize: 12,
iconPlacement: "left",
borderBottom: false
}
};
const CircleProgress = {
// circleProgress 组件
circleProgress: {
percentage: 30
}
};
const Code = {
// code 组件
code: {
seconds: 60,
startText: "获取验证码",
changeText: "X秒重新获取",
endText: "重新获取",
keepRunning: false,
uniqueKey: ""
}
};
const CodeInput = {
// codeInput 组件
codeInput: {
adjustPosition: true,
maxlength: 6,
dot: false,
mode: "box",
hairline: false,
space: 10,
value: "",
focus: false,
bold: false,
color: "#606266",
fontSize: 18,
size: 35,
disabledKeyboard: false,
borderColor: "#c9cacc",
disabledDot: true
}
};
const Col = {
// col 组件
col: {
span: 12,
offset: 0,
justify: "start",
align: "stretch",
textAlign: "left"
}
};
const Collapse = {
// collapse 组件
collapse: {
value: null,
accordion: false,
border: true
}
};
const CollapseItem = {
// collapseItem 组件
collapseItem: {
title: "",
value: "",
label: "",
disabled: false,
isLink: true,
clickable: true,
border: true,
align: "left",
name: "",
icon: "",
duration: 300
}
};
const ColumnNotice = {
// columnNotice 组件
columnNotice: {
text: "",
icon: "volume",
mode: "",
color: "#f9ae3d",
bgColor: "#fdf6ec",
fontSize: 14,
speed: 80,
step: false,
duration: 1500,
disableTouch: true
}
};
const CountDown = {
// u-count-down 计时器组件
countDown: {
time: 0,
format: "HH:mm:ss",
autoStart: true,
millisecond: false
}
};
const CountTo = {
// countTo 组件
countTo: {
startVal: 0,
endVal: 0,
duration: 2e3,
autoplay: true,
decimals: 0,
useEasing: true,
decimal: ".",
color: "#606266",
fontSize: 22,
bold: false,
separator: ""
}
};
const DatetimePicker = {
// datetimePicker 组件
datetimePicker: {
show: false,
showToolbar: true,
value: "",
title: "",
mode: "datetime",
maxDate: new Date((/* @__PURE__ */ new Date()).getFullYear() + 10, 0, 1).getTime(),
minDate: new Date((/* @__PURE__ */ new Date()).getFullYear() - 10, 0, 1).getTime(),
minHour: 0,
maxHour: 23,
minMinute: 0,
maxMinute: 59,
filter: null,
formatter: null,
loading: false,
itemHeight: 44,
cancelText: "取消",
confirmText: "确认",
cancelColor: "#909193",
confirmColor: "#3c9cff",
visibleItemCount: 5,
closeOnClickOverlay: false,
defaultIndex: () => []
}
};
const Divider = {
// divider组件
divider: {
dashed: false,
hairline: true,
dot: false,
textPosition: "center",
text: "",
textSize: 14,
textColor: "#909399",
lineColor: "#dcdfe6"
}
};
const Empty = {
// empty组件
empty: {
icon: "",
text: "",
textColor: "#c0c4cc",
textSize: 14,
iconColor: "#c0c4cc",
iconSize: 90,
mode: "data",
width: 160,
height: 160,
show: true,
marginTop: 0
}
};
const Form = {
// form 组件
form: {
model: () => ({}),
rules: () => ({}),
errorType: "message",
borderBottom: true,
labelPosition: "left",
labelWidth: 45,
labelAlign: "left",
labelStyle: () => ({})
}
};
const GormItem = {
// formItem 组件
formItem: {
label: "",
prop: "",
borderBottom: "",
labelWidth: "",
rightIcon: "",
leftIcon: "",
required: false,
leftIconStyle: ""
}
};
const Gap = {
// gap组件
gap: {
bgColor: "transparent",
height: 20,
marginTop: 0,
marginBottom: 0,
customStyle: {}
}
};
const Grid = {
// grid组件
grid: {
col: 3,
border: false,
align: "left"
}
};
const GridItem = {
// grid-item组件
gridItem: {
name: null,
bgColor: "transparent"
}
};
const {
color: color$3
} = config$2;
const Icon = {
// icon组件
icon: {
name: "",
color: color$3["u-content-color"],
size: "16px",
bold: false,
index: "",
hoverClass: "",
customPrefix: "uicon",
label: "",
labelPos: "right",
labelSize: "15px",
labelColor: color$3["u-content-color"],
space: "3px",
imgMode: "",
width: "",
height: "",
top: 0,
stop: false
}
};
const Image$1 = {
// image组件
image: {
src: "",
mode: "aspectFill",
width: "300",
height: "225",
shape: "square",
radius: 0,
lazyLoad: true,
showMenuByLongpress: true,
loadingIcon: "photo",
errorIcon: "error-circle",
showLoading: true,
showError: true,
fade: true,
webp: false,
duration: 500,
bgColor: "#f3f4f6"
}
};
const IndexAnchor = {
// indexAnchor 组件
indexAnchor: {
text: "",
color: "#606266",
size: 14,
bgColor: "#dedede",
height: 32
}
};
const IndexList = {
// indexList 组件
indexList: {
inactiveColor: "#606266",
activeColor: "#5677fc",
indexList: () => [],
sticky: true,
customNavHeight: 0
}
};
const Input = {
// index 组件
input: {
value: "",
type: "text",
fixed: false,
disabled: false,
disabledColor: "#f5f7fa",
clearable: false,
password: false,
maxlength: -1,
placeholder: null,
placeholderClass: "input-placeholder",
placeholderStyle: "color: #c0c4cc",
showWordLimit: false,
confirmType: "done",
confirmHold: false,
holdKeyboard: false,
focus: false,
autoBlur: false,
disableDefaultPadding: false,
cursor: -1,
cursorSpacing: 30,
selectionStart: -1,
selectionEnd: -1,
adjustPosition: true,
inputAlign: "left",
fontSize: "15px",
color: "#303133",
prefixIcon: "",
prefixIconStyle: "",
suffixIcon: "",
suffixIconStyle: "",
border: "surround",
readonly: false,
shape: "square",
formatter: null
}
};
const Keyboard = {
// 键盘组件
keyboard: {
mode: "number",
dotDisabled: false,
tooltip: true,
showTips: true,
tips: "",
showCancel: true,
showConfirm: true,
random: false,
safeAreaInsetBottom: true,
closeOnClickOverlay: true,
show: false,
overlay: true,
zIndex: 10075,
cancelText: "取消",
confirmText: "确定",
autoChange: false
}
};
const Line = {
// line组件
line: {
color: "#d6d7d9",
length: "100%",
direction: "row",
hairline: true,
margin: 0,
dashed: false
}
};
const LineProgress = {
// lineProgress 组件
lineProgress: {
activeColor: "#19be6b",
inactiveColor: "#ececec",
percentage: 0,
showText: true,
height: 12
}
};
const {
color: color$2
} = config$2;
const Link = {
// link超链接组件props参数
link: {
color: color$2["u-primary"],
fontSize: 15,
underLine: false,
href: "",
mpTips: "链接已复制,请在浏览器打开",
lineColor: "",
text: ""
}
};
const List = {
// list 组件
list: {
showScrollbar: false,
lowerThreshold: 50,
upperThreshold: 0,
scrollTop: 0,
offsetAccuracy: 10,
enableFlex: false,
pagingEnabled: false,
scrollable: true,
scrollIntoView: "",
scrollWithAnimation: false,
enableBackToTop: false,
height: 0,
width: 0,
preLoadScreen: 1
}
};
const ListItem = {
// listItem 组件
listItem: {
anchor: ""
}
};
const {
color: color$1
} = config$2;
const LoadingIcon = {
// loading-icon加载中图标组件
loadingIcon: {
show: true,
color: color$1["u-tips-color"],
textColor: color$1["u-tips-color"],
vertical: false,
mode: "spinner",
size: 24,
textSize: 15,
text: "",
timingFunction: "ease-in-out",
duration: 1200,
inactiveColor: ""
}
};
const LoadingPage = {
// loading-page组件
loadingPage: {
loadingText: "正在加载",
image: "",
loadingMode: "circle",
loading: false,
bgColor: "#ffffff",
color: "#C8C8C8",
fontSize: 19,
iconSize: 28,
loadingColor: "#C8C8C8"
}
};
const Loadmore = {
// loadmore 组件
loadmore: {
status: "loadmore",
bgColor: "transparent",
icon: true,
fontSize: 14,
iconSize: 17,
color: "#606266",
loadingIcon: "spinner",
loadmoreText: "加载更多",
loadingText: "正在加载...",
nomoreText: "没有更多了",
isDot: false,
iconColor: "#b7b7b7",
marginTop: 10,
marginBottom: 10,
height: "auto",
line: false,
lineColor: "#E6E8EB",
dashed: false
}
};
const Modal = {
// modal 组件
modal: {
show: false,
title: "",
content: "",
confirmText: "确认",
cancelText: "取消",
showConfirmButton: true,
showCancelButton: false,
confirmColor: "#2979ff",
cancelColor: "#606266",
buttonReverse: false,
zoom: true,
asyncClose: false,
closeOnClickOverlay: false,
negativeTop: 0,
width: "650rpx",
confirmButtonShape: ""
}
};
const color = {
primary: "#3c9cff",
info: "#909399",
default: "#909399",
warning: "#f9ae3d",
error: "#f56c6c",
success: "#5ac725",
mainColor: "#303133",
contentColor: "#606266",
tipsColor: "#909399",
lightColor: "#c0c4cc",
borderColor: "#e4e7ed"
};
const Navbar = {
// navbar 组件
navbar: {
safeAreaInsetTop: true,
placeholder: false,
fixed: true,
border: false,
leftIcon: "arrow-left",
leftText: "",
rightText: "",
rightIcon: "",
title: "",
bgColor: "#ffffff",
titleWidth: "400rpx",
height: "44px",
leftIconSize: 20,
leftIconColor: color.mainColor,
autoBack: false,
titleStyle: ""
}
};
const NoNetwork = {
// noNetwork
noNetwork: {
tips: "哎呀,网络信号丢失",
zIndex: "",
image: "data:image/png;base64,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"
}
};
const NoticeBar = {
// noticeBar
noticeBar: {
text: () => [],
direction: "row",
step: false,
icon: "volume",
mode: "",
color: "#f9ae3d",
bgColor: "#fdf6ec",
speed: 80,
fontSize: 14,
duration: 2e3,
disableTouch: true,
url: "",
linkType: "navigateTo"
}
};
const Notify = {
// notify组件
notify: {
top: 0,
type: "primary",
color: "#ffffff",
bgColor: "",
message: "",
duration: 3e3,
fontSize: 15,
safeAreaInsetTop: false
}
};
const NumberBox = {
// 步进器组件
numberBox: {
name: "",
value: 0,
min: 1,
max: Number.MAX_SAFE_INTEGER,
step: 1,
integer: false,
disabled: false,
disabledInput: false,
asyncChange: false,
inputWidth: 35,
showMinus: true,
showPlus: true,
decimalLength: null,
longPress: true,
color: "#323233",
buttonSize: 30,
bgColor: "#EBECEE",
cursorSpacing: 100,
disableMinus: false,
disablePlus: false,
iconStyle: ""
}
};
const NumberKeyboard = {
// 数字键盘
numberKeyboard: {
mode: "number",
dotDisabled: false,
random: false
}
};
const Overlay = {
// overlay组件
overlay: {
show: false,
zIndex: 10070,
duration: 300,
opacity: 0.5
}
};
const Parse = {
// parse
parse: {
copyLink: true,
errorImg: "",
lazyLoad: false,
loadingImg: "",
pauseVideo: true,
previewImg: true,
setTitle: true,
showImgMenu: true
}
};
const Picker = {
// picker
picker: {
show: false,
showToolbar: true,
title: "",
columns: () => [],
loading: false,
itemHeight: 44,
cancelText: "取消",
confirmText: "确定",
cancelColor: "#909193",
confirmColor: "#3c9cff",
visibleItemCount: 5,
keyName: "text",
closeOnClickOverlay: false,
defaultIndex: () => [],
immediateChange: false
}
};
const Popup = {
// popup组件
popup: {
show: false,
overlay: true,
mode: "bottom",
duration: 300,
closeable: false,
overlayStyle: () => {
},
closeOnClickOverlay: true,
zIndex: 10075,
safeAreaInsetBottom: true,
safeAreaInsetTop: false,
closeIconPos: "top-right",
round: 0,
zoom: true,
bgColor: "",
overlayOpacity: 0.5
}
};
const Radio = {
// radio组件
radio: {
name: "",
shape: "",
disabled: "",
labelDisabled: "",
activeColor: "",
inactiveColor: "",
iconSize: "",
labelSize: "",
label: "",
labelColor: "",
size: "",
iconColor: "",
placement: ""
}
};
const RadioGroup = {
// radio-group组件
radioGroup: {
value: "",
disabled: false,
shape: "circle",
activeColor: "#2979ff",
inactiveColor: "#c8c9cc",
name: "",
size: 18,
placement: "row",
label: "",
labelColor: "#303133",
labelSize: 14,
labelDisabled: false,
iconColor: "#ffffff",
iconSize: 12,
borderBottom: false,
iconPlacement: "left"
}
};
const Rate = {
// rate组件
rate: {
value: 1,
count: 5,
disabled: false,
size: 18,
inactiveColor: "#b2b2b2",
activeColor: "#FA3534",
gutter: 4,
minCount: 1,
allowHalf: false,
activeIcon: "star-fill",
inactiveIcon: "star",
touchable: true
}
};
const ReadMore = {
// readMore
readMore: {
showHeight: 400,
toggle: false,
closeText: "展开阅读全文",
openText: "收起",
color: "#2979ff",
fontSize: 14,
textIndent: "2em",
name: ""
}
};
const Row = {
// row
row: {
gutter: 0,
justify: "start",
align: "center"
}
};
const RowNotice = {
// rowNotice
rowNotice: {
text: "",
icon: "volume",
mode: "",
color: "#f9ae3d",
bgColor: "#fdf6ec",
fontSize: 14,
speed: 80
}
};
const ScrollList = {
// scrollList
scrollList: {
indicatorWidth: 50,
indicatorBarWidth: 20,
indicator: true,
indicatorColor: "#f2f2f2",
indicatorActiveColor: "#3c9cff",
indicatorStyle: ""
}
};
const Search = {
// search
search: {
shape: "round",
bgColor: "#f2f2f2",
placeholder: "请输入关键字",
clearabled: true,
focus: false,
showAction: true,
actionStyle: () => ({}),
actionText: "搜索",
inputAlign: "left",
inputStyle: () => ({}),
disabled: false,
borderColor: "transparent",
searchIconColor: "#909399",
searchIconSize: 22,
color: "#606266",
placeholderColor: "#909399",
searchIcon: "search",
margin: "0",
animation: false,
value: "",
maxlength: "-1",
height: 32,
label: null
}
};
const Section = {
// u-section组件
section: {
title: "",
subTitle: "更多",
right: true,
fontSize: 15,
bold: true,
color: "#303133",
subColor: "#909399",
showLine: true,
lineColor: "",
arrow: true
}
};
const Skeleton = {
// skeleton
skeleton: {
loading: true,
animate: true,
rows: 0,
rowsWidth: "100%",
rowsHeight: 18,
title: true,
titleWidth: "50%",
titleHeight: 18,
avatar: false,
avatarSize: 32,
avatarShape: "circle"
}
};
const Slider = {
// slider组件
slider: {
value: 0,
blockSize: 18,
min: 0,
max: 100,
step: 1,
activeColor: "#2979ff",
inactiveColor: "#c0c4cc",
blockColor: "#ffffff",
showValue: false,
disabled: false,
blockStyle: () => {
}
}
};
const StatusBar = {
// statusBar
statusBar: {
bgColor: "transparent"
}
};
const Steps = {
// steps组件
steps: {
direction: "row",
current: 0,
activeColor: "#3c9cff",
inactiveColor: "#969799",
activeIcon: "",
inactiveIcon: "",
dot: false
}
};
const StepsItem = {
// steps-item组件
stepsItem: {
title: "",
desc: "",
iconSize: 17,
error: false
}
};
const Sticky = {
// sticky组件
sticky: {
offsetTop: 0,
customNavHeight: 0,
disabled: false,
bgColor: "transparent",
zIndex: "",
index: ""
}
};
const Subsection = {
// subsection组件
subsection: {
list: [],
current: 0,
activeColor: "#3c9cff",
inactiveColor: "#303133",
mode: "button",
fontSize: 12,
bold: true,
bgColor: "#eeeeef",
keyName: "name"
}
};
const SwipeAction = {
// swipe-action组件
swipeAction: {
autoClose: true
}
};
const SwipeActionItem = {
// swipeActionItem 组件
swipeActionItem: {
show: false,
name: "",
disabled: false,
threshold: 20,
autoClose: true,
options: [],
duration: 300
}
};
const Swiper = {
// swiper 组件
swiper: {
list: () => [],
indicator: false,
indicatorActiveColor: "#FFFFFF",
indicatorInactiveColor: "rgba(255, 255, 255, 0.35)",
indicatorStyle: "",
indicatorMode: "line",
autoplay: true,
current: 0,
currentItemId: "",
interval: 3e3,
duration: 300,
circular: false,
previousMargin: 0,
nextMargin: 0,
acceleration: false,
displayMultipleItems: 1,
easingFunction: "default",
keyName: "url",
imgMode: "aspectFill",
height: 130,
bgColor: "#f3f4f6",
radius: 4,
loading: false,
showTitle: false
}
};
const SwipterIndicator = {
// swiperIndicator 组件
swiperIndicator: {
length: 0,
current: 0,
indicatorActiveColor: "",
indicatorInactiveColor: "",
indicatorMode: "line"
}
};
const Switch = {
// switch
switch: {
loading: false,
disabled: false,
size: 25,
activeColor: "#2979ff",
inactiveColor: "#ffffff",
value: false,
activeValue: true,
inactiveValue: false,
asyncChange: false,
space: 0
}
};
const Tabbar = {
// tabbar
tabbar: {
value: null,
safeAreaInsetBottom: true,
border: true,
zIndex: 1,
activeColor: "#1989fa",
inactiveColor: "#7d7e80",
fixed: true,
placeholder: true
}
};
const TabbarItem = {
//
tabbarItem: {
name: null,
icon: "",
badge: null,
dot: false,
text: "",
badgeStyle: "top: 6px;right:2px;"
}
};
const Tabs = {
//
tabs: {
duration: 300,
list: () => [],
lineColor: "#3c9cff",
activeStyle: () => ({
color: "#303133"
}),
inactiveStyle: () => ({
color: "#606266"
}),
lineWidth: 20,
lineHeight: 3,
lineBgSize: "cover",
itemStyle: () => ({
height: "44px"
}),
scrollable: true,
current: 0,
keyName: "name"
}
};
const Tag = {
// tag 组件
tag: {
type: "primary",
disabled: false,
size: "medium",
shape: "square",
text: "",
bgColor: "",
color: "",
borderColor: "",
closeColor: "#C6C7CB",
name: "",
plainFill: false,
plain: false,
closable: false,
show: true,
icon: ""
}
};
const Text = {
// text 组件
text: {
type: "",
show: true,
text: "",
prefixIcon: "",
suffixIcon: "",
mode: "",
href: "",
format: "",
call: false,
openType: "",
bold: false,
block: false,
lines: "",
color: "#303133",
size: 15,
iconStyle: () => ({
fontSize: "15px"
}),
decoration: "none",
margin: 0,
lineHeight: "",
align: "left",
wordWrap: "normal"
}
};
const Textarea = {
// textarea 组件
textarea: {
value: "",
placeholder: "",
placeholderClass: "textarea-placeholder",
placeholderStyle: "color: #c0c4cc",
height: 70,
confirmType: "done",
disabled: false,
count: false,
focus: false,
autoHeight: false,
fixed: false,
cursorSpacing: 0,
cursor: "",
showConfirmBar: true,
selectionStart: -1,
selectionEnd: -1,
adjustPosition: true,
disableDefaultPadding: false,
holdKeyboard: false,
maxlength: 140,
border: "surround",
formatter: null
}
};
const Toast = {
// toast组件
toast: {
zIndex: 10090,
loading: false,
text: "",
icon: "",
type: "",
loadingMode: "",
show: "",
overlay: false,
position: "center",
params: () => {
},
duration: 2e3,
isTab: false,
url: "",
callback: null,
back: false
}
};
const Toolbar = {
// toolbar 组件
toolbar: {
show: true,
cancelText: "取消",
confirmText: "确认",
cancelColor: "#909193",
confirmColor: "#3c9cff",
title: ""
}
};
const Tooltip = {
// tooltip 组件
tooltip: {
text: "",
copyText: "",
size: 14,
color: "#606266",
bgColor: "transparent",
direction: "top",
zIndex: 10071,
showCopy: true,
buttons: () => [],
overlay: true,
showToast: true
}
};
const Transition = {
// transition动画组件的props
transition: {
show: false,
mode: "fade",
duration: "300",
timingFunction: "ease-out"
}
};
const Upload = {
// upload组件
upload: {
accept: "image",
capture: () => ["album", "camera"],
compressed: true,
camera: "back",
maxDuration: 60,
uploadIcon: "camera-fill",
uploadIconColor: "#D3D4D6",
useBeforeRead: false,
previewFullImage: true,
maxCount: 52,
disabled: false,
imageMode: "aspectFill",
name: "",
sizeType: () => ["original", "compressed"],
multiple: false,
deletable: true,
maxSize: Number.MAX_VALUE,
fileList: () => [],
uploadText: "",
width: 80,
height: 80,
previewImage: true
}
};
const drawer = {
// 抽屉组件
drawer: {
// 是否显示
show: false,
// 点击遮罩是否关闭
mask: true,
// // 是否显示关闭按钮
// closeBtn:true,
// 抽屉宽度
width: "40%",
// 抽屉位置
placement: "left",
// 权重
zIndex: 100
}
};
const props$y = {
...ActionSheet,
...Album,
...Alert,
...Avatar,
...AvatarGroup,
...Backtop,
...Badge,
...Button,
...Calendar,
...CarKeyboard,
...Cell,
...CellGroup,
...Checkbox,
...CheckboxGroup,
...CircleProgress,
...Code,
...CodeInput,
...Col,
...Collapse,
...CollapseItem,
...ColumnNotice,
...CountDown,
...CountTo,
...DatetimePicker,
...Divider,
...Empty,
...Form,
...GormItem,
...Gap,
...Grid,
...GridItem,
...Icon,
...Image$1,
...IndexAnchor,
...IndexList,
...Input,
...Keyboard,
...Line,
...LineProgress,
...Link,
...List,
...ListItem,
...LoadingIcon,
...LoadingPage,
...Loadmore,
...Modal,
...Navbar,
...NoNetwork,
...NoticeBar,
...Notify,
...NumberBox,
...NumberKeyboard,
...Overlay,
...Parse,
...Picker,
...Popup,
...Radio,
...RadioGroup,
...Rate,
...ReadMore,
...Row,
...RowNotice,
...ScrollList,
...Search,
...Section,
...Skeleton,
...Slider,
...StatusBar,
...Steps,
...StepsItem,
...Sticky,
...Subsection,
...SwipeAction,
...SwipeActionItem,
...Swiper,
...SwipterIndicator,
...Switch,
...Tabbar,
...TabbarItem,
...Tabs,
...Tag,
...Text,
...Textarea,
...Toast,
...Toolbar,
...Tooltip,
...Transition,
...Upload,
...drawer
};
const props$x = {
props: {
// 是否显示组件
show: {
type: Boolean,
default: props$y.loadingIcon.show
},
// 颜色
color: {
type: String,
default: props$y.loadingIcon.color
},
// 提示文字颜色
textColor: {
type: String,
default: props$y.loadingIcon.textColor
},
// 文字和图标是否垂直排列
vertical: {
type: Boolean,
default: props$y.loadingIcon.vertical
},
// 模式选择,circle-圆形,spinner-花朵形,semicircle-半圆形
mode: {
type: String,
default: props$y.loadingIcon.mode
},
// 图标大小,单位默认px
size: {
type: [String, Number],
default: props$y.loadingIcon.size
},
// 文字大小
textSize: {
type: [String, Number],
default: props$y.loadingIcon.textSize
},
// 文字内容
text: {
type: [String, Number],
default: props$y.loadingIcon.text
},
// 动画模式
timingFunction: {
type: String,
default: props$y.loadingIcon.timingFunction
},
// 动画执行周期时间
duration: {
type: [String, Number],
default: props$y.loadingIcon.duration
},
// mode=circle时的暗边颜色
inactiveColor: {
type: String,
default: props$y.loadingIcon.inactiveColor
}
}
};
const mpMixin = {};
const mixin = {
// 定义每个组件都可能需要用到的外部样式以及类名
props: {
// 每个组件都有的父组件传递的样式,可以为字符串或者对象形式
customStyle: {
type: [Object, String],
default: () => ({})
},
customClass: {
type: String,
default: ""
},
// 跳转的页面路径
url: {
type: String,
default: ""
},
// 页面跳转的类型
linkType: {
type: String,
default: "navigateTo"
}
},
data() {
return {};
},
onLoad() {
this.$u.getRect = this.$uGetRect;
},
created() {
this.$u.getRect = this.$uGetRect;
},
computed: {
// 在2.x版本中,将会把$u挂载到uni对象下,导致在模板中无法使用uni.$u.xxx形式
// 所以这里通过computed计算属性将其附加到this.$u上,就可以在模板或者js中使用uni.$u.xxx
// 只在nvue环境通过此方式引入完整的$u,其他平台会出现性能问题,非nvue则按需引入(主要原因是props过大)
$u() {
return uni.$u.deepMerge(uni.$u, {
props: void 0,
http: void 0,
mixin: void 0
});
},
/**
* 生成bem规则类名
* 由于微信小程序,H5,nvue之间绑定class的差异,无法通过:class="[bem()]"的形式进行同用
* 故采用如下折中做法,最后返回的是数组(一般平台)或字符串(支付宝和字节跳动平台),类似['a', 'b', 'c']或'a b c'的形式
* @param {String} name 组件名称
* @param {Array} fixed 一直会存在的类名
* @param {Array} change 会根据变量值为true或者false而出现或者隐藏的类名
* @returns {Array|string}
*/
bem() {
return function(name, fixed, change) {
const prefix = `u-${name}--`;
const classes = {};
if (fixed) {
fixed.map((item) => {
classes[prefix + this[item]] = true;
});
}
if (change) {
change.map((item) => {
this[item] ? classes[prefix + item] = this[item] : delete classes[prefix + item];
});
}
return Object.keys(classes);
};
}
},
methods: {
// 跳转某一个页面
openPage(urlKey = "url") {
const url2 = this[urlKey];
if (url2) {
this.$u.route({ type: this.linkType, url: url2 });
}
},
// 查询节点信息
// 目前此方法在支付宝小程序中无法获取组件跟接点的尺寸,为支付宝的bug(2020-07-21)
// 解决办法为在组件根部再套一个没有任何作用的view元素
$uGetRect(selector, all) {
return new Promise((resolve) => {
uni.createSelectorQuery().in(this)[all ? "selectAll" : "select"](selector).boundingClientRect((rect) => {
if (all && Array.isArray(rect) && rect.length) {
resolve(rect);
}
if (!all && rect) {
resolve(rect);
}
}).exec();
});
},
getParentData(parentName = "") {
if (!this.parent)
this.parent = {};
this.parent = uni.$u.$parent.call(this, parentName);
if (this.parent.children) {
this.parent.children.indexOf(this) === -1 && this.parent.children.push(this);
}
if (this.parent && this.parentData) {
Object.keys(this.parentData).map((key) => {
this.parentData[key] = this.parent[key];
});
}
},
// 阻止事件冒泡
preventEvent(e) {
e && typeof e.stopPropagation === "function" && e.stopPropagation();
},
// 空操作
noop(e) {
this.preventEvent(e);
}
},
onReachBottom() {
uni.$emit("uOnReachBottom");
},
beforeDestroy() {
if (this.parent && uni.$u.test.array(this.parent.children)) {
const childrenList = this.parent.children;
childrenList.map((child, index2) => {
if (child === this) {
childrenList.splice(index2, 1);
}
});
}
}
};
const _sfc_main$2w = {
name: "u-loading-icon",
mixins: [mpMixin, mixin, props$x],
data() {
return {
// Array.form可以通过一个伪数组对象创建指定长度的数组
// https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/from
array12: Array.from({
length: 12
}),
// 这里需要设置默认值为360,否则在安卓nvue上,会延迟一个duration周期后才执行
// 在iOS nvue上,则会一开始默认执行两个周期的动画
aniAngel: 360,
// 动画旋转角度
webviewHide: false,
// 监听webview的状态,如果隐藏了页面,则停止动画,以免性能消耗
loading: false
// 是否运行中,针对nvue使用
};
},
computed: {
// 当为circle类型时,给其另外三边设置一个更轻一些的颜色
// 之所以需要这么做的原因是,比如父组件传了color为红色,那么需要另外的三个边为浅红色
// 而不能是固定的某一个其他颜色(因为这个固定的颜色可能浅蓝,导致效果没有那么细腻良好)
otherBorderColor() {
const lightColor = uni.$u.colorGradient(this.color, "#ffffff", 100)[80];
if (this.mode === "circle") {
return this.inactiveColor ? this.inactiveColor : lightColor;
} else {
return "transparent";
}
}
},
watch: {
show(n) {
}
},
mounted() {
this.init();
},
methods: {
init() {
setTimeout(() => {
this.show && this.addEventListenerToWebview();
}, 20);
},
// 监听webview的显示与隐藏
addEventListenerToWebview() {
const pages2 = getCurrentPages();
const page2 = pages2[pages2.length - 1];
const currentWebview = page2.$getAppWebview();
currentWebview.addEventListener("hide", () => {
this.webviewHide = true;
});
currentWebview.addEventListener("show", () => {
this.webviewHide = false;
});
}
}
};
function _sfc_render$2J(_ctx, _cache, $props, $setup, $data, $options) {
return _ctx.show ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: vue.normalizeClass(["u-loading-icon", [_ctx.vertical && "u-loading-icon--vertical"]]),
style: vue.normalizeStyle([_ctx.$u.addStyle(_ctx.customStyle)])
},
[
!$data.webviewHide ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: vue.normalizeClass(["u-loading-icon__spinner", [`u-loading-icon__spinner--${_ctx.mode}`]]),
ref: "ani",
style: vue.normalizeStyle({
color: _ctx.color,
width: _ctx.$u.addUnit(_ctx.size),
height: _ctx.$u.addUnit(_ctx.size),
borderTopColor: _ctx.color,
borderBottomColor: $options.otherBorderColor,
borderLeftColor: $options.otherBorderColor,
borderRightColor: $options.otherBorderColor,
"animation-duration": `${_ctx.duration}ms`,
"animation-timing-function": _ctx.mode === "semicircle" || _ctx.mode === "circle" ? _ctx.timingFunction : ""
})
},
[
_ctx.mode === "spinner" ? (vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
{ key: 0 },
vue.renderList($data.array12, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
key: index2,
class: "u-loading-icon__dot"
});
}),
128
/* KEYED_FRAGMENT */
)) : vue.createCommentVNode("v-if", true)
],
6
/* CLASS, STYLE */
)) : vue.createCommentVNode("v-if", true),
_ctx.text ? (vue.openBlock(), vue.createElementBlock(
"text",
{
key: 1,
class: "u-loading-icon__text",
style: vue.normalizeStyle({
fontSize: _ctx.$u.addUnit(_ctx.textSize),
color: _ctx.textColor
})
},
vue.toDisplayString(_ctx.text),
5
/* TEXT, STYLE */
)) : vue.createCommentVNode("v-if", true)
],
6
/* CLASS, STYLE */
)) : vue.createCommentVNode("v-if", true);
}
const __easycom_0$f = /* @__PURE__ */ _export_sfc(_sfc_main$2w, [["render", _sfc_render$2J], ["__scopeId", "data-v-2af81691"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u-loading-icon/u-loading-icon.vue"]]);
const props$w = {
props: {
// 轮播的长度
length: {
type: [String, Number],
default: props$y.swiperIndicator.length
},
// 当前处于活动状态的轮播的索引
current: {
type: [String, Number],
default: props$y.swiperIndicator.current
},
// 指示器非激活颜色
indicatorActiveColor: {
type: String,
default: props$y.swiperIndicator.indicatorActiveColor
},
// 指示器的激活颜色
indicatorInactiveColor: {
type: String,
default: props$y.swiperIndicator.indicatorInactiveColor
},
// 指示器模式,line-线型,dot-点型
indicatorMode: {
type: String,
default: props$y.swiperIndicator.indicatorMode
}
}
};
const _sfc_main$2v = {
name: "u-swiper-indicator",
mixins: [mpMixin, mixin, props$w],
data() {
return {
lineWidth: 22
};
},
computed: {
// 指示器为线型的样式
lineStyle() {
let style = {};
style.width = uni.$u.addUnit(this.lineWidth);
style.transform = `translateX(${uni.$u.addUnit(this.current * this.lineWidth)})`;
style.backgroundColor = this.indicatorActiveColor;
return style;
},
// 指示器为点型的样式
dotStyle() {
return (index2) => {
let style = {};
style.backgroundColor = index2 === this.current ? this.indicatorActiveColor : this.indicatorInactiveColor;
return style;
};
}
}
};
function _sfc_render$2I(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "u-swiper-indicator" }, [
_ctx.indicatorMode === "line" ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: vue.normalizeClass(["u-swiper-indicator__wrapper", [`u-swiper-indicator__wrapper--${_ctx.indicatorMode}`]]),
style: vue.normalizeStyle({
width: _ctx.$u.addUnit($data.lineWidth * _ctx.length),
backgroundColor: _ctx.indicatorInactiveColor
})
},
[
vue.createElementVNode(
"view",
{
class: "u-swiper-indicator__wrapper--line__bar",
style: vue.normalizeStyle([$options.lineStyle])
},
null,
4
/* STYLE */
)
],
6
/* CLASS, STYLE */
)) : vue.createCommentVNode("v-if", true),
_ctx.indicatorMode === "dot" ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "u-swiper-indicator__wrapper"
}, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(_ctx.length, (item, index2) => {
return vue.openBlock(), vue.createElementBlock(
"view",
{
class: vue.normalizeClass(["u-swiper-indicator__wrapper__dot", [index2 === _ctx.current && "u-swiper-indicator__wrapper__dot--active"]]),
key: index2,
style: vue.normalizeStyle([$options.dotStyle(index2)])
},
null,
6
/* CLASS, STYLE */
);
}),
128
/* KEYED_FRAGMENT */
))
])) : vue.createCommentVNode("v-if", true)
]);
}
const __easycom_1$7 = /* @__PURE__ */ _export_sfc(_sfc_main$2v, [["render", _sfc_render$2I], ["__scopeId", "data-v-7b7c7ea6"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u-swiper-indicator/u-swiper-indicator.vue"]]);
const props$v = {
props: {
// 列表数组,元素可为字符串,如为对象可通过keyName指定目标属性名
list: {
type: Array,
default: props$y.swiper.list
},
// 是否显示面板指示器
indicator: {
type: Boolean,
default: props$y.swiper.indicator
},
// 指示器非激活颜色
indicatorActiveColor: {
type: String,
default: props$y.swiper.indicatorActiveColor
},
// 指示器的激活颜色
indicatorInactiveColor: {
type: String,
default: props$y.swiper.indicatorInactiveColor
},
// 指示器样式,可通过bottom,left,right进行定位
indicatorStyle: {
type: [String, Object],
default: props$y.swiper.indicatorStyle
},
// 指示器模式,line-线型,dot-点型
indicatorMode: {
type: String,
default: props$y.swiper.indicatorMode
},
// 是否自动切换
autoplay: {
type: Boolean,
default: props$y.swiper.autoplay
},
// 当前所在滑块的 index
current: {
type: [String, Number],
default: props$y.swiper.current
},
// 当前所在滑块的 item-id ,不能与 current 被同时指定
currentItemId: {
type: String,
default: props$y.swiper.currentItemId
},
// 滑块自动切换时间间隔
interval: {
type: [String, Number],
default: props$y.swiper.interval
},
// 滑块切换过程所需时间
duration: {
type: [String, Number],
default: props$y.swiper.duration
},
// 播放到末尾后是否重新回到开头
circular: {
type: Boolean,
default: props$y.swiper.circular
},
// 前边距,可用于露出前一项的一小部分,nvue和支付宝不支持
previousMargin: {
type: [String, Number],
default: props$y.swiper.previousMargin
},
// 后边距,可用于露出后一项的一小部分,nvue和支付宝不支持
nextMargin: {
type: [String, Number],
default: props$y.swiper.nextMargin
},
// 当开启时,会根据滑动速度,连续滑动多屏,支付宝不支持
acceleration: {
type: Boolean,
default: props$y.swiper.acceleration
},
// 同时显示的滑块数量,nvue、支付宝小程序不支持
displayMultipleItems: {
type: Number,
default: props$y.swiper.displayMultipleItems
},
// 指定swiper切换缓动动画类型,有效值:default、linear、easeInCubic、easeOutCubic、easeInOutCubic
// 只对微信小程序有效
easingFunction: {
type: String,
default: props$y.swiper.easingFunction
},
// list数组中指定对象的目标属性名
keyName: {
type: String,
default: props$y.swiper.keyName
},
// 图片的裁剪模式
imgMode: {
type: String,
default: props$y.swiper.imgMode
},
// 组件高度
height: {
type: [String, Number],
default: props$y.swiper.height
},
// 背景颜色
bgColor: {
type: String,
default: props$y.swiper.bgColor
},
// 组件圆角,数值或带单位的字符串
radius: {
type: [String, Number],
default: props$y.swiper.radius
},
// 是否加载中
loading: {
type: Boolean,
default: props$y.swiper.loading
},
// 是否显示标题,要求数组对象中有title属性
showTitle: {
type: Boolean,
default: props$y.swiper.showTitle
}
}
};
const _sfc_main$2u = {
name: "u-swiper",
mixins: [mpMixin, mixin, props$v],
data() {
return {
currentIndex: 0
};
},
watch: {
current(val, preVal) {
if (val === preVal)
return;
this.currentIndex = val;
}
},
computed: {
itemStyle() {
return (index2) => {
const style = {};
if (this.nextMargin && this.previousMargin) {
style.borderRadius = uni.$u.addUnit(this.radius);
if (index2 !== this.currentIndex)
style.transform = "scale(0.92)";
}
return style;
};
}
},
methods: {
getItemType(item) {
if (typeof item === "string")
return uni.$u.test.video(this.getSource(item)) ? "video" : "image";
if (typeof item === "object" && this.keyName) {
if (!item.type)
return uni.$u.test.video(this.getSource(item)) ? "video" : "image";
if (item.type === "image")
return "image";
if (item.type === "video")
return "video";
return "image";
}
},
// 获取目标路径,可能数组中为字符串,对象的形式,额外可指定对象的目标属性名keyName
getSource(item) {
if (typeof item === "string")
return item;
if (typeof item === "object" && this.keyName)
return item[this.keyName];
else
uni.$u.error("请按格式传递列表参数");
return "";
},
// 轮播切换事件
change(e) {
const {
current
} = e.detail;
this.pauseVideo(this.currentIndex);
this.currentIndex = current;
this.$emit("change", e.detail);
},
// 切换轮播时,暂停视频播放
pauseVideo(index2) {
const lastItem = this.getSource(this.list[index2]);
if (uni.$u.test.video(lastItem)) {
const video2 = uni.createVideoContext(`video-${index2}`, this);
video2.pause();
}
},
// 当一个轮播item为视频时,获取它的视频海报
getPoster(item) {
return typeof item === "object" && item.poster ? item.poster : "";
},
// 点击某个item
clickHandler(index2) {
this.$emit("click", index2);
}
}
};
function _sfc_render$2H(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_loading_icon = resolveEasycom(vue.resolveDynamicComponent("u-loading-icon"), __easycom_0$f);
const _component_u_swiper_indicator = resolveEasycom(vue.resolveDynamicComponent("u-swiper-indicator"), __easycom_1$7);
return vue.openBlock(), vue.createElementBlock(
"view",
{
class: "u-swiper",
style: vue.normalizeStyle({
backgroundColor: _ctx.bgColor,
height: _ctx.$u.addUnit(_ctx.height),
borderRadius: _ctx.$u.addUnit(_ctx.radius)
})
},
[
_ctx.loading ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "u-swiper__loading"
}, [
vue.createVNode(_component_u_loading_icon, { mode: "circle" })
])) : (vue.openBlock(), vue.createElementBlock("swiper", {
key: 1,
class: "u-swiper__wrapper",
style: vue.normalizeStyle({
height: _ctx.$u.addUnit(_ctx.height)
}),
onChange: _cache[0] || (_cache[0] = (...args) => $options.change && $options.change(...args)),
circular: _ctx.circular,
interval: _ctx.interval,
duration: _ctx.duration,
autoplay: _ctx.autoplay,
current: _ctx.current,
currentItemId: _ctx.currentItemId,
previousMargin: _ctx.$u.addUnit(_ctx.previousMargin),
nextMargin: _ctx.$u.addUnit(_ctx.nextMargin),
acceleration: _ctx.acceleration,
displayMultipleItems: _ctx.displayMultipleItems,
easingFunction: _ctx.easingFunction
}, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(_ctx.list, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("swiper-item", {
class: "u-swiper__wrapper__item",
key: index2
}, [
vue.createElementVNode(
"view",
{
class: "u-swiper__wrapper__item__wrapper",
style: vue.normalizeStyle([$options.itemStyle(index2)])
},
[
vue.createCommentVNode(" 在nvue中,image图片的宽度默认为屏幕宽度,需要通过flex:1撑开,另外必须设置高度才能显示图片 "),
$options.getItemType(item) === "image" ? (vue.openBlock(), vue.createElementBlock("image", {
key: 0,
class: "u-swiper__wrapper__item__wrapper__image",
src: $options.getSource(item),
mode: _ctx.imgMode,
onClick: ($event) => $options.clickHandler(index2),
style: vue.normalizeStyle({
height: _ctx.$u.addUnit(_ctx.height),
borderRadius: _ctx.$u.addUnit(_ctx.radius)
})
}, null, 12, ["src", "mode", "onClick"])) : vue.createCommentVNode("v-if", true),
$options.getItemType(item) === "video" ? (vue.openBlock(), vue.createElementBlock("video", {
key: 1,
class: "u-swiper__wrapper__item__wrapper__video",
id: `video-${index2}`,
"enable-progress-gesture": false,
src: $options.getSource(item),
poster: $options.getPoster(item),
title: _ctx.showTitle && _ctx.$u.test.object(item) && item.title ? item.title : "",
style: vue.normalizeStyle({
height: _ctx.$u.addUnit(_ctx.height)
}),
controls: "",
onClick: ($event) => $options.clickHandler(index2)
}, null, 12, ["id", "src", "poster", "title", "onClick"])) : vue.createCommentVNode("v-if", true),
_ctx.showTitle && _ctx.$u.test.object(item) && item.title && _ctx.$u.test.image($options.getSource(item)) ? (vue.openBlock(), vue.createElementBlock(
"text",
{
key: 2,
class: "u-swiper__wrapper__item__wrapper__title u-line-1"
},
vue.toDisplayString(item.title),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true)
],
4
/* STYLE */
)
]);
}),
128
/* KEYED_FRAGMENT */
))
], 44, ["circular", "interval", "duration", "autoplay", "current", "currentItemId", "previousMargin", "nextMargin", "acceleration", "displayMultipleItems", "easingFunction"])),
vue.createElementVNode(
"view",
{
class: "u-swiper__indicator",
style: vue.normalizeStyle([_ctx.$u.addStyle(_ctx.indicatorStyle)])
},
[
vue.renderSlot(_ctx.$slots, "indicator", {}, () => [
!_ctx.loading && _ctx.indicator && !_ctx.showTitle ? (vue.openBlock(), vue.createBlock(_component_u_swiper_indicator, {
key: 0,
indicatorActiveColor: _ctx.indicatorActiveColor,
indicatorInactiveColor: _ctx.indicatorInactiveColor,
length: _ctx.list.length,
current: $data.currentIndex,
indicatorMode: _ctx.indicatorMode
}, null, 8, ["indicatorActiveColor", "indicatorInactiveColor", "length", "current", "indicatorMode"])) : vue.createCommentVNode("v-if", true)
], true)
],
4
/* STYLE */
)
],
4
/* STYLE */
);
}
const __easycom_0$e = /* @__PURE__ */ _export_sfc(_sfc_main$2u, [["render", _sfc_render$2H], ["__scopeId", "data-v-4e7d0c90"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u-swiper/u-swiper.vue"]]);
let request$m = new Request$1().http;
function getCitys(data) {
return request$m("/app/common/getCitys", data, "GET");
}
function getTlsSig(data) {
return request$m("/app/common/getTlsSig", data, "GET");
}
function getDictByKey(data) {
return request$m("/app/common/getDictByKey", data, "GET");
}
function getConfigByKey(data) {
return request$m("/app/common/getConfigByKey", data, "GET");
}
function getHospitalList$1(data) {
return request$m("/app/common/getHospitalList", data, "GET");
}
function getDepartmentList$1(data) {
return request$m("/app/common/getDepartmentList", data, "GET");
}
let request$l = new Request$1().http;
function getPackagCateList(data) {
return request$l("/app/package/getPackagCateList", data, "GET");
}
function getPackageList(data) {
return request$l("/app/package/getPackageList", data, "GET");
}
function getPackageById(data) {
return request$l("/app/package/getPackageById", data, "GET");
}
function getPackageDoctorList(data) {
return request$l("/app/package/getPackageDoctorList", data, "GET");
}
let request$k = new Request$1().http;
function getDoctorArticleCateList(data) {
return request$k("/app/doctorArticle/getDoctorArticleCateList", data, "GET");
}
function getDoctorArticleList(data) {
return request$k("/app/doctorArticle/getDoctorArticleList", data, "GET");
}
function getDoctorArticleById(data) {
return request$k("/app/doctorArticle/getDoctorArticleById", data, "GET");
}
let request$j = new Request$1().http;
function getMyDoctorList(data) {
return request$j("/app/doctor/getMyDoctorList", data, "GET");
}
function getDoctorDetails(data) {
return request$j("/app/doctor/getDoctorDetails", data, "GET");
}
function getDoctorPingList(data) {
return request$j("/app/doctor/getDoctorPingList", data, "GET");
}
function getDoctorList(data) {
return request$j("/app/doctor/getDoctorList", data, "GET");
}
function checkFollow(data) {
return request$j("/app/doctor/checkFollow", data, "GET");
}
function doFollow$1(data) {
return request$j("/app/doctor/doFollow", data, "POST", "application/json;charset=UTF-8");
}
let request$i = new Request$1().http;
function getArticleList(data) {
return request$i("/app/article/getArticleList", data, "GET");
}
function getArticleById(data) {
return request$i("/app/article/getArticleById", data, "GET");
}
function getArticleCateList$1(data) {
return request$i("/app/article/getArticleCateList", data, "GET");
}
let request$h = new Request$1().http;
function getAdvList(data) {
return request$h("/app/adv/getAdvList", data, "GET");
}
let request$g = new Request$1().http;
function getDepartmentList(data) {
return request$g("/app/department/getDepartmentList", data, "GET");
}
const _sfc_main$2t = {
data() {
return {
layouts: [],
yangshengs: [
{ id: "1", title: "药膳食疗", page: "/pages_index/medicatedFoodList", icon: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/3cfbd47911cf4753aa9497eac500728d.png" },
{ id: "2", title: "经络穴位", page: "/pages_index/vesselList", icon: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/e93536a9dc1a4f8ca09545097b12fdea.png" },
{ id: "3", title: "问答专区", page: "/pages_index/questionsList", icon: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/e896972bd56f4e358188af36f2c5af42.png" },
{ id: "4", title: "疾病", page: "/pages_index/diseaseList", icon: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/d6f1851cccae414b8baf2ba07782f91b.png" },
{ id: "5", title: "中药图解", page: "/pages_index/chineseMedicineList", icon: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/ff43572d0d004285b5a3b0ef2663c471.png" },
{ id: "6", title: "名方今用", page: "/pages_index/famousPrescribeList", icon: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/45db770e58c34963b0d2ba24a958b617.png" },
{ id: "7", title: "康复医案", page: "/pages_doctor/doctorArticleList", icon: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/e793942797b24035b51f94d894bdfa0b.png" },
{ id: "8", title: "更多", page: "", icon: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/3ee6160289914ee4a8126573fe4dc0ae.png" }
],
isTop: false,
titleColor: "#2A2B2E",
descColor: "#626468",
top: 0,
// 状态栏的高度
statusBarHeight: uni.getStorageSync("menuInfo").statusBarHeight,
advImgs: [],
doctors: [],
advs: [],
articles: [],
depts: [],
doctocArticles: [],
hosLevelOptions: [],
packages: []
};
},
onLoad() {
this.getDictByKey("sys_hospital_level");
uni.$on("refreshMsgCount", () => {
try {
let totalUnreadCount = uni.$TUIKit.getTotalUnreadMessageCount();
if (totalUnreadCount > 0) {
try {
uni.setTabBarBadge({
//显示数字
index: 1,
//tabbar下标
text: totalUnreadCount + ""
//数字
});
} catch (e) {
}
} else {
try {
uni.hideTabBarRedDot({
//隐藏红点
index: 1
//tabbar下标
});
} catch (e) {
}
}
} catch (e) {
}
});
},
onShow() {
this.getDoctorList();
this.getArticleList();
this.getAdvList();
this.getDepartmentList();
this.getDoctorArticleList();
this.getPackageList();
this.getConfigByKey("his.appShow");
uni.$emit("refreshMsgCount");
},
onPageScroll(e) {
this.top = e.scrollTop;
},
//发送给朋友
onShareAppMessage(res) {
if (this.$isLogin()) {
return {
title: "御君方互联网医院",
path: "/pages/index/index",
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
//分享到朋友圈
onShareTimeline(res) {
if (this.utils.isLogin()) {
return {
title: "御君方互联网医院",
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
computed: {
bg: function() {
var top = this.top / 120;
formatAppLog("log", "at pages/index/index.vue:371", top);
if (top > 0) {
this.isTop = true;
this.titleColor = "#fff";
this.descColor = "#fff";
} else {
this.isTop = false;
this.titleColor = "#2A2B2E";
this.descColor = "#626468";
}
return "rgba(195,154,88, " + top + ")";
}
},
methods: {
dev() {
uni.showToast({
icon: "none",
title: "敬请期待"
});
},
getConfigByKey(key) {
var that = this;
var data = { key };
getConfigByKey(data).then(
(res) => {
if (res.code == 200) {
this.layouts = JSON.parse(res.data);
this.layouts.sort((a, b) => a.sort - b.sort);
formatAppLog("log", "at pages/index/index.vue:400", this.layouts);
this.layouts.forEach(function(element) {
if (element.id == "4") {
if (!element.isShow) {
that.yangshengs.splice(6, 1);
}
}
});
}
},
(rej) => {
}
);
},
yangshengClick(item) {
if (item.page == "") {
uni.showToast({
icon: "none",
title: "暂无更多"
});
return;
}
uni.navigateTo({
url: item.page
});
},
switchTab(url2) {
uni.switchTab({
url: url2
});
},
navToMiniProgram() {
uni.navigateToMiniProgram({
// appid 写你要跳转的小程序的 appid
appId: "wx45cf09091aead547",
// 路径写 src下的路径,假如你跳转的是pages下的页面,就可以写pages/index
path: "/pages/common/launch",
extraData: {
// 'type': 'out'
},
// 这个不写的话会显示开发环境,不能正常跳转,写上就能正常跳转了
envVersion: "develop",
success(res) {
},
fail(err) {
}
});
},
getDictByKey(key) {
var data = { key };
getDictByKey(data).then(
(res) => {
if (res.code == 200) {
if (key == "sys_hospital_level") {
this.hosLevelOptions = res.data;
}
}
},
(err) => {
}
);
},
getDoctorArticleList(page2) {
var data = {
pageNum: 1,
pageSize: 10
};
getDoctorArticleList(data).then((res) => {
if (res.code == 200) {
this.doctocArticles = res.data.list;
}
});
},
getDepartmentList(page2) {
var data = {
isTui: 1
};
getDepartmentList(data).then((res) => {
if (res.code == 200) {
this.depts = res.data;
}
});
},
handleAdvClick(index2) {
var ad = this.advs[index2];
formatAppLog("log", "at pages/index/index.vue:498", ad.advUrl);
if (ad.showType == 1) {
uni.setStorageSync("url", ad.advUrl);
uni.navigateTo({
url: "h5"
});
} else if (ad.showType == 2) {
uni.navigateTo({
url: ad.advUrl
});
} else if (ad.showType == 3) {
uni.setStorageSync("content", ad.content);
uni.navigateTo({
url: "content"
});
}
},
getAdvList() {
var that = this;
var data = {
advType: 1
};
getAdvList(data).then((res) => {
if (res.code == 200) {
that.advImgs = [];
that.advs = [];
res.data.forEach(function(element) {
if (element.imageUrl != null && element.imageUrl != "") {
that.advs.push(element);
that.advImgs.push(element.imageUrl);
}
});
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
getArticleList() {
var data = {
isTui: 1,
pageNum: 1,
pageSize: 10
};
getArticleList(data).then((res) => {
if (res.code == 200) {
this.articles = res.data.list;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
getDoctorList() {
var data = {
isTui: 1,
pageNum: 1,
pageSize: 10
};
getDoctorList(data).then((res) => {
if (res.code == 200) {
this.doctors = res.data.list;
this.doctors.forEach(function(value2, index2, array3) {
value2.prices = JSON.parse(value2.priceJson);
});
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
getPackageList() {
var data = {
isShow: 1,
pageNum: 1,
pageSize: 10
};
getPackageList(data).then((res) => {
if (res.code == 200) {
this.packages = res.data.list;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
loginNavTo(url2) {
this.$isLogin().then(
(res) => {
if (res) {
formatAppLog("log", "at pages/index/index.vue:607", res);
uni.navigateTo({
url: url2
});
} else {
uni.navigateTo({
url: "/pages/auth/login"
});
}
}
);
},
navTo(url2) {
if (url2 == "dev") {
uni.showToast({
icon: "none",
title: "尽情期待..."
});
return;
}
formatAppLog("log", "at pages/index/index.vue:629", url2);
uni.navigateTo({
url: url2
});
}
}
};
function _sfc_render$2G(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_swiper = resolveEasycom(vue.resolveDynamicComponent("u-swiper"), __easycom_0$e);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "cont" }, [
vue.createElementVNode("view", { class: "bg" }, [
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/4e7d59d18291491a81c67ed2cfd95a4c.png" })
]),
vue.createElementVNode(
"view",
{
class: "top-box",
style: vue.normalizeStyle({ background: $options.bg })
},
[
vue.createElementVNode(
"view",
{
class: "status_bar",
style: vue.normalizeStyle({ height: $data.statusBarHeight })
},
null,
4
/* STYLE */
),
vue.createElementVNode("view", { class: "top-title" }, [
vue.createElementVNode(
"view",
{
class: "name",
style: vue.normalizeStyle({ color: $data.titleColor })
},
"芸医汇互联网医院",
4
/* STYLE */
),
vue.createElementVNode("view", { class: "desc-box" }, [
!$data.isTop ? (vue.openBlock(), vue.createElementBlock("image", {
key: 0,
src: "/static/images/dui.png"
})) : vue.createCommentVNode("v-if", true),
$data.isTop ? (vue.openBlock(), vue.createElementBlock("image", {
key: 1,
src: "/static/images/dui1.png"
})) : vue.createCommentVNode("v-if", true),
vue.createElementVNode(
"view",
{
class: "desc",
style: vue.normalizeStyle({ color: $data.descColor })
},
"国家卫健委权威认证机构、世界各地千万用户健康选择",
4
/* STYLE */
)
])
]),
vue.createElementVNode("view", { class: "search" }, [
vue.createElementVNode("view", {
class: "search-box",
onClick: _cache[0] || (_cache[0] = ($event) => $options.navTo("/pages_index/search"))
}, [
vue.createElementVNode("image", {
class: "img",
src: "/static/images/icon_search.png",
mode: ""
}),
vue.createElementVNode("input", {
disabled: "",
type: "text",
placeholder: "搜索医生/疾病/知识",
"placeholder-class": "input-place"
})
]),
vue.createElementVNode("view", { class: "msg" }, [
!$data.isTop ? (vue.openBlock(), vue.createElementBlock("image", {
key: 0,
class: "msg",
src: "/static/images/msg.png"
})) : vue.createCommentVNode("v-if", true),
$data.isTop ? (vue.openBlock(), vue.createElementBlock("image", {
key: 1,
class: "msg",
src: "/static/images/msg1.png"
})) : vue.createCommentVNode("v-if", true),
vue.createElementVNode("button", {
class: "contact-btn",
"open-type": "contact"
})
])
])
],
4
/* STYLE */
),
vue.createElementVNode("view", { class: "cont-box" }, [
vue.createElementVNode(
"view",
{
class: "status_bar",
style: vue.normalizeStyle({ height: $data.statusBarHeight })
},
null,
4
/* STYLE */
),
vue.createElementVNode("view", { style: { "padding-bottom": "178rpx" } }),
$data.advImgs.length > 0 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "banner"
}, [
vue.createVNode(_component_u_swiper, {
list: $data.advImgs,
indicator: "",
indicatorMode: "line",
circular: "",
onClick: $options.handleAdvClick
}, null, 8, ["list", "onClick"])
])) : vue.createCommentVNode("v-if", true),
vue.createElementVNode("view", { class: "btns" }, [
vue.createElementVNode("view", {
class: "btn1",
onClick: _cache[1] || (_cache[1] = ($event) => $options.navTo("/pages_doctor/doctorList"))
}, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "title" }, "专家问诊"),
vue.createElementVNode("view", { class: "desc" }, "名医问诊处方")
]),
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/4c28bef97d714e569e672e006ee471e2.png" }),
vue.createElementVNode("image", {
class: "mask",
src: "/static/images/mask.png"
})
]),
vue.createElementVNode("view", {
class: "btn2",
onClick: _cache[2] || (_cache[2] = ($event) => $options.navTo("/pages_order/inquirySelectType"))
}, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "title" }, "健康会诊"),
vue.createElementVNode("view", { class: "desc" }, "快速会诊咨询")
]),
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/86e6f39efbc54d2dadf058dde269e573.png" }),
vue.createElementVNode("image", {
class: "mask",
src: "/static/images/mask.png"
})
])
]),
vue.createElementVNode("view", { class: "modules" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.layouts, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", { class: "module" }, [
item.id == 1 && item.isShow ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "menus"
}, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString(item.name),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "menu-box" }, [
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[3] || (_cache[3] = ($event) => $options.navTo("/pages_index/testList"))
}, [
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/6104b270481040dd8340859c9d901c09.png" })
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[4] || (_cache[4] = ($event) => $options.loginNavTo("/pages_user/integralGoodsList"))
}, [
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/f9f2f6c6b4d24f1ba9a637dfed74f8c3.png" })
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[5] || (_cache[5] = ($event) => $options.navTo("/pages_order/inquirySelect?inquiryType=3"))
}, [
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/76f15105ebe442398da1fe57e080bcd4.png" })
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[6] || (_cache[6] = ($event) => $options.switchTab("/pages/store/index"))
}, [
vue.createElementVNode("image", { src: "https://cos.his.cdwjyyh.com/fs/20240509/908255a8d8134a5482f0314bfbb42c02.png" })
])
])
])) : vue.createCommentVNode("v-if", true),
item.id == 2 && item.isShow ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "depts"
}, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString(item.name),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "dept-box" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.depts, (item2, index3) => {
return vue.openBlock(), vue.createElementBlock("view", {
onClick: ($event) => $options.navTo("/pages_doctor/doctorList?deptId=" + item2.deptId),
class: "dept"
}, [
vue.createElementVNode("image", {
class: "icon",
src: item2.iconUrl
}, null, 8, ["src"]),
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString(item2.deptName),
1
/* TEXT */
)
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
)),
vue.createElementVNode("view", {
onClick: _cache[7] || (_cache[7] = ($event) => $options.navTo("/pages_doctor/doctorList?deptId=0")),
class: "dept"
}, [
vue.createElementVNode("image", {
class: "icon",
src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/acbb520df8284c6aaff601cb06411c2a.png"
}),
vue.createElementVNode("view", { class: "title" }, "更多科室")
])
])
])) : vue.createCommentVNode("v-if", true),
item.id == 3 && item.isShow ? (vue.openBlock(), vue.createElementBlock("view", {
key: 2,
class: "depts"
}, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString(item.name),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "dept-box" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.yangshengs, (item2, index3) => {
return vue.openBlock(), vue.createElementBlock("view", {
onClick: ($event) => $options.yangshengClick(item2),
class: "dept"
}, [
vue.createElementVNode("image", {
class: "icon",
src: item2.icon
}, null, 8, ["src"]),
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString(item2.title) + vue.toDisplayString(item2.isShow),
1
/* TEXT */
)
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
])) : vue.createCommentVNode("v-if", true),
item.id == 4 && item.isShow ? (vue.openBlock(), vue.createElementBlock("view", {
key: 3,
class: "doctor-articles"
}, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString(item.name),
1
/* TEXT */
),
vue.createElementVNode("view", {
class: "more",
onClick: _cache[8] || (_cache[8] = ($event) => $options.navTo("/pages_doctor/doctorArticleList"))
}, [
vue.createElementVNode("view", { class: "text" }, "更多"),
vue.createElementVNode("image", { src: "/static/images/arrow_gray.png" })
])
]),
vue.createElementVNode("scroll-view", {
"scroll-x": true,
style: { "white-space": "nowrap" }
}, [
vue.createElementVNode("view", { class: "article-box" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.doctocArticles, (item2, index3) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "article",
onClick: ($event) => $options.navTo("/pages_doctor/doctorArticleDetails?articleId=" + item2.articleId)
}, [
vue.createElementVNode("view", { class: "image-box" }, [
vue.createElementVNode("image", {
mode: "aspectFill",
src: item2.imageUrl
}, null, 8, ["src"]),
vue.createElementVNode(
"view",
{ class: "views" },
vue.toDisplayString(item2.views) + "人观看 ",
1
/* TEXT */
),
vue.createElementVNode("view", { class: "doctor" }, [
vue.createElementVNode("image", {
mode: "aspectFill",
src: item2.avatar
}, null, 8, ["src"]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode(
"view",
{ class: "doc-name ellipsis" },
vue.toDisplayString(item2.doctorName),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "doc-position ellipsis" },
vue.toDisplayString(item2.position),
1
/* TEXT */
)
])
])
]),
vue.createElementVNode("view", { class: "article-title-box" }, [
vue.createElementVNode(
"view",
{ class: "article-title ellipsis" },
vue.toDisplayString(item2.title),
1
/* TEXT */
)
])
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
])
])) : vue.createCommentVNode("v-if", true),
item.id == 5 && item.isShow ? (vue.openBlock(), vue.createElementBlock("view", {
key: 4,
class: "doctors"
}, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString(item.name),
1
/* TEXT */
),
vue.createElementVNode("view", {
class: "more",
onClick: _cache[9] || (_cache[9] = ($event) => $options.navTo("/pages_doctor/doctorList"))
}, [
vue.createElementVNode("view", { class: "text" }, "更多"),
vue.createElementVNode("image", { src: "/static/images/arrow_gray.png" })
])
]),
$data.doctors.length > 0 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "doctor-box"
}, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.doctors, (item2, index3) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "doctor",
onClick: ($event) => $options.navTo("/pages_doctor/doctorDetails?doctorId=" + item2.doctorId)
}, [
vue.createElementVNode("view", { class: "item" }, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode("view", { class: "head-box" }, [
vue.createElementVNode("image", {
mode: "aspectFill",
class: "doc-img",
src: item2.avatar
}, null, 8, ["src"]),
item2.workStatus == 1 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "isline"
}, [
vue.createElementVNode("view", { class: "img" }, [
vue.createElementVNode("image", { src: "/static/images/isline.png" }),
vue.createElementVNode("view", { class: "name" }, "在线")
])
])) : vue.createCommentVNode("v-if", true)
])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("view", { class: "doc-box" }, [
vue.createElementVNode(
"view",
{ class: "doc-name" },
vue.toDisplayString(item2.doctorName),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "doc-position" },
vue.toDisplayString(item2.position),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "doc-dept" },
vue.toDisplayString(item2.deptName),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "hospital-box" }, [
item2.hospitalLevel != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "tag"
}, [
vue.createElementVNode(
"text",
null,
vue.toDisplayString(_ctx.$getDictLabelName($data.hosLevelOptions, item2.hospitalLevel)),
1
/* TEXT */
)
])) : vue.createCommentVNode("v-if", true),
vue.createElementVNode(
"view",
{ class: "name" },
vue.toDisplayString(item2.hospitalName),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "doc-spec" }, [
vue.createElementVNode(
"view",
{ class: "spec ellipsis2" },
vue.toDisplayString(item2.speciality),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "doc-count" }, [
vue.createElementVNode("view", { class: "name" }, "好评:"),
vue.createElementVNode(
"view",
{ class: "count" },
vue.toDisplayString(item2.pingStar) + "分",
1
/* TEXT */
),
vue.createElementVNode("view", { class: "name" }, "接诊量:"),
vue.createElementVNode(
"view",
{ class: "count" },
vue.toDisplayString(item2.orderNumber),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "name" }, "平均响应:"),
vue.createElementVNode("view", { class: "count" })
]),
vue.createElementVNode("view", { class: "doc-price" }, [
vue.createElementVNode("view", { class: "btn" }, [
vue.createTextVNode(" 咨询医生¥ "),
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(item2.prices, (price, index4) => {
return vue.openBlock(), vue.createElementBlock("text", null, [
vue.createTextVNode(
vue.toDisplayString(price.price.toFixed(2)) + " ",
1
/* TEXT */
),
index4 == 0 ? (vue.openBlock(), vue.createElementBlock("text", { key: 0 }, "/")) : vue.createCommentVNode("v-if", true)
]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
])
])
])
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])) : vue.createCommentVNode("v-if", true)
])) : vue.createCommentVNode("v-if", true),
item.id == 6 && item.isShow ? (vue.openBlock(), vue.createElementBlock("view", {
key: 5,
class: "articles"
}, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString(item.name),
1
/* TEXT */
),
vue.createElementVNode("view", {
class: "more",
onClick: _cache[10] || (_cache[10] = ($event) => $options.navTo("/pages_index/articleList"))
}, [
vue.createElementVNode("view", { class: "text" }, "更多"),
vue.createElementVNode("image", { src: "/static/images/arrow_gray.png" })
])
]),
$data.articles.length > 0 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "article-box"
}, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.articles, (item2, index3) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "item",
onClick: ($event) => $options.navTo("/pages_index/articleDetails?articleId=" + item2.articleId)
}, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString(item2.title),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "views" },
" 浏览量 " + vue.toDisplayString(item2.views),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("image", {
src: item2.imageUrl
}, null, 8, ["src"])
])
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])) : vue.createCommentVNode("v-if", true)
])) : vue.createCommentVNode("v-if", true),
item.id == 7 && item.isShow ? (vue.openBlock(), vue.createElementBlock("view", {
key: 6,
class: "packages"
}, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString(item.name),
1
/* TEXT */
),
vue.createElementVNode("view", {
class: "more",
onClick: _cache[11] || (_cache[11] = ($event) => $options.navTo("/pages_index/packageList"))
}, [
vue.createElementVNode("view", { class: "text" }, "更多"),
vue.createElementVNode("image", { src: "/static/images/arrow_gray.png" })
])
]),
vue.createElementVNode("view", { class: "package-box" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.packages, (item2, index3) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "item",
onClick: ($event) => $options.navTo("/pages_index/packageDetails?packageId=" + item2.packageId)
}, [
vue.createElementVNode("view", { class: "top" }, [
vue.createElementVNode("image", {
src: item2.imgUrl
}, null, 8, ["src"])
]),
vue.createElementVNode("view", { class: "bottom" }, [
vue.createElementVNode(
"view",
{ class: "title ellipsis2" },
vue.toDisplayString(item2.packageName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "price-box" }, [
vue.createElementVNode(
"view",
{ class: "price" },
"¥" + vue.toDisplayString(item2.price.toFixed(2)) + "元/日",
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "count" },
vue.toDisplayString(item2.sales) + "人已购",
1
/* TEXT */
)
])
])
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
])) : vue.createCommentVNode("v-if", true)
]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
])
])
]);
}
const PagesIndexIndex = /* @__PURE__ */ _export_sfc(_sfc_main$2t, [["render", _sfc_render$2G], ["__scopeId", "data-v-1cf27b2a"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/index/index.vue"]]);
const _sfc_main$2s = {
data() {
return {
url: ""
};
},
onLoad(val) {
this.url = uni.getStorageSync("url");
formatAppLog("log", "at pages/index/h5.vue:17", this.url);
}
};
function _sfc_render$2F(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("web-view", { src: $data.url }, null, 8, ["src"])
]);
}
const PagesIndexH5 = /* @__PURE__ */ _export_sfc(_sfc_main$2s, [["render", _sfc_render$2F], ["__scopeId", "data-v-41e99781"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/index/h5.vue"]]);
const _sfc_main$2r = {
data() {
return {
content: ""
};
},
onLoad(val) {
uni.getStorageSync("content");
formatAppLog("log", "at pages/index/content.vue:16", this.content);
}
};
function _sfc_render$2E(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { innerHTML: $data.content }, null, 8, ["innerHTML"])
]);
}
const PagesIndexContent = /* @__PURE__ */ _export_sfc(_sfc_main$2r, [["render", _sfc_render$2E], ["__scopeId", "data-v-a27a44e8"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/index/content.vue"]]);
const _sfc_main$2q = {
data() {
return {
depts: [],
doctors: []
};
},
onShow() {
this.getDepartmentList();
this.getDoctorList();
},
methods: {
getDoctorList() {
var data = {
isTui: 1,
pageNum: 1,
pageSize: 10
};
getDoctorList(data).then((res) => {
if (res.code == 200) {
res.data.list.forEach(function(value2, index2, array3) {
value2.prices = JSON.parse(value2.priceJson);
});
this.doctors = res.data.list;
formatAppLog("log", "at pages/doctor/index.vue:102", this.doctors);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
getDepartmentList(page2) {
var data = {};
getDepartmentList(data).then((res) => {
if (res.code == 200) {
this.depts = res.data;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
navTo(url2) {
uni.navigateTo({
url: url2
});
}
}
};
function _sfc_render$2D(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "search" }, [
vue.createElementVNode("view", { class: "search-box" }, [
vue.createElementVNode("image", {
class: "img",
src: "/static/images/icon_search.png",
mode: ""
}),
vue.createElementVNode("input", {
disabled: "",
type: "text",
placeholder: "搜索医院/医生/疾病/知识",
"placeholder-class": "input-place"
})
])
]),
vue.createElementVNode("view", { class: "depts" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "全部科室")
]),
vue.createElementVNode("view", { class: "dept-box" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.depts, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "dept",
onClick: ($event) => $options.navTo("./doctorList?deptId=" + item.deptId)
}, [
vue.createElementVNode("image", {
src: item.iconUrl
}, null, 8, ["src"]),
vue.createElementVNode(
"view",
{ class: "dept-name" },
vue.toDisplayString(item.deptName),
1
/* TEXT */
)
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
]),
vue.createElementVNode("view", { class: "doctors" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "专家推荐")
]),
vue.createElementVNode("view", { class: "doctor-box" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.doctors, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "doctor",
onClick: ($event) => $options.navTo("./doctorDetails?doctorId=" + item.doctorId)
}, [
vue.createElementVNode("view", { class: "item" }, [
vue.createElementVNode("image", {
mode: "aspectFill",
class: "doc-img",
src: item.avatar
}, null, 8, ["src"]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("view", { class: "doc-box" }, [
vue.createElementVNode(
"view",
{ class: "doc-name" },
vue.toDisplayString(item.doctorName),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "doc-position" },
vue.toDisplayString(item.position),
1
/* TEXT */
)
]),
vue.createElementVNode(
"view",
{ class: "hospital" },
vue.toDisplayString(item.hospitalName) + " " + vue.toDisplayString(item.deptName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "doc-spec" }, [
vue.createElementVNode("view", { class: "title" }, "擅长:"),
vue.createElementVNode(
"view",
{ class: "spec ellipsis" },
vue.toDisplayString(item.speciality),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "doc-ping" }, [
vue.createElementVNode(
"view",
{ class: "ping" },
"好评:" + vue.toDisplayString(item.pingStar) + "分",
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "count" },
"咨询量:" + vue.toDisplayString(item.orderNumber),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "doc-price" }, [
vue.createElementVNode("view", { class: "left" }, [
vue.createTextVNode("¥ "),
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(item.prices, (price, index3) => {
return vue.openBlock(), vue.createElementBlock("text", null, [
vue.createTextVNode(
vue.toDisplayString(price.price.toFixed(2)) + " ",
1
/* TEXT */
),
index3 == 0 ? (vue.openBlock(), vue.createElementBlock("text", { key: 0 }, "/")) : vue.createCommentVNode("v-if", true)
]);
}),
256
/* UNKEYED_FRAGMENT */
))
]),
vue.createElementVNode("view", { class: "btns" }, [
vue.createElementVNode("view", { class: "btn" }, " 咨询医生 ")
])
])
])
])
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
])
]);
}
const PagesDoctorIndex = /* @__PURE__ */ _export_sfc(_sfc_main$2q, [["render", _sfc_render$2D], ["__scopeId", "data-v-43416ddf"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/doctor/index.vue"]]);
const GlobalOption = {
down: {
// 其他down的配置参数也可以写,这里只展示了常用的配置:
offset: 80,
// 在列表顶部,下拉大于80px,松手即可触发下拉刷新的回调
native: false
// 是否使用系统自带的下拉刷新; 默认false; 仅在mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例)
},
up: {
// 其他up的配置参数也可以写,这里只展示了常用的配置:
offset: 150,
// 距底部多远时,触发upCallback,仅mescroll-uni生效 ( mescroll-body配置的是pages.json的 onReachBottomDistance )
toTop: {
// 回到顶部按钮,需配置src才显示
src: "https://www.mescroll.com/img/mescroll-totop.png",
// 图片路径 (建议放入static目录, 如 /static/img/mescroll-totop.png )
offset: 1e3,
// 列表滚动多少距离才显示回到顶部按钮,默认1000px
right: 20,
// 到右边的距离, 默认20 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx)
bottom: 120,
// 到底部的距离, 默认120 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx)
width: 72
// 回到顶部图标的宽度, 默认72 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx)
},
empty: {
use: true,
// 是否显示空布局
icon: "https://www.mescroll.com/img/mescroll-empty.png"
// 图标路径 (建议放入static目录, 如 /static/img/mescroll-empty.png )
}
},
// 国际化配置
i18n: {
// 中文
zh: {
down: {
textInOffset: "下拉刷新",
// 下拉的距离在offset范围内的提示文本
textOutOffset: "释放更新",
// 下拉的距离大于offset范围的提示文本
textLoading: "加载中 ...",
// 加载中的提示文本
textSuccess: "加载成功",
// 加载成功的文本
textErr: "加载失败"
// 加载失败的文本
},
up: {
textLoading: "加载中 ...",
// 加载中的提示文本
textNoMore: "-- END --",
// 没有更多数据的提示文本
empty: {
tip: "~ 空空如也 ~"
// 空提示
}
}
},
// 英文
en: {
down: {
textInOffset: "drop down refresh",
textOutOffset: "release updates",
textLoading: "loading ...",
textSuccess: "loaded successfully",
textErr: "loading failed"
},
up: {
textLoading: "loading ...",
textNoMore: "-- END --",
empty: {
tip: "~ absolutely empty ~"
}
}
}
}
};
const mescrollI18n = {
// 默认语言
def: "zh",
// 获取当前语言类型
getType() {
return uni.getStorageSync("mescroll-i18n") || this.def;
},
// 设置当前语言类型
setType(type2) {
uni.setStorageSync("mescroll-i18n", type2);
}
};
const _sfc_main$2p = {
props: {
// empty的配置项: 默认为GlobalOption.up.empty
option: {
type: Object,
default() {
return {};
}
}
},
// 使用computed获取配置,用于支持option的动态配置
computed: {
// 图标
icon() {
if (this.option.icon != null) {
return this.option.icon;
} else {
let i18nType = mescrollI18n.getType();
if (this.option.i18n) {
return this.option.i18n[i18nType].icon;
} else {
return GlobalOption.i18n[i18nType].up.empty.icon || GlobalOption.up.empty.icon;
}
}
},
// 文本提示
tip() {
if (this.option.tip != null) {
return this.option.tip;
} else {
let i18nType = mescrollI18n.getType();
if (this.option.i18n) {
return this.option.i18n[i18nType].tip;
} else {
return GlobalOption.i18n[i18nType].up.empty.tip || GlobalOption.up.empty.tip;
}
}
},
// 按钮文本
btnText() {
if (this.option.i18n) {
let i18nType = mescrollI18n.getType();
return this.option.i18n[i18nType].btnText;
} else {
return this.option.btnText;
}
}
},
methods: {
// 点击按钮
emptyClick() {
this.$emit("emptyclick");
}
}
};
function _sfc_render$2C(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock(
"view",
{
class: vue.normalizeClass(["mescroll-empty", { "empty-fixed": $props.option.fixed }]),
style: vue.normalizeStyle({ "z-index": $props.option.zIndex, top: $props.option.top })
},
[
vue.createElementVNode("view", null, [
$options.icon ? (vue.openBlock(), vue.createElementBlock("image", {
key: 0,
class: "empty-icon",
src: $options.icon,
mode: "widthFix"
}, null, 8, ["src"])) : vue.createCommentVNode("v-if", true)
]),
$options.tip ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: "empty-tip"
},
vue.toDisplayString($options.tip),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true),
$options.btnText ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 1,
class: "empty-btn",
onClick: _cache[0] || (_cache[0] = (...args) => $options.emptyClick && $options.emptyClick(...args))
},
vue.toDisplayString($options.btnText),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true)
],
6
/* CLASS, STYLE */
);
}
const __easycom_0$d = /* @__PURE__ */ _export_sfc(_sfc_main$2p, [["render", _sfc_render$2C], ["__scopeId", "data-v-7cefd855"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty.vue"]]);
function MeScroll(options, isScrollBody) {
let me = this;
me.version = "1.3.7";
me.options = options || {};
me.isScrollBody = isScrollBody || false;
me.isDownScrolling = false;
me.isUpScrolling = false;
let hasDownCallback = me.options.down && me.options.down.callback;
me.initDownScroll();
me.initUpScroll();
setTimeout(function() {
if ((me.optDown.use || me.optDown.native) && me.optDown.auto && hasDownCallback) {
if (me.optDown.autoShowLoading) {
me.triggerDownScroll();
} else {
me.optDown.callback && me.optDown.callback(me);
}
}
if (!me.isUpAutoLoad) {
setTimeout(function() {
me.optUp.use && me.optUp.auto && !me.isUpAutoLoad && me.triggerUpScroll();
}, 100);
}
}, 30);
}
MeScroll.prototype.extendDownScroll = function(optDown) {
MeScroll.extend(optDown, {
use: true,
// 是否启用下拉刷新; 默认true
auto: true,
// 是否在初始化完毕之后自动执行下拉刷新的回调; 默认true
native: false,
// 是否使用系统自带的下拉刷新; 默认false; 仅mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例)
autoShowLoading: false,
// 如果设置auto=true(在初始化完毕之后自动执行下拉刷新的回调),那么是否显示下拉刷新的进度; 默认false
isLock: false,
// 是否锁定下拉刷新,默认false;
offset: 80,
// 在列表顶部,下拉大于80px,松手即可触发下拉刷新的回调
startTop: 100,
// scroll-view快速滚动到顶部时,此时的scroll-top可能大于0, 此值用于控制最大的误差
inOffsetRate: 1,
// 在列表顶部,下拉的距离小于offset时,改变下拉区域高度比例;值小于1且越接近0,高度变化越小,表现为越往下越难拉
outOffsetRate: 0.2,
// 在列表顶部,下拉的距离大于offset时,改变下拉区域高度比例;值小于1且越接近0,高度变化越小,表现为越往下越难拉
bottomOffset: 20,
// 当手指touchmove位置在距离body底部20px范围内的时候结束上拉刷新,避免Webview嵌套导致touchend事件不执行
minAngle: 45,
// 向下滑动最少偏移的角度,取值区间 [0,90];默认45度,即向下滑动的角度大于45度则触发下拉;而小于45度,将不触发下拉,避免与左右滑动的轮播等组件冲突;
textInOffset: "下拉刷新",
// 下拉的距离在offset范围内的提示文本
textOutOffset: "释放更新",
// 下拉的距离大于offset范围的提示文本
textLoading: "加载中 ...",
// 加载中的提示文本
textSuccess: "加载成功",
// 加载成功的文本
textErr: "加载失败",
// 加载失败的文本
beforeEndDelay: 0,
// 延时结束的时长 (显示加载成功/失败的时长, android小程序设置此项结束下拉会卡顿, 配置后请注意测试)
bgColor: "transparent",
// 背景颜色 (建议在pages.json中再设置一下backgroundColorTop)
textColor: "gray",
// 文本颜色 (当bgColor配置了颜色,而textColor未配置时,则textColor会默认为白色)
inited: null,
// 下拉刷新初始化完毕的回调
inOffset: null,
// 下拉的距离进入offset范围内那一刻的回调
outOffset: null,
// 下拉的距离大于offset那一刻的回调
onMoving: null,
// 下拉过程中的回调,滑动过程一直在执行; rate下拉区域当前高度与指定距离的比值(inOffset: rate<1; outOffset: rate>=1); downHight当前下拉区域的高度
beforeLoading: null,
// 准备触发下拉刷新的回调: 如果return true,将不触发showLoading和callback回调; 常用来完全自定义下拉刷新, 参考案例【淘宝 v6.8.0】
showLoading: null,
// 显示下拉刷新进度的回调
afterLoading: null,
// 显示下拉刷新进度的回调之后,马上要执行的代码 (如: 在wxs中使用)
beforeEndDownScroll: null,
// 准备结束下拉的回调. 返回结束下拉的延时执行时间,默认0ms; 常用于结束下拉之前再显示另外一小段动画,才去隐藏下拉刷新的场景, 参考案例【dotJump】
endDownScroll: null,
// 结束下拉刷新的回调
afterEndDownScroll: null,
// 结束下拉刷新的回调,马上要执行的代码 (如: 在wxs中使用)
callback: function(mescroll) {
mescroll.resetUpScroll();
}
});
};
MeScroll.prototype.extendUpScroll = function(optUp) {
MeScroll.extend(optUp, {
use: true,
// 是否启用上拉加载; 默认true
auto: true,
// 是否在初始化完毕之后自动执行上拉加载的回调; 默认true
isLock: false,
// 是否锁定上拉加载,默认false;
isBoth: true,
// 上拉加载时,如果滑动到列表顶部是否可以同时触发下拉刷新;默认true,两者可同时触发;
callback: null,
// 上拉加载的回调;function(page,mescroll){ }
page: {
num: 0,
// 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
size: 10,
// 每页数据的数量
time: null
// 加载第一页数据服务器返回的时间; 防止用户翻页时,后台新增了数据从而导致下一页数据重复;
},
noMoreSize: 5,
// 如果列表已无数据,可设置列表的总数量要大于等于5条才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看
offset: 150,
// 距底部多远时,触发upCallback,仅mescroll-uni生效 ( mescroll-body配置的是pages.json的 onReachBottomDistance )
textLoading: "加载中 ...",
// 加载中的提示文本
textNoMore: "-- END --",
// 没有更多数据的提示文本
bgColor: "transparent",
// 背景颜色 (建议在pages.json中再设置一下backgroundColorBottom)
textColor: "gray",
// 文本颜色 (当bgColor配置了颜色,而textColor未配置时,则textColor会默认为白色)
inited: null,
// 初始化完毕的回调
showLoading: null,
// 显示加载中的回调
showNoMore: null,
// 显示无更多数据的回调
hideUpScroll: null,
// 隐藏上拉加载的回调
errDistance: 60,
// endErr的时候需往上滑动一段距离,使其往下滑动时再次触发onReachBottom,仅mescroll-body生效
toTop: {
// 回到顶部按钮,需配置src才显示
src: null,
// 图片路径,默认null (绝对路径或网络图)
offset: 1e3,
// 列表滚动多少距离才显示回到顶部按钮,默认1000
duration: 300,
// 回到顶部的动画时长,默认300ms (当值为0或300则使用系统自带回到顶部,更流畅; 其他值则通过step模拟,部分机型可能不够流畅,所以非特殊情况不建议修改此项)
btnClick: null,
// 点击按钮的回调
onShow: null,
// 是否显示的回调
zIndex: 9990,
// fixed定位z-index值
left: null,
// 到左边的距离, 默认null. 此项有值时,right不生效. (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
right: 20,
// 到右边的距离, 默认20 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
bottom: 120,
// 到底部的距离, 默认120 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
safearea: false,
// bottom的偏移量是否加上底部安全区的距离, 默认false, 需要适配iPhoneX时使用 (具体的界面如果不配置此项,则取本vue的safearea值)
width: 72,
// 回到顶部图标的宽度, 默认72 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
radius: "50%"
// 圆角, 默认"50%" (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
},
empty: {
use: true,
// 是否显示空布局
icon: null,
// 图标路径
tip: "~ 暂无相关数据 ~",
// 提示
btnText: "",
// 按钮
btnClick: null,
// 点击按钮的回调
onShow: null,
// 是否显示的回调
fixed: false,
// 是否使用fixed定位,默认false; 配置fixed为true,以下的top和zIndex才生效 (transform会使fixed失效,最终会降级为absolute)
top: "100rpx",
// fixed定位的top值 (完整的单位值,如 "10%"; "100rpx")
zIndex: 99
// fixed定位z-index值
},
onScroll: false
// 是否监听滚动事件
});
};
MeScroll.extend = function(userOption, defaultOption) {
if (!userOption)
return defaultOption;
for (let key in defaultOption) {
if (userOption[key] == null) {
let def = defaultOption[key];
if (def != null && typeof def === "object") {
userOption[key] = MeScroll.extend({}, def);
} else {
userOption[key] = def;
}
} else if (typeof userOption[key] === "object") {
MeScroll.extend(userOption[key], defaultOption[key]);
}
}
return userOption;
};
MeScroll.prototype.hasColor = function(color2) {
if (!color2)
return false;
let c = color2.toLowerCase();
return c != "#fff" && c != "#ffffff" && c != "transparent" && c != "white";
};
MeScroll.prototype.initDownScroll = function() {
let me = this;
me.optDown = me.options.down || {};
if (!me.optDown.textColor && me.hasColor(me.optDown.bgColor))
me.optDown.textColor = "#fff";
me.extendDownScroll(me.optDown);
if (me.isScrollBody && me.optDown.native) {
me.optDown.use = false;
} else {
me.optDown.native = false;
}
me.downHight = 0;
if (me.optDown.use && me.optDown.inited) {
setTimeout(function() {
me.optDown.inited(me);
}, 0);
}
};
MeScroll.prototype.touchstartEvent = function(e) {
if (!this.optDown.use)
return;
this.startPoint = this.getPoint(e);
this.startTop = this.getScrollTop();
this.startAngle = 0;
this.lastPoint = this.startPoint;
this.maxTouchmoveY = this.getBodyHeight() - this.optDown.bottomOffset;
this.inTouchend = false;
};
MeScroll.prototype.touchmoveEvent = function(e) {
if (!this.optDown.use)
return;
let me = this;
let scrollTop = me.getScrollTop();
let curPoint = me.getPoint(e);
let moveY = curPoint.y - me.startPoint.y;
if (moveY > 0 && (me.isScrollBody && scrollTop <= 0 || !me.isScrollBody && (scrollTop <= 0 || scrollTop <= me.optDown.startTop && scrollTop === me.startTop))) {
if (!me.inTouchend && !me.isDownScrolling && !me.optDown.isLock && (!me.isUpScrolling || me.isUpScrolling && me.optUp.isBoth)) {
if (!me.startAngle)
me.startAngle = me.getAngle(me.lastPoint, curPoint);
if (me.startAngle < me.optDown.minAngle)
return;
if (me.maxTouchmoveY > 0 && curPoint.y >= me.maxTouchmoveY) {
me.inTouchend = true;
me.touchendEvent();
return;
}
me.preventDefault(e);
let diff = curPoint.y - me.lastPoint.y;
if (me.downHight < me.optDown.offset) {
if (me.movetype !== 1) {
me.movetype = 1;
me.isDownEndSuccess = null;
me.optDown.inOffset && me.optDown.inOffset(me);
me.isMoveDown = true;
}
me.downHight += diff * me.optDown.inOffsetRate;
} else {
if (me.movetype !== 2) {
me.movetype = 2;
me.optDown.outOffset && me.optDown.outOffset(me);
me.isMoveDown = true;
}
if (diff > 0) {
me.downHight += diff * me.optDown.outOffsetRate;
} else {
me.downHight += diff;
}
}
me.downHight = Math.round(me.downHight);
let rate = me.downHight / me.optDown.offset;
me.optDown.onMoving && me.optDown.onMoving(me, rate, me.downHight);
}
}
me.lastPoint = curPoint;
};
MeScroll.prototype.touchendEvent = function(e) {
if (!this.optDown.use)
return;
if (this.isMoveDown) {
if (this.downHight >= this.optDown.offset) {
this.triggerDownScroll();
} else {
this.downHight = 0;
this.endDownScrollCall(this);
}
this.movetype = 0;
this.isMoveDown = false;
} else if (!this.isScrollBody && this.getScrollTop() === this.startTop) {
let isScrollUp = this.getPoint(e).y - this.startPoint.y < 0;
if (isScrollUp) {
let angle = this.getAngle(this.getPoint(e), this.startPoint);
if (angle > 80) {
this.triggerUpScroll(true);
}
}
}
};
MeScroll.prototype.getPoint = function(e) {
if (!e) {
return {
x: 0,
y: 0
};
}
if (e.touches && e.touches[0]) {
return {
x: e.touches[0].pageX,
y: e.touches[0].pageY
};
} else if (e.changedTouches && e.changedTouches[0]) {
return {
x: e.changedTouches[0].pageX,
y: e.changedTouches[0].pageY
};
} else {
return {
x: e.clientX,
y: e.clientY
};
}
};
MeScroll.prototype.getAngle = function(p1, p2) {
let x = Math.abs(p1.x - p2.x);
let y = Math.abs(p1.y - p2.y);
let z = Math.sqrt(x * x + y * y);
let angle = 0;
if (z !== 0) {
angle = Math.asin(y / z) / Math.PI * 180;
}
return angle;
};
MeScroll.prototype.triggerDownScroll = function() {
if (this.optDown.beforeLoading && this.optDown.beforeLoading(this))
;
else {
this.showDownScroll();
!this.optDown.native && this.optDown.callback && this.optDown.callback(this);
}
};
MeScroll.prototype.showDownScroll = function() {
this.isDownScrolling = true;
if (this.optDown.native) {
uni.startPullDownRefresh();
this.showDownLoadingCall(0);
} else {
this.downHight = this.optDown.offset;
this.showDownLoadingCall(this.downHight);
}
};
MeScroll.prototype.showDownLoadingCall = function(downHight) {
this.optDown.showLoading && this.optDown.showLoading(this, downHight);
this.optDown.afterLoading && this.optDown.afterLoading(this, downHight);
};
MeScroll.prototype.onPullDownRefresh = function() {
this.isDownScrolling = true;
this.showDownLoadingCall(0);
this.optDown.callback && this.optDown.callback(this);
};
MeScroll.prototype.endDownScroll = function() {
if (this.optDown.native) {
this.isDownScrolling = false;
this.endDownScrollCall(this);
uni.stopPullDownRefresh();
return;
}
let me = this;
let endScroll = function() {
me.downHight = 0;
me.isDownScrolling = false;
me.endDownScrollCall(me);
if (!me.isScrollBody) {
me.setScrollHeight(0);
me.scrollTo(0, 0);
}
};
let delay = 0;
if (me.optDown.beforeEndDownScroll) {
delay = me.optDown.beforeEndDownScroll(me);
if (me.isDownEndSuccess == null)
delay = 0;
}
if (typeof delay === "number" && delay > 0) {
setTimeout(endScroll, delay);
} else {
endScroll();
}
};
MeScroll.prototype.endDownScrollCall = function() {
this.optDown.endDownScroll && this.optDown.endDownScroll(this);
this.optDown.afterEndDownScroll && this.optDown.afterEndDownScroll(this);
};
MeScroll.prototype.lockDownScroll = function(isLock) {
if (isLock == null)
isLock = true;
this.optDown.isLock = isLock;
};
MeScroll.prototype.lockUpScroll = function(isLock) {
if (isLock == null)
isLock = true;
this.optUp.isLock = isLock;
};
MeScroll.prototype.initUpScroll = function() {
let me = this;
me.optUp = me.options.up || { use: false };
if (!me.optUp.textColor && me.hasColor(me.optUp.bgColor))
me.optUp.textColor = "#fff";
me.extendUpScroll(me.optUp);
if (me.optUp.use === false)
return;
me.optUp.hasNext = true;
me.startNum = me.optUp.page.num + 1;
if (me.optUp.inited) {
setTimeout(function() {
me.optUp.inited(me);
}, 0);
}
};
MeScroll.prototype.onReachBottom = function() {
if (this.isScrollBody && !this.isUpScrolling) {
if (!this.optUp.isLock && this.optUp.hasNext) {
this.triggerUpScroll();
}
}
};
MeScroll.prototype.onPageScroll = function(e) {
if (!this.isScrollBody)
return;
this.setScrollTop(e.scrollTop);
if (e.scrollTop >= this.optUp.toTop.offset) {
this.showTopBtn();
} else {
this.hideTopBtn();
}
};
MeScroll.prototype.scroll = function(e, onScroll) {
this.setScrollTop(e.scrollTop);
this.setScrollHeight(e.scrollHeight);
if (this.preScrollY == null)
this.preScrollY = 0;
this.isScrollUp = e.scrollTop - this.preScrollY > 0;
this.preScrollY = e.scrollTop;
this.isScrollUp && this.triggerUpScroll(true);
if (e.scrollTop >= this.optUp.toTop.offset) {
this.showTopBtn();
} else {
this.hideTopBtn();
}
this.optUp.onScroll && onScroll && onScroll();
};
MeScroll.prototype.triggerUpScroll = function(isCheck) {
if (!this.isUpScrolling && this.optUp.use && this.optUp.callback) {
if (isCheck === true) {
let canUp = false;
if (this.optUp.hasNext && !this.optUp.isLock && !this.isDownScrolling) {
if (this.getScrollBottom() <= this.optUp.offset) {
canUp = true;
}
}
if (canUp === false)
return;
}
this.showUpScroll();
this.optUp.page.num++;
this.isUpAutoLoad = true;
this.num = this.optUp.page.num;
this.size = this.optUp.page.size;
this.time = this.optUp.page.time;
this.optUp.callback(this);
}
};
MeScroll.prototype.showUpScroll = function() {
this.isUpScrolling = true;
this.optUp.showLoading && this.optUp.showLoading(this);
};
MeScroll.prototype.showNoMore = function() {
this.optUp.hasNext = false;
this.optUp.showNoMore && this.optUp.showNoMore(this);
};
MeScroll.prototype.hideUpScroll = function() {
this.optUp.hideUpScroll && this.optUp.hideUpScroll(this);
};
MeScroll.prototype.endUpScroll = function(isShowNoMore) {
if (isShowNoMore != null) {
if (isShowNoMore) {
this.showNoMore();
} else {
this.hideUpScroll();
}
}
this.isUpScrolling = false;
};
MeScroll.prototype.resetUpScroll = function(isShowLoading) {
if (this.optUp && this.optUp.use) {
let page2 = this.optUp.page;
this.prePageNum = page2.num;
this.prePageTime = page2.time;
page2.num = this.startNum;
page2.time = null;
if (!this.isDownScrolling && isShowLoading !== false) {
if (isShowLoading == null) {
this.removeEmpty();
this.showUpScroll();
} else {
this.showDownScroll();
}
}
this.isUpAutoLoad = true;
this.num = page2.num;
this.size = page2.size;
this.time = page2.time;
this.optUp.callback && this.optUp.callback(this);
}
};
MeScroll.prototype.setPageNum = function(num) {
this.optUp.page.num = num - 1;
};
MeScroll.prototype.setPageSize = function(size) {
this.optUp.page.size = size;
};
MeScroll.prototype.endByPage = function(dataSize, totalPage, systime) {
let hasNext;
if (this.optUp.use && totalPage != null)
hasNext = this.optUp.page.num < totalPage;
this.endSuccess(dataSize, hasNext, systime);
};
MeScroll.prototype.endBySize = function(dataSize, totalSize, systime) {
let hasNext;
if (this.optUp.use && totalSize != null) {
let loadSize = (this.optUp.page.num - 1) * this.optUp.page.size + dataSize;
hasNext = loadSize < totalSize;
}
this.endSuccess(dataSize, hasNext, systime);
};
MeScroll.prototype.endSuccess = function(dataSize, hasNext, systime) {
let me = this;
if (me.isDownScrolling) {
me.isDownEndSuccess = true;
me.endDownScroll();
}
if (me.optUp.use) {
let isShowNoMore;
if (dataSize != null) {
let pageNum = me.optUp.page.num;
let pageSize = me.optUp.page.size;
if (pageNum === 1) {
if (systime)
me.optUp.page.time = systime;
}
if (dataSize < pageSize || hasNext === false) {
me.optUp.hasNext = false;
if (dataSize === 0 && pageNum === 1) {
isShowNoMore = false;
me.showEmpty();
} else {
let allDataSize = (pageNum - 1) * pageSize + dataSize;
if (allDataSize < me.optUp.noMoreSize) {
isShowNoMore = false;
} else {
isShowNoMore = true;
}
me.removeEmpty();
}
} else {
isShowNoMore = false;
me.optUp.hasNext = true;
me.removeEmpty();
}
}
me.endUpScroll(isShowNoMore);
}
};
MeScroll.prototype.endErr = function(errDistance) {
if (this.isDownScrolling) {
this.isDownEndSuccess = false;
let page2 = this.optUp.page;
if (page2 && this.prePageNum) {
page2.num = this.prePageNum;
page2.time = this.prePageTime;
}
this.endDownScroll();
}
if (this.isUpScrolling) {
this.optUp.page.num--;
this.endUpScroll(false);
if (this.isScrollBody && errDistance !== 0) {
if (!errDistance)
errDistance = this.optUp.errDistance;
this.scrollTo(this.getScrollTop() - errDistance, 0);
}
}
};
MeScroll.prototype.showEmpty = function() {
this.optUp.empty.use && this.optUp.empty.onShow && this.optUp.empty.onShow(true);
};
MeScroll.prototype.removeEmpty = function() {
this.optUp.empty.use && this.optUp.empty.onShow && this.optUp.empty.onShow(false);
};
MeScroll.prototype.showTopBtn = function() {
if (!this.topBtnShow) {
this.topBtnShow = true;
this.optUp.toTop.onShow && this.optUp.toTop.onShow(true);
}
};
MeScroll.prototype.hideTopBtn = function() {
if (this.topBtnShow) {
this.topBtnShow = false;
this.optUp.toTop.onShow && this.optUp.toTop.onShow(false);
}
};
MeScroll.prototype.getScrollTop = function() {
return this.scrollTop || 0;
};
MeScroll.prototype.setScrollTop = function(y) {
this.scrollTop = y;
};
MeScroll.prototype.scrollTo = function(y, t) {
this.myScrollTo && this.myScrollTo(y, t);
};
MeScroll.prototype.resetScrollTo = function(myScrollTo) {
this.myScrollTo = myScrollTo;
};
MeScroll.prototype.getScrollBottom = function() {
return this.getScrollHeight() - this.getClientHeight() - this.getScrollTop();
};
MeScroll.prototype.getStep = function(star, end, callback, t, rate) {
let diff = end - star;
if (t === 0 || diff === 0) {
callback && callback(end);
return;
}
t = t || 300;
rate = rate || 30;
let count = t / rate;
let step = diff / count;
let i = 0;
let timer = setInterval(function() {
if (i < count - 1) {
star += step;
callback && callback(star, timer);
i++;
} else {
callback && callback(end, timer);
clearInterval(timer);
}
}, rate);
};
MeScroll.prototype.getClientHeight = function(isReal) {
let h = this.clientHeight || 0;
if (h === 0 && isReal !== true) {
h = this.getBodyHeight();
}
return h;
};
MeScroll.prototype.setClientHeight = function(h) {
this.clientHeight = h;
};
MeScroll.prototype.getScrollHeight = function() {
return this.scrollHeight || 0;
};
MeScroll.prototype.setScrollHeight = function(h) {
this.scrollHeight = h;
};
MeScroll.prototype.getBodyHeight = function() {
return this.bodyHeight || 0;
};
MeScroll.prototype.setBodyHeight = function(h) {
this.bodyHeight = h;
};
MeScroll.prototype.preventDefault = function(e) {
if (e && e.cancelable && !e.defaultPrevented)
e.preventDefault();
};
const _sfc_main$2o = {
props: {
// up.toTop的配置项
option: Object,
// 是否显示
value: false
},
computed: {
// 支付宝小程序需写成计算属性,prop定义default仍报错
mOption() {
return this.option || {};
},
// 优先显示左边
left() {
return this.mOption.left ? this.addUnit(this.mOption.left) : "auto";
},
// 右边距离 (优先显示左边)
right() {
return this.mOption.left ? "auto" : this.addUnit(this.mOption.right);
}
},
methods: {
addUnit(num) {
if (!num)
return 0;
if (typeof num === "number")
return num + "rpx";
return num;
},
toTopClick() {
this.$emit("input", false);
this.$emit("click");
}
}
};
function _sfc_render$2B(_ctx, _cache, $props, $setup, $data, $options) {
return $options.mOption.src ? (vue.openBlock(), vue.createElementBlock("image", {
key: 0,
class: vue.normalizeClass(["mescroll-totop", [$props.value ? "mescroll-totop-in" : "mescroll-totop-out", { "mescroll-totop-safearea": $options.mOption.safearea }]]),
style: vue.normalizeStyle({ "z-index": $options.mOption.zIndex, "left": $options.left, "right": $options.right, "bottom": $options.addUnit($options.mOption.bottom), "width": $options.addUnit($options.mOption.width), "border-radius": $options.addUnit($options.mOption.radius) }),
src: $options.mOption.src,
mode: "widthFix",
onClick: _cache[0] || (_cache[0] = (...args) => $options.toTopClick && $options.toTopClick(...args))
}, null, 14, ["src"])) : vue.createCommentVNode("v-if", true);
}
const MescrollTop = /* @__PURE__ */ _export_sfc(_sfc_main$2o, [["render", _sfc_render$2B], ["__scopeId", "data-v-49fff3a8"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top.vue"]]);
const WxsMixin = {
data() {
return {
// 传入wxs视图层的数据 (响应式)
wxsProp: {
optDown: {},
// 下拉刷新的配置
scrollTop: 0,
// 滚动条的距离
bodyHeight: 0,
// body的高度
isDownScrolling: false,
// 是否正在下拉刷新中
isUpScrolling: false,
// 是否正在上拉加载中
isScrollBody: true,
// 是否为mescroll-body滚动
isUpBoth: true,
// 上拉加载时,是否同时可以下拉刷新
t: 0
// 数据更新的标记 (只有数据更新了,才会触发wxs的Observer)
},
// 标记调用wxs视图层的方法
callProp: {
callType: "",
// 方法名
t: 0
// 数据更新的标记 (只有数据更新了,才会触发wxs的Observer)
}
// 不用wxs的平台使用此处的wxsBiz对象,抹平wxs的写法 (微信小程序和APP使用的wxsBiz对象是./wxs/wxs.wxs)
// 不用renderjs的平台使用此处的renderBiz对象,抹平renderjs的写法 (app 和 h5 使用的renderBiz对象是./wxs/renderjs.js)
};
},
methods: {
// wxs视图层调用逻辑层的回调
wxsCall(msg) {
if (msg.type === "setWxsProp") {
this.wxsProp = {
optDown: this.mescroll.optDown,
scrollTop: this.mescroll.getScrollTop(),
bodyHeight: this.mescroll.getBodyHeight(),
isDownScrolling: this.mescroll.isDownScrolling,
isUpScrolling: this.mescroll.isUpScrolling,
isUpBoth: this.mescroll.optUp.isBoth,
isScrollBody: this.mescroll.isScrollBody,
t: Date.now()
};
} else if (msg.type === "setLoadType") {
this.downLoadType = msg.downLoadType;
this.$set(this.mescroll, "downLoadType", this.downLoadType);
this.$set(this.mescroll, "isDownEndSuccess", null);
} else if (msg.type === "triggerDownScroll") {
this.mescroll.triggerDownScroll();
} else if (msg.type === "endDownScroll") {
this.mescroll.endDownScroll();
} else if (msg.type === "triggerUpScroll") {
this.mescroll.triggerUpScroll(true);
}
}
},
mounted() {
this.mescroll.optDown.afterLoading = () => {
this.callProp = { callType: "showLoading", t: Date.now() };
};
this.mescroll.optDown.afterEndDownScroll = () => {
this.callProp = { callType: "endDownScroll", t: Date.now() };
let delay = 300 + (this.mescroll.optDown.beforeEndDelay || 0);
setTimeout(() => {
if (this.downLoadType === 4 || this.downLoadType === 0) {
this.callProp = { callType: "clearTransform", t: Date.now() };
}
this.$set(this.mescroll, "downLoadType", this.downLoadType);
}, delay);
};
this.wxsCall({ type: "setWxsProp" });
}
};
const block0$1 = (Comp) => {
(Comp.$wxs || (Comp.$wxs = [])).push("wxsBiz");
(Comp.$wxsModules || (Comp.$wxsModules = {}))["wxsBiz"] = "30f4e25a";
};
const block1 = (Comp) => {
(Comp.$renderjs || (Comp.$renderjs = [])).push("renderBiz");
(Comp.$renderjsModules || (Comp.$renderjsModules = {}))["renderBiz"] = "1ca30ca9";
};
const _sfc_main$2n = {
name: "mescroll-body",
mixins: [WxsMixin],
components: {
MescrollTop
},
props: {
down: Object,
up: Object,
i18n: Object,
top: [String, Number],
topbar: [Boolean, String],
bottom: [String, Number],
safearea: Boolean,
height: [String, Number],
bottombar: {
type: Boolean,
default: true
},
sticky: Boolean
},
data() {
return {
mescroll: { optDown: {}, optUp: {} },
// mescroll实例
downHight: 0,
//下拉刷新: 容器高度
downRate: 0,
// 下拉比率(inOffset: rate<1; outOffset: rate>=1)
downLoadType: 0,
// 下拉刷新状态: 0(loading前), 1(inOffset), 2(outOffset), 3(showLoading), 4(endDownScroll)
upLoadType: 0,
// 上拉加载状态:0(loading前),1(loading中),2(没有更多了,显示END文本提示),3(没有更多了,不显示END文本提示)
isShowEmpty: false,
// 是否显示空布局
isShowToTop: false,
// 是否显示回到顶部按钮
windowHeight: 0,
// 可使用窗口的高度
windowBottom: 0,
// 可使用窗口的底部位置
statusBarHeight: 0
// 状态栏高度
};
},
computed: {
// mescroll最小高度,默认windowHeight,使列表不满屏仍可下拉
minHeight() {
return this.toPx(this.height || "100%") + "px";
},
// 下拉布局往下偏移的距离 (px)
numTop() {
return this.toPx(this.top);
},
padTop() {
return this.numTop + "px";
},
// 上拉布局往上偏移 (px)
numBottom() {
return this.toPx(this.bottom);
},
padBottom() {
return this.numBottom + "px";
},
// 是否为重置下拉的状态
isDownReset() {
return this.downLoadType === 3 || this.downLoadType === 4;
},
// 过渡
transition() {
return this.isDownReset ? "transform 300ms" : "";
},
translateY() {
return this.downHight > 0 ? "translateY(" + this.downHight + "px)" : "";
},
// 是否在加载中
isDownLoading() {
return this.downLoadType === 3;
},
// 旋转的角度
downRotate() {
return "rotate(" + 360 * this.downRate + "deg)";
},
// 文本提示
downText() {
if (!this.mescroll)
return "";
switch (this.downLoadType) {
case 1:
return this.mescroll.optDown.textInOffset;
case 2:
return this.mescroll.optDown.textOutOffset;
case 3:
return this.mescroll.optDown.textLoading;
case 4:
return this.mescroll.isDownEndSuccess ? this.mescroll.optDown.textSuccess : this.mescroll.isDownEndSuccess == false ? this.mescroll.optDown.textErr : this.mescroll.optDown.textInOffset;
default:
return this.mescroll.optDown.textInOffset;
}
}
},
methods: {
//number,rpx,upx,px,% --> px的数值
toPx(num) {
if (typeof num === "string") {
if (num.indexOf("px") !== -1) {
if (num.indexOf("rpx") !== -1) {
num = num.replace("rpx", "");
} else if (num.indexOf("upx") !== -1) {
num = num.replace("upx", "");
} else {
return Number(num.replace("px", ""));
}
} else if (num.indexOf("%") !== -1) {
let rate = Number(num.replace("%", "")) / 100;
return this.windowHeight * rate;
}
}
return num ? uni.upx2px(Number(num)) : 0;
},
// 点击空布局的按钮回调
emptyClick() {
this.$emit("emptyclick", this.mescroll);
},
// 点击回到顶部的按钮回调
toTopClick() {
this.mescroll.scrollTo(0, this.mescroll.optUp.toTop.duration);
this.$emit("topclick", this.mescroll);
}
},
// 使用created初始化mescroll对象; 如果用mounted部分css样式编译到H5会失效
created() {
let vm = this;
let diyOption = {
// 下拉刷新的配置
down: {
inOffset() {
vm.downLoadType = 1;
},
outOffset() {
vm.downLoadType = 2;
},
onMoving(mescroll, rate, downHight) {
vm.downHight = downHight;
vm.downRate = rate;
},
showLoading(mescroll, downHight) {
vm.downLoadType = 3;
vm.downHight = downHight;
},
beforeEndDownScroll(mescroll) {
vm.downLoadType = 4;
return mescroll.optDown.beforeEndDelay;
},
endDownScroll() {
vm.downLoadType = 4;
vm.downHight = 0;
if (vm.downResetTimer) {
clearTimeout(vm.downResetTimer);
vm.downResetTimer = null;
}
vm.downResetTimer = setTimeout(() => {
if (vm.downLoadType === 4)
vm.downLoadType = 0;
}, 300);
},
// 派发下拉刷新的回调
callback: function(mescroll) {
vm.$emit("down", mescroll);
}
},
// 上拉加载的配置
up: {
// 显示加载中的回调
showLoading() {
vm.upLoadType = 1;
},
// 显示无更多数据的回调
showNoMore() {
vm.upLoadType = 2;
},
// 隐藏上拉加载的回调
hideUpScroll(mescroll) {
vm.upLoadType = mescroll.optUp.hasNext ? 0 : 3;
},
// 空布局
empty: {
onShow(isShow) {
vm.isShowEmpty = isShow;
}
},
// 回到顶部
toTop: {
onShow(isShow) {
vm.isShowToTop = isShow;
}
},
// 派发上拉加载的回调
callback: function(mescroll) {
vm.$emit("up", mescroll);
}
}
};
let i18nType = mescrollI18n.getType();
let i18nOption = { type: i18nType };
MeScroll.extend(i18nOption, vm.i18n);
MeScroll.extend(i18nOption, GlobalOption.i18n);
MeScroll.extend(diyOption, i18nOption[i18nType]);
MeScroll.extend(diyOption, { down: GlobalOption.down, up: GlobalOption.up });
let myOption = JSON.parse(JSON.stringify({ down: vm.down, up: vm.up }));
MeScroll.extend(myOption, diyOption);
vm.mescroll = new MeScroll(myOption, true);
vm.mescroll.i18n = i18nOption;
vm.$emit("init", vm.mescroll);
const sys2 = uni.getSystemInfoSync();
if (sys2.windowHeight)
vm.windowHeight = sys2.windowHeight;
if (sys2.windowBottom)
vm.windowBottom = sys2.windowBottom;
if (sys2.statusBarHeight)
vm.statusBarHeight = sys2.statusBarHeight;
vm.mescroll.setBodyHeight(sys2.windowHeight);
vm.mescroll.resetScrollTo((y, t) => {
if (typeof y === "string") {
setTimeout(() => {
let selector;
if (y.indexOf("#") == -1 && y.indexOf(".") == -1) {
selector = "#" + y;
} else {
selector = y;
if (y.indexOf(">>>") != -1) {
selector = y.split(">>>")[1].trim();
}
}
uni.createSelectorQuery().select(selector).boundingClientRect(function(rect) {
if (rect) {
let top = rect.top;
top += vm.mescroll.getScrollTop();
uni.pageScrollTo({
scrollTop: top,
duration: t
});
} else {
formatAppLog("error", "at uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.vue:352", selector + " does not exist");
}
}).exec();
}, 30);
} else {
uni.pageScrollTo({
scrollTop: y,
duration: t
});
}
});
if (vm.up && vm.up.toTop && vm.up.toTop.safearea != null)
;
else {
vm.mescroll.optUp.toTop.safearea = vm.safearea;
}
uni.$on("setMescrollGlobalOption", (options) => {
if (!options)
return;
let i18nType2 = options.i18n ? options.i18n.type : null;
if (i18nType2 && vm.mescroll.i18n.type != i18nType2) {
vm.mescroll.i18n.type = i18nType2;
mescrollI18n.setType(i18nType2);
MeScroll.extend(options, vm.mescroll.i18n[i18nType2]);
}
if (options.down) {
let down = MeScroll.extend({}, options.down);
vm.mescroll.optDown = MeScroll.extend(down, vm.mescroll.optDown);
}
if (options.up) {
let up = MeScroll.extend({}, options.up);
vm.mescroll.optUp = MeScroll.extend(up, vm.mescroll.optUp);
}
});
},
destroyed() {
uni.$off("setMescrollGlobalOption");
}
};
function _sfc_render$2A(_ctx, _cache, $props, $setup, $data, $options) {
const _component_mescroll_empty = resolveEasycom(vue.resolveDynamicComponent("mescroll-empty"), __easycom_0$d);
const _component_mescroll_top = vue.resolveComponent("mescroll-top");
return vue.openBlock(), vue.createElementBlock("view", {
class: vue.normalizeClass(["mescroll-body mescroll-render-touch", { "mescorll-sticky": $props.sticky }]),
style: vue.normalizeStyle({ "minHeight": $options.minHeight, "padding-top": $options.padTop, "padding-bottom": $options.padBottom }),
onTouchstart: _cache[1] || (_cache[1] = (...args) => _ctx.wxsBiz.touchstartEvent && _ctx.wxsBiz.touchstartEvent(...args)),
onTouchmove: _cache[2] || (_cache[2] = (...args) => _ctx.wxsBiz.touchmoveEvent && _ctx.wxsBiz.touchmoveEvent(...args)),
onTouchend: _cache[3] || (_cache[3] = (...args) => _ctx.wxsBiz.touchendEvent && _ctx.wxsBiz.touchendEvent(...args)),
onTouchcancel: _cache[4] || (_cache[4] = (...args) => _ctx.wxsBiz.touchendEvent && _ctx.wxsBiz.touchendEvent(...args)),
"change:prop": _ctx.wxsBiz.propObserver,
prop: vue.wp(_ctx.wxsProp)
}, [
vue.createCommentVNode(" 状态栏 "),
$props.topbar && $data.statusBarHeight ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: "mescroll-topbar",
style: vue.normalizeStyle({ height: $data.statusBarHeight + "px", background: $props.topbar })
},
null,
4
/* STYLE */
)) : vue.createCommentVNode("v-if", true),
vue.createElementVNode("view", {
class: "mescroll-body-content mescroll-wxs-content",
style: vue.normalizeStyle({ transform: $options.translateY, transition: $options.transition }),
"change:prop": _ctx.wxsBiz.callObserver,
prop: vue.wp(_ctx.callProp)
}, [
vue.createCommentVNode(" 下拉加载区域 (支付宝小程序子组件传参给子子组件仍报单项数据流的异常,暂时不通过mescroll-down组件实现)"),
vue.createCommentVNode(' '),
$data.mescroll.optDown.use ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: "mescroll-downwarp",
style: vue.normalizeStyle({ "background": $data.mescroll.optDown.bgColor, "color": $data.mescroll.optDown.textColor })
},
[
vue.createElementVNode("view", { class: "downwarp-content" }, [
vue.createElementVNode(
"view",
{
class: vue.normalizeClass(["downwarp-progress mescroll-wxs-progress", { "mescroll-rotate": $options.isDownLoading }]),
style: vue.normalizeStyle({ "border-color": $data.mescroll.optDown.textColor, "transform": $options.downRotate })
},
null,
6
/* CLASS, STYLE */
),
vue.createElementVNode(
"view",
{ class: "downwarp-tip" },
vue.toDisplayString($options.downText),
1
/* TEXT */
)
])
],
4
/* STYLE */
)) : vue.createCommentVNode("v-if", true),
vue.createCommentVNode(" 列表内容 "),
vue.renderSlot(_ctx.$slots, "default", {}, void 0, true),
vue.createCommentVNode(" 空布局 "),
$data.isShowEmpty ? (vue.openBlock(), vue.createBlock(_component_mescroll_empty, {
key: 1,
option: $data.mescroll.optUp.empty,
onEmptyclick: $options.emptyClick
}, null, 8, ["option", "onEmptyclick"])) : vue.createCommentVNode("v-if", true),
vue.createCommentVNode(" 上拉加载区域 (下拉刷新时不显示, 支付宝小程序子组件传参给子子组件仍报单项数据流的异常,暂时不通过mescroll-up组件实现)"),
vue.createCommentVNode(' '),
$data.mescroll.optUp.use && !$options.isDownLoading && $data.upLoadType !== 3 ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 2,
class: "mescroll-upwarp",
style: vue.normalizeStyle({ "background": $data.mescroll.optUp.bgColor, "color": $data.mescroll.optUp.textColor })
},
[
vue.createCommentVNode(" 加载中 (此处不能用v-if,否则android小程序快速上拉可能会不断触发上拉回调) "),
vue.withDirectives(vue.createElementVNode(
"view",
null,
[
vue.createElementVNode(
"view",
{
class: "upwarp-progress mescroll-rotate",
style: vue.normalizeStyle({ "border-color": $data.mescroll.optUp.textColor })
},
null,
4
/* STYLE */
),
vue.createElementVNode(
"view",
{ class: "upwarp-tip" },
vue.toDisplayString($data.mescroll.optUp.textLoading),
1
/* TEXT */
)
],
512
/* NEED_PATCH */
), [
[vue.vShow, $data.upLoadType === 1]
]),
vue.createCommentVNode(" 无数据 "),
$data.upLoadType === 2 ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: "upwarp-nodata"
},
vue.toDisplayString($data.mescroll.optUp.textNoMore),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true)
],
4
/* STYLE */
)) : vue.createCommentVNode("v-if", true)
], 12, ["change:prop", "prop"]),
vue.createCommentVNode(" 底部是否偏移TabBar的高度(默认仅在H5端的tab页生效) "),
vue.createCommentVNode(" 适配iPhoneX "),
$props.safearea ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "mescroll-safearea"
})) : vue.createCommentVNode("v-if", true),
vue.createCommentVNode(" 回到顶部按钮 (fixed元素需写在transform外面,防止降级为absolute)"),
vue.createVNode(_component_mescroll_top, {
modelValue: $data.isShowToTop,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.isShowToTop = $event),
option: $data.mescroll.optUp.toTop,
onClick: $options.toTopClick
}, null, 8, ["modelValue", "option", "onClick"]),
vue.createCommentVNode(" renderjs的数据载体,不可写在mescroll-downwarp内部,避免use为false时,载体丢失,无法更新数据 "),
vue.createElementVNode("view", {
"change:prop": _ctx.renderBiz.propObserver,
prop: vue.wp(_ctx.wxsProp)
}, null, 8, ["change:prop", "prop"])
], 46, ["change:prop", "prop"]);
}
if (typeof block0$1 === "function")
block0$1(_sfc_main$2n);
if (typeof block1 === "function")
block1(_sfc_main$2n);
const __easycom_1$6 = /* @__PURE__ */ _export_sfc(_sfc_main$2n, [["render", _sfc_render$2A], ["__scopeId", "data-v-151374fc"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.vue"]]);
const _sfc_main$2m = {
components: {},
data() {
return {
cateId: 0,
menuCurrent: 0
//轮播下标
};
},
props: {
list: {
type: Array,
default: []
},
menu: {
default: 4
},
imgW: {
type: Number,
default: 88
}
},
computed: {
carousel() {
if (this.list) {
let data = this.sortData(this.list, this.menu * 2);
return data;
}
}
},
created() {
},
methods: {
// 数据分层
sortData(oArr, length) {
let arr = [];
let minArr = [];
oArr.forEach((c) => {
if (minArr.length === length) {
minArr = [];
}
if (minArr.length === 0) {
arr.push(minArr);
}
minArr.push(c);
});
return arr;
},
// 轮播
onSwiper(e) {
this.menuCurrent = e.detail.current;
},
routerTo(item) {
this.cateId = item.cateId;
this.$emit("menuClick", item);
}
}
};
function _sfc_render$2z(_ctx, _cache, $props, $setup, $data, $options) {
return $options.carousel ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: "menu-list-box",
style: vue.normalizeStyle($props.list.length <= $props.menu ? `height:160rpx` : `height:320rpx`)
},
[
vue.createElementVNode(
"swiper",
{
class: "menu-swiper-box",
style: vue.normalizeStyle($props.list.length <= $props.menu ? `height:160rpx` : `height:320rpx`),
onChange: _cache[0] || (_cache[0] = (...args) => $options.onSwiper && $options.onSwiper(...args)),
circular: "",
autoplay: false,
interval: 3e3,
duration: 1e3
},
[
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($options.carousel, (itemList, index2) => {
return vue.openBlock(), vue.createElementBlock(
"swiper-item",
{
class: "menu-swiper-item",
key: index2,
style: vue.normalizeStyle($props.list.length <= $props.menu ? `height:200rpx` : `height:340rpx`)
},
[
vue.createElementVNode("view", { class: "menu-tab-box" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(itemList, (item) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "tab-list",
key: item.cateId,
onClick: ($event) => $options.routerTo(item)
}, [
vue.createElementVNode("image", {
class: "tab-img",
style: vue.normalizeStyle({ width: $props.imgW + "rpx", height: $props.imgW + "rpx" }),
src: item.imgUrl
}, null, 12, ["src"]),
vue.createElementVNode(
"text",
{
class: vue.normalizeClass($data.cateId == item.cateId ? "tab-title active" : "tab-title")
},
vue.toDisplayString(item.cateName),
3
/* TEXT, CLASS */
)
], 8, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
))
])
],
4
/* STYLE */
);
}),
128
/* KEYED_FRAGMENT */
))
],
36
/* STYLE, NEED_HYDRATION */
),
$options.carousel.length > 1 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "menu-dots"
}, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($options.carousel.length, (dot, index2) => {
return vue.openBlock(), vue.createElementBlock(
"text",
{
class: vue.normalizeClass($data.menuCurrent === index2 ? "dot-active" : "dot"),
key: index2
},
null,
2
/* CLASS */
);
}),
128
/* KEYED_FRAGMENT */
))
])) : vue.createCommentVNode("v-if", true)
],
4
/* STYLE */
)) : vue.createCommentVNode("v-if", true);
}
const Menu = /* @__PURE__ */ _export_sfc(_sfc_main$2m, [["render", _sfc_render$2z], ["__scopeId", "data-v-758a2c95"], ["__file", "E:/Project/2023/问诊平台/his_user_app/components/Menu.vue"]]);
const MescrollMixin = {
data() {
return {
mescroll: null
//mescroll实例对象
};
},
// 注册系统自带的下拉刷新 (配置down.native为true时生效, 还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例)
onPullDownRefresh() {
this.mescroll && this.mescroll.onPullDownRefresh();
},
// 注册列表滚动事件,用于判定在顶部可下拉刷新,在指定位置可显示隐藏回到顶部按钮 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效)
onPageScroll(e) {
this.mescroll && this.mescroll.onPageScroll(e);
},
// 注册滚动到底部的事件,用于上拉加载 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效)
onReachBottom() {
this.mescroll && this.mescroll.onReachBottom();
},
methods: {
// mescroll组件初始化的回调,可获取到mescroll对象
mescrollInit(mescroll) {
this.mescroll = mescroll;
this.mescrollInitByRef();
},
// 以ref的方式初始化mescroll对象 (兼容字节跳动小程序)
mescrollInitByRef() {
if (!this.mescroll || !this.mescroll.resetUpScroll) {
let mescrollRef = this.$refs.mescrollRef;
if (mescrollRef)
this.mescroll = mescrollRef.mescroll;
}
},
// 下拉刷新的回调 (mixin默认resetUpScroll)
downCallback() {
if (this.mescroll.optUp.use) {
this.mescroll.resetUpScroll();
} else {
setTimeout(() => {
this.mescroll.endSuccess();
}, 500);
}
},
// 上拉加载的回调
upCallback() {
setTimeout(() => {
this.mescroll.endErr();
}, 500);
}
},
mounted() {
this.mescrollInitByRef();
}
};
const _sfc_main$2l = {
components: { Menu },
mixins: [MescrollMixin],
// 使用mixin
data() {
return {
top: null,
cates: [],
diseaseType: 0,
keyword: "",
mescroll: null,
downOption: {
//下拉刷新
use: true,
auto: false
// 不自动加载 (mixin已处理第一个tab触发downCallback)
},
upOption: {
onScroll: false,
use: true,
// 是否启用上拉加载; 默认true
page: {
pae: 0,
// 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
size: 10
// 每页数据的数量,默认10
},
noMoreSize: 10,
// 配置列表的总数量要大于等于5条才显示'-- END --'的提示
textNoMore: "已经到底了",
empty: {
icon: "https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png",
tip: "暂无数据"
}
},
dataList: []
};
},
onLoad() {
this.getPackagCateList(1);
},
methods: {
menuClick(item) {
this.diseaseType = item.cateId;
this.mescroll.resetUpScroll();
},
getPackagCateList(type2) {
var data = { type: type2 };
var that = this;
getPackagCateList(data).then(
(res) => {
if (res.code == 200) {
this.cates = res.data;
var query = uni.createSelectorQuery().in(that);
setTimeout(function() {
query.select(".top-content").boundingClientRect((data2) => {
if (data2) {
formatAppLog("log", "at pages/store/index.vue:91", "View height:", data2.height + "px");
that.top = data2.height + "px";
}
}).exec();
}, 500);
}
},
(err) => {
}
);
},
doSearch() {
this.mescroll.resetUpScroll();
},
navTo(url2) {
uni.navigateTo({
url: url2
});
},
mescrollInit(mescroll) {
this.mescroll = mescroll;
},
/*下拉刷新的回调 */
downCallback() {
this.mescroll.resetUpScroll();
},
/*上拉加载的回调*/
upCallback(page2) {
var that = this;
var data = {
isShow: 1,
diseaseType: this.diseaseType,
keyword: this.keyword,
pageNum: page2.num,
pageSize: page2.size
};
getPackageList(data).then((res) => {
if (res.code == 200) {
if (page2.num == 1) {
that.dataList = res.data.list;
} else {
that.dataList = that.dataList.concat(res.data.list);
}
that.mescroll.endBySize(res.data.list.length, res.data.total);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
that.dataList = null;
that.mescroll.endErr();
}
});
}
}
};
function _sfc_render$2y(_ctx, _cache, $props, $setup, $data, $options) {
const _component_Menu = vue.resolveComponent("Menu");
const _component_mescroll_body = resolveEasycom(vue.resolveDynamicComponent("mescroll-body"), __easycom_1$6);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "top-content" }, [
vue.createCommentVNode(" 搜索框 "),
vue.createElementVNode("view", { class: "search-cont" }, [
vue.createElementVNode("view", { class: "inner" }, [
vue.createElementVNode("image", {
class: "icon-search",
src: "/static/images/icon_search.png",
mode: ""
}),
vue.withDirectives(vue.createElementVNode(
"input",
{
type: "text",
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.keyword = $event),
placeholder: "输入关键字搜索",
"confirm-type": "search",
onConfirm: _cache[1] || (_cache[1] = (...args) => $options.doSearch && $options.doSearch(...args)),
"placeholder-style": "font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;"
},
null,
544
/* NEED_HYDRATION, NEED_PATCH */
), [
[vue.vModelText, $data.keyword]
])
])
]),
vue.createElementVNode("view", { class: "cate-list" }, [
$data.cates.length > 0 ? (vue.openBlock(), vue.createBlock(_component_Menu, {
key: 0,
list: $data.cates,
onMenuClick: $options.menuClick,
style: { "width": "100%" }
}, null, 8, ["list", "onMenuClick"])) : vue.createCommentVNode("v-if", true)
])
]),
$data.top != null ? (vue.openBlock(), vue.createBlock(_component_mescroll_body, {
key: 0,
top: $data.top,
bottom: "0",
ref: "mescrollRef",
onInit: $options.mescrollInit,
down: $data.downOption,
up: $data.upOption,
onDown: $options.downCallback,
onUp: $options.upCallback
}, {
default: vue.withCtx(() => [
vue.createElementVNode("view", { class: "package-box" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.dataList, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "item",
onClick: ($event) => $options.navTo("/pages_index/packageDetails?packageId=" + item.packageId)
}, [
vue.createElementVNode("view", { class: "top" }, [
vue.createElementVNode("image", {
src: item.imgUrl
}, null, 8, ["src"])
]),
vue.createElementVNode("view", { class: "bottom" }, [
vue.createElementVNode(
"view",
{ class: "title ellipsis2" },
vue.toDisplayString(item.packageName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "price-box" }, [
vue.createElementVNode(
"view",
{ class: "price" },
"¥" + vue.toDisplayString(item.price.toFixed(2)) + "元/日",
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "count" },
vue.toDisplayString(item.sales) + "人已购",
1
/* TEXT */
)
])
])
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
]),
_: 1
/* STABLE */
}, 8, ["top", "onInit", "down", "up", "onDown", "onUp"])) : vue.createCommentVNode("v-if", true)
]);
}
const PagesStoreIndex = /* @__PURE__ */ _export_sfc(_sfc_main$2l, [["render", _sfc_render$2y], ["__scopeId", "data-v-f73eb578"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/store/index.vue"]]);
const props$u = {
props: {
color: {
type: String,
default: props$y.line.color
},
// 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带px单位的值等
length: {
type: [String, Number],
default: props$y.line.length
},
// 线条方向,col-竖向,row-横向
direction: {
type: String,
default: props$y.line.direction
},
// 是否显示细边框
hairline: {
type: Boolean,
default: props$y.line.hairline
},
// 线条与上下左右元素的间距,字符串形式,如"30px"、"20px 30px"
margin: {
type: [String, Number],
default: props$y.line.margin
},
// 是否虚线,true-虚线,false-实线
dashed: {
type: Boolean,
default: props$y.line.dashed
}
}
};
const _sfc_main$2k = {
name: "u-line",
mixins: [mpMixin, mixin, props$u],
computed: {
lineStyle() {
const style = {};
style.margin = this.margin;
if (this.direction === "row") {
style.borderBottomWidth = "1px";
style.borderBottomStyle = this.dashed ? "dashed" : "solid";
style.width = uni.$u.addUnit(this.length);
if (this.hairline)
style.transform = "scaleY(0.5)";
} else {
style.borderLeftWidth = "1px";
style.borderLeftStyle = this.dashed ? "dashed" : "solid";
style.height = uni.$u.addUnit(this.length);
if (this.hairline)
style.transform = "scaleX(0.5)";
}
style.borderColor = this.color;
return uni.$u.deepMerge(style, uni.$u.addStyle(this.customStyle));
}
}
};
function _sfc_render$2x(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock(
"view",
{
class: "u-line",
style: vue.normalizeStyle([$options.lineStyle])
},
null,
4
/* STYLE */
);
}
const __easycom_1$5 = /* @__PURE__ */ _export_sfc(_sfc_main$2k, [["render", _sfc_render$2x], ["__scopeId", "data-v-72791e59"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u-line/u-line.vue"]]);
const props$t = {
props: {
// 是否展示组件
show: {
type: Boolean,
default: props$y.transition.show
},
// 使用的动画模式
mode: {
type: String,
default: props$y.transition.mode
},
// 动画的执行时间,单位ms
duration: {
type: [String, Number],
default: props$y.transition.duration
},
// 使用的动画过渡函数
timingFunction: {
type: String,
default: props$y.transition.timingFunction
}
}
};
const getClassNames = (name) => ({
enter: `u-${name}-enter u-${name}-enter-active`,
"enter-to": `u-${name}-enter-to u-${name}-enter-active`,
leave: `u-${name}-leave u-${name}-leave-active`,
"leave-to": `u-${name}-leave-to u-${name}-leave-active`
});
const transition = {
methods: {
// 组件被点击发出事件
clickHandler() {
this.$emit("click");
},
// vue版本的组件进场处理
vueEnter() {
const classNames = getClassNames(this.mode);
this.status = "enter";
this.$emit("beforeEnter");
this.inited = true;
this.display = true;
this.classes = classNames.enter;
this.$nextTick(async () => {
this.$emit("enter");
this.transitionEnded = false;
this.$emit("afterEnter");
this.classes = classNames["enter-to"];
});
},
// 动画离场处理
vueLeave() {
if (!this.display)
return;
const classNames = getClassNames(this.mode);
this.status = "leave";
this.$emit("beforeLeave");
this.classes = classNames.leave;
this.$nextTick(() => {
this.transitionEnded = false;
this.$emit("leave");
setTimeout(this.onTransitionEnd, this.duration);
this.classes = classNames["leave-to"];
});
},
// 完成过渡后触发
onTransitionEnd() {
if (this.transitionEnded)
return;
this.transitionEnded = true;
this.$emit(this.status === "leave" ? "afterLeave" : "afterEnter");
if (!this.show && this.display) {
this.display = false;
this.inited = false;
}
}
}
};
const _sfc_main$2j = {
name: "u-transition",
data() {
return {
inited: false,
// 是否显示/隐藏组件
viewStyle: {},
// 组件内部的样式
status: "",
// 记录组件动画的状态
transitionEnded: false,
// 组件是否结束的标记
display: false,
// 组件是否展示
classes: ""
// 应用的类名
};
},
computed: {
mergeStyle() {
const { viewStyle, customStyle } = this;
return {
transitionDuration: `${this.duration}ms`,
// display: `${this.display ? '' : 'none'}`,
transitionTimingFunction: this.timingFunction,
// 避免自定义样式影响到动画属性,所以写在viewStyle前面
...uni.$u.addStyle(customStyle),
...viewStyle
};
}
},
// 将mixin挂在到组件中,uni.$u.mixin实际上为一个vue格式对象
mixins: [mpMixin, mixin, transition, props$t],
watch: {
show: {
handler(newVal) {
newVal ? this.vueEnter() : this.vueLeave();
},
// 表示同时监听初始化时的props的show的意思
immediate: true
}
}
};
function _sfc_render$2w(_ctx, _cache, $props, $setup, $data, $options) {
return $data.inited ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: vue.normalizeClass(["u-transition", $data.classes]),
ref: "u-transition",
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.clickHandler && _ctx.clickHandler(...args)),
style: vue.normalizeStyle([$options.mergeStyle]),
onTouchmove: _cache[1] || (_cache[1] = (...args) => _ctx.noop && _ctx.noop(...args))
},
[
vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
],
38
/* CLASS, STYLE, NEED_HYDRATION */
)) : vue.createCommentVNode("v-if", true);
}
const __easycom_1$4 = /* @__PURE__ */ _export_sfc(_sfc_main$2j, [["render", _sfc_render$2w], ["__scopeId", "data-v-5cec8177"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u-transition/u-transition.vue"]]);
const props$s = {
props: {
// 是否显示遮罩
show: {
type: Boolean,
default: props$y.overlay.show
},
// 层级z-index
zIndex: {
type: [String, Number],
default: props$y.overlay.zIndex
},
// 遮罩的过渡时间,单位为ms
duration: {
type: [String, Number],
default: props$y.overlay.duration
},
// 不透明度值,当做rgba的第四个参数
opacity: {
type: [String, Number],
default: props$y.overlay.opacity
}
}
};
const _sfc_main$2i = {
name: "u-overlay",
mixins: [mpMixin, mixin, props$s],
computed: {
overlayStyle() {
const style = {
position: "fixed",
top: 0,
left: 0,
right: 0,
zIndex: this.zIndex,
bottom: 0,
"background-color": `rgba(0, 0, 0, ${this.opacity})`
};
return uni.$u.deepMerge(style, uni.$u.addStyle(this.customStyle));
}
},
methods: {
clickHandler() {
this.$emit("click");
}
}
};
function _sfc_render$2v(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_transition = resolveEasycom(vue.resolveDynamicComponent("u-transition"), __easycom_1$4);
return vue.openBlock(), vue.createBlock(_component_u_transition, {
show: _ctx.show,
"custom-class": "u-overlay",
duration: _ctx.duration,
"custom-style": $options.overlayStyle,
onClick: $options.clickHandler
}, {
default: vue.withCtx(() => [
vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
]),
_: 3
/* FORWARDED */
}, 8, ["show", "duration", "custom-style", "onClick"]);
}
const __easycom_0$c = /* @__PURE__ */ _export_sfc(_sfc_main$2i, [["render", _sfc_render$2v], ["__scopeId", "data-v-9112bed9"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u-overlay/u-overlay.vue"]]);
const props$r = {
props: {
bgColor: {
type: String,
default: props$y.statusBar.bgColor
}
}
};
const _sfc_main$2h = {
name: "u-status-bar",
mixins: [mpMixin, mixin, props$r],
data() {
return {};
},
computed: {
style() {
const style = {};
style.height = uni.$u.addUnit(uni.$u.sys().statusBarHeight, "px");
style.backgroundColor = this.bgColor;
return uni.$u.deepMerge(style, uni.$u.addStyle(this.customStyle));
}
}
};
function _sfc_render$2u(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock(
"view",
{
style: vue.normalizeStyle([$options.style]),
class: "u-status-bar"
},
[
vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
],
4
/* STYLE */
);
}
const __easycom_0$b = /* @__PURE__ */ _export_sfc(_sfc_main$2h, [["render", _sfc_render$2u], ["__scopeId", "data-v-eb8e0cdd"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u-status-bar/u-status-bar.vue"]]);
const icons = {
"uicon-level": "",
"uicon-column-line": "",
"uicon-checkbox-mark": "",
"uicon-folder": "",
"uicon-movie": "",
"uicon-star-fill": "",
"uicon-star": "",
"uicon-phone-fill": "",
"uicon-phone": "",
"uicon-apple-fill": "",
"uicon-chrome-circle-fill": "",
"uicon-backspace": "",
"uicon-attach": "",
"uicon-cut": "",
"uicon-empty-car": "",
"uicon-empty-coupon": "",
"uicon-empty-address": "",
"uicon-empty-favor": "",
"uicon-empty-permission": "",
"uicon-empty-news": "",
"uicon-empty-search": "",
"uicon-github-circle-fill": "",
"uicon-rmb": "",
"uicon-person-delete-fill": "",
"uicon-reload": "",
"uicon-order": "",
"uicon-server-man": "",
"uicon-search": "",
"uicon-fingerprint": "",
"uicon-more-dot-fill": "",
"uicon-scan": "",
"uicon-share-square": "",
"uicon-map": "",
"uicon-map-fill": "",
"uicon-tags": "",
"uicon-tags-fill": "",
"uicon-bookmark-fill": "",
"uicon-bookmark": "",
"uicon-eye": "",
"uicon-eye-fill": "",
"uicon-mic": "",
"uicon-mic-off": "",
"uicon-calendar": "",
"uicon-calendar-fill": "",
"uicon-trash": "",
"uicon-trash-fill": "",
"uicon-play-left": "",
"uicon-play-right": "",
"uicon-minus": "",
"uicon-plus": "",
"uicon-info": "",
"uicon-info-circle": "",
"uicon-info-circle-fill": "",
"uicon-question": "",
"uicon-error": "",
"uicon-close": "",
"uicon-checkmark": "",
"uicon-android-circle-fill": "",
"uicon-android-fill": "",
"uicon-ie": "",
"uicon-IE-circle-fill": "",
"uicon-google": "",
"uicon-google-circle-fill": "",
"uicon-setting-fill": "",
"uicon-setting": "",
"uicon-minus-square-fill": "",
"uicon-plus-square-fill": "",
"uicon-heart": "",
"uicon-heart-fill": "",
"uicon-camera": "",
"uicon-camera-fill": "",
"uicon-more-circle": "",
"uicon-more-circle-fill": "",
"uicon-chat": "",
"uicon-chat-fill": "",
"uicon-bag-fill": "",
"uicon-bag": "",
"uicon-error-circle-fill": "",
"uicon-error-circle": "",
"uicon-close-circle": "",
"uicon-close-circle-fill": "",
"uicon-checkmark-circle": "",
"uicon-checkmark-circle-fill": "",
"uicon-question-circle-fill": "",
"uicon-question-circle": "",
"uicon-share": "",
"uicon-share-fill": "",
"uicon-shopping-cart": "",
"uicon-shopping-cart-fill": "",
"uicon-bell": "",
"uicon-bell-fill": "",
"uicon-list": "",
"uicon-list-dot": "",
"uicon-zhihu": "",
"uicon-zhihu-circle-fill": "",
"uicon-zhifubao": "",
"uicon-zhifubao-circle-fill": "",
"uicon-weixin-circle-fill": "",
"uicon-weixin-fill": "",
"uicon-twitter-circle-fill": "",
"uicon-twitter": "",
"uicon-taobao-circle-fill": "",
"uicon-taobao": "",
"uicon-weibo-circle-fill": "",
"uicon-weibo": "",
"uicon-qq-fill": "",
"uicon-qq-circle-fill": "",
"uicon-moments-circel-fill": "",
"uicon-moments": "",
"uicon-qzone": "",
"uicon-qzone-circle-fill": "",
"uicon-baidu-circle-fill": "",
"uicon-baidu": "",
"uicon-facebook-circle-fill": "",
"uicon-facebook": "",
"uicon-car": "",
"uicon-car-fill": "",
"uicon-warning-fill": "",
"uicon-warning": "",
"uicon-clock-fill": "",
"uicon-clock": "",
"uicon-edit-pen": "",
"uicon-edit-pen-fill": "",
"uicon-email": "",
"uicon-email-fill": "",
"uicon-minus-circle": "",
"uicon-minus-circle-fill": "",
"uicon-plus-circle": "",
"uicon-plus-circle-fill": "",
"uicon-file-text": "",
"uicon-file-text-fill": "",
"uicon-pushpin": "",
"uicon-pushpin-fill": "",
"uicon-grid": "",
"uicon-grid-fill": "",
"uicon-play-circle": "",
"uicon-play-circle-fill": "",
"uicon-pause-circle-fill": "",
"uicon-pause": "",
"uicon-pause-circle": "",
"uicon-eye-off": "",
"uicon-eye-off-outline": "",
"uicon-gift-fill": "",
"uicon-gift": "",
"uicon-rmb-circle-fill": "",
"uicon-rmb-circle": "",
"uicon-kefu-ermai": "",
"uicon-server-fill": "",
"uicon-coupon-fill": "",
"uicon-coupon": "",
"uicon-integral": "",
"uicon-integral-fill": "",
"uicon-home-fill": "",
"uicon-home": "",
"uicon-hourglass-half-fill": "",
"uicon-hourglass": "",
"uicon-account": "",
"uicon-plus-people-fill": "",
"uicon-minus-people-fill": "",
"uicon-account-fill": "",
"uicon-thumb-down-fill": "",
"uicon-thumb-down": "",
"uicon-thumb-up": "",
"uicon-thumb-up-fill": "",
"uicon-lock-fill": "",
"uicon-lock-open": "",
"uicon-lock-opened-fill": "",
"uicon-lock": "",
"uicon-red-packet-fill": "",
"uicon-photo-fill": "",
"uicon-photo": "",
"uicon-volume-off-fill": "",
"uicon-volume-off": "",
"uicon-volume-fill": "",
"uicon-volume": "",
"uicon-red-packet": "",
"uicon-download": "",
"uicon-arrow-up-fill": "",
"uicon-arrow-down-fill": "",
"uicon-play-left-fill": "",
"uicon-play-right-fill": "",
"uicon-rewind-left-fill": "",
"uicon-rewind-right-fill": "",
"uicon-arrow-downward": "",
"uicon-arrow-leftward": "",
"uicon-arrow-rightward": "",
"uicon-arrow-upward": "",
"uicon-arrow-down": "",
"uicon-arrow-right": "",
"uicon-arrow-left": "",
"uicon-arrow-up": "",
"uicon-skip-back-left": "",
"uicon-skip-forward-right": "",
"uicon-rewind-right": "",
"uicon-rewind-left": "",
"uicon-arrow-right-double": "",
"uicon-arrow-left-double": "",
"uicon-wifi-off": "",
"uicon-wifi": "",
"uicon-empty-data": "",
"uicon-empty-history": "",
"uicon-empty-list": "",
"uicon-empty-page": "",
"uicon-empty-order": "",
"uicon-man": "",
"uicon-woman": "",
"uicon-man-add": "",
"uicon-man-add-fill": "",
"uicon-man-delete": "",
"uicon-man-delete-fill": "",
"uicon-zh": "",
"uicon-en": ""
};
const props$q = {
props: {
// 图标类名
name: {
type: String,
default: props$y.icon.name
},
// 图标颜色,可接受主题色
color: {
type: String,
default: props$y.icon.color
},
// 字体大小,单位px
size: {
type: [String, Number],
default: props$y.icon.size
},
// 是否显示粗体
bold: {
type: Boolean,
default: props$y.icon.bold
},
// 点击图标的时候传递事件出去的index(用于区分点击了哪一个)
index: {
type: [String, Number],
default: props$y.icon.index
},
// 触摸图标时的类名
hoverClass: {
type: String,
default: props$y.icon.hoverClass
},
// 自定义扩展前缀,方便用户扩展自己的图标库
customPrefix: {
type: String,
default: props$y.icon.customPrefix
},
// 图标右边或者下面的文字
label: {
type: [String, Number],
default: props$y.icon.label
},
// label的位置,只能右边或者下边
labelPos: {
type: String,
default: props$y.icon.labelPos
},
// label的大小
labelSize: {
type: [String, Number],
default: props$y.icon.labelSize
},
// label的颜色
labelColor: {
type: String,
default: props$y.icon.labelColor
},
// label与图标的距离
space: {
type: [String, Number],
default: props$y.icon.space
},
// 图片的mode
imgMode: {
type: String,
default: props$y.icon.imgMode
},
// 用于显示图片小图标时,图片的宽度
width: {
type: [String, Number],
default: props$y.icon.width
},
// 用于显示图片小图标时,图片的高度
height: {
type: [String, Number],
default: props$y.icon.height
},
// 用于解决某些情况下,让图标垂直居中的用途
top: {
type: [String, Number],
default: props$y.icon.top
},
// 是否阻止事件传播
stop: {
type: Boolean,
default: props$y.icon.stop
}
}
};
const _sfc_main$2g = {
name: "u-icon",
data() {
return {};
},
emits: ["click"],
mixins: [mpMixin, mixin, props$q],
computed: {
uClasses() {
let classes = [];
classes.push(this.customPrefix + "-" + this.name);
if (this.color && uni.$u.config.type.includes(this.color))
classes.push("u-icon__icon--" + this.color);
return classes;
},
iconStyle() {
let style = {};
style = {
fontSize: uni.$u.addUnit(this.size),
lineHeight: uni.$u.addUnit(this.size),
fontWeight: this.bold ? "bold" : "normal",
// 某些特殊情况需要设置一个到顶部的距离,才能更好的垂直居中
top: uni.$u.addUnit(this.top)
};
if (this.color && !uni.$u.config.type.includes(this.color))
style.color = this.color;
return style;
},
// 判断传入的name属性,是否图片路径,只要带有"/"均认为是图片形式
isImg() {
return this.name.indexOf("/") !== -1;
},
imgStyle() {
let style = {};
style.width = this.width ? uni.$u.addUnit(this.width) : uni.$u.addUnit(this.size);
style.height = this.height ? uni.$u.addUnit(this.height) : uni.$u.addUnit(this.size);
return style;
},
// 通过图标名,查找对应的图标
icon() {
return icons["uicon-" + this.name] || this.name;
}
},
methods: {
clickHandler(e) {
this.$emit("click", this.index);
this.stop && this.preventEvent(e);
}
}
};
function _sfc_render$2t(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock(
"view",
{
class: vue.normalizeClass(["u-icon", ["u-icon--" + _ctx.labelPos]]),
onClick: _cache[0] || (_cache[0] = (...args) => $options.clickHandler && $options.clickHandler(...args))
},
[
$options.isImg ? (vue.openBlock(), vue.createElementBlock("image", {
key: 0,
class: "u-icon__img",
src: _ctx.name,
mode: _ctx.imgMode,
style: vue.normalizeStyle([$options.imgStyle, _ctx.$u.addStyle(_ctx.customStyle)])
}, null, 12, ["src", "mode"])) : (vue.openBlock(), vue.createElementBlock("text", {
key: 1,
class: vue.normalizeClass(["u-icon__icon", $options.uClasses]),
style: vue.normalizeStyle([$options.iconStyle, _ctx.$u.addStyle(_ctx.customStyle)]),
"hover-class": _ctx.hoverClass
}, vue.toDisplayString($options.icon), 15, ["hover-class"])),
vue.createCommentVNode(' 这里进行空字符串判断,如果仅仅是v-if="label",可能会出现传递0的时候,结果也无法显示 '),
_ctx.label !== "" ? (vue.openBlock(), vue.createElementBlock(
"text",
{
key: 2,
class: "u-icon__label",
style: vue.normalizeStyle({
color: _ctx.labelColor,
fontSize: _ctx.$u.addUnit(_ctx.labelSize),
marginLeft: _ctx.labelPos == "right" ? _ctx.$u.addUnit(_ctx.space) : 0,
marginTop: _ctx.labelPos == "bottom" ? _ctx.$u.addUnit(_ctx.space) : 0,
marginRight: _ctx.labelPos == "left" ? _ctx.$u.addUnit(_ctx.space) : 0,
marginBottom: _ctx.labelPos == "top" ? _ctx.$u.addUnit(_ctx.space) : 0
})
},
vue.toDisplayString(_ctx.label),
5
/* TEXT, STYLE */
)) : vue.createCommentVNode("v-if", true)
],
2
/* CLASS */
);
}
const __easycom_0$a = /* @__PURE__ */ _export_sfc(_sfc_main$2g, [["render", _sfc_render$2t], ["__scopeId", "data-v-ac70166d"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u-icon/u-icon.vue"]]);
const props$p = {
props: {}
};
const _sfc_main$2f = {
name: "u-safe-bottom",
mixins: [mpMixin, mixin, props$p],
data() {
return {
safeAreaBottomHeight: 0,
isNvue: false
};
},
computed: {
style() {
const style = {};
return uni.$u.deepMerge(style, uni.$u.addStyle(this.customStyle));
}
},
mounted() {
}
};
function _sfc_render$2s(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock(
"view",
{
class: vue.normalizeClass(["u-safe-bottom", [!$data.isNvue && "u-safe-area-inset-bottom"]]),
style: vue.normalizeStyle([$options.style])
},
null,
6
/* CLASS, STYLE */
);
}
const __easycom_3$2 = /* @__PURE__ */ _export_sfc(_sfc_main$2f, [["render", _sfc_render$2s], ["__scopeId", "data-v-f3d22cfe"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u-safe-bottom/u-safe-bottom.vue"]]);
const props$o = {
props: {
// 是否展示弹窗
show: {
type: Boolean,
default: props$y.popup.show
},
// 是否显示遮罩
overlay: {
type: Boolean,
default: props$y.popup.overlay
},
// 弹出的方向,可选值为 top bottom right left center
mode: {
type: String,
default: props$y.popup.mode
},
// 动画时长,单位ms
duration: {
type: [String, Number],
default: props$y.popup.duration
},
// 是否显示关闭图标
closeable: {
type: Boolean,
default: props$y.popup.closeable
},
// 自定义遮罩的样式
overlayStyle: {
type: [Object, String],
default: props$y.popup.overlayStyle
},
// 点击遮罩是否关闭弹窗
closeOnClickOverlay: {
type: Boolean,
default: props$y.popup.closeOnClickOverlay
},
// 层级
zIndex: {
type: [String, Number],
default: props$y.popup.zIndex
},
// 是否为iPhoneX留出底部安全距离
safeAreaInsetBottom: {
type: Boolean,
default: props$y.popup.safeAreaInsetBottom
},
// 是否留出顶部安全距离(状态栏高度)
safeAreaInsetTop: {
type: Boolean,
default: props$y.popup.safeAreaInsetTop
},
// 自定义关闭图标位置,top-left为左上角,top-right为右上角,bottom-left为左下角,bottom-right为右下角
closeIconPos: {
type: String,
default: props$y.popup.closeIconPos
},
// 是否显示圆角
round: {
type: [Boolean, String, Number],
default: props$y.popup.round
},
// mode=center,也即中部弹出时,是否使用缩放模式
zoom: {
type: Boolean,
default: props$y.popup.zoom
},
// 弹窗背景色,设置为transparent可去除白色背景
bgColor: {
type: String,
default: props$y.popup.bgColor
},
// 遮罩的透明度,0-1之间
overlayOpacity: {
type: [Number, String],
default: props$y.popup.overlayOpacity
}
}
};
const _sfc_main$2e = {
name: "u-popup",
mixins: [mpMixin, mixin, props$o],
data() {
return {
overlayDuration: this.duration + 50
};
},
watch: {
show(newValue, oldValue) {
}
},
computed: {
transitionStyle() {
const style = {
zIndex: this.zIndex,
position: "fixed",
display: "flex"
};
style[this.mode] = 0;
if (this.mode === "left") {
return uni.$u.deepMerge(style, {
bottom: 0,
top: 0
});
} else if (this.mode === "right") {
return uni.$u.deepMerge(style, {
bottom: 0,
top: 0
});
} else if (this.mode === "top") {
return uni.$u.deepMerge(style, {
left: 0,
right: 0
});
} else if (this.mode === "bottom") {
return uni.$u.deepMerge(style, {
left: 0,
right: 0
});
} else if (this.mode === "center") {
return uni.$u.deepMerge(style, {
alignItems: "center",
"justify-content": "center",
top: 0,
left: 0,
right: 0,
bottom: 0
});
}
},
contentStyle() {
const style = {};
uni.$u.sys();
if (this.mode !== "center") {
style.flex = 1;
}
if (this.bgColor) {
style.backgroundColor = this.bgColor;
}
if (this.round) {
const value2 = uni.$u.addUnit(this.round);
if (this.mode === "top") {
style.borderBottomLeftRadius = value2;
style.borderBottomRightRadius = value2;
} else if (this.mode === "bottom") {
style.borderTopLeftRadius = value2;
style.borderTopRightRadius = value2;
} else if (this.mode === "center") {
style.borderRadius = value2;
}
}
return uni.$u.deepMerge(style, uni.$u.addStyle(this.customStyle));
},
position() {
if (this.mode === "center") {
return this.zoom ? "fade-zoom" : "fade";
}
if (this.mode === "left") {
return "slide-left";
}
if (this.mode === "right") {
return "slide-right";
}
if (this.mode === "bottom") {
return "slide-up";
}
if (this.mode === "top") {
return "slide-down";
}
}
},
methods: {
// 点击遮罩
overlayClick() {
if (this.closeOnClickOverlay) {
this.$emit("close");
}
},
close(e) {
this.$emit("close");
},
afterEnter() {
this.$emit("open");
},
clickHandler() {
if (this.mode === "center") {
this.overlayClick();
}
this.$emit("click");
}
}
};
function _sfc_render$2r(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_overlay = resolveEasycom(vue.resolveDynamicComponent("u-overlay"), __easycom_0$c);
const _component_u_status_bar = resolveEasycom(vue.resolveDynamicComponent("u-status-bar"), __easycom_0$b);
const _component_u_icon = resolveEasycom(vue.resolveDynamicComponent("u-icon"), __easycom_0$a);
const _component_u_safe_bottom = resolveEasycom(vue.resolveDynamicComponent("u-safe-bottom"), __easycom_3$2);
const _component_u_transition = resolveEasycom(vue.resolveDynamicComponent("u-transition"), __easycom_1$4);
return vue.openBlock(), vue.createElementBlock("view", { class: "u-popup" }, [
_ctx.overlay ? (vue.openBlock(), vue.createBlock(_component_u_overlay, {
key: 0,
show: _ctx.show,
onClick: $options.overlayClick,
duration: $data.overlayDuration,
customStyle: _ctx.overlayStyle,
opacity: _ctx.overlayOpacity
}, null, 8, ["show", "onClick", "duration", "customStyle", "opacity"])) : vue.createCommentVNode("v-if", true),
vue.createVNode(_component_u_transition, {
show: _ctx.show,
customStyle: $options.transitionStyle,
mode: $options.position,
duration: _ctx.duration,
onAfterEnter: $options.afterEnter,
onClick: $options.clickHandler
}, {
default: vue.withCtx(() => [
vue.createElementVNode(
"view",
{
class: "u-popup__content",
style: vue.normalizeStyle([$options.contentStyle]),
onClick: _cache[1] || (_cache[1] = vue.withModifiers((...args) => _ctx.noop && _ctx.noop(...args), ["stop"]))
},
[
_ctx.safeAreaInsetTop ? (vue.openBlock(), vue.createBlock(_component_u_status_bar, { key: 0 })) : vue.createCommentVNode("v-if", true),
vue.renderSlot(_ctx.$slots, "default", {}, void 0, true),
_ctx.closeable ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 1,
onClick: _cache[0] || (_cache[0] = vue.withModifiers((...args) => $options.close && $options.close(...args), ["stop"])),
class: vue.normalizeClass(["u-popup__content__close", ["u-popup__content__close--" + _ctx.closeIconPos]]),
"hover-class": "u-popup__content__close--hover",
"hover-stay-time": "150"
},
[
vue.createVNode(_component_u_icon, {
name: "close",
color: "#909399",
size: "18",
bold: ""
})
],
2
/* CLASS */
)) : vue.createCommentVNode("v-if", true),
_ctx.safeAreaInsetBottom ? (vue.openBlock(), vue.createBlock(_component_u_safe_bottom, { key: 2 })) : vue.createCommentVNode("v-if", true)
],
4
/* STYLE */
)
]),
_: 3
/* FORWARDED */
}, 8, ["show", "customStyle", "mode", "duration", "onAfterEnter", "onClick"])
]);
}
const __easycom_2$3 = /* @__PURE__ */ _export_sfc(_sfc_main$2e, [["render", _sfc_render$2r], ["__scopeId", "data-v-05c24e9b"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u-popup/u-popup.vue"]]);
const props$n = {
props: {
// 是否展示modal
show: {
type: Boolean,
default: props$y.modal.show
},
// 标题
title: {
type: [String],
default: props$y.modal.title
},
// 弹窗内容
content: {
type: String,
default: props$y.modal.content
},
// 确认文案
confirmText: {
type: String,
default: props$y.modal.confirmText
},
// 取消文案
cancelText: {
type: String,
default: props$y.modal.cancelText
},
// 是否显示确认按钮
showConfirmButton: {
type: Boolean,
default: props$y.modal.showConfirmButton
},
// 是否显示取消按钮
showCancelButton: {
type: Boolean,
default: props$y.modal.showCancelButton
},
// 确认按钮颜色
confirmColor: {
type: String,
default: props$y.modal.confirmColor
},
// 取消文字颜色
cancelColor: {
type: String,
default: props$y.modal.cancelColor
},
// 对调确认和取消的位置
buttonReverse: {
type: Boolean,
default: props$y.modal.buttonReverse
},
// 是否开启缩放效果
zoom: {
type: Boolean,
default: props$y.modal.zoom
},
// 是否异步关闭,只对确定按钮有效
asyncClose: {
type: Boolean,
default: props$y.modal.asyncClose
},
// 是否允许点击遮罩关闭modal
closeOnClickOverlay: {
type: Boolean,
default: props$y.modal.closeOnClickOverlay
},
// 给一个负的margin-top,往上偏移,避免和键盘重合的情况
negativeTop: {
type: [String, Number],
default: props$y.modal.negativeTop
},
// modal宽度,不支持百分比,可以数值,px,rpx单位
width: {
type: [String, Number],
default: props$y.modal.width
},
// 确认按钮的样式,circle-圆形,square-方形,如设置,将不会显示取消按钮
confirmButtonShape: {
type: String,
default: props$y.modal.confirmButtonShape
}
}
};
const _sfc_main$2d = {
name: "u-modal",
mixins: [mpMixin, mixin, props$n],
data() {
return {
loading: false
};
},
watch: {
show(n) {
if (n && this.loading)
this.loading = false;
}
},
methods: {
// 点击确定按钮
confirmHandler() {
if (this.asyncClose) {
this.loading = true;
}
this.$emit("confirm");
},
// 点击取消按钮
cancelHandler() {
this.$emit("cancel");
},
// 点击遮罩
// 从原理上来说,modal的遮罩点击,并不是真的点击到了遮罩
// 因为modal依赖于popup的中部弹窗类型,中部弹窗比较特殊,虽有然遮罩,但是为了让弹窗内容能flex居中
// 多了一个透明的遮罩,此透明的遮罩会覆盖在灰色的遮罩上,所以实际上是点击不到灰色遮罩的,popup内部在
// 透明遮罩的子元素做了.stop处理,所以点击内容区,也不会导致误触发
clickHandler() {
if (this.closeOnClickOverlay) {
this.$emit("close");
}
}
}
};
function _sfc_render$2q(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_line = resolveEasycom(vue.resolveDynamicComponent("u-line"), __easycom_1$5);
const _component_u_loading_icon = resolveEasycom(vue.resolveDynamicComponent("u-loading-icon"), __easycom_0$f);
const _component_u_popup = resolveEasycom(vue.resolveDynamicComponent("u-popup"), __easycom_2$3);
return vue.openBlock(), vue.createBlock(_component_u_popup, {
mode: "center",
zoom: _ctx.zoom,
show: _ctx.show,
customStyle: {
borderRadius: "6px",
overflow: "hidden",
marginTop: `-${_ctx.$u.addUnit(_ctx.negativeTop)}`
},
closeOnClickOverlay: _ctx.closeOnClickOverlay,
safeAreaInsetBottom: false,
duration: 400,
onClick: $options.clickHandler
}, {
default: vue.withCtx(() => [
vue.createElementVNode(
"view",
{
class: "u-modal",
style: vue.normalizeStyle({
width: _ctx.$u.addUnit(_ctx.width)
})
},
[
_ctx.title ? (vue.openBlock(), vue.createElementBlock(
"text",
{
key: 0,
class: "u-modal__title"
},
vue.toDisplayString(_ctx.title),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true),
vue.createElementVNode(
"view",
{
class: "u-modal__content",
style: vue.normalizeStyle({
paddingTop: `${_ctx.title ? 12 : 25}px`
})
},
[
vue.renderSlot(_ctx.$slots, "default", {}, () => [
vue.createElementVNode(
"text",
{ class: "u-modal__content__text" },
vue.toDisplayString(_ctx.content),
1
/* TEXT */
)
], true)
],
4
/* STYLE */
),
_ctx.$slots.confirmButton ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "u-modal__button-group--confirm-button"
}, [
vue.renderSlot(_ctx.$slots, "confirmButton", {}, void 0, true)
])) : (vue.openBlock(), vue.createElementBlock(
vue.Fragment,
{ key: 2 },
[
vue.createVNode(_component_u_line),
vue.createElementVNode(
"view",
{
class: "u-modal__button-group",
style: vue.normalizeStyle({
flexDirection: _ctx.buttonReverse ? "row-reverse" : "row"
})
},
[
_ctx.showCancelButton ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: vue.normalizeClass(["u-modal__button-group__wrapper u-modal__button-group__wrapper--cancel", [_ctx.showCancelButton && !_ctx.showConfirmButton && "u-modal__button-group__wrapper--only-cancel"]]),
"hover-stay-time": 150,
"hover-class": "u-modal__button-group__wrapper--hover",
onClick: _cache[0] || (_cache[0] = (...args) => $options.cancelHandler && $options.cancelHandler(...args))
},
[
vue.createElementVNode(
"text",
{
class: "u-modal__button-group__wrapper__text",
style: vue.normalizeStyle({
color: _ctx.cancelColor
})
},
vue.toDisplayString(_ctx.cancelText),
5
/* TEXT, STYLE */
)
],
2
/* CLASS */
)) : vue.createCommentVNode("v-if", true),
_ctx.showConfirmButton && _ctx.showCancelButton ? (vue.openBlock(), vue.createBlock(_component_u_line, {
key: 1,
direction: "column"
})) : vue.createCommentVNode("v-if", true),
_ctx.showConfirmButton ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 2,
class: vue.normalizeClass(["u-modal__button-group__wrapper u-modal__button-group__wrapper--confirm", [!_ctx.showCancelButton && _ctx.showConfirmButton && "u-modal__button-group__wrapper--only-confirm"]]),
"hover-stay-time": 150,
"hover-class": "u-modal__button-group__wrapper--hover",
onClick: _cache[1] || (_cache[1] = (...args) => $options.confirmHandler && $options.confirmHandler(...args))
},
[
$data.loading ? (vue.openBlock(), vue.createBlock(_component_u_loading_icon, { key: 0 })) : (vue.openBlock(), vue.createElementBlock(
"text",
{
key: 1,
class: "u-modal__button-group__wrapper__text",
style: vue.normalizeStyle({
color: _ctx.confirmColor
})
},
vue.toDisplayString(_ctx.confirmText),
5
/* TEXT, STYLE */
))
],
2
/* CLASS */
)) : vue.createCommentVNode("v-if", true)
],
4
/* STYLE */
)
],
64
/* STABLE_FRAGMENT */
))
],
4
/* STYLE */
)
]),
_: 3
/* FORWARDED */
}, 8, ["zoom", "show", "customStyle", "closeOnClickOverlay", "onClick"]);
}
const __easycom_0$9 = /* @__PURE__ */ _export_sfc(_sfc_main$2d, [["render", _sfc_render$2q], ["__scopeId", "data-v-f667648f"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u-modal/u-modal.vue"]]);
function getDevtoolsGlobalHook() {
return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;
}
function getTarget() {
return typeof navigator !== "undefined" && typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {};
}
const isProxyAvailable = typeof Proxy === "function";
const HOOK_SETUP = "devtools-plugin:setup";
const HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set";
class ApiProxy {
constructor(plugin, hook) {
this.target = null;
this.targetQueue = [];
this.onQueue = [];
this.plugin = plugin;
this.hook = hook;
const defaultSettings = {};
if (plugin.settings) {
for (const id in plugin.settings) {
const item = plugin.settings[id];
defaultSettings[id] = item.defaultValue;
}
}
const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;
let currentSettings = { ...defaultSettings };
try {
const raw = localStorage.getItem(localSettingsSaveId);
const data = JSON.parse(raw);
Object.assign(currentSettings, data);
} catch (e) {
}
this.fallbacks = {
getSettings() {
return currentSettings;
},
setSettings(value2) {
try {
localStorage.setItem(localSettingsSaveId, JSON.stringify(value2));
} catch (e) {
}
currentSettings = value2;
}
};
hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value2) => {
if (pluginId === this.plugin.id) {
this.fallbacks.setSettings(value2);
}
});
this.proxiedOn = new Proxy({}, {
get: (_target, prop) => {
if (this.target) {
return this.target.on[prop];
} else {
return (...args) => {
this.onQueue.push({
method: prop,
args
});
};
}
}
});
this.proxiedTarget = new Proxy({}, {
get: (_target, prop) => {
if (this.target) {
return this.target[prop];
} else if (prop === "on") {
return this.proxiedOn;
} else if (Object.keys(this.fallbacks).includes(prop)) {
return (...args) => {
this.targetQueue.push({
method: prop,
args,
resolve: () => {
}
});
return this.fallbacks[prop](...args);
};
} else {
return (...args) => {
return new Promise((resolve) => {
this.targetQueue.push({
method: prop,
args,
resolve
});
});
};
}
}
});
}
async setRealTarget(target) {
this.target = target;
for (const item of this.onQueue) {
this.target.on[item.method](...item.args);
}
for (const item of this.targetQueue) {
item.resolve(await this.target[item.method](...item.args));
}
}
}
function setupDevtoolsPlugin(pluginDescriptor, setupFn) {
const target = getTarget();
const hook = getDevtoolsGlobalHook();
const enableProxy = isProxyAvailable && pluginDescriptor.enableEarlyProxy;
if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {
hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);
} else {
const proxy = enableProxy ? new ApiProxy(pluginDescriptor, hook) : null;
const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];
list.push({
pluginDescriptor,
setupFn,
proxy
});
if (proxy)
setupFn(proxy.proxiedTarget);
}
}
/*!
* vuex v4.1.0
* (c) 2022 Evan You
* @license MIT
*/
var storeKey = "store";
function forEachValue(obj, fn) {
Object.keys(obj).forEach(function(key) {
return fn(obj[key], key);
});
}
function isObject$1(obj) {
return obj !== null && typeof obj === "object";
}
function isPromise(val) {
return val && typeof val.then === "function";
}
function assert(condition, msg) {
if (!condition) {
throw new Error("[vuex] " + msg);
}
}
function partial(fn, arg) {
return function() {
return fn(arg);
};
}
function genericSubscribe(fn, subs, options) {
if (subs.indexOf(fn) < 0) {
options && options.prepend ? subs.unshift(fn) : subs.push(fn);
}
return function() {
var i = subs.indexOf(fn);
if (i > -1) {
subs.splice(i, 1);
}
};
}
function resetStore(store2, hot) {
store2._actions = /* @__PURE__ */ Object.create(null);
store2._mutations = /* @__PURE__ */ Object.create(null);
store2._wrappedGetters = /* @__PURE__ */ Object.create(null);
store2._modulesNamespaceMap = /* @__PURE__ */ Object.create(null);
var state2 = store2.state;
installModule(store2, state2, [], store2._modules.root, true);
resetStoreState(store2, state2, hot);
}
function resetStoreState(store2, state2, hot) {
var oldState = store2._state;
var oldScope = store2._scope;
store2.getters = {};
store2._makeLocalGettersCache = /* @__PURE__ */ Object.create(null);
var wrappedGetters = store2._wrappedGetters;
var computedObj = {};
var computedCache = {};
var scope = vue.effectScope(true);
scope.run(function() {
forEachValue(wrappedGetters, function(fn, key) {
computedObj[key] = partial(fn, store2);
computedCache[key] = vue.computed(function() {
return computedObj[key]();
});
Object.defineProperty(store2.getters, key, {
get: function() {
return computedCache[key].value;
},
enumerable: true
// for local getters
});
});
});
store2._state = vue.reactive({
data: state2
});
store2._scope = scope;
if (store2.strict) {
enableStrictMode(store2);
}
if (oldState) {
if (hot) {
store2._withCommit(function() {
oldState.data = null;
});
}
}
if (oldScope) {
oldScope.stop();
}
}
function installModule(store2, rootState, path, module, hot) {
var isRoot = !path.length;
var namespace = store2._modules.getNamespace(path);
if (module.namespaced) {
if (store2._modulesNamespaceMap[namespace] && true) {
console.error("[vuex] duplicate namespace " + namespace + " for the namespaced module " + path.join("/"));
}
store2._modulesNamespaceMap[namespace] = module;
}
if (!isRoot && !hot) {
var parentState = getNestedState(rootState, path.slice(0, -1));
var moduleName = path[path.length - 1];
store2._withCommit(function() {
{
if (moduleName in parentState) {
console.warn(
'[vuex] state field "' + moduleName + '" was overridden by a module with the same name at "' + path.join(".") + '"'
);
}
}
parentState[moduleName] = module.state;
});
}
var local = module.context = makeLocalContext(store2, namespace, path);
module.forEachMutation(function(mutation, key) {
var namespacedType = namespace + key;
registerMutation(store2, namespacedType, mutation, local);
});
module.forEachAction(function(action, key) {
var type2 = action.root ? key : namespace + key;
var handler = action.handler || action;
registerAction(store2, type2, handler, local);
});
module.forEachGetter(function(getter, key) {
var namespacedType = namespace + key;
registerGetter(store2, namespacedType, getter, local);
});
module.forEachChild(function(child, key) {
installModule(store2, rootState, path.concat(key), child, hot);
});
}
function makeLocalContext(store2, namespace, path) {
var noNamespace = namespace === "";
var local = {
dispatch: noNamespace ? store2.dispatch : function(_type, _payload, _options) {
var args = unifyObjectStyle(_type, _payload, _options);
var payload = args.payload;
var options = args.options;
var type2 = args.type;
if (!options || !options.root) {
type2 = namespace + type2;
if (!store2._actions[type2]) {
console.error("[vuex] unknown local action type: " + args.type + ", global type: " + type2);
return;
}
}
return store2.dispatch(type2, payload);
},
commit: noNamespace ? store2.commit : function(_type, _payload, _options) {
var args = unifyObjectStyle(_type, _payload, _options);
var payload = args.payload;
var options = args.options;
var type2 = args.type;
if (!options || !options.root) {
type2 = namespace + type2;
if (!store2._mutations[type2]) {
console.error("[vuex] unknown local mutation type: " + args.type + ", global type: " + type2);
return;
}
}
store2.commit(type2, payload, options);
}
};
Object.defineProperties(local, {
getters: {
get: noNamespace ? function() {
return store2.getters;
} : function() {
return makeLocalGetters(store2, namespace);
}
},
state: {
get: function() {
return getNestedState(store2.state, path);
}
}
});
return local;
}
function makeLocalGetters(store2, namespace) {
if (!store2._makeLocalGettersCache[namespace]) {
var gettersProxy = {};
var splitPos = namespace.length;
Object.keys(store2.getters).forEach(function(type2) {
if (type2.slice(0, splitPos) !== namespace) {
return;
}
var localType = type2.slice(splitPos);
Object.defineProperty(gettersProxy, localType, {
get: function() {
return store2.getters[type2];
},
enumerable: true
});
});
store2._makeLocalGettersCache[namespace] = gettersProxy;
}
return store2._makeLocalGettersCache[namespace];
}
function registerMutation(store2, type2, handler, local) {
var entry = store2._mutations[type2] || (store2._mutations[type2] = []);
entry.push(function wrappedMutationHandler(payload) {
handler.call(store2, local.state, payload);
});
}
function registerAction(store2, type2, handler, local) {
var entry = store2._actions[type2] || (store2._actions[type2] = []);
entry.push(function wrappedActionHandler(payload) {
var res = handler.call(store2, {
dispatch: local.dispatch,
commit: local.commit,
getters: local.getters,
state: local.state,
rootGetters: store2.getters,
rootState: store2.state
}, payload);
if (!isPromise(res)) {
res = Promise.resolve(res);
}
if (store2._devtoolHook) {
return res.catch(function(err) {
store2._devtoolHook.emit("vuex:error", err);
throw err;
});
} else {
return res;
}
});
}
function registerGetter(store2, type2, rawGetter, local) {
if (store2._wrappedGetters[type2]) {
{
console.error("[vuex] duplicate getter key: " + type2);
}
return;
}
store2._wrappedGetters[type2] = function wrappedGetter(store22) {
return rawGetter(
local.state,
// local state
local.getters,
// local getters
store22.state,
// root state
store22.getters
// root getters
);
};
}
function enableStrictMode(store2) {
vue.watch(function() {
return store2._state.data;
}, function() {
{
assert(store2._committing, "do not mutate vuex store state outside mutation handlers.");
}
}, { deep: true, flush: "sync" });
}
function getNestedState(state2, path) {
return path.reduce(function(state22, key) {
return state22[key];
}, state2);
}
function unifyObjectStyle(type2, payload, options) {
if (isObject$1(type2) && type2.type) {
options = payload;
payload = type2;
type2 = type2.type;
}
{
assert(typeof type2 === "string", "expects string as the type, but found " + typeof type2 + ".");
}
return { type: type2, payload, options };
}
var LABEL_VUEX_BINDINGS = "vuex bindings";
var MUTATIONS_LAYER_ID = "vuex:mutations";
var ACTIONS_LAYER_ID = "vuex:actions";
var INSPECTOR_ID = "vuex";
var actionId = 0;
function addDevtools(app, store2) {
setupDevtoolsPlugin(
{
id: "org.vuejs.vuex",
app,
label: "Vuex",
homepage: "https://next.vuex.vuejs.org/",
logo: "https://vuejs.org/images/icons/favicon-96x96.png",
packageName: "vuex",
componentStateTypes: [LABEL_VUEX_BINDINGS]
},
function(api) {
api.addTimelineLayer({
id: MUTATIONS_LAYER_ID,
label: "Vuex Mutations",
color: COLOR_LIME_500
});
api.addTimelineLayer({
id: ACTIONS_LAYER_ID,
label: "Vuex Actions",
color: COLOR_LIME_500
});
api.addInspector({
id: INSPECTOR_ID,
label: "Vuex",
icon: "storage",
treeFilterPlaceholder: "Filter stores..."
});
api.on.getInspectorTree(function(payload) {
if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {
if (payload.filter) {
var nodes = [];
flattenStoreForInspectorTree(nodes, store2._modules.root, payload.filter, "");
payload.rootNodes = nodes;
} else {
payload.rootNodes = [
formatStoreForInspectorTree(store2._modules.root, "")
];
}
}
});
api.on.getInspectorState(function(payload) {
if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {
var modulePath = payload.nodeId;
makeLocalGetters(store2, modulePath);
payload.state = formatStoreForInspectorState(
getStoreModule(store2._modules, modulePath),
modulePath === "root" ? store2.getters : store2._makeLocalGettersCache,
modulePath
);
}
});
api.on.editInspectorState(function(payload) {
if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {
var modulePath = payload.nodeId;
var path = payload.path;
if (modulePath !== "root") {
path = modulePath.split("/").filter(Boolean).concat(path);
}
store2._withCommit(function() {
payload.set(store2._state.data, path, payload.state.value);
});
}
});
store2.subscribe(function(mutation, state2) {
var data = {};
if (mutation.payload) {
data.payload = mutation.payload;
}
data.state = state2;
api.notifyComponentUpdate();
api.sendInspectorTree(INSPECTOR_ID);
api.sendInspectorState(INSPECTOR_ID);
api.addTimelineEvent({
layerId: MUTATIONS_LAYER_ID,
event: {
time: Date.now(),
title: mutation.type,
data
}
});
});
store2.subscribeAction({
before: function(action, state2) {
var data = {};
if (action.payload) {
data.payload = action.payload;
}
action._id = actionId++;
action._time = Date.now();
data.state = state2;
api.addTimelineEvent({
layerId: ACTIONS_LAYER_ID,
event: {
time: action._time,
title: action.type,
groupId: action._id,
subtitle: "start",
data
}
});
},
after: function(action, state2) {
var data = {};
var duration = Date.now() - action._time;
data.duration = {
_custom: {
type: "duration",
display: duration + "ms",
tooltip: "Action duration",
value: duration
}
};
if (action.payload) {
data.payload = action.payload;
}
data.state = state2;
api.addTimelineEvent({
layerId: ACTIONS_LAYER_ID,
event: {
time: Date.now(),
title: action.type,
groupId: action._id,
subtitle: "end",
data
}
});
}
});
}
);
}
var COLOR_LIME_500 = 8702998;
var COLOR_DARK = 6710886;
var COLOR_WHITE = 16777215;
var TAG_NAMESPACED = {
label: "namespaced",
textColor: COLOR_WHITE,
backgroundColor: COLOR_DARK
};
function extractNameFromPath(path) {
return path && path !== "root" ? path.split("/").slice(-2, -1)[0] : "Root";
}
function formatStoreForInspectorTree(module, path) {
return {
id: path || "root",
// all modules end with a `/`, we want the last segment only
// cart/ -> cart
// nested/cart/ -> cart
label: extractNameFromPath(path),
tags: module.namespaced ? [TAG_NAMESPACED] : [],
children: Object.keys(module._children).map(
function(moduleName) {
return formatStoreForInspectorTree(
module._children[moduleName],
path + moduleName + "/"
);
}
)
};
}
function flattenStoreForInspectorTree(result, module, filter, path) {
if (path.includes(filter)) {
result.push({
id: path || "root",
label: path.endsWith("/") ? path.slice(0, path.length - 1) : path || "Root",
tags: module.namespaced ? [TAG_NAMESPACED] : []
});
}
Object.keys(module._children).forEach(function(moduleName) {
flattenStoreForInspectorTree(result, module._children[moduleName], filter, path + moduleName + "/");
});
}
function formatStoreForInspectorState(module, getters, path) {
getters = path === "root" ? getters : getters[path];
var gettersKeys = Object.keys(getters);
var storeState = {
state: Object.keys(module.state).map(function(key) {
return {
key,
editable: true,
value: module.state[key]
};
})
};
if (gettersKeys.length) {
var tree = transformPathsToObjectTree(getters);
storeState.getters = Object.keys(tree).map(function(key) {
return {
key: key.endsWith("/") ? extractNameFromPath(key) : key,
editable: false,
value: canThrow(function() {
return tree[key];
})
};
});
}
return storeState;
}
function transformPathsToObjectTree(getters) {
var result = {};
Object.keys(getters).forEach(function(key) {
var path = key.split("/");
if (path.length > 1) {
var target = result;
var leafKey = path.pop();
path.forEach(function(p) {
if (!target[p]) {
target[p] = {
_custom: {
value: {},
display: p,
tooltip: "Module",
abstract: true
}
};
}
target = target[p]._custom.value;
});
target[leafKey] = canThrow(function() {
return getters[key];
});
} else {
result[key] = canThrow(function() {
return getters[key];
});
}
});
return result;
}
function getStoreModule(moduleMap, path) {
var names = path.split("/").filter(function(n) {
return n;
});
return names.reduce(
function(module, moduleName, i) {
var child = module[moduleName];
if (!child) {
throw new Error('Missing module "' + moduleName + '" for path "' + path + '".');
}
return i === names.length - 1 ? child : child._children;
},
path === "root" ? moduleMap : moduleMap.root._children
);
}
function canThrow(cb) {
try {
return cb();
} catch (e) {
return e;
}
}
var Module = function Module2(rawModule, runtime) {
this.runtime = runtime;
this._children = /* @__PURE__ */ Object.create(null);
this._rawModule = rawModule;
var rawState = rawModule.state;
this.state = (typeof rawState === "function" ? rawState() : rawState) || {};
};
var prototypeAccessors$1 = { namespaced: { configurable: true } };
prototypeAccessors$1.namespaced.get = function() {
return !!this._rawModule.namespaced;
};
Module.prototype.addChild = function addChild(key, module) {
this._children[key] = module;
};
Module.prototype.removeChild = function removeChild(key) {
delete this._children[key];
};
Module.prototype.getChild = function getChild(key) {
return this._children[key];
};
Module.prototype.hasChild = function hasChild(key) {
return key in this._children;
};
Module.prototype.update = function update(rawModule) {
this._rawModule.namespaced = rawModule.namespaced;
if (rawModule.actions) {
this._rawModule.actions = rawModule.actions;
}
if (rawModule.mutations) {
this._rawModule.mutations = rawModule.mutations;
}
if (rawModule.getters) {
this._rawModule.getters = rawModule.getters;
}
};
Module.prototype.forEachChild = function forEachChild(fn) {
forEachValue(this._children, fn);
};
Module.prototype.forEachGetter = function forEachGetter(fn) {
if (this._rawModule.getters) {
forEachValue(this._rawModule.getters, fn);
}
};
Module.prototype.forEachAction = function forEachAction(fn) {
if (this._rawModule.actions) {
forEachValue(this._rawModule.actions, fn);
}
};
Module.prototype.forEachMutation = function forEachMutation(fn) {
if (this._rawModule.mutations) {
forEachValue(this._rawModule.mutations, fn);
}
};
Object.defineProperties(Module.prototype, prototypeAccessors$1);
var ModuleCollection = function ModuleCollection2(rawRootModule) {
this.register([], rawRootModule, false);
};
ModuleCollection.prototype.get = function get(path) {
return path.reduce(function(module, key) {
return module.getChild(key);
}, this.root);
};
ModuleCollection.prototype.getNamespace = function getNamespace(path) {
var module = this.root;
return path.reduce(function(namespace, key) {
module = module.getChild(key);
return namespace + (module.namespaced ? key + "/" : "");
}, "");
};
ModuleCollection.prototype.update = function update$1(rawRootModule) {
update2([], this.root, rawRootModule);
};
ModuleCollection.prototype.register = function register(path, rawModule, runtime) {
var this$1$1 = this;
if (runtime === void 0)
runtime = true;
{
assertRawModule(path, rawModule);
}
var newModule = new Module(rawModule, runtime);
if (path.length === 0) {
this.root = newModule;
} else {
var parent = this.get(path.slice(0, -1));
parent.addChild(path[path.length - 1], newModule);
}
if (rawModule.modules) {
forEachValue(rawModule.modules, function(rawChildModule, key) {
this$1$1.register(path.concat(key), rawChildModule, runtime);
});
}
};
ModuleCollection.prototype.unregister = function unregister(path) {
var parent = this.get(path.slice(0, -1));
var key = path[path.length - 1];
var child = parent.getChild(key);
if (!child) {
{
console.warn(
"[vuex] trying to unregister module '" + key + "', which is not registered"
);
}
return;
}
if (!child.runtime) {
return;
}
parent.removeChild(key);
};
ModuleCollection.prototype.isRegistered = function isRegistered(path) {
var parent = this.get(path.slice(0, -1));
var key = path[path.length - 1];
if (parent) {
return parent.hasChild(key);
}
return false;
};
function update2(path, targetModule, newModule) {
{
assertRawModule(path, newModule);
}
targetModule.update(newModule);
if (newModule.modules) {
for (var key in newModule.modules) {
if (!targetModule.getChild(key)) {
{
console.warn(
"[vuex] trying to add a new module '" + key + "' on hot reloading, manual reload is needed"
);
}
return;
}
update2(
path.concat(key),
targetModule.getChild(key),
newModule.modules[key]
);
}
}
}
var functionAssert = {
assert: function(value2) {
return typeof value2 === "function";
},
expected: "function"
};
var objectAssert = {
assert: function(value2) {
return typeof value2 === "function" || typeof value2 === "object" && typeof value2.handler === "function";
},
expected: 'function or object with "handler" function'
};
var assertTypes = {
getters: functionAssert,
mutations: functionAssert,
actions: objectAssert
};
function assertRawModule(path, rawModule) {
Object.keys(assertTypes).forEach(function(key) {
if (!rawModule[key]) {
return;
}
var assertOptions = assertTypes[key];
forEachValue(rawModule[key], function(value2, type2) {
assert(
assertOptions.assert(value2),
makeAssertionMessage(path, key, type2, value2, assertOptions.expected)
);
});
});
}
function makeAssertionMessage(path, key, type2, value2, expected) {
var buf = key + " should be " + expected + ' but "' + key + "." + type2 + '"';
if (path.length > 0) {
buf += ' in module "' + path.join(".") + '"';
}
buf += " is " + JSON.stringify(value2) + ".";
return buf;
}
function createStore(options) {
return new Store(options);
}
var Store = function Store2(options) {
var this$1$1 = this;
if (options === void 0)
options = {};
{
assert(typeof Promise !== "undefined", "vuex requires a Promise polyfill in this browser.");
assert(this instanceof Store2, "store must be called with the new operator.");
}
var plugins2 = options.plugins;
if (plugins2 === void 0)
plugins2 = [];
var strict = options.strict;
if (strict === void 0)
strict = false;
var devtools = options.devtools;
this._committing = false;
this._actions = /* @__PURE__ */ Object.create(null);
this._actionSubscribers = [];
this._mutations = /* @__PURE__ */ Object.create(null);
this._wrappedGetters = /* @__PURE__ */ Object.create(null);
this._modules = new ModuleCollection(options);
this._modulesNamespaceMap = /* @__PURE__ */ Object.create(null);
this._subscribers = [];
this._makeLocalGettersCache = /* @__PURE__ */ Object.create(null);
this._scope = null;
this._devtools = devtools;
var store2 = this;
var ref = this;
var dispatch2 = ref.dispatch;
var commit2 = ref.commit;
this.dispatch = function boundDispatch(type2, payload) {
return dispatch2.call(store2, type2, payload);
};
this.commit = function boundCommit(type2, payload, options2) {
return commit2.call(store2, type2, payload, options2);
};
this.strict = strict;
var state2 = this._modules.root.state;
installModule(this, state2, [], this._modules.root);
resetStoreState(this, state2);
plugins2.forEach(function(plugin) {
return plugin(this$1$1);
});
};
var prototypeAccessors = { state: { configurable: true } };
Store.prototype.install = function install2(app, injectKey) {
app.provide(injectKey || storeKey, this);
app.config.globalProperties.$store = this;
var useDevtools = this._devtools !== void 0 ? this._devtools : true;
if (useDevtools) {
addDevtools(app, this);
}
};
prototypeAccessors.state.get = function() {
return this._state.data;
};
prototypeAccessors.state.set = function(v) {
{
assert(false, "use store.replaceState() to explicit replace store state.");
}
};
Store.prototype.commit = function commit(_type, _payload, _options) {
var this$1$1 = this;
var ref = unifyObjectStyle(_type, _payload, _options);
var type2 = ref.type;
var payload = ref.payload;
var options = ref.options;
var mutation = { type: type2, payload };
var entry = this._mutations[type2];
if (!entry) {
{
console.error("[vuex] unknown mutation type: " + type2);
}
return;
}
this._withCommit(function() {
entry.forEach(function commitIterator(handler) {
handler(payload);
});
});
this._subscribers.slice().forEach(function(sub) {
return sub(mutation, this$1$1.state);
});
if (options && options.silent) {
console.warn(
"[vuex] mutation type: " + type2 + ". Silent option has been removed. Use the filter functionality in the vue-devtools"
);
}
};
Store.prototype.dispatch = function dispatch(_type, _payload) {
var this$1$1 = this;
var ref = unifyObjectStyle(_type, _payload);
var type2 = ref.type;
var payload = ref.payload;
var action = { type: type2, payload };
var entry = this._actions[type2];
if (!entry) {
{
console.error("[vuex] unknown action type: " + type2);
}
return;
}
try {
this._actionSubscribers.slice().filter(function(sub) {
return sub.before;
}).forEach(function(sub) {
return sub.before(action, this$1$1.state);
});
} catch (e) {
{
console.warn("[vuex] error in before action subscribers: ");
console.error(e);
}
}
var result = entry.length > 1 ? Promise.all(entry.map(function(handler) {
return handler(payload);
})) : entry[0](payload);
return new Promise(function(resolve, reject2) {
result.then(function(res) {
try {
this$1$1._actionSubscribers.filter(function(sub) {
return sub.after;
}).forEach(function(sub) {
return sub.after(action, this$1$1.state);
});
} catch (e) {
{
console.warn("[vuex] error in after action subscribers: ");
console.error(e);
}
}
resolve(res);
}, function(error2) {
try {
this$1$1._actionSubscribers.filter(function(sub) {
return sub.error;
}).forEach(function(sub) {
return sub.error(action, this$1$1.state, error2);
});
} catch (e) {
{
console.warn("[vuex] error in error action subscribers: ");
console.error(e);
}
}
reject2(error2);
});
});
};
Store.prototype.subscribe = function subscribe(fn, options) {
return genericSubscribe(fn, this._subscribers, options);
};
Store.prototype.subscribeAction = function subscribeAction(fn, options) {
var subs = typeof fn === "function" ? { before: fn } : fn;
return genericSubscribe(subs, this._actionSubscribers, options);
};
Store.prototype.watch = function watch$1(getter, cb, options) {
var this$1$1 = this;
{
assert(typeof getter === "function", "store.watch only accepts a function.");
}
return vue.watch(function() {
return getter(this$1$1.state, this$1$1.getters);
}, cb, Object.assign({}, options));
};
Store.prototype.replaceState = function replaceState(state2) {
var this$1$1 = this;
this._withCommit(function() {
this$1$1._state.data = state2;
});
};
Store.prototype.registerModule = function registerModule(path, rawModule, options) {
if (options === void 0)
options = {};
if (typeof path === "string") {
path = [path];
}
{
assert(Array.isArray(path), "module path must be a string or an Array.");
assert(path.length > 0, "cannot register the root module by using registerModule.");
}
this._modules.register(path, rawModule);
installModule(this, this.state, path, this._modules.get(path), options.preserveState);
resetStoreState(this, this.state);
};
Store.prototype.unregisterModule = function unregisterModule(path) {
var this$1$1 = this;
if (typeof path === "string") {
path = [path];
}
{
assert(Array.isArray(path), "module path must be a string or an Array.");
}
this._modules.unregister(path);
this._withCommit(function() {
var parentState = getNestedState(this$1$1.state, path.slice(0, -1));
delete parentState[path[path.length - 1]];
});
resetStore(this);
};
Store.prototype.hasModule = function hasModule(path) {
if (typeof path === "string") {
path = [path];
}
{
assert(Array.isArray(path), "module path must be a string or an Array.");
}
return this._modules.isRegistered(path);
};
Store.prototype.hotUpdate = function hotUpdate(newOptions) {
this._modules.update(newOptions);
resetStore(this, true);
};
Store.prototype._withCommit = function _withCommit(fn) {
var committing = this._committing;
this._committing = true;
fn();
this._committing = committing;
};
Object.defineProperties(Store.prototype, prototypeAccessors);
const state = {
isLogin: false,
conversationList: [],
messageList: [],
conversation: {},
conversationID: "",
scrollTop: 0
};
const timStore = {
namespaced: true,
state,
getters: {
userInfo: (state2) => {
return state2.userInfo;
}
},
mutations: {
setscrollTop(state2, payload) {
state2.scrollTop = payload;
},
setImType(state2, payload) {
state2.imType = payload;
},
setType(state2, payload) {
state2.type = payload;
},
setOrderId(state2, payload) {
state2.orderId = payload;
},
setFollowId(state2, payload) {
state2.followId = payload;
},
setOrderType(state2, payload) {
state2.orderType = payload;
},
setConversationList(state2, payload) {
state2.conversationList = payload;
},
setConversation(state2, payload) {
state2.conversation = payload;
},
setConversationID(state2, payload) {
state2.conversationID = payload;
},
resetConversationID(state2) {
state2.conversationID = "";
},
setMessageList(state2, payload) {
state2.messageList = payload;
},
resetChat(state2) {
state2.messageList = [];
}
},
actions: {
//
}
};
const modules = {
timStore
};
const store = createStore({
modules
});
let request$f = new Request$1().http;
function getUserFollowDoctor() {
return request$f("/app/drugReport/getUserFollowDoctor", null, "GET");
}
function getDrugReportList(data) {
return request$f("/app/drugReport/getDrugReportList", data, "GET");
}
function getDrugReportById(data) {
return request$f("/app/drugReport/getDrugReportById", data, "GET");
}
function pingReport(data) {
return request$f("/app/drugReport/pingReport", data, "POST", "application/json;charset=UTF-8");
}
function startDrugReport(data) {
return request$f("/app/drugReport/startDrugReport", data, "POST", "application/json;charset=UTF-8");
}
const _sfc_main$2c = {
data() {
return {
isLogin: false,
show: false,
statusBarHeight: uni.getStorageSync("menuInfo").statusBarHeight,
user: {
nickName: "登录/注册",
phone: "",
integral: 0,
balance: 0
}
};
},
onLoad() {
},
onShow() {
this.$isLogin().then(
(res) => {
if (res) {
this.getUserInfo();
}
},
(rej) => {
}
);
},
onReachBottom() {
},
onPageScroll(e) {
},
methods: {
doIM() {
formatAppLog("log", "at pages/user/index.vue:204", 110);
getUserFollowDoctor().then(
(res) => {
if (res.code == 200) {
if (res.data != null) {
var data = { followId: res.data.followId };
startDrugReport(data).then(
(res2) => {
uni.switchTab({
url: "/pages/TUIKit/TUIPages/TUIConversation/index"
});
},
(rej) => {
}
);
} else {
uni.showToast({
icon: "none",
title: "当前没有药师为您服务"
});
}
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
},
toIM() {
var that = this;
this.$isLogin().then(
(res) => {
formatAppLog("log", "at pages/user/index.vue:273", res);
if (res) {
that.doIM();
} else {
uni.navigateTo({
url: "/pages/auth/login"
});
}
}
);
},
callPhone() {
uni.makePhoneCall({
phoneNumber: "18696558100"
});
},
toCompany() {
this.$isLogin().then(
(res) => {
formatAppLog("log", "at pages/user/index.vue:293", res);
if (res) {
var token = uni.getStorageSync("CompanyUserToken");
if (token) {
uni.navigateTo({
url: "/pages_company/index"
});
} else {
uni.navigateTo({
url: "/pages_company/login"
});
}
} else {
uni.navigateTo({
url: "/pages/auth/login"
});
}
}
);
},
showLogout() {
this.show = true;
},
hideLogout() {
this.show = false;
},
logout() {
this.$logout();
uni.$TUIKit.logout();
if (uni.$TUICallKit != null) {
uni.$TUICallKit.logout();
}
uni.reLaunch({
url: "/pages/index/index",
animationType: "pop-in",
animationDuration: 100
});
this.isLogin = false;
},
getUserInfo() {
getUserInfo$1().then(
(res) => {
if (res.code == 200) {
if (res.user != null) {
this.isLogin = true;
this.user = res.user;
}
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
},
navTo(url2) {
this.$isLogin().then(
(res) => {
formatAppLog("log", "at pages/user/index.vue:354", res);
if (res) {
uni.navigateTo({
url: url2
});
} else {
uni.navigateTo({
url: "/pages/auth/login"
});
}
}
);
}
}
};
function _sfc_render$2p(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_modal = resolveEasycom(vue.resolveDynamicComponent("u-modal"), __easycom_0$9);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "cont" }, [
vue.createElementVNode("view", { class: "bg" }, [
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/bbe743373f4d4b78852ea5fd9824ade4.png" })
]),
vue.createElementVNode("view", { class: "cont-box" }, [
vue.createElementVNode(
"view",
{
class: "status_bar",
style: vue.normalizeStyle({ height: $data.statusBarHeight })
},
null,
4
/* STYLE */
),
vue.createElementVNode("view", { class: "top-title" }),
vue.createElementVNode("view", {
class: "user",
onClick: _cache[1] || (_cache[1] = vue.withModifiers(($event) => $options.navTo("/pages_user/personInfo"), ["stop"]))
}, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode("image", {
src: $data.user.avatar == null ? "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/90d9eb0f8f87482b977611eb36b66d82.jpg" : $data.user.avatar
}, null, 8, ["src"])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("view", { class: "name-box" }, [
vue.createElementVNode(
"view",
{ class: "name" },
vue.toDisplayString($data.user.nickName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "btns" }, [
vue.createElementVNode("image", { src: "/static/images/icon_set.png" })
])
]),
$data.user.phone != "" ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: "phone"
},
vue.toDisplayString(_ctx.$parsePhone($data.user.phone)),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true),
vue.createElementVNode("view", { class: "counts" }, [
vue.createElementVNode(
"view",
{
class: "count",
onClick: _cache[0] || (_cache[0] = ($event) => $options.navTo("/pages_user/integral"))
},
"积分 " + vue.toDisplayString($data.user.integral),
1
/* TEXT */
),
vue.createCommentVNode(' 我的健康金 {{user.balance}} ')
])
])
]),
vue.createElementVNode("view", { class: "menus" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "我的订单")
]),
vue.createElementVNode("view", { class: "menu-box" }, [
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[2] || (_cache[2] = ($event) => $options.navTo("/pages_order/inquiryOrderList"))
}, [
vue.createElementVNode("image", { src: "/static/images/icon_inquiry_order.png" }),
vue.createElementVNode("view", { class: "title" }, "问诊订单")
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[3] || (_cache[3] = ($event) => $options.navTo("/pages_order/storeOrderList"))
}, [
vue.createElementVNode("image", { src: "/static/images/icon_store_order.png" }),
vue.createElementVNode("view", { class: "title" }, "处方订单")
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[4] || (_cache[4] = ($event) => $options.navTo("/pages_order/packageOrderList"))
}, [
vue.createElementVNode("image", { src: "/static/images/icon_qianyue.png" }),
vue.createElementVNode("view", { class: "title" }, "服务包")
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[5] || (_cache[5] = ($event) => $options.navTo("/pages_order/storeOrderRefundList"))
}, [
vue.createElementVNode("image", { src: "/static/images/sales_orders_icon.png" }),
vue.createElementVNode("view", { class: "title" }, "售后服务")
])
])
]),
vue.createElementVNode("view", { class: "menus" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "医疗服务")
]),
vue.createElementVNode("view", { class: "menu-box" }, [
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[6] || (_cache[6] = ($event) => $options.navTo("/pages_user/myDoctorList"))
}, [
vue.createElementVNode("image", { src: "/static/images/icon_my_doctor.png" }),
vue.createElementVNode("view", { class: "title" }, "我的医生")
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[7] || (_cache[7] = ($event) => $options.navTo("/pages_order/prescribeList"))
}, [
vue.createElementVNode("image", { src: "/static/images/icon_my_prescription.png" }),
vue.createElementVNode("view", { class: "title" }, "我的处方")
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[8] || (_cache[8] = ($event) => $options.navTo("/pages_user/followList"))
}, [
vue.createElementVNode("image", { src: "/static/images/icon_my_follow.png" }),
vue.createElementVNode("view", { class: "title" }, "我的随访")
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[9] || (_cache[9] = ($event) => $options.toIM())
}, [
vue.createElementVNode("image", { src: "https://cos.his.cdwjyyh.com/fs/20240429/6e68b42d9d824532945a1dda73350576.png" }),
vue.createElementVNode("view", { class: "title" }, "用药咨询")
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[10] || (_cache[10] = ($event) => $options.navTo("/pages_user/drugReportList"))
}, [
vue.createElementVNode("image", { src: "https://cos.his.cdwjyyh.com/fs/20240429/6b9f340b16e74fa2bc095265d525769e.png" }),
vue.createElementVNode("view", { class: "title" }, "用药报告")
])
])
]),
vue.createElementVNode("view", { class: "menus" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "常用应用")
]),
vue.createElementVNode("view", { class: "menu-box" }, [
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[11] || (_cache[11] = ($event) => $options.navTo("/pages_user/patient"))
}, [
vue.createElementVNode("image", {
class: "min-image",
src: "/static/images/icon_visitor_management.png"
}),
vue.createElementVNode("view", { class: "title" }, "就诊人管理")
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[12] || (_cache[12] = ($event) => $options.navTo("/pages_user/address"))
}, [
vue.createElementVNode("image", {
class: "min-image",
src: "/static/images/icon_address_management.png"
}),
vue.createElementVNode("view", { class: "title" }, "地址管理")
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[13] || (_cache[13] = ($event) => $options.navTo("/pages_order/inquiryOrderPingList"))
}, [
vue.createElementVNode("image", {
class: "min-image",
src: "/static/images/icon_my_comments.png"
}),
vue.createElementVNode("view", { class: "title" }, "我的评论")
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[14] || (_cache[14] = ($event) => $options.navTo("/pages_user/myCouponList"))
}, [
vue.createElementVNode("image", {
class: "min-image",
src: "/static/images/icon_my_coupon.png"
}),
vue.createElementVNode("view", { class: "title" }, "我的优惠卷")
])
]),
vue.createElementVNode("view", { class: "menu-box" }, [
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[15] || (_cache[15] = ($event) => $options.navTo("/pages_company/couponList?couponType=6"))
}, [
vue.createElementVNode("image", {
class: "min-image",
src: "/static/images/icon_coupon.png"
}),
vue.createElementVNode("view", { class: "title" }, "领券中心")
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[16] || (_cache[16] = ($event) => $options.navTo("/pages_user/cert"))
}, [
vue.createElementVNode("image", {
class: "min-image",
src: "/static/images/cert.png"
}),
vue.createElementVNode("view", { class: "title" }, "资质证书")
]),
vue.createElementVNode("view", { class: "menu" }, [
vue.createElementVNode("image", {
class: "min-image",
src: "/static/images/icon_service_center.png"
}),
vue.createElementVNode("view", { class: "title" }, "客服中心"),
vue.createElementVNode("button", {
class: "contact-btn",
"open-type": "contact"
})
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[17] || (_cache[17] = ($event) => $options.navTo("/pages_user/about"))
}, [
vue.createElementVNode("image", {
class: "min-image",
src: "/static/images/icon_feedback.png"
}),
vue.createElementVNode("view", { class: "title" }, "关于我们")
])
])
]),
vue.createElementVNode("view", { class: "menus" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "管理端")
]),
vue.createElementVNode("view", { class: "menu-box" }, [
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[18] || (_cache[18] = ($event) => $options.navTo("/pages_user/registerDoctor?type=1"))
}, [
vue.createElementVNode("image", {
class: "min-image",
src: "/static/images/doctor_reg.png"
}),
vue.createElementVNode("view", { class: "title" }, "医生入驻")
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[19] || (_cache[19] = ($event) => $options.navTo("/pages_user/registerDoctor?type=2"))
}, [
vue.createElementVNode("image", {
class: "min-image",
src: "/static/images/doctor_reg.png"
}),
vue.createElementVNode("view", { class: "title" }, "药师入驻")
]),
vue.createElementVNode("view", {
class: "menu",
onClick: _cache[20] || (_cache[20] = ($event) => $options.toCompany())
}, [
vue.createElementVNode("image", {
class: "min-image",
src: "/static/images/sales.png"
}),
vue.createElementVNode("view", { class: "title" }, "客服端")
])
])
]),
$data.isLogin ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "btn-box"
}, [
vue.createElementVNode("view", {
class: "sub-btn",
onClick: _cache[21] || (_cache[21] = ($event) => $options.showLogout())
}, "退出登录")
])) : vue.createCommentVNode("v-if", true),
vue.createElementVNode("view", { class: "tip" }, [
vue.createElementVNode("view", { class: "title" }, "技术支持 重庆云联融智科技有限公司 "),
vue.createCommentVNode(' 联系电话 18696558100 ')
])
])
]),
vue.createVNode(_component_u_modal, {
show: $data.show,
title: "提示",
showCancelButton: true,
onCancel: _cache[22] || (_cache[22] = ($event) => $options.hideLogout()),
onConfirm: _cache[23] || (_cache[23] = ($event) => $options.logout()),
content: "确认退出吗?"
}, null, 8, ["show"])
]);
}
const PagesUserIndex = /* @__PURE__ */ _export_sfc(_sfc_main$2c, [["render", _sfc_render$2p], ["__scopeId", "data-v-79e6a490"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/user/index.vue"]]);
function formatTime(secondTime) {
const time = secondTime;
let newTime;
let hour;
let minite;
let seconds;
if (time >= 3600) {
hour = parseInt(`${time / 3600}`, 10) < 10 ? `0${parseInt(`${time / 3600}`, 10)}` : parseInt(`${time / 3600}`, 10);
minite = parseInt(`${time % 60 / 60}`, 10) < 10 ? `0${parseInt(`${time % 60 / 60}`, 10)}` : parseInt(`${time % 60 / 60}`, 10);
seconds = time % 3600 < 10 ? `0${time % 3600}` : time % 3600;
if (seconds > 60) {
minite = parseInt(`${seconds / 60}`, 10) < 10 ? `0${parseInt(`${seconds / 60}`, 10)}` : parseInt(`${seconds / 60}`, 10);
seconds = seconds % 60 < 10 ? `0${seconds % 60}` : seconds % 60;
}
newTime = `${hour}:${minite}:${seconds}`;
} else if (time >= 60 && time < 3600) {
minite = parseInt(`${time / 60}`, 10) < 10 ? `0${parseInt(`${time / 60}`, 10)}` : parseInt(`${time / 60}`, 10);
seconds = time % 60 < 10 ? `0${time % 60}` : time % 60;
newTime = `00:${minite}:${seconds}`;
} else if (time < 60) {
seconds = time < 10 ? `0${time}` : time;
newTime = `00:00:${seconds}`;
}
return newTime;
}
function caculateTimeago(dateTimeStamp) {
const minute = 1e3 * 60;
const hour = minute * 60;
const day = hour * 24;
const week = day * 7;
const now = (/* @__PURE__ */ new Date()).getTime();
const diffValue = now - dateTimeStamp;
let result = "";
if (diffValue < 0) {
return;
}
const minC = diffValue / minute;
const hourC = diffValue / hour;
const dayC = diffValue / day;
const weekC = diffValue / week;
if (weekC >= 1 && weekC <= 4) {
result = ` ${parseInt(`${weekC}`, 10)}周前`;
} else if (dayC >= 1 && dayC <= 6) {
result = ` ${parseInt(`${dayC}`, 10)}天前`;
} else if (hourC >= 1 && hourC <= 23) {
result = ` ${parseInt(`${hourC}`, 10)}小时前`;
} else if (minC >= 1 && minC <= 59) {
result = ` ${parseInt(`${minC}`, 10)}分钟前`;
} else if (diffValue >= 0 && diffValue <= minute) {
result = "刚刚";
} else {
const datetime = /* @__PURE__ */ new Date();
datetime.setTime(dateTimeStamp);
const Nyear = datetime.getFullYear();
const Nmonth = datetime.getMonth() + 1 < 10 ? `0${datetime.getMonth() + 1}` : datetime.getMonth() + 1;
const Ndate = datetime.getDate() < 10 ? `0${datetime.getDate()}` : datetime.getDate();
result = `${Nyear}-${Nmonth}-${Ndate}`;
}
return result;
}
const TUIConversationList$1 = vue.defineComponent({
props: {
conversationList: {
type: Array,
default: () => {
return [];
}
},
currentID: {
type: String,
default: () => {
return "";
}
}
},
setup(props2, ctx) {
const obj = vue.reactive({
conversationList: [],
currentID: "",
isOpened: "none",
currentConversation: {},
dialogID: ""
});
vue.watchEffect(() => {
obj.conversationList = props2.conversationList;
obj.currentID = props2.currentID;
});
const handleItemAvator = (item) => {
var _a, _b, _c;
let avatar = "";
switch (item.type) {
case uni.$TIM.TYPES.CONV_C2C:
avatar = ((_a = item == null ? void 0 : item.userProfile) == null ? void 0 : _a.avatar) || "https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png";
break;
case uni.$TIM.TYPES.CONV_GROUP:
avatar = ((_b = item == null ? void 0 : item.groupProfile) == null ? void 0 : _b.avatar) || "https://web.sdk.qcloud.com/component/TUIKit/assets/group_avatar.png";
break;
case uni.$TIM.TYPES.CONV_SYSTEM:
avatar = ((_c = item == null ? void 0 : item.groupProfile) == null ? void 0 : _c.avatar) || "https://web.sdk.qcloud.com/component/TUIKit/assets/group_avatar.png";
break;
}
return avatar;
};
const handleItemName = (item) => {
var _a, _b;
let name = "";
switch (item.type) {
case uni.$TIM.TYPES.CONV_C2C:
name = (item == null ? void 0 : item.userProfile.nick) || ((_a = item == null ? void 0 : item.userProfile) == null ? void 0 : _a.userID) || "";
break;
case uni.$TIM.TYPES.CONV_GROUP:
name = item.groupProfile.name || ((_b = item == null ? void 0 : item.groupProfile) == null ? void 0 : _b.groupID) || "";
break;
case uni.$TIM.TYPES.CONV_SYSTEM:
name = "系统通知";
break;
}
return name;
};
const handleItemTime = (time) => {
if (time > 0) {
return caculateTimeago(time * 1e3);
}
return "";
};
const handleItemMessage = (message) => {
switch (message.type) {
case uni.$TIM.TYPES.MSG_TEXT:
return message.payload.text;
default:
return message.messageForShow;
}
};
const handleGotoItem = (item) => {
ctx.emit("handleGotoItem", item);
};
const handleItemLongpress = (item) => {
obj.currentConversation = item;
obj.dialogID = item.conversationID;
if (item.type === "C2C") {
obj.currentuserID = item.userProfile.userID;
} else if (item.type === "GROUP") {
obj.currentuserID = item.groupProfile.groupID;
}
obj.conversationType = item.type;
};
const handlerIsOpened = (item) => {
if (item.conversationID === obj.doalogID) {
return "right";
} else {
return "none";
}
};
const handleConversation = (type2) => {
switch (type2) {
case "delete":
uni.$TUIKit.TUIConversationServer.deleteConversation(
obj.dialogID
).then((imResponse) => {
imResponse.data;
});
obj.dialogID = "";
break;
case "ispinned":
if (type2 === "ispinned") {
const options = {
conversationID: obj.dialogID,
isPinned: true
};
uni.$TUIKit.TUIConversationServer.pinConversation(options).then(
(imResponse) => {
formatAppLog("log", "at pages/TUIKit/TUIPages/TUIConversation/conversation-list.vue:239", imResponse);
}
);
}
obj.dialogID = "";
break;
case "dispinned":
if (type2 === "dispinned") {
const options = {
conversationID: obj.dialogID,
isPinned: false
};
uni.$TUIKit.TUIConversationServer.pinConversation(options).then(
(imResponse) => {
}
);
}
obj.dialogID = "";
break;
case "mute":
if (type2 === "mute" && obj.conversationType === "C2C") {
const options = {
userIDList: [obj.currentuserID],
messageRemindType: uni.$TIM.TYPES.MSG_REMIND_ACPT_NOT_NOTE
};
uni.$TUIKit.TUIConversationServer.muteConversation(options).then(
(imResponse) => {
formatAppLog("log", "at pages/TUIKit/TUIPages/TUIConversation/conversation-list.vue:265", imResponse);
}
);
} else if (type2 === "mute" && obj.conversationType === "GROUP") {
const options = {
groupID: obj.currentuserID,
messageRemindType: uni.$TIM.TYPES.MSG_REMIND_ACPT_NOT_NOTE
};
uni.$TUIKit.TUIConversationServer.muteConversation(options).then(
(imResponse) => {
formatAppLog("log", "at pages/TUIKit/TUIPages/TUIConversation/conversation-list.vue:275", imResponse);
}
);
}
obj.dialogID = "";
break;
case "notMute":
if (type2 === "notMute" && obj.conversationType === "C2C") {
const options = {
userIDList: [obj.currentuserID],
messageRemindType: uni.$TIM.TYPES.MSG_REMIND_ACPT_AND_NOTE
};
uni.$TUIKit.TUIConversationServer.muteConversation(options).then(
(imResponse) => {
formatAppLog("log", "at pages/TUIKit/TUIPages/TUIConversation/conversation-list.vue:289", imResponse);
}
);
} else if (type2 === "notMute" && obj.conversationType === "GROUP") {
const options = {
groupID: obj.currentuserID,
messageRemindType: uni.$TIM.TYPES.MSG_REMIND_ACPT_AND_NOTE
};
uni.$TUIKit.TUIConversationServer.muteConversation(options).then(
(imResponse) => {
formatAppLog("log", "at pages/TUIKit/TUIPages/TUIConversation/conversation-list.vue:299", imResponse);
}
);
}
obj.dialogID = "";
break;
}
};
return {
...vue.toRefs(obj),
handleGotoItem,
handleItemAvator,
handleItemTime,
handleItemMessage,
handleItemName,
handleItemLongpress,
handleConversation,
handlerIsOpened
};
}
});
const _imports_0$6 = "/assets/mute.7e6900f5.svg";
function _sfc_render$2o(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", {
class: "TUI-conversation-list",
onClick: _cache[5] || (_cache[5] = ($event) => _ctx.dialogID = "")
}, [
_ctx.conversationList.length == 0 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "no-data-box"
}, [
vue.createElementVNode("image", { src: "https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png" }),
vue.createElementVNode("view", { class: "empty-title" }, "暂无数据")
])) : vue.createCommentVNode("v-if", true),
_ctx.conversationList.length > 0 ? (vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
{ key: 1 },
vue.renderList(_ctx.conversationList, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", { key: index2 }, [
vue.createElementVNode("view", {
class: vue.normalizeClass(["TUI-conversation-item", [
_ctx.dialogID === item.conversationID && "selected",
item.isPinned && "pinned"
]]),
onClick: ($event) => _ctx.handleGotoItem(item),
onLongpress: ($event) => _ctx.handleItemLongpress(item)
}, [
vue.createElementVNode("aside", { class: "left" }, [
vue.createElementVNode("image", {
mode: "aspectFill",
class: "avatar",
src: _ctx.handleItemAvator(item)
}, null, 8, ["src"]),
item.unreadCount > 0 && item.messageRemindType !== "AcceptNotNotify" ? (vue.openBlock(), vue.createElementBlock(
"span",
{
key: 0,
class: "num"
},
vue.toDisplayString(item.unreadCount > 99 ? "99+" : item.unreadCount),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true),
item.unreadCount > 0 && item.messageRemindType === "AcceptNotNotify" ? (vue.openBlock(), vue.createElementBlock("span", {
key: 1,
class: "num-notNotify"
})) : vue.createCommentVNode("v-if", true)
]),
vue.createElementVNode("main", { class: "content" }, [
vue.createElementVNode("header", { class: "content-header" }, [
vue.createElementVNode("label", null, [
vue.createElementVNode(
"p",
{ class: "name" },
vue.toDisplayString(_ctx.handleItemName(item)),
1
/* TEXT */
)
])
]),
vue.createElementVNode("footer", { class: "content-footer" }, [
item.unreadCount > 0 && item.messageRemindType === "AcceptNotNotify" ? (vue.openBlock(), vue.createElementBlock(
"span",
{
key: 0,
class: "content-footer-unread"
},
"[" + vue.toDisplayString(item.unreadCount > 99 ? "99+" : item.unreadCount) + "条]",
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true),
vue.createElementVNode(
"span",
{ class: "message-text" },
vue.toDisplayString(_ctx.handleItemMessage(item.lastMessage)),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "conversation-line" })
]),
vue.createElementVNode("view", { class: "item-footer" }, [
vue.createElementVNode(
"span",
{ class: "time" },
vue.toDisplayString(_ctx.handleItemTime(item.lastMessage.lastTime)),
1
/* TEXT */
),
item.messageRemindType === "AcceptNotNotify" ? (vue.openBlock(), vue.createElementBlock("image", {
key: 0,
class: "mute-icon",
src: _imports_0$6
})) : vue.createCommentVNode("v-if", true)
])
]),
item.conversationID === _ctx.dialogID ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "dialog-box dialog-item"
}, [
vue.createElementVNode("view", {
class: "conversation-options",
onClick: _cache[0] || (_cache[0] = vue.withModifiers(($event) => _ctx.handleConversation("delete", _ctx.dialogID), ["stop"]))
}, "删除会话"),
!item.isPinned ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "conversation-options",
onClick: _cache[1] || (_cache[1] = vue.withModifiers(($event) => _ctx.handleConversation("ispinned", _ctx.dialogID), ["stop"]))
}, "置顶会话")) : vue.createCommentVNode("v-if", true),
item.isPinned ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "conversation-options",
onClick: _cache[2] || (_cache[2] = vue.withModifiers(($event) => _ctx.handleConversation("dispinned", _ctx.dialogID), ["stop"]))
}, "取消置顶")) : vue.createCommentVNode("v-if", true),
item.messageRemindType === "" || item.messageRemindType === "AcceptAndNotify" ? (vue.openBlock(), vue.createElementBlock("view", {
key: 2,
class: "conversation-options",
onClick: _cache[3] || (_cache[3] = vue.withModifiers(($event) => _ctx.handleConversation("mute", _ctx.dialogID), ["stop"]))
}, "消息免打扰")) : vue.createCommentVNode("v-if", true),
item.messageRemindType === "AcceptNotNotify" ? (vue.openBlock(), vue.createElementBlock("view", {
key: 3,
class: "conversation-options",
onClick: _cache[4] || (_cache[4] = vue.withModifiers(($event) => _ctx.handleConversation("notMute", _ctx.dialogID), ["stop"]))
}, "取消免打扰")) : vue.createCommentVNode("v-if", true)
])) : vue.createCommentVNode("v-if", true)
], 42, ["onClick", "onLongpress"])
]);
}),
128
/* KEYED_FRAGMENT */
)) : vue.createCommentVNode("v-if", true)
]);
}
const TUIConversationList = /* @__PURE__ */ _export_sfc(TUIConversationList$1, [["render", _sfc_render$2o], ["__scopeId", "data-v-9a62e141"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIConversation/conversation-list.vue"]]);
const _sfc_main$2b = vue.defineComponent({
name: "dialog",
props: {
visible: {
type: Boolean,
default: () => {
return false;
}
},
styleConfig: {
type: Object,
default: () => {
return {
width: "240px",
// height: '120px',
padding: "16px",
top: "10px",
right: "10px"
};
}
},
handleClose: {
type: Function,
default: () => {
}
}
},
setup(props2, context) {
}
});
function _sfc_render$2n(_ctx, _cache, $props, $setup, $data, $options) {
return _ctx.visible ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "dialog",
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handleClose && _ctx.handleClose(...args))
}, [
vue.createElementVNode(
"view",
{
class: "dialog-container",
style: vue.normalizeStyle(_ctx.styleConfig)
},
[
vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
],
4
/* STYLE */
)
])) : vue.createCommentVNode("v-if", true);
}
const Dialog = /* @__PURE__ */ _export_sfc(_sfc_main$2b, [["render", _sfc_render$2n], ["__scopeId", "data-v-842d67a9"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIConversation/components/dialog.vue"]]);
const TUIConversation = vue.defineComponent({
name: "TUIConversation",
components: {
TUIConversationList,
Dialog
},
setup(props2) {
const timStore2 = store.state.timStore;
const data = vue.reactive({
conversationList: vue.computed(() => timStore2.conversationList),
currrentConversationID: "",
open: false,
searchUserID: "",
selectedList: [],
searchUserList: [],
step: 1,
showDialog: false,
item: {
flow: "out",
status: "success"
},
styleConfig: {
width: "150px",
// height: '160px',
padding: "16px 16px 0px",
top: "8px",
right: "8px"
},
chatList: [
{
imgType: "SINGLE",
type: uni.$TIM.TYPES.CONV_C2C,
id: 1,
content: "发起会话"
},
{
imgType: "GROUP",
type: uni.$TIM.TYPES.GRP_WORK,
id: 1,
content: "工作群"
},
{
imgType: "GROUP",
type: uni.$TIM.TYPES.GRP_PUBLIC,
id: 2,
content: "社交群"
},
{
imgType: "GROUP",
type: uni.$TIM.TYPES.GRP_MEETING,
id: 3,
content: "会议群"
}
]
});
onUnload(() => {
uni.$TUIKit.TUIConversationServer.destroyed();
});
onNavigationBarButtonTap(() => {
data.showDialog = !data.showDialog;
});
onShow(() => {
uni.$emit("refreshIM");
store.commit("timStore/setConversationID", "");
});
const handleCurrrentConversation = (value2) => {
if (value2.lastMessage.cloudCustomData != null) {
try {
var json = JSON.parse(value2.lastMessage.cloudCustomData);
store.commit("timStore/setImType", json.imType);
store.commit("timStore/setOrderType", json.orderType);
store.commit("timStore/setOrderId", json.orderId);
store.commit("timStore/setFollowId", json.followId);
store.commit("timStore/setType", json.type);
} catch (e) {
}
}
data.currrentConversationID = value2.conversationID;
store.commit("timStore/setConversationID", value2.conversationID);
uni.navigateTo({
url: `../TUIChat/index?conversationName=${handleItemName(value2)}`
});
uni.$TUIKit.TUIConversationServer.setMessageRead(value2.conversationID);
const curConversation = data.conversationList.filter((item) => {
return item.conversationID === value2.conversationID;
});
store.commit("timStore/setConversation", curConversation);
uni.$TUIKit.TUIConversationServer.getConversationProfile(
value2.conversationID
).then((res) => {
store.commit("timStore/setConversation", res.data.conversation);
});
};
const handleShow = () => {
data.showDialog = true;
};
const handleContentClick = (item) => {
data.showDialog = false;
uni.navigateTo({
url: `../TUIConversation/create?title=${item.content}&type=${item.type}`
});
};
const handleClose = () => {
data.showDialog = false;
};
const handleItemName = (item) => {
var _a, _b;
let name = "";
switch (item.type) {
case uni.$TIM.TYPES.CONV_C2C:
name = (item == null ? void 0 : item.userProfile.nick) || ((_a = item == null ? void 0 : item.userProfile) == null ? void 0 : _a.userID) || "";
break;
case uni.$TIM.TYPES.CONV_GROUP:
name = item.groupProfile.name || ((_b = item == null ? void 0 : item.groupProfile) == null ? void 0 : _b.groupID) || "";
break;
case uni.$TIM.TYPES.CONV_SYSTEM:
name = "系统通知";
break;
}
return name;
};
return {
...vue.toRefs(data),
handleCurrrentConversation,
handleContentClick,
handleItemName,
handleClose,
handleShow
};
}
});
const _imports_0$5 = "/assets/singlePerson.59f1319b.svg";
const _imports_1$2 = "/assets/multiPerson.63026248.svg";
function _sfc_render$2m(_ctx, _cache, $props, $setup, $data, $options) {
const _component_Dialog = vue.resolveComponent("Dialog");
const _component_TUIConversationList = vue.resolveComponent("TUIConversationList");
return vue.openBlock(), vue.createElementBlock(
vue.Fragment,
null,
[
vue.createVNode(_component_Dialog, {
visible: _ctx.showDialog,
styleConfig: _ctx.styleConfig,
handleClose: _ctx.handleClose
}, {
default: vue.withCtx(() => [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(_ctx.chatList, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
key: index2,
class: "chat-container",
onClick: vue.withModifiers(($event) => _ctx.handleContentClick(item), ["stop"])
}, [
item.imgType === "SINGLE" ? (vue.openBlock(), vue.createElementBlock("image", {
key: 0,
class: "item-icon",
src: _imports_0$5
})) : (vue.openBlock(), vue.createElementBlock("image", {
key: 1,
class: "item-icon",
src: _imports_1$2
})),
vue.createElementVNode(
"view",
null,
vue.toDisplayString(item.content),
1
/* TEXT */
)
], 8, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
))
]),
_: 1
/* STABLE */
}, 8, ["visible", "styleConfig", "handleClose"]),
vue.createElementVNode("view", { class: "TUI-conversation" }, [
vue.createCommentVNode(' + 发起聊天 '),
vue.createVNode(_component_TUIConversationList, {
currentID: _ctx.currrentConversationID,
conversationList: _ctx.conversationList,
onHandleGotoItem: _ctx.handleCurrrentConversation
}, null, 8, ["currentID", "conversationList", "onHandleGotoItem"])
])
],
64
/* STABLE_FRAGMENT */
);
}
const PagesTUIKitTUIPagesTUIConversationIndex = /* @__PURE__ */ _export_sfc(TUIConversation, [["render", _sfc_render$2m], ["__scopeId", "data-v-653b394a"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIConversation/index.vue"]]);
const _imports_0$4 = "/assets/selected.2c312a9c.svg";
const _sfc_main$2a = vue.defineComponent({
name: "Create",
props: {},
setup(props2, context) {
const TUIConversationServer2 = uni.$TUIKit.TUIConversationServer;
const { userInfo } = store.state.timStore;
const data = vue.reactive({
userID: (userInfo == null ? void 0 : userInfo.userID) || "",
inputUserID: "",
chooseUserList: [],
title: "发起会话",
myProfile: {},
type: uni.$TIM.TYPES.CONV_C2C
});
onLoad((options) => {
data.title = options && options.title || "发起会话";
data.type = options && options.type || uni.$TIM.TYPES.CONV_C2C;
});
const handleUserIdInput = (e) => {
data.inputUserID = e.detail.value;
uni.$TUIKit.getMyProfile().then((imResponse) => {
data.myProfile = imResponse.data;
}).catch((imError) => {
formatAppLog("warn", "at pages/TUIKit/TUIPages/TUIConversation/create.vue:90", "getMyProfile error:", imError);
});
};
const handleGetUserProfileInfo = () => {
if (!data.inputUserID)
return;
const userIDList = [data.inputUserID];
uni.$TUIKit.getUserProfile({ userIDList }).then((imRes) => {
uni.hideLoading();
if (imRes.data.length > 0) {
const userInfo2 = {
...imRes.data[0],
isChoose: false
};
if (data.chooseUserList.filter(
(obj) => userInfo2.userID === obj.userID
).length === 0) {
data.chooseUserList.push(userInfo2);
}
} else {
uni.showToast({
title: "搜索用户不存在",
icon: "error"
});
data.inputUserID = "";
}
}).catch((err) => {
uni.hideLoading();
});
};
const handleChoose = (item) => {
const list = data.chooseUserList.map((obj) => {
if (item.userID == obj.userID) {
return {
...obj,
isChoose: !obj.isChoose
};
} else {
return obj;
}
});
data.chooseUserList = list;
};
const handleCreateGroup = () => {
var _a, _b;
const chooseList = data.chooseUserList.filter((obj) => obj.isChoose);
if (chooseList.length > 0) {
switch (data.type) {
case uni.$TIM.TYPES.CONV_C2C: {
if (chooseList.length > 1) {
uni.showToast({
title: `“发起会话”仅能选择一个用户`,
icon: "none"
});
return;
} else {
const conversationId = `C2C${chooseList[0].userID}`;
formatAppLog("log", "at pages/TUIKit/TUIPages/TUIConversation/create.vue:154", conversationId);
handleJumpToChat(conversationId);
}
break;
}
case uni.$TIM.TYPES.GRP_WORK:
case uni.$TIM.TYPES.GRP_PUBLIC:
case uni.$TIM.TYPES.GRP_MEETING: {
let name = "";
if (chooseList.length > 2) {
name = chooseList.slice(0, 3).map((obj) => obj.nick || obj.userID).join(",") || "";
} else {
name = chooseList.map((obj) => obj.nick || obj.userID).join(",") + "、" + (((_a = data.myProfile) == null ? void 0 : _a.nick) || ((_b = data.myProfile) == null ? void 0 : _b.userID));
}
const groupOptions = {
avatar: "https://web.sdk.qcloud.com/component/TUIKit/assets/group_avatar.png",
type: data.type,
name,
memberList: chooseList.map((obj) => ({
userID: obj.userID,
role: obj.role,
memberCustomField: obj.memberCustomField
}))
};
uni.showLoading({ title: "群组创建中…" });
uni.$TUIKit.createGroup(groupOptions).then((imResponse) => {
uni.hideLoading();
const { groupID } = imResponse.data && imResponse.data.group;
if (groupID) {
const conversationId = `GROUP${groupID}`;
handleJumpToChat(conversationId);
}
}).catch((err) => {
uni.showToast({ title: "群组创建失败!" });
uni.hideLoading();
});
break;
}
}
} else {
uni.showToast({
title: "请选择相关用户",
icon: "none"
});
}
};
const handleJumpToChat = (conversationId) => {
store.commit("timStore/setConversationID", conversationId);
TUIConversationServer2.setMessageRead(conversationId);
TUIConversationServer2.getConversationProfile(conversationId).then((res) => {
var _a;
const { conversation } = res.data;
formatAppLog("log", "at pages/TUIKit/TUIPages/TUIConversation/create.vue:221", "create conversation response = ", res);
store.commit("timStore/setConversation", conversation);
let url2 = "../TUIChat/index";
if (conversationId.slice(0, 5) === "GROUP") {
const { name } = conversation.groupProfile;
url2 = `${url2}?conversationName=${name}`;
} else if (conversationId.slice(0, 3) === "C2C") {
conversation.userProfile;
url2 = `${url2}?conversationName=${((_a = conversation.userProfile.nick) == null ? void 0 : _a.nick) || conversation.userProfile.userID}`;
}
uni.redirectTo({ url: url2 });
}).catch((err) => {
formatAppLog("warn", "at pages/TUIKit/TUIPages/TUIConversation/create.vue:237", "获取 group profile 异常 = ", err);
});
};
return {
...vue.toRefs(data),
handleUserIdInput,
handleGetUserProfileInfo,
handleChoose,
handleCreateGroup
};
}
});
function _sfc_render$2l(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "TUI-Create-conversation-container" }, [
vue.createElementVNode("view", { class: "tui-search-area" }, [
vue.createElementVNode("view", { class: "tui-search-bar" }, [
vue.createCommentVNode(' '),
vue.createElementVNode("input", {
class: "tui-search-bar-input",
value: _ctx.inputUserID,
placeholder: "请输入用户ID",
onInput: _cache[0] || (_cache[0] = (...args) => _ctx.handleUserIdInput && _ctx.handleUserIdInput(...args)),
onConfirm: _cache[1] || (_cache[1] = (...args) => _ctx.handleGetUserProfileInfo && _ctx.handleGetUserProfileInfo(...args)),
onBlur: _cache[2] || (_cache[2] = (...args) => _ctx.handleGetUserProfileInfo && _ctx.handleGetUserProfileInfo(...args))
}, null, 40, ["value"])
]),
vue.createElementVNode("view", { class: "tui-showID" })
]),
vue.createCommentVNode(" 用户列表 "),
vue.createElementVNode("view", { class: "tui-person-list-container" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(_ctx.chooseUserList, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "tui-person-to-invite",
key: index2,
onClick: ($event) => _ctx.handleChoose(item)
}, [
vue.createElementVNode("view", { class: "tui-person-choose-container" }, [
item.isChoose ? (vue.openBlock(), vue.createElementBlock("image", {
key: 0,
class: "tui-normal-choose",
src: _imports_0$4
})) : (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "tui-normal-unchoose"
}))
]),
vue.createElementVNode("view", { class: "tui-person-profile" }, [
vue.createElementVNode("image", {
class: "tui-person-profile-avatar",
src: item.avatar || "https://sdk-web-1252463788.cos.ap-hongkong.myqcloud.com/component/TUIKit/assets/avatar_21.png"
}, null, 8, ["src"]),
vue.createElementVNode("view", null, [
vue.createElementVNode(
"view",
{ class: "tui-person-profile-nick" },
vue.toDisplayString(item.nick),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "tui-person-profile-userID" },
"用户ID:" + vue.toDisplayString(item.userID),
1
/* TEXT */
)
])
])
], 8, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
))
]),
vue.createElementVNode("view", { class: "tui-confirm-btn-container" }, [
vue.createElementVNode("view", {
class: "tui-confirm-btn",
onClick: _cache[3] || (_cache[3] = (...args) => _ctx.handleCreateGroup && _ctx.handleCreateGroup(...args))
}, "确认创建")
])
]);
}
const PagesTUIKitTUIPagesTUIConversationCreate = /* @__PURE__ */ _export_sfc(_sfc_main$2a, [["render", _sfc_render$2l], ["__scopeId", "data-v-d9bc6912"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIConversation/create.vue"]]);
const messageBubble = vue.defineComponent({
props: {
data: {
type: Object,
default: () => {
return {};
}
}
},
setup(props2, ctx) {
const data = vue.reactive({
message: {},
show: false
});
vue.watchEffect(() => {
data.message = props2.data;
});
const toggleDialog = () => {
data.show = !data.show;
};
return {
...vue.toRefs(data),
toggleDialog
};
}
});
function _sfc_render$2k(_ctx, _cache, $props, $setup, $data, $options) {
var _a;
return vue.openBlock(), vue.createElementBlock(
"view",
{
class: vue.normalizeClass(["message-bubble", [_ctx.message.flow === "in" ? "" : "reverse"]])
},
[
vue.createElementVNode("image", {
class: "avatar",
src: ((_a = _ctx.message) == null ? void 0 : _a.avatar) || "https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png",
alt: ""
}, null, 8, ["src"]),
vue.createElementVNode("view", { class: "message-area" }, [
_ctx.message.flow === "in" ? (vue.openBlock(), vue.createElementBlock(
"label",
{
key: 0,
class: "name"
},
vue.toDisplayString(_ctx.message.nick),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true),
vue.createElementVNode(
"div",
{
class: vue.normalizeClass(["content content-" + _ctx.message.flow])
},
[
vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
],
2
/* CLASS */
)
]),
_ctx.message.status === "fail" ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "message-label fail"
}, "!")) : vue.createCommentVNode("v-if", true),
_ctx.message.conversationType === "C2C" && _ctx.message.flow == "out" && _ctx.message.status !== "fail" ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 1,
class: vue.normalizeClass(["message-label", [!_ctx.message.isPeerRead && "unRead"]])
},
[
!_ctx.message.isPeerRead ? (vue.openBlock(), vue.createElementBlock("span", { key: 0 }, "未读")) : (vue.openBlock(), vue.createElementBlock("span", { key: 1 }, "已读"))
],
2
/* CLASS */
)) : vue.createCommentVNode("v-if", true)
],
2
/* CLASS */
);
}
const MessageBubble = /* @__PURE__ */ _export_sfc(messageBubble, [["render", _sfc_render$2k], ["__scopeId", "data-v-bdaa27cd"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIChat/components/message-elements/message-bubble.vue"]]);
const MessageText$1 = vue.defineComponent({
props: {
data: {
type: Object,
default: () => {
return {};
}
},
messageData: {
type: Object,
default: () => {
return {};
}
}
},
setup(props2, ctx) {
const data = vue.reactive({
data: {},
message: {}
});
vue.watchEffect(() => {
data.data = props2.data;
data.message = props2.messageData;
});
return {
...vue.toRefs(data)
};
}
});
function _sfc_render$2j(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock(
"view",
{
class: vue.normalizeClass(["content content-" + _ctx.message.flow])
},
[
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(_ctx.data.text, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", { key: index2 }, [
item.name === "text" ? (vue.openBlock(), vue.createElementBlock(
"view",
{ key: 0 },
vue.toDisplayString(item.text),
1
/* TEXT */
)) : item.name === "img" ? (vue.openBlock(), vue.createElementBlock("img", {
key: 1,
class: "text-img",
src: item.src
}, null, 8, ["src"])) : vue.createCommentVNode("v-if", true)
]);
}),
128
/* KEYED_FRAGMENT */
))
],
2
/* CLASS */
);
}
const MessageText = /* @__PURE__ */ _export_sfc(MessageText$1, [["render", _sfc_render$2j], ["__scopeId", "data-v-8469577b"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIChat/components/message-elements/message-text.vue"]]);
const _sfc_main$29 = vue.defineComponent({
props: {
data: {
type: Array,
default: () => {
return [];
}
},
messageData: {
type: Object,
default: () => {
return {};
}
}
},
setup(props2, ctx) {
const data = vue.reactive({
imageInfo: [],
imageHeight: 0,
imageWidth: 0,
message: {}
});
vue.watchEffect(() => {
const DEFAULT_MAX_SIZE = 155;
let imageWidth = 0;
let imageHeight = 0;
data.message = props2.messageData;
data.imageInfo = props2.data.info[1];
if (data.imageInfo.width >= data.imageInfo.height) {
imageWidth = DEFAULT_MAX_SIZE;
imageHeight = DEFAULT_MAX_SIZE * data.imageInfo.height / data.imageInfo.width;
} else {
imageWidth = DEFAULT_MAX_SIZE * data.imageInfo.width / data.imageInfo.height;
imageHeight = DEFAULT_MAX_SIZE;
}
data.imageWidth = imageWidth + "px";
data.imageHeight = imageHeight + "px";
});
const handlePreviewImage = () => {
formatAppLog("error", "at pages/TUIKit/TUIPages/TUIChat/components/message-elements/message-image.vue:59", props2.data.info[0].url, "----linda");
uni.previewImage({
current: props2.data.info[0].url,
// 当前显示图片的http链接
urls: [props2.data.info[0].url]
});
};
return {
...vue.toRefs(data),
handlePreviewImage
};
}
});
function _sfc_render$2i(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", {
class: "message-image",
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handlePreviewImage && _ctx.handlePreviewImage(...args))
}, [
vue.createElementVNode("image", {
src: _ctx.data.info[1].url,
style: vue.normalizeStyle({ height: _ctx.imageHeight, width: _ctx.imageWidth }),
class: vue.normalizeClass(["content-" + _ctx.message.flow])
}, null, 14, ["src"]),
vue.createCommentVNode('
')
]);
}
const MessageImage = /* @__PURE__ */ _export_sfc(_sfc_main$29, [["render", _sfc_render$2i], ["__scopeId", "data-v-d71110be"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIChat/components/message-elements/message-image.vue"]]);
const MessageOperate$1 = vue.defineComponent({
props: {
data: {
type: Object,
default: () => {
return {};
}
}
},
setup(props2, ctx) {
const TUIServer = uni.$TUIKit.TUIChatServer;
const data = vue.reactive({
message: {}
});
vue.watchEffect(() => {
data.message = props2.data;
});
const handleMseeage = async (type2) => {
switch (type2) {
case "revoke":
await TUIServer.revokeMessage(data.message).catch((error2) => {
if (error2.code = 20016)
uni.showToast({
title: "消息超过了 2 分钟",
icon: "error"
});
});
data.dialogID = "";
break;
case "delete":
await TUIServer.deleteMessage([data.message]);
data.dialogID = "";
break;
case "resend":
await TUIServer.resendMessage(data.message);
data.dialogID = "";
break;
}
};
return {
...vue.toRefs(data),
handleMseeage
};
}
});
const _imports_0$3 = "/assets/revoked.7c9df1a1.svg";
const _imports_1$1 = "/assets/delete.f7e3358f.svg";
const _imports_2$1 = "/assets/forword.ae89e5df.svg";
function _sfc_render$2h(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "dialog-container" }, [
_ctx.message.flow === "out" && _ctx.message.status === "success" ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "item-box",
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.handleMseeage("revoke"))
}, [
vue.createElementVNode("image", {
class: "item-icon",
src: _imports_0$3
}),
vue.createElementVNode("view", null, "撤回")
])) : vue.createCommentVNode("v-if", true),
_ctx.message.status === "success" ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "item-box",
onClick: _cache[1] || (_cache[1] = ($event) => _ctx.handleMseeage("delete"))
}, [
vue.createElementVNode("image", {
class: "item-icon",
src: _imports_1$1
}),
vue.createElementVNode("view", null, "删除")
])) : vue.createCommentVNode("v-if", true),
vue.createCommentVNode(`
转发
`),
_ctx.message.flow === "out" && _ctx.message.status === "fail" ? (vue.openBlock(), vue.createElementBlock("view", {
key: 2,
class: "item-box",
onClick: _cache[2] || (_cache[2] = ($event) => _ctx.handleMseeage("resend"))
}, [
vue.createElementVNode("image", {
class: "item-icon",
src: _imports_2$1
}),
vue.createElementVNode("view", null, "重发")
])) : vue.createCommentVNode("v-if", true),
vue.createCommentVNode(' 打开 ')
]);
}
const MessageOperate = /* @__PURE__ */ _export_sfc(MessageOperate$1, [["render", _sfc_render$2h], ["__scopeId", "data-v-928c104b"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIChat/components/message-elements/message-operate.vue"]]);
const _sfc_main$28 = vue.defineComponent({
props: {
data: {
type: Object,
default: () => {
return {};
}
},
messageData: {
type: Object,
default: () => {
return {};
}
}
},
setup(props2, ctx) {
const data = vue.reactive({
video: {},
message: {},
show: false,
videoContext: null
});
vue.watchEffect(() => {
data.video = props2.data;
data.message = props2.messageData;
});
const toggleShow = () => {
uni.navigateTo({
url: `./components/message-elements/video-play?videoMessage=${data.video.url}`
});
};
return {
...vue.toRefs(data),
toggleShow
};
}
});
const _imports_0$2 = "/assets/play_normal@2x.58b451c9.png";
function _sfc_render$2g(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("div", { class: "message-video" }, [
vue.createElementVNode(
"div",
{
class: vue.normalizeClass(["message-video-box", [!_ctx.video.progress && "message-video-cover"]]),
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.toggleShow && _ctx.toggleShow(...args))
},
[
vue.createElementVNode("image", {
src: _ctx.video.snapshotUrl,
class: vue.normalizeClass(["message-video-box", ["content-" + _ctx.message.flow]])
}, null, 10, ["src"]),
vue.createElementVNode("image", {
src: _imports_0$2,
class: "video-play"
})
],
2
/* CLASS */
)
]);
}
const MessageVideo = /* @__PURE__ */ _export_sfc(_sfc_main$28, [["render", _sfc_render$2g], ["__scopeId", "data-v-0e400482"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIChat/components/message-elements/message-video.vue"]]);
const audio = uni.createInnerAudioContext();
const MessageAudio$1 = vue.defineComponent({
props: {
data: {
type: Object,
default: () => {
return {};
}
},
messageData: {
type: Object,
default: () => {
return {};
}
}
},
setup(props2, ctx) {
const data = vue.reactive({
data: {},
message: {},
isPlay: false
});
vue.watchEffect(() => {
data.data = props2.data;
data.message = props2.messageData;
});
vue.onMounted(() => {
audio.onPlay(() => {
formatAppLog("log", "at pages/TUIKit/TUIPages/TUIChat/components/message-elements/message-audio.vue:43", "开始播放");
});
audio.onEnded(() => {
formatAppLog("log", "at pages/TUIKit/TUIPages/TUIChat/components/message-elements/message-audio.vue:46", "停止播放");
});
audio.onError((e) => {
formatAppLog("error", "at pages/TUIKit/TUIPages/TUIChat/components/message-elements/message-audio.vue:49", e, "onError");
});
});
const handlePlay = () => {
if (data.data.url) {
audio.src = data.data.url;
audio.play();
}
data.isPlay = true;
};
return {
...vue.toRefs(data),
audio,
handlePlay
};
}
});
const _imports_0$1 = "/assets/audio-play.949caa88.svg";
function _sfc_render$2f(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock(
"view",
{
class: vue.normalizeClass(["message-audio", ["content content-" + _ctx.message.flow]]),
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handlePlay && _ctx.handlePlay(...args))
},
[
_ctx.message.flow === "in" ? (vue.openBlock(), vue.createElementBlock("image", {
key: 0,
class: "audio-icon audio-icon-in",
src: _imports_0$1
})) : vue.createCommentVNode("v-if", true),
vue.createElementVNode(
"view",
null,
vue.toDisplayString(_ctx.data.second) + "s",
1
/* TEXT */
),
_ctx.message.flow === "out" ? (vue.openBlock(), vue.createElementBlock("image", {
key: 1,
class: "audio-icon",
src: _imports_0$1
})) : vue.createCommentVNode("v-if", true),
vue.createCommentVNode(`
`)
],
2
/* CLASS */
);
}
const MessageAudio = /* @__PURE__ */ _export_sfc(MessageAudio$1, [["render", _sfc_render$2f], ["__scopeId", "data-v-53eee9af"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIChat/components/message-elements/message-audio.vue"]]);
const MessageFace$1 = vue.defineComponent({
props: {
data: {
type: Object,
default: () => {
return {};
}
}
},
setup(props2, ctx) {
const data = vue.reactive({
data: {}
});
vue.watchEffect(() => {
data.data = props2.data;
});
return {
...vue.toRefs(data)
};
}
});
function _sfc_render$2e(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("image", {
class: "message-image",
src: _ctx.data.url
}, null, 8, ["src"]);
}
const MessageFace = /* @__PURE__ */ _export_sfc(MessageFace$1, [["render", _sfc_render$2e], ["__scopeId", "data-v-579879ce"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIChat/components/message-elements/message-face.vue"]]);
const MessageCustom$1 = vue.defineComponent({
props: {
data: {
type: Object,
default: () => {
return {};
}
},
messageData: {
type: Object,
default: () => {
return {};
}
}
},
setup(props2, ctx) {
const data = vue.reactive({
data: {},
extension: {},
isCustom: "",
payload: {},
message: {}
});
vue.watchEffect(() => {
data.data = props2.data;
data.message = props2.messageData;
data.isCustom = props2.data.message.payload.data;
data.payload = props2.data.message.payload;
data.extension = JSON.parse(props2.data.message.payload.extension);
});
return {
...vue.toRefs(data)
};
}
});
function _sfc_render$2d(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "custom" }, [
_ctx.isCustom === "order" ? (vue.openBlock(), vue.createElementBlock(
vue.Fragment,
{ key: 0 },
[
vue.createCommentVNode(" \n
\n {{extension.title}}\n "),
vue.createElementVNode("view", { class: "order-item" }, [
vue.createElementVNode("view", { class: "title" }, "问诊订单 "),
vue.createElementVNode(
"view",
{ class: "text" },
"患者:" + vue.toDisplayString(_ctx.extension.patientName) + " " + vue.toDisplayString(_ctx.extension.sex) + " " + vue.toDisplayString(_ctx.extension.mobile),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "text" },
"患病时间:" + vue.toDisplayString(_ctx.extension.duration),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "text" },
"就诊情况:" + vue.toDisplayString(_ctx.extension.isVisit),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "text" },
"病情描述:" + vue.toDisplayString(_ctx.extension.title),
1
/* TEXT */
)
])
],
64
/* STABLE_FRAGMENT */
)) : _ctx.isCustom === "prescribe" ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "prescribe-item"
}, [
vue.createElementVNode("view", { class: "title" }, "电子处方单 "),
vue.createElementVNode(
"view",
{ class: "text" },
"诊断:" + vue.toDisplayString(_ctx.extension.diagnose),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "btns" }, [
vue.createElementVNode("view", { class: "btn" }, "查看处方")
])
])) : _ctx.isCustom === "report" ? (vue.openBlock(), vue.createElementBlock("view", {
key: 2,
class: "report-item"
}, [
vue.createElementVNode("view", { class: "title" }, "问诊报告单 "),
vue.createElementVNode("view", { class: "btns" }, [
vue.createElementVNode("view", { class: "btn" }, "查看报告单")
])
])) : _ctx.isCustom === "follow" ? (vue.openBlock(), vue.createElementBlock("view", {
key: 3,
class: "prescribe-item"
}, [
vue.createElementVNode("view", { class: "title" }, "随访单 "),
vue.createElementVNode("view", { class: "btns" }, [
vue.createElementVNode("view", { class: "btn" }, "查看随访")
])
])) : _ctx.isCustom === "drugReport" ? (vue.openBlock(), vue.createElementBlock("view", {
key: 4,
class: "report-item"
}, [
vue.createElementVNode("view", { class: "title" }, "用药报告单 "),
vue.createElementVNode("view", { class: "btns" }, [
vue.createElementVNode("view", { class: "btn" }, "查看报告单")
])
])) : _ctx.isCustom === "startInquiry" ? (vue.openBlock(), vue.createElementBlock(
"span",
{
key: 5,
class: vue.normalizeClass(["content content-" + _ctx.message.flow])
},
vue.toDisplayString(_ctx.extension.title),
3
/* TEXT, CLASS */
)) : _ctx.isCustom === "finishInquiry" ? (vue.openBlock(), vue.createElementBlock(
"span",
{
key: 6,
class: vue.normalizeClass(["content content-" + _ctx.message.flow])
},
vue.toDisplayString(_ctx.extension.title),
3
/* TEXT, CLASS */
)) : (vue.openBlock(), vue.createElementBlock(
"span",
{
key: 7,
class: vue.normalizeClass(["content content-" + _ctx.message.flow])
},
vue.toDisplayString(_ctx.data.custom),
3
/* TEXT, CLASS */
))
]);
}
const MessageCustom = /* @__PURE__ */ _export_sfc(MessageCustom$1, [["render", _sfc_render$2d], ["__scopeId", "data-v-2acfb6b8"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIChat/components/message-elements/message-custom.vue"]]);
const MessageTip$1 = vue.defineComponent({
props: {
data: {
type: Object,
default: () => {
return {};
}
}
},
setup(props2, ctx) {
const data = vue.reactive({
message: {}
});
vue.watchEffect(() => {
data.message = props2.data;
});
return {
...vue.toRefs(data)
};
}
});
function _sfc_render$2c(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock(
"div",
{ class: "message-tip" },
vue.toDisplayString(_ctx.message.text),
1
/* TEXT */
);
}
const MessageTip = /* @__PURE__ */ _export_sfc(MessageTip$1, [["render", _sfc_render$2c], ["__scopeId", "data-v-eba994b3"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIChat/components/message-elements/message-tip.vue"]]);
const MessageRevoked$1 = vue.defineComponent({
props: {
data: {
type: Object,
default: () => {
return {};
}
}
},
setup(props2, ctx) {
const data = vue.reactive({
message: {}
});
vue.watchEffect(() => {
data.message = props2.data;
});
const edit = () => {
ctx.emit("edit", data.message);
};
return {
...vue.toRefs(data),
edit
};
}
});
function _sfc_render$2b(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("div", { class: "revoke" }, [
_ctx.message.flow === "in" ? (vue.openBlock(), vue.createElementBlock(
"label",
{ key: 0 },
vue.toDisplayString(_ctx.message.nick || _ctx.message.from),
1
/* TEXT */
)) : (vue.openBlock(), vue.createElementBlock("label", { key: 1 }, "你")),
vue.createElementVNode("span", null, "撤回了一条消息"),
_ctx.message.flow === "out" ? (vue.openBlock(), vue.createElementBlock("span", {
key: 2,
class: "edit",
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.edit && _ctx.edit(...args))
}, "重新编辑")) : vue.createCommentVNode("v-if", true)
]);
}
const MessageRevoked = /* @__PURE__ */ _export_sfc(MessageRevoked$1, [["render", _sfc_render$2b], ["__scopeId", "data-v-74cb0d08"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIChat/components/message-elements/message-revoked.vue"]]);
const emojiUrl = "https://web.sdk.qcloud.com/im/assets/emoji/";
const emojiMap = {
"[NO]": "emoji_0@2x.png",
"[OK]": "emoji_1@2x.png",
"[下雨]": "emoji_2@2x.png",
"[么么哒]": "emoji_3@2x.png",
"[乒乓]": "emoji_4@2x.png",
"[便便]": "emoji_5@2x.png",
"[信封]": "emoji_6@2x.png",
"[偷笑]": "emoji_7@2x.png",
"[傲慢]": "emoji_8@2x.png",
"[再见]": "emoji_9@2x.png",
"[冷汗]": "emoji_10@2x.png",
"[凋谢]": "emoji_11@2x.png",
"[刀]": "emoji_12@2x.png",
"[删除]": "emoji_13@2x.png",
"[勾引]": "emoji_14@2x.png",
"[发呆]": "emoji_15@2x.png",
"[发抖]": "emoji_16@2x.png",
"[可怜]": "emoji_17@2x.png",
"[可爱]": "emoji_18@2x.png",
"[右哼哼]": "emoji_19@2x.png",
"[右太极]": "emoji_20@2x.png",
"[右车头]": "emoji_21@2x.png",
"[吐]": "emoji_22@2x.png",
"[吓]": "emoji_23@2x.png",
"[咒骂]": "emoji_24@2x.png",
"[咖啡]": "emoji_25@2x.png",
"[啤酒]": "emoji_26@2x.png",
"[嘘]": "emoji_27@2x.png",
"[回头]": "emoji_28@2x.png",
"[困]": "emoji_29@2x.png",
"[坏笑]": "emoji_30@2x.png",
"[多云]": "emoji_31@2x.png",
"[大兵]": "emoji_32@2x.png",
"[大哭]": "emoji_33@2x.png",
"[太阳]": "emoji_34@2x.png",
"[奋斗]": "emoji_35@2x.png",
"[奶瓶]": "emoji_36@2x.png",
"[委屈]": "emoji_37@2x.png",
"[害羞]": "emoji_38@2x.png",
"[尴尬]": "emoji_39@2x.png",
"[左哼哼]": "emoji_40@2x.png",
"[左太极]": "emoji_41@2x.png",
"[左车头]": "emoji_42@2x.png",
"[差劲]": "emoji_43@2x.png",
"[弱]": "emoji_44@2x.png",
"[强]": "emoji_45@2x.png",
"[彩带]": "emoji_46@2x.png",
"[彩球]": "emoji_47@2x.png",
"[得意]": "emoji_48@2x.png",
"[微笑]": "emoji_49@2x.png",
"[心碎了]": "emoji_50@2x.png",
"[快哭了]": "emoji_51@2x.png",
"[怄火]": "emoji_52@2x.png",
"[怒]": "emoji_53@2x.png",
"[惊恐]": "emoji_54@2x.png",
"[惊讶]": "emoji_55@2x.png",
"[憨笑]": "emoji_56@2x.png",
"[手枪]": "emoji_57@2x.png",
"[打哈欠]": "emoji_58@2x.png",
"[抓狂]": "emoji_59@2x.png",
"[折磨]": "emoji_60@2x.png",
"[抠鼻]": "emoji_61@2x.png",
"[抱抱]": "emoji_62@2x.png",
"[抱拳]": "emoji_63@2x.png",
"[拳头]": "emoji_64@2x.png",
"[挥手]": "emoji_65@2x.png",
"[握手]": "emoji_66@2x.png",
"[撇嘴]": "emoji_67@2x.png",
"[擦汗]": "emoji_68@2x.png",
"[敲打]": "emoji_69@2x.png",
"[晕]": "emoji_70@2x.png",
"[月亮]": "emoji_71@2x.png",
"[棒棒糖]": "emoji_72@2x.png",
"[汽车]": "emoji_73@2x.png",
"[沙发]": "emoji_74@2x.png",
"[流汗]": "emoji_75@2x.png",
"[流泪]": "emoji_76@2x.png",
"[激动]": "emoji_77@2x.png",
"[灯泡]": "emoji_78@2x.png",
"[炸弹]": "emoji_79@2x.png",
"[熊猫]": "emoji_80@2x.png",
"[爆筋]": "emoji_81@2x.png",
"[爱你]": "emoji_82@2x.png",
"[爱心]": "emoji_83@2x.png",
"[爱情]": "emoji_84@2x.png",
"[猪头]": "emoji_85@2x.png",
"[猫咪]": "emoji_86@2x.png",
"[献吻]": "emoji_87@2x.png",
"[玫瑰]": "emoji_88@2x.png",
"[瓢虫]": "emoji_89@2x.png",
"[疑问]": "emoji_90@2x.png",
"[白眼]": "emoji_91@2x.png",
"[皮球]": "emoji_92@2x.png",
"[睡觉]": "emoji_93@2x.png",
"[磕头]": "emoji_94@2x.png",
"[示爱]": "emoji_95@2x.png",
"[礼品袋]": "emoji_96@2x.png",
"[礼物]": "emoji_97@2x.png",
"[篮球]": "emoji_98@2x.png",
"[米饭]": "emoji_99@2x.png",
"[糗大了]": "emoji_100@2x.png",
"[红双喜]": "emoji_101@2x.png",
"[红灯笼]": "emoji_102@2x.png",
"[纸巾]": "emoji_103@2x.png",
"[胜利]": "emoji_104@2x.png",
"[色]": "emoji_105@2x.png",
"[药]": "emoji_106@2x.png",
"[菜刀]": "emoji_107@2x.png",
"[蛋糕]": "emoji_108@2x.png",
"[蜡烛]": "emoji_109@2x.png",
"[街舞]": "emoji_110@2x.png",
"[衰]": "emoji_111@2x.png",
"[西瓜]": "emoji_112@2x.png",
"[调皮]": "emoji_113@2x.png",
"[象棋]": "emoji_114@2x.png",
"[跳绳]": "emoji_115@2x.png",
"[跳跳]": "emoji_116@2x.png",
"[车厢]": "emoji_117@2x.png",
"[转圈]": "emoji_118@2x.png",
"[鄙视]": "emoji_119@2x.png",
"[酷]": "emoji_120@2x.png",
"[钞票]": "emoji_121@2x.png",
"[钻戒]": "emoji_122@2x.png",
"[闪电]": "emoji_123@2x.png",
"[闭嘴]": "emoji_124@2x.png",
"[闹钟]": "emoji_125@2x.png",
"[阴险]": "emoji_126@2x.png",
"[难过]": "emoji_127@2x.png",
"[雨伞]": "emoji_128@2x.png",
"[青蛙]": "emoji_129@2x.png",
"[面条]": "emoji_130@2x.png",
"[鞭炮]": "emoji_131@2x.png",
"[风车]": "emoji_132@2x.png",
"[飞吻]": "emoji_133@2x.png",
"[飞机]": "emoji_134@2x.png",
"[饥饿]": "emoji_135@2x.png",
"[香蕉]": "emoji_136@2x.png",
"[骷髅]": "emoji_137@2x.png",
"[麦克风]": "emoji_138@2x.png",
"[麻将]": "emoji_139@2x.png",
"[鼓掌]": "emoji_140@2x.png",
"[龇牙]": "emoji_141@2x.png"
};
const emojiName = [
"[龇牙]",
"[调皮]",
"[流汗]",
"[偷笑]",
"[再见]",
"[敲打]",
"[擦汗]",
"[猪头]",
"[玫瑰]",
"[流泪]",
"[大哭]",
"[嘘]",
"[酷]",
"[抓狂]",
"[委屈]",
"[便便]",
"[炸弹]",
"[菜刀]",
"[可爱]",
"[色]",
"[害羞]",
"[得意]",
"[吐]",
"[微笑]",
"[怒]",
"[尴尬]",
"[惊恐]",
"[冷汗]",
"[爱心]",
"[示爱]",
"[白眼]",
"[傲慢]",
"[难过]",
"[惊讶]",
"[疑问]",
"[困]",
"[么么哒]",
"[憨笑]",
"[爱情]",
"[衰]",
"[撇嘴]",
"[阴险]",
"[奋斗]",
"[发呆]",
"[右哼哼]",
"[抱抱]",
"[坏笑]",
"[飞吻]",
"[鄙视]",
"[晕]",
"[大兵]",
"[可怜]",
"[强]",
"[弱]",
"[握手]",
"[胜利]",
"[抱拳]",
"[凋谢]",
"[米饭]",
"[蛋糕]",
"[西瓜]",
"[啤酒]",
"[瓢虫]",
"[勾引]",
"[OK]",
"[爱你]",
"[咖啡]",
"[月亮]",
"[刀]",
"[发抖]",
"[差劲]",
"[拳头]",
"[心碎了]",
"[太阳]",
"[礼物]",
"[皮球]",
"[骷髅]",
"[挥手]",
"[闪电]",
"[饥饿]",
"[咒骂]",
"[折磨]",
"[抠鼻]",
"[鼓掌]",
"[糗大了]",
"[左哼哼]",
"[打哈欠]",
"[快哭了]",
"[吓]",
"[篮球]",
"[乒乓]",
"[NO]",
"[跳跳]",
"[怄火]",
"[转圈]",
"[磕头]",
"[回头]",
"[跳绳]",
"[激动]",
"[街舞]",
"[献吻]",
"[左太极]",
"[右太极]",
"[闭嘴]",
"[猫咪]",
"[红双喜]",
"[鞭炮]",
"[红灯笼]",
"[麻将]",
"[麦克风]",
"[礼品袋]",
"[信封]",
"[象棋]",
"[彩带]",
"[蜡烛]",
"[爆筋]",
"[棒棒糖]",
"[奶瓶]",
"[面条]",
"[香蕉]",
"[飞机]",
"[左车头]",
"[车厢]",
"[右车头]",
"[多云]",
"[下雨]",
"[钞票]",
"[熊猫]",
"[灯泡]",
"[风车]",
"[闹钟]",
"[雨伞]",
"[彩球]",
"[钻戒]",
"[沙发]",
"[纸巾]",
"[手枪]",
"[青蛙]"
];
const faceUrl = "https://web.sdk.qcloud.com/im/assets/face-elem/";
const bigEmojiList = [
{
icon: "yz00",
list: [
"yz00",
"yz01",
"yz02",
"yz03",
"yz04",
"yz05",
"yz06",
"yz07",
"yz08",
"yz09",
"yz10",
"yz11",
"yz12",
"yz13",
"yz14",
"yz15",
"yz16",
"yz17"
]
},
{
icon: "ys00",
list: [
"ys00",
"ys01",
"ys02",
"ys03",
"ys04",
"ys05",
"ys06",
"ys07",
"ys08",
"ys09",
"ys10",
"ys11",
"ys12",
"ys13",
"ys14",
"ys15"
]
},
{
icon: "gcs00",
list: [
"gcs00",
"gcs01",
"gcs02",
"gcs03",
"gcs04",
"gcs05",
"gcs06",
"gcs07",
"gcs08",
"gcs09",
"gcs10",
"gcs11",
"gcs12",
"gcs13",
"gcs14",
"gcs15",
"gcs16"
]
}
];
function decodeText(payload) {
const renderDom = [];
let temp = payload.text;
let left = -1;
let right = -1;
while (temp !== "") {
left = temp.indexOf("[");
right = temp.indexOf("]");
switch (left) {
case 0:
if (right === -1) {
renderDom.push({
name: "text",
text: temp
});
temp = "";
} else {
const emojiKey = temp.slice(0, right + 1);
if (emojiMap[emojiKey]) {
renderDom.push({
name: "img",
src: emojiUrl + emojiMap[emojiKey]
});
temp = temp.substring(right + 1);
} else {
renderDom.push({
name: "text",
text: "["
});
temp = temp.slice(1);
}
}
break;
case -1:
renderDom.push({
name: "text",
text: temp
});
temp = "";
break;
default:
renderDom.push({
name: "text",
text: temp.slice(0, left)
});
temp = temp.substring(left);
break;
}
}
return renderDom;
}
function handleTipMessageShowContext(message) {
const options = {
message,
text: ""
};
const userName = message.nick || message.payload.userIDList.join(",");
switch (message.payload.operationType) {
case uni.$TIM.TYPES.GRP_TIP_MBR_JOIN:
options.text = `群成员:${userName} 加入群组`;
break;
case uni.$TIM.TYPES.GRP_TIP_MBR_QUIT:
options.text = `群成员:${userName} 退出群组`;
break;
case uni.$TIM.TYPES.GRP_TIP_MBR_KICKED_OUT:
options.text = `群成员:${userName} 被 ${message.payload.operatorID} 踢出群组`;
break;
case uni.$TIM.TYPES.GRP_TIP_MBR_SET_ADMIN:
options.text = `群成员:${userName} 成为管理员`;
break;
case uni.$TIM.TYPES.GRP_TIP_MBR_CANCELED_ADMIN:
options.text = `群成员:${userName} 被撤销管理员`;
break;
case uni.$TIM.TYPES.GRP_TIP_GRP_PROFILE_UPDATED:
options.text = handleTipGrpUpdated(message);
break;
case uni.$TIM.TYPES.GRP_TIP_MBR_PROFILE_UPDATED:
for (const member of message.payload.memberList) {
if (member.muteTime > 0) {
options.text = `群成员:${member.userID} 被禁言`;
} else {
options.text = `群成员:${member.userID} 被取消禁言`;
}
}
break;
default:
options.text = `[群提示消息]`;
break;
}
return options;
}
function handleTipGrpUpdated(message) {
const { payload } = message;
const { newGroupProfile } = payload;
const { operatorID } = payload;
let text = "";
const name = Object.keys(newGroupProfile)[0];
switch (name) {
case "ownerID":
text = `${newGroupProfile[name]} 成为新的群主`;
break;
case "groupName":
text = `${operatorID} 修改群名为 ${newGroupProfile[name]}`;
break;
case "notification":
text = `${operatorID} 发布新公告`;
break;
}
return text;
}
function handleTextMessageShowContext(item) {
const options = {
text: decodeText(item.payload)
};
return options;
}
function handleFaceMessageShowContext(item) {
const face = {
message: item,
name: "",
url: ""
};
const currentEmojiList = bigEmojiList.filter(
(emoItem) => emoItem.icon === item.payload.data
);
if (currentEmojiList.length > 0) {
face.name = currentEmojiList[0].list[item.payload.index];
}
if (item.payload.data.indexOf("@2x") > 0) {
face.name = item.payload.data;
} else {
face.name = `${item.payload.data}@2x`;
}
face.url = `https://web.sdk.qcloud.com/im/assets/face-elem/${face.name}.png`;
return face;
}
function handleLocationMessageShowContext(item) {
const location2 = {
lon: "",
lat: "",
href: "",
url: "",
description: "",
message: item
};
location2.lon = item.payload.longitude.toFixed(6);
location2.lat = item.payload.latitude.toFixed(6);
location2.href = `https://map.qq.com/?type=marker&isopeninfowin=1&markertype=1&pointx=${location2.lon}&pointy=${location2.lat}&name=${item.payload.description}`;
location2.url = `https://apis.map.qq.com/ws/staticmap/v2/?center=${location2.lat},${location2.lon}&zoom=10&size=300*150&maptype=roadmap&markers=size:large|color:0xFFCCFF|label:k|${location2.lat},${location2.lon}&key=UBNBZ-PTP3P-TE7DB-LHRTI-Y4YLE-VWBBD`;
location2.description = item.payload.description;
return location2;
}
function handleImageMessageShowContext(item) {
return {
progress: (item == null ? void 0 : item.status) === "unSend" && item.progress,
info: item.payload.imageInfoArray,
message: item
};
}
function handleVideoMessageShowContext(item) {
var _a, _b;
return {
progress: (item == null ? void 0 : item.status) === "unSend" && (item == null ? void 0 : item.progress),
url: (_a = item == null ? void 0 : item.payload) == null ? void 0 : _a.videoUrl,
snapshotUrl: (_b = item == null ? void 0 : item.payload) == null ? void 0 : _b.snapshotUrl,
message: item
};
}
function handleAudioMessageShowContext(item) {
return {
progress: (item == null ? void 0 : item.status) === "unSend" && item.progress,
url: item.payload.url,
message: item,
second: item.payload.second
};
}
function handleFileMessageShowContext(item) {
let size = "";
if (item.payload.fileSize >= 1024 * 1024) {
size = `${(item.payload.fileSize / (1024 * 1024)).toFixed(2)} Mb`;
} else if (item.payload.fileSize >= 1024) {
size = `${(item.payload.fileSize / 1024).toFixed(2)} Kb`;
} else {
size = `${item.payload.fileSize.toFixed(2)}B`;
}
return {
progress: (item == null ? void 0 : item.status) === "unSend" && item.progress,
url: item.payload.fileUrl,
message: item,
name: item.payload.fileName,
size
};
}
function handleMergerMessageShowContext(item) {
return { message: item, ...item.payload };
}
function extractCallingInfoFromMessage(message) {
let callingmessage = {};
let objectData = {};
try {
callingmessage = JSON.parse(message.payload.data);
} catch (error2) {
callingmessage = {};
}
if (callingmessage.businessID !== 1) {
return "";
}
try {
objectData = JSON.parse(callingmessage.data);
} catch (error2) {
objectData = {};
}
switch (callingmessage.actionType) {
case 1: {
if (objectData.call_end >= 0 && !callingmessage.groupID) {
return `通话时长 :${formatTime(objectData.call_end)}`;
}
if (callingmessage.groupID) {
return `结束群聊`;
}
if (objectData.data && objectData.data.cmd === "switchToAudio") {
return `切换语音通话`;
}
if (objectData.data && objectData.data.cmd === "switchToVideo") {
return `切换视频通话`;
}
return `发起通话`;
}
case 2:
return `取消通话`;
case 3:
if (objectData.data && objectData.data.cmd === "switchToAudio") {
return `切换语音通话`;
}
if (objectData.data && objectData.data.cmd === "switchToVideo") {
return `切换视频通话`;
}
return `已接听`;
case 4:
return `拒绝通话`;
case 5:
if (objectData.data && objectData.data.cmd === "switchToAudio") {
return `切换语音通话`;
}
if (objectData.data && objectData.data.cmd === "switchToVideo") {
return `切换视频通话`;
}
return `无应答`;
default:
return "";
}
}
function handleCustomMessageShowContext(item) {
var _a;
return {
message: item,
custom: extractCallingInfoFromMessage(item) || ((_a = item == null ? void 0 : item.payload) == null ? void 0 : _a.extension) || `[自定义消息]`
};
}
function translateGroupSystemNotice(message) {
var _a, _b;
const groupName = ((_a = message.payload.groupProfile) == null ? void 0 : _a.name) || ((_b = message.payload.groupProfile) == null ? void 0 : _b.groupID);
switch (message.payload.operationType) {
case 1:
return `${message.payload.operatorID} 申请加入群组:${groupName}`;
case 2:
return `成功加入群组:${groupName}`;
case 3:
return `申请加入群组:${groupName} 被拒绝`;
case 4:
return `你被管理员 ${message.payload.operatorID} 踢出群组:${groupName}`;
case 5:
return `群:${groupName} 被 ${message.payload.operatorID} 解散`;
case 6:
return `${message.payload.operatorID} 创建群:${groupName}`;
case 7:
return `${message.payload.operatorID} 邀请你加群:${groupName}`;
case 8:
return `你退出群组:${groupName}`;
case 9:
return `你被${message.payload.operatorID} 设置为群:${groupName} 的管理员`;
case 10:
return `你被 ${message.payload.operatorID} 撤销群:${groupName} 的管理员身份`;
case 12:
return `${message.payload.operatorID} 邀请你加群:${groupName}`;
case 13:
return `${message.payload.operatorID} 同意加群 :${groupName}`;
case 14:
return `${message.payload.operatorID} 拒接加群 :${groupName}`;
case 255:
return `自定义群系统通知: ${message.payload.userDefinedField}`;
}
}
const MessageSystem$1 = vue.defineComponent({
props: {
data: {
type: Array,
default: () => {
return [];
}
},
types: {
type: Object,
default: () => {
return {};
}
}
},
setup(props2, ctx) {
const data = vue.reactive({
messageList: [],
types: {}
});
vue.watchEffect(() => {
data.messageList = props2.data;
data.types = props2.types;
});
const handleApplication = () => {
uni.showActionSheet({
itemList: ["同意", "拒绝"],
success: (res) => {
const option = {
handleAction: "Agree",
handleMessage: "欢迎进群",
message: this.message
};
if (res.tapIndex === 1) {
option.handleAction = "Reject";
option.handleMessage = "拒绝申请";
}
uni.$TUIKit.handleGroupApplication(option).then(() => {
uni.showToast({
title: option.handleAction === "Agree" ? "已同意申请" : "已拒绝申请"
});
}).catch((error2) => {
uni.showToast({
title: error2.message || "处理失败",
icon: "none"
});
});
}
});
};
return {
...vue.toRefs(data),
translateGroupSystemNotice,
handleApplication,
caculateTimeago
};
}
});
function _sfc_render$2a(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(_ctx.messageList, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", { key: index2 }, [
item.payload.operationType === 1 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "card handle"
}, [
vue.createElementVNode("view", null, [
vue.createElementVNode(
"view",
{ class: "time" },
vue.toDisplayString(_ctx.caculateTimeago(item.time * 1e3)),
1
/* TEXT */
),
vue.createTextVNode(
" " + vue.toDisplayString(_ctx.translateGroupSystemNotice(item)),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "choose" }, [
vue.createElementVNode("view", {
class: "button",
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handleClick && _ctx.handleClick(...args))
}, "处理")
])
])) : (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "card"
}, [
vue.createElementVNode(
"view",
{ class: "time" },
vue.toDisplayString(_ctx.caculateTimeago(item.time * 1e3)),
1
/* TEXT */
),
vue.createTextVNode(
" " + vue.toDisplayString(_ctx.translateGroupSystemNotice(item)),
1
/* TEXT */
)
]))
]);
}),
128
/* KEYED_FRAGMENT */
);
}
const MessageSystem = /* @__PURE__ */ _export_sfc(MessageSystem$1, [["render", _sfc_render$2a], ["__scopeId", "data-v-041bacfa"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIChat/components/message-elements/message-system.vue"]]);
const Face$1 = vue.defineComponent({
props: {
show: {
type: Boolean,
default: () => false
},
isMute: {
type: Boolean,
default: () => false
}
},
setup(props2, ctx) {
const data = vue.reactive({
emojiUrl,
emojiMap,
emojiName,
faceUrl,
bigEmojiList,
show: false,
currentIndex: 0,
isMute: false
});
const dialog = vue.ref();
vue.watchEffect(() => {
data.show = props2.show;
data.isMute = props2.isMute;
});
const toggleShow = () => {
if (!data.isMute) {
data.show = !data.show;
}
if (!data.show) {
selectFace(0);
}
};
const select = async (item, index2) => {
const options = {
name: item
};
if (data.currentIndex === 0) {
options.type = "emo";
options.url = emojiUrl + emojiMap[item];
options.template = ``;
return ctx.emit("send", options);
}
try {
await uni.$TUIKit.TUIChatServer.sendFaceMessage({
index: index2,
data: item
});
} catch (error2) {
}
};
const list = vue.computed(() => {
const emjiList = [data.emojiName];
for (let i = 0; i < data.bigEmojiList.length; i++) {
emjiList.push(data.bigEmojiList[i].list);
}
return emjiList;
});
const selectFace = (index2) => {
data.currentIndex = index2;
};
const handleSendEmoji = () => {
return ctx.emit("handleSendEmoji");
};
return {
...vue.toRefs(data),
toggleShow,
select,
selectFace,
list,
dialog,
handleSendEmoji
};
}
});
function _sfc_render$29(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "face" }, [
vue.createElementVNode("view", {
class: "icon icon-face",
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.toggleShow && _ctx.toggleShow(...args))
}),
vue.withDirectives(vue.createElementVNode(
"view",
{
class: "face-main",
ref: "dialog"
},
[
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(_ctx.list, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "face-main-box",
key: index2
}, [
_ctx.currentIndex === index2 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "face-list"
}, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(item, (childrenItem, childrenIndex) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "face-list-item",
key: childrenIndex,
onClick: ($event) => _ctx.select(childrenItem, childrenIndex)
}, [
index2 === 0 ? (vue.openBlock(), vue.createElementBlock("image", {
key: 0,
class: "emo-image",
src: _ctx.emojiUrl + _ctx.emojiMap[childrenItem]
}, null, 8, ["src"])) : (vue.openBlock(), vue.createElementBlock("image", {
key: 1,
class: "face-img",
src: _ctx.faceUrl + childrenItem + "@2x.png"
}, null, 8, ["src"]))
], 8, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
))
])) : vue.createCommentVNode("v-if", true)
]);
}),
128
/* KEYED_FRAGMENT */
)),
vue.createElementVNode("view", { class: "face-tab" }, [
vue.createElementVNode("view", {
class: "face-tab-item",
onClick: _cache[1] || (_cache[1] = ($event) => _ctx.selectFace(0))
}, [
vue.createElementVNode("view", { class: "icon icon-face" })
]),
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(_ctx.bigEmojiList, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "face-tab-item",
key: index2,
onClick: ($event) => _ctx.selectFace(index2 + 1)
}, [
vue.createElementVNode("image", {
class: "face-icon",
src: _ctx.faceUrl + item.icon + "@2x.png"
}, null, 8, ["src"])
], 8, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
)),
vue.createElementVNode("view", {
class: "send-btn",
onClick: _cache[2] || (_cache[2] = (...args) => _ctx.handleSendEmoji && _ctx.handleSendEmoji(...args))
}, "发送")
])
],
512
/* NEED_PATCH */
), [
[vue.vShow, _ctx.show]
])
]);
}
const Face = /* @__PURE__ */ _export_sfc(Face$1, [["render", _sfc_render$29], ["__scopeId", "data-v-cc73b204"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIChat/components/message-input/message/face.vue"]]);
const recorderManager = uni.getRecorderManager();
const AudioMessage$1 = vue.defineComponent({
props: {
show: {
type: Boolean,
default: () => {
return false;
}
}
},
setup(props2, ctx) {
const data = vue.reactive({
popupToggle: false,
isRecording: false,
canSend: true,
text: "按住说话",
recorderManager: null,
title: " ",
recordTime: 0,
recordTimer: null
});
vue.onMounted(() => {
recorderManager.onStop((res) => {
clearInterval(data.recordTimer);
let msg = {
duration: res.duration ? res.duration : data.recordTime * 1e3,
tempFilePath: res.tempFilePath,
fileSize: res.fileSize ? res.fileSize : 48 * data.recordTime / 8 * 1024
};
uni.hideLoading();
if (data.canSend) {
if (msg.duration < 1e3) {
uni.showToast({
title: "录音时间太短",
icon: "none"
});
} else {
uni.$TUIKit.TUIChatServer.sendAudioMessage(msg);
}
}
data.popupToggle = false;
data.isRecording = false;
data.canSend = true;
data.title = " ";
data.text = "按住说话";
});
});
const handleLongPress = (e) => {
data.popupToggle = true, recorderManager.start({
duration: 6e4,
// 录音的时长,单位 ms,最大值 600000(10 分钟)
sampleRate: 44100,
// 采样率
numberOfChannels: 1,
// 录音通道数
encodeBitRate: 192e3,
// 编码码率
format: "aac"
// 音频格式,选择此格式创建的音频消息,可以在即时通信 IM 全平台(Android、iOS、微信小程序和Web)互通
});
data.startPoint = e.target, data.title = "正在录音", data.isRecording = true, data.recordTime = 0;
data.recordTimer = setInterval(() => {
data.recordTime++;
}, 1e3);
};
const handleTouchMove = (e) => {
if (data.isRecording) {
if (e.currentTarget.offsetTop - e.changedTouches[e.changedTouches.length - 1].clientY > 100) {
data.text = "抬起停止";
data.title = "松开手指,取消发送";
data.canSend = false;
} else if (e.currentTarget.offsetTop - e.changedTouches[e.changedTouches.length - 1].clientY > 20) {
data.text = "抬起停止";
data.title = "上划可取消";
data.canSend = true;
} else {
data.text = "抬起停止";
data.title = "正在录音";
data.canSend = true;
}
}
};
const handleTouchEnd = () => {
data.isRecording = false;
data.popupToggle = false;
data.text = "按住说话";
uni.hideLoading();
recorderManager.stop();
};
const sendUploadMessage = (e) => {
Video.TUIServer.sendVideoMessage(e.target);
};
return {
...vue.toRefs(data),
sendUploadMessage,
handleLongPress,
handleTouchEnd,
handleTouchMove
};
}
});
function _sfc_render$28(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock(
"view",
{
class: "TUI-message-input-main",
onLongpress: _cache[3] || (_cache[3] = (...args) => _ctx.handleLongPress && _ctx.handleLongPress(...args)),
onTouchmove: _cache[4] || (_cache[4] = (...args) => _ctx.handleTouchMove && _ctx.handleTouchMove(...args)),
onTouchend: _cache[5] || (_cache[5] = (...args) => _ctx.handleTouchEnd && _ctx.handleTouchEnd(...args))
},
[
vue.createElementVNode(
"text",
null,
vue.toDisplayString(_ctx.text),
1
/* TEXT */
),
_ctx.popupToggle ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: "record-modal",
onLongpress: _cache[0] || (_cache[0] = (...args) => _ctx.handleLongPress && _ctx.handleLongPress(...args)),
onTouchmove: _cache[1] || (_cache[1] = (...args) => _ctx.handleTouchMove && _ctx.handleTouchMove(...args)),
onTouchend: _cache[2] || (_cache[2] = (...args) => _ctx.handleTouchEnd && _ctx.handleTouchEnd(...args))
},
[
vue.createElementVNode("view", { class: "wrapper" }, [
vue.createElementVNode("view", { class: "modal-loading" })
]),
vue.createElementVNode(
"view",
{ class: "modal-title" },
vue.toDisplayString(_ctx.title),
1
/* TEXT */
)
],
32
/* NEED_HYDRATION */
)) : vue.createCommentVNode("v-if", true)
],
32
/* NEED_HYDRATION */
);
}
const AudioMessage = /* @__PURE__ */ _export_sfc(AudioMessage$1, [["render", _sfc_render$28], ["__scopeId", "data-v-764d0a96"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIChat/components/message-input/message/audio.vue"]]);
const TUIChatInput$1 = vue.defineComponent({
components: {
Face,
AudioMessage
},
props: {
text: {
type: String,
default: () => {
return "";
}
},
conversationData: {
type: Object,
default: () => {
return "";
}
}
},
setup(props2) {
const TUIServer = uni.$TUIKit.TUIChatServer;
const data = vue.reactive({
imType: vue.computed(() => store.state.timStore.imType),
orderType: vue.computed(() => store.state.timStore.orderType),
firstSendMessage: true,
inputText: "",
extensionArea: false,
sendMessageBtn: false,
displayFlag: "",
isAudio: false,
displayServiceEvaluation: false,
displayCommonWords: false,
displayOrderList: false,
conversation: vue.computed(() => store.state.timStore.conversation)
});
vue.watchEffect(() => {
data.inputText = props2.text;
});
const handleSwitchAudio = () => {
data.isAudio = !data.isAudio;
};
const handleEmoji = () => {
data.displayFlag = data.displayFlag === "emoji" ? "" : "emoji";
};
const handleExtensions = (e) => {
data.displayFlag = data.displayFlag === "extension" ? "" : "extension";
};
const handleSendTextMessage = (e) => {
if (data.inputText.trimEnd()) {
uni.$TUIKit.TUIChatServer.sendTextMessage(
JSON.parse(JSON.stringify(data.inputText))
);
}
data.inputText = " ";
};
const handleOrder = (value2) => {
uni.navigateTo({
url: "/pages_order/inquiryOrderDetails?orderId=" + store.state.timStore.orderId
});
};
const handleFollow = (value2) => {
uni.navigateTo({
url: "/pages_user/followDetails?followId=" + store.state.timStore.followId
});
};
const handleStoreOrder = (value2) => {
uni.navigateTo({
url: "/pages_order/storeOrderDetail?orderId=" + store.state.timStore.orderId
});
};
const handleSend = (emo) => {
data.inputText += emo.name;
};
const handleSendImageMessage = (type2) => {
uni.chooseImage({
sourceType: [type2],
count: 1,
success: (res) => {
uni.getImageInfo({
src: res.tempFilePaths[0],
success(image2) {
formatAppLog("error", "at pages/TUIKit/TUIPages/TUIChat/components/message-input/index.vue:228", image2);
setTimeout(function() {
TUIServer.sendImageMessage(res, image2);
}, 500);
}
});
}
});
};
const handleSendVideoMessage = (type2) => {
uni.chooseVideo({
sourceType: [type2],
// 来源相册或者拍摄
maxDuration: 60,
// 设置最长时间60s
camera: "back",
// 后置摄像头
success: (res) => {
if (res) {
setTimeout(function() {
TUIServer.sendVideoMessage(res);
}, 500);
}
}
});
};
const handleCalling = (value2) => {
if (data.conversation.type === "GROUP") {
uni.showToast({
title: "群聊暂不支持",
icon: "none"
});
return;
}
const { userID } = data.conversation.userProfile;
if (typeof uni.$TUICallKit === "undefined") {
formatAppLog(
"error",
"at pages/TUIKit/TUIPages/TUIChat/components/message-input/index.vue:271",
"请集成 TUICallKit 插件,使用真机运行并且自定义基座调试,请参考官网文档:https://cloud.tencent.com/document/product/269/83857"
);
uni.showToast({
title: "请集成 TUICallKit 插件哦 ~ ",
icon: "none",
duration: 3e3
});
} else {
uni.$TUICallKit.call(
{
userID,
callMediaType: value2
},
(res) => {
formatAppLog("log", "at pages/TUIKit/TUIPages/TUIChat/components/message-input/index.vue:287", JSON.stringify(res));
}
);
}
};
return {
...vue.toRefs(data),
handleExtensions,
handleSendImageMessage,
handleSendTextMessage,
handleSendVideoMessage,
handleEmoji,
handleSend,
handleSwitchAudio,
handleCalling,
handleOrder,
handleFollow,
handleStoreOrder
};
}
});
const _imports_0 = "/assets/audio.3e97d529.svg";
const _imports_1 = "/assets/emoji.ccca7654.svg";
const _imports_2 = "/assets/more.abda2f36.svg";
const _imports_3 = "/assets/take-photo.bbcbfd9a.svg";
const _imports_4 = "/assets/send-img.7ec35072.svg";
const _imports_5 = "/assets/take-video.3b38acb8.svg";
const _imports_6 = "/assets/audio-calling.ce9b3c0a.svg";
const _imports_7 = "/assets/inquiry.4da57648.svg";
function _sfc_render$27(_ctx, _cache, $props, $setup, $data, $options) {
const _component_AudioMessage = vue.resolveComponent("AudioMessage");
const _component_Face = vue.resolveComponent("Face");
return vue.openBlock(), vue.createElementBlock("view", { class: "TUI-message-input-container" }, [
vue.createElementVNode("view", { class: "TUI-message-input" }, [
vue.createElementVNode("image", {
class: "TUI-icon",
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handleSwitchAudio && _ctx.handleSwitchAudio(...args)),
src: _imports_0
}),
!_ctx.isAudio ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "TUI-message-input-main"
}, [
vue.withDirectives(vue.createElementVNode(
"textarea",
{
class: "TUI-message-input-area",
"placeholder-class": "input-placeholder",
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => _ctx.inputText = $event),
placeholder: "请输入想要咨询的问题...",
"auto-height": "",
"confirm-type": "send",
"confirm-hold": "true",
onConfirm: _cache[2] || (_cache[2] = (...args) => _ctx.handleSendTextMessage && _ctx.handleSendTextMessage(...args))
},
null,
544
/* NEED_HYDRATION, NEED_PATCH */
), [
[vue.vModelText, _ctx.inputText]
])
])) : (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "TUI-message-input-main"
}, [
vue.createVNode(_component_AudioMessage)
])),
vue.createElementVNode("view", {
class: "TUI-message-input-functions",
"hover-class": "none"
}, [
vue.createElementVNode("image", {
class: "TUI-icon",
onClick: _cache[3] || (_cache[3] = (...args) => _ctx.handleEmoji && _ctx.handleEmoji(...args)),
src: _imports_1
}),
vue.createElementVNode("view", {
onClick: _cache[4] || (_cache[4] = (...args) => _ctx.handleExtensions && _ctx.handleExtensions(...args))
}, [
vue.createElementVNode("image", {
class: "TUI-icon",
src: _imports_2
})
])
])
]),
_ctx.displayFlag === "emoji" ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "TUI-Emoji-area"
}, [
vue.createVNode(_component_Face, {
show: _ctx.displayFlag === "emoji",
onSend: _ctx.handleSend,
onHandleSendEmoji: _ctx.handleSendTextMessage
}, null, 8, ["show", "onSend", "onHandleSendEmoji"])
])) : vue.createCommentVNode("v-if", true),
_ctx.displayFlag === "extension" ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "TUI-Extensions"
}, [
vue.createCommentVNode(' TODO: 这里功能还没实现\r\n '),
vue.createElementVNode("view", {
class: "TUI-Extension-slot",
onClick: _cache[5] || (_cache[5] = ($event) => _ctx.handleSendImageMessage("camera"))
}, [
vue.createElementVNode("image", {
class: "TUI-Extension-icon",
src: _imports_3
}),
vue.createElementVNode("view", { class: "TUI-Extension-slot-name" }, "拍照")
]),
vue.createElementVNode("view", {
class: "TUI-Extension-slot",
onClick: _cache[6] || (_cache[6] = ($event) => _ctx.handleSendImageMessage("album"))
}, [
vue.createElementVNode("image", {
class: "TUI-Extension-icon",
src: _imports_4
}),
vue.createElementVNode("view", { class: "TUI-Extension-slot-name" }, "图片")
]),
vue.createElementVNode("view", {
class: "TUI-Extension-slot",
onClick: _cache[7] || (_cache[7] = ($event) => _ctx.handleSendVideoMessage("album"))
}, [
vue.createElementVNode("image", {
class: "TUI-Extension-icon",
src: _imports_5
}),
vue.createElementVNode("view", { class: "TUI-Extension-slot-name" }, "视频")
]),
vue.createElementVNode("view", {
class: "TUI-Extension-slot",
onClick: _cache[8] || (_cache[8] = ($event) => _ctx.handleSendVideoMessage("camera"))
}, [
vue.createElementVNode("image", {
class: "TUI-Extension-icon",
src: _imports_3
}),
vue.createElementVNode("view", { class: "TUI-Extension-slot-name" }, "录像")
]),
_ctx.imType == 1 && _ctx.orderType == 2 || _ctx.imType == 2 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "TUI-Extension-slot",
onClick: _cache[9] || (_cache[9] = ($event) => _ctx.handleCalling(1))
}, [
vue.createElementVNode("image", {
class: "TUI-Extension-icon",
src: _imports_6
}),
vue.createElementVNode("view", { class: "TUI-Extension-slot-name" }, "语音通话")
])) : vue.createCommentVNode("v-if", true),
_ctx.imType == 1 && _ctx.orderType == 2 || _ctx.imType == 2 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "TUI-Extension-slot",
onClick: _cache[10] || (_cache[10] = ($event) => _ctx.handleCalling(2))
}, [
vue.createElementVNode("image", {
class: "TUI-Extension-icon",
src: _imports_5
}),
vue.createElementVNode("view", { class: "TUI-Extension-slot-name" }, "视频通话")
])) : vue.createCommentVNode("v-if", true),
_ctx.imType == 1 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 2,
class: "TUI-Extension-slot",
onClick: _cache[11] || (_cache[11] = ($event) => _ctx.handleOrder())
}, [
vue.createElementVNode("image", {
class: "TUI-Extension-icon",
src: _imports_7
}),
vue.createElementVNode("view", { class: "TUI-Extension-slot-name" }, "问诊订单")
])) : vue.createCommentVNode("v-if", true),
_ctx.imType == 2 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 3,
class: "TUI-Extension-slot",
onClick: _cache[12] || (_cache[12] = ($event) => _ctx.handleFollow())
}, [
vue.createElementVNode("image", {
class: "TUI-Extension-icon",
src: _imports_7
}),
vue.createElementVNode("view", { class: "TUI-Extension-slot-name" }, "随访单")
])) : vue.createCommentVNode("v-if", true),
_ctx.imType == 2 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 4,
class: "TUI-Extension-slot",
onClick: _cache[13] || (_cache[13] = ($event) => _ctx.handleStoreOrder())
}, [
vue.createElementVNode("image", {
class: "TUI-Extension-icon",
src: _imports_7
}),
vue.createElementVNode("view", { class: "TUI-Extension-slot-name" }, "药品订单")
])) : vue.createCommentVNode("v-if", true)
])) : vue.createCommentVNode("v-if", true)
]);
}
const TUIChatInput = /* @__PURE__ */ _export_sfc(TUIChatInput$1, [["render", _sfc_render$27], ["__scopeId", "data-v-f3fabc48"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIChat/components/message-input/index.vue"]]);
class IComponentServer {
/**
* 组件销毁
*/
destroyed() {
}
/**
* 数据监听回调
*
* @param {any} oldValue 旧数据
* @param {any} newValue 新数据
*/
updateStore(oldValue, newValue) {
}
}
class TUIConversationServer extends IComponentServer {
constructor(TUICore) {
super();
this.store = store.state.timStore;
this.TUICore = uni.$TUIKit;
uni.setStorageSync(`TIM_${uni.$chat_SDKAppID}_isTUIKit`, true);
if (uni.$aegis) {
uni.$aegis.reportEvent({
name: "platform",
ext1: "platform-APP-npm",
ext2: "uniTuikitExternalVue3",
ext3: `${uni.$chat_SDKAppID}`
});
}
this.bindTIMEvent();
if (uni.$chat_isSDKReady) {
this.getConversationList();
}
}
/**
* /////////////////////////////////////////////////////////////////////////////////
* //
* // TIM 事件监听注册接口
* //
* /////////////////////////////////////////////////////////////////////////////////
*/
bindTIMEvent() {
this.TUICore.on(
uni.$TIM.EVENT.CONVERSATION_LIST_UPDATED,
this.handleConversationListUpdate,
this
);
}
unbindTIMEvent() {
this.TUICore.off(
uni.$TIM.EVENT.CONVERSATION_LIST_UPDATED,
this.handleConversationListUpdate
);
}
handleConversationListUpdate(res) {
uni.hideLoading();
if (res.data.length === 0)
;
uni.$emit("refreshMsgCount");
res.data.forEach(function(element) {
formatAppLog("log", "at pages/TUIKit/TUICore/server/conversation/index.ts:96", "收到会话消息");
formatAppLog("log", "at pages/TUIKit/TUICore/server/conversation/index.ts:97", element);
});
store.commit("timStore/setConversationList", res.data);
}
/**
* 组件销毁
*
*/
destroyed() {
this.unbindTIMEvent();
}
/*
* 获取 conversationList
*
* @returns {Promise}
*/
async getConversationList() {
return new Promise(async (resolve, reject2) => {
try {
const imResponse = await uni.$TUIKit.getConversationList();
store.commit("timStore/setConversationList", imResponse.data.conversationList);
uni.hideLoading();
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 获取 conversationList
*
* @param {string} conversationID 会话ID
* @returns {Promise}
*/
async getConversationProfile(conversationID) {
return new Promise(async (resolve, reject2) => {
try {
const imResponse = await this.TUICore.getConversationProfile(
conversationID
);
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 设置自定义值
*/
async setConversationValue(conversationID, data) {
return new Promise(async (resolve, reject2) => {
try {
const imResponse = await this.TUICore.setConversationCustomData(
{
conversationIDList: [conversationID],
customData: data
}
);
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 删除会话
*
* @param {string} conversationID 会话ID
* @returns {Promise}
*/
async deleteConversation(conversationID) {
return new Promise(async (resolve, reject2) => {
try {
const imResponse = await this.TUICore.deleteConversation(
conversationID
);
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 置顶会话
*
* @param {Object} options 置顶参数
* @returns {Promise}
*/
async pinConversation(options) {
return new Promise(async (resolve, reject2) => {
try {
const imResponse = await this.TUICore.pinConversation(options);
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* C2C消息免打扰
*
* @param {Object} options 消息免打扰参数
* @returns {Promise}
*/
async muteConversation(options) {
return new Promise(async (resolve, reject2) => {
try {
const imResponse = await this.TUICore.setMessageRemindType(
options
);
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 设置已读
*
* @param {string} conversationID 会话ID
* @returns {Promise}
*/
async setMessageRead(conversationID) {
return new Promise(async (resolve, reject2) => {
try {
const imResponse = await this.TUICore.setMessageRead({
conversationID
});
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
}
class TUIChatServer extends IComponentServer {
constructor(TUICore) {
super();
this.currentStore = {};
this.store = store.state.timStore;
this.TUICore = uni.$TUIKit;
this.bindTIMEvent();
this.updateStore();
}
/**
* 组件销毁
*/
destroyed() {
this.unbindTIMEvent();
}
/**
* 数据监听回调
*
* @param {any} newValue 新数据
* @param {any} oldValue 旧数据
*
*/
updateStore() {
this.getMessageList({
conversationID: this.store.conversationID,
count: 15
});
store.commit("timStore/resetChat");
}
/**
* /////////////////////////////////////////////////////////////////////////////////
* //
* // TIM 事件监听注册接口
* //
* /////////////////////////////////////////////////////////////////////////////////
*/
bindTIMEvent() {
this.TUICore.on(
uni.$TIM.EVENT.MESSAGE_RECEIVED,
this.handleMessageReceived,
this
);
this.TUICore.on(
uni.$TIM.EVENT.MESSAGE_MODIFIED,
this.handleMessageModified,
this
);
this.TUICore.on(
uni.$TIM.EVENT.MESSAGE_REVOKED,
this.handleMessageRevoked,
this
);
this.TUICore.on(
uni.$TIM.EVENT.MESSAGE_READ_BY_PEER,
this.handleMessageReadByPeer,
this
);
this.TUICore.on(
uni.$TIM.EVENT.GROUP_LIST_UPDATED,
this.handleGroupListUpdated,
this
);
}
unbindTIMEvent() {
this.TUICore.off(
uni.$TIM.EVENT.MESSAGE_RECEIVED,
this.handleMessageReceived
);
this.TUICore.off(
uni.$TIM.EVENT.MESSAGE_MODIFIED,
this.handleMessageModified
);
this.TUICore.off(uni.$TIM.EVENT.MESSAGE_REVOKED, this.handleMessageRevoked);
this.TUICore.off(
uni.$TIM.EVENT.MESSAGE_READ_BY_PEER,
this.handleMessageReadByPeer
);
this.TUICore.off(
uni.$TIM.EVENT.GROUP_LIST_UPDATED,
this.handleGroupListUpdated,
this
);
}
handleMessageReceived(event) {
event.data.forEach((item) => {
if (item.conversationID === this.store.conversationID) {
uni.$TUIKit.TUIConversationServer.setMessageRead(item.conversationID);
if (item.cloudCustomData != null && item.cloudCustomData != "") {
formatAppLog("log", "at pages/TUIKit/TUICore/server/chat/index.ts:107", "收到消息");
formatAppLog("log", "at pages/TUIKit/TUICore/server/chat/index.ts:108", item);
try {
var json = JSON.parse(item.cloudCustomData);
store.commit("timStore/setType", json.type);
store.commit("timStore/setImType", json.imType);
store.commit("timStore/setOrderId", json.orderId);
store.commit("timStore/setOrderType", json.orderType);
store.commit("timStore/setFollowId", json.followId);
if (json.type === "finishInquiry") {
store.commit("timStore/setImType", 0);
uni.navigateTo({
url: "/pages_order/pingOrder?orderId=" + json.orderId
});
} else if (json.type === "startInquiry") {
} else if (json.type === "inquiry") {
} else if (json.type === "startFollow") {
} else if (json.type === "follow") {
} else if (json.type === "finishFollow") {
} else if (json.type === "startDrugReport") {
} else if (json.type === "finishDrugReport") {
} else if (json.type === "drugReport") {
}
} catch (e) {
}
const messageList = [...this.store.messageList, item];
store.commit("timStore/setMessageList", messageList);
} else {
const messageList = [...this.store.messageList, item];
store.commit("timStore/setMessageList", messageList);
}
}
});
}
handleMessageModified(event) {
const middleData = this.store.messageList;
this.store.messageList = [];
this.store.messageList = middleData;
}
handleMessageRevoked(event) {
}
async handleMessageReadByPeer(event) {
const middleData = this.store.messageList;
await store.commit("timStore/setMessageList", middleData);
}
handleGroupListUpdated(event) {
event == null ? void 0 : event.data.map((item) => {
var _a, _b, _c;
if ((item == null ? void 0 : item.groupID) === ((_c = (_b = (_a = this == null ? void 0 : this.store) == null ? void 0 : _a.conversation) == null ? void 0 : _b.groupProfile) == null ? void 0 : _c.groupID)) {
this.store.conversation.groupProfile = item;
const midden = this.store.conversation;
this.store.conversation = {};
this.store.conversation = midden;
}
return item;
});
}
/**
* /////////////////////////////////////////////////////////////////////////////////
* //
* // 处理 TIM 接口参数及回调
* //
* /////////////////////////////////////////////////////////////////////////////////
*/
/**
* 创建消息生成参数
*
* @param {Object} content 消息体
* @param {String} type 消息类型 text: 文本类型 file: 文件类型 face: 表情 location: 地址 custom: 自定义 merger: 合并 forward: 转发
* @param {Callback} callback 回调函数
* @param {any} to 发送的对象
* @returns {options} 消息参数
*/
handleMessageOptions(content, type2, callback, to) {
var _a, _b, _c, _d, _e, _f;
var customerData = {
type: this.store.type,
imType: this.store.imType,
orderId: this.store.orderId,
followId: this.store.followId,
orderType: this.store.orderType
};
const options = {
cloudCustomData: JSON.stringify(customerData),
to: "",
conversationType: (to == null ? void 0 : to.type) || this.store.conversation.type,
payload: content,
needReadReceipt: true
};
if (type2 === "file" && callback) {
options.onProgress = callback;
}
switch (options.conversationType) {
case uni.$TIM.TYPES.CONV_C2C:
options.to = ((_a = to == null ? void 0 : to.userProfile) == null ? void 0 : _a.userID) || ((_c = (_b = this.store.conversation) == null ? void 0 : _b.userProfile) == null ? void 0 : _c.userID) || "";
break;
case uni.$TIM.TYPES.CONV_GROUP:
options.to = ((_d = to == null ? void 0 : to.groupProfile) == null ? void 0 : _d.groupID) || ((_f = (_e = this.store.conversation) == null ? void 0 : _e.groupProfile) == null ? void 0 : _f.groupID) || "";
break;
}
return options;
}
/**
* 处理异步函数
*
* @param {callback} callback 回调函数
* @returns {Promise} 返回异步函数
*/
handlePromiseCallback(callback) {
return new Promise((resolve, reject2) => {
});
}
/**
* 文件上传进度函数处理
*
* @param {number} progress 文件上传进度 1表示完成
* @param {message} message 文件消息
*/
handleUploadProgress(progress, message) {
this.store.messageList.map((item) => {
if (item.ID === message.ID) {
item.progress = progress;
}
return item;
});
}
/**
* /////////////////////////////////////////////////////////////////////////////////
* //
* // 对外方法
* //
* /////////////////////////////////////////////////////////////////////////////////
*/
// /**
// * 发送文本消息
// *
// * @param {any} text 发送的消息
// * @returns {Promise}
// */
/**
* 发送文本消息
*
* @param {any} text 发送的消息
* @returns {Promise}
*/
sendTextMessage(text) {
return new Promise(async (resolve, reject2) => {
try {
const options = this.handleMessageOptions({ text }, "text");
const message = this.TUICore.createTextMessage(options);
const messageList = [...this.store.messageList, message];
store.commit("timStore/setMessageList", messageList);
const imResponse = await this.TUICore.sendMessage(message);
this.store.messageList = this.store.messageList.map((item) => {
if (item.ID === imResponse.data.message.ID) {
return imResponse.data.message;
}
return item;
});
resolve(imResponse);
} catch (error2) {
reject2(error2);
const middleData = this.store.messageList;
store.commit("timStore/resetChat");
store.commit("timStore/setMessageList", middleData);
}
});
}
/**
* 发送表情消息
*
* @param {Object} data 消息内容
* @param {Number} data.index 表情索引
* @param {String} data.data 额外数据
* @returns {Promise}
*/
sendFaceMessage(data) {
return new Promise(async (resolve, reject2) => {
try {
const options = this.handleMessageOptions(data, "face");
const message = this.TUICore.createFaceMessage(options);
const messageList = [...this.store.messageList, message];
store.commit("timStore/setMessageList", messageList);
const imResponse = await this.TUICore.sendMessage(message);
this.store.messageList = this.store.messageList.map((item) => {
if (item.ID === imResponse.data.message.ID) {
return imResponse.data.message;
}
return item;
});
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 发送图片消息
*
* @param {res} res 图片文件
* @param {image} 图片尺寸
* @returns {Promise}
*/
sendImageMessage(res, image2) {
return new Promise(async (resolve, reject2) => {
try {
const options = this.handleMessageOptions({ file: res }, "file");
const message = this.TUICore.createImageMessage(options);
formatAppLog("log", "at pages/TUIKit/TUICore/server/chat/index.ts:366", 111222);
formatAppLog("log", "at pages/TUIKit/TUICore/server/chat/index.ts:367", options);
formatAppLog("log", "at pages/TUIKit/TUICore/server/chat/index.ts:368", message);
message.payload.imageInfoArray[1].height = image2.height;
message.payload.imageInfoArray[1].width = image2.width;
const messageList = [...this.store.messageList, message];
store.commit("timStore/setMessageList", messageList);
const imResponse = await this.TUICore.sendMessage(message);
this.store.messageList = this.store.messageList.map((item) => {
if (item.ID === imResponse.data.message.ID) {
return imResponse.data.message;
}
return item;
});
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 发送视频消息
*
* @param {Video} video 图片文件
* @returns {Promise}
*/
sendVideoMessage(res, video2) {
return new Promise(async (resolve, reject2) => {
try {
const options = this.handleMessageOptions({ file: res }, "file");
const message = this.TUICore.createVideoMessage(options);
const messageList = [...this.store.messageList, message];
store.commit("timStore/setMessageList", messageList);
const imResponse = await this.TUICore.sendMessage(message);
this.store.messageList = this.store.messageList.map((item) => {
if (item.ID === imResponse.data.message.ID) {
return imResponse.data.message;
}
return item;
});
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 发送语音消息
*
* @param {audio} audio 音频文件
* @returns {Promise}
*/
sendAudioMessage(audio2) {
return new Promise(async (resolve, reject2) => {
try {
const options = this.handleMessageOptions(
{ file: audio2 },
"file",
(progress) => {
this.handleUploadProgress(progress, message);
}
);
const message = this.TUICore.createAudioMessage(options);
const messageList = [...this.store.messageList, message];
store.commit("timStore/setMessageList", messageList);
const imResponse = await this.TUICore.sendMessage(message);
formatAppLog("log", "at pages/TUIKit/TUICore/server/chat/index.ts:439", "发送音频消息完成", imResponse);
this.store.messageList = this.store.messageList.map((item) => {
if (item.ID === imResponse.data.message.ID) {
return imResponse.data.message;
}
return item;
});
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 发送文件消息
*
* @param {File} file 文件
* @returns {Promise}
*/
sendFileMessage(file) {
return this.handlePromiseCallback(async (resolve, reject2) => {
try {
const options = this.handleMessageOptions(
{ file },
"file",
(progress) => {
this.handleUploadProgress(progress, message);
}
);
const message = this.TUICore.createFileMessage(options);
this.currentStore.messageList.push(message);
const imResponse = await this.TUICore.sendMessage(message);
formatAppLog("log", "at pages/TUIKit/TUICore/server/chat/index.ts:472", "发送文件消息完成", imResponse);
this.store.messageList = this.store.messageList.map((item) => {
if (item.ID === imResponse.data.message.ID) {
return imResponse.data.message;
}
return item;
});
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 发送自定义消息
*
* @param {Object} data 消息内容
* @param {String} data.data 自定义消息的数据字段
* @param {String} data.description 自定义消息的说明字段
* @param {String} data.extension 自定义消息的扩展字段
* @returns {Promise}
*/
sendCustomMessage(data) {
return new Promise(async (resolve, reject2) => {
try {
const options = this.handleMessageOptions(data, "custom");
const message = this.TUICore.createCustomMessage(options);
const messageList = [...this.store.messageList, message];
store.commit("timStore/setMessageList", messageList);
const imResponse = await this.TUICore.sendMessage(message);
formatAppLog("log", "at pages/TUIKit/TUICore/server/chat/index.ts:504", "发送自定义消息完成", imResponse);
this.store.messageList = this.store.messageList.map((item) => {
if (item.ID === imResponse.data.message.ID) {
return imResponse.data.message;
}
return item;
});
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 发送地理位置消息
*
* @param {Object} data 消息内容
* @param {String} data.description 地理位置描述信息
* @param {Number} data.longitude 经度
* @param {Number} data.latitude 纬度
* @returns {Promise}
*/
sendLocationMessage(data) {
return this.handlePromiseCallback(async (resolve, reject2) => {
try {
const options = this.handleMessageOptions(data, "location");
const message = this.TUICore.createLocationMessage(options);
this.store.messageList.push(message);
const imResponse = await this.TUICore.sendMessage(message);
formatAppLog("log", "at pages/TUIKit/TUICore/server/chat/index.ts:534", "发送地理位置消息完成", imResponse);
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 转发消息
*
* @param {message} message 消息实例
* @param {any} to 转发的对象
* @returns {Promise}
*/
forwardMessage(message, to) {
return this.handlePromiseCallback(async (resolve, reject2) => {
try {
const options = this.handleMessageOptions(message, "forward", {}, to);
const imMessage = this.TUICore.createForwardMessage(options);
const imResponse = await this.TUICore.sendMessage(imMessage);
if (this.store.conversation.conversationID === imResponse.data.message.conversationID) {
this.store.messageList.push(imResponse.data.message);
}
formatAppLog("log", "at pages/TUIKit/TUICore/server/chat/index.ts:561", "消息转发完成", imResponse);
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 发送@ 提醒功能的文本消息
*
* @param {Object} data 消息内容
* @param {String} data.text 文本消息
* @param {Array} data.atUserList 需要 @ 的用户列表,如果需要 @ALL,请传入 TIM.TYPES.MSG_AT_ALL
* @returns {message}
*
* - 注:此接口仅用于群聊
*/
sendTextAtMessage(data) {
return new Promise(async (resolve, reject2) => {
try {
const options = this.handleMessageOptions(data, "text");
const message = this.TUICore.createTextAtMessage(options);
this.currentStore.messageList.push(message);
const imResponse = await this.TUICore.sendMessage(message);
this.currentStore.messageList = this.currentStore.messageList.map(
(item) => {
if (item.ID === imResponse.data.message.ID) {
return imResponse.data.message;
}
return item;
}
);
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 发送合并消息
*
* @param {Object} data 消息内容
* @param {Array.} data.messageList 合并的消息列表
* @param {String} data.title 合并的标题
* @param {String} data.abstractList 摘要列表,不同的消息类型可以设置不同的摘要信息
* @param {String} data.compatibleText 兼容文本
* @returns {Promise}
*/
sendMergerMessage(data) {
return this.handlePromiseCallback(async (resolve, reject2) => {
try {
const options = this.handleMessageOptions(data, "merger");
const message = this.TUICore.createMergerMessage(options);
this.currentStore.messageList.push(message);
const imResponse = await this.TUICore.sendMessage(message);
formatAppLog("log", "at pages/TUIKit/TUICore/server/chat/index.ts:618", "发送合并消息完成", imResponse);
this.currentStore.messageList = this.currentStore.messageList.map(
(item) => {
if (item.ID === imResponse.data.message.ID) {
return imResponse.data.message;
}
return item;
}
);
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 获取 messageList
*
* @param {any} options 获取 messageList 参数
* @param {Boolean} history 是否获取历史消息
* @returns {Promise}
*/
async getMessageList(options, history) {
return new Promise(async (resolve, reject2) => {
try {
const imResponse = await this.TUICore.getMessageList(options);
let messageList;
if (!history) {
messageList = imResponse.data.messageList;
} else {
messageList = [
...imResponse.data.messageList,
...this.store.messageList
];
}
this.currentStore.nextReqMessageID = imResponse.data.nextReqMessageID;
this.currentStore.isCompleted = imResponse.data.isCompleted;
store.commit("timStore/setMessageList", messageList);
resolve(imResponse.data);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 获取历史消息
*
* @returns {Promise}
*/
async getHistoryMessageList() {
return new Promise(async (resolve, reject2) => {
try {
const options = {
conversationID: this.store.conversation.conversationID,
nextReqMessageID: this.currentStore.nextReqMessageID,
count: 15
};
let messageList = [];
if (!this.currentStore.isCompleted) {
messageList = await this.getMessageList(options, true);
}
resolve(messageList);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 消息撤回
*
* @param {message} message 消息实例
* @returns {Promise}
*/
revokeMessage(message) {
return new Promise(async (resolve, reject2) => {
try {
const imResponse = await this.TUICore.revokeMessage(message);
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 重发消息
*
* @param {message} message 消息实例
* @returns {Promise}
*/
resendMessage(message) {
return new Promise(async (resolve, reject2) => {
try {
const imResponse = await this.TUICore.resendMessage(message);
formatAppLog("log", "at pages/TUIKit/TUICore/server/chat/index.ts:715", "消息重发完成", imResponse);
let messageList = [];
messageList = this.store.messageList.filter(
(item) => item.ID !== message.ID
);
store.commit("timStore/setMessageList", messageList);
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
/**
* 删除消息
*
* @param {Array.} messages 消息实例
* @returns {Promise}
*/
deleteMessage(messages2) {
return new Promise(async (resolve, reject2) => {
try {
const imResponse = await this.TUICore.deleteMessage(messages2);
let messageList = [];
messageList = this.store.messageList.filter(
(item) => item.ID !== messages2.ID
);
store.commit("timStore/setMessageList", messageList);
resolve(imResponse);
} catch (error2) {
reject2(error2);
}
});
}
}
class TUIProfileServer extends IComponentServer {
constructor(TUICore) {
super();
this.store = store.state.timStore;
this.currentStore = {};
this.TUICore = uni.$TUIKit;
this.bindTIMEvent();
}
/**
* 组件销毁
*/
destroyed() {
this.unbindTIMEvent();
}
/**
* /////////////////////////////////////////////////////////////////////////////////
* //
* // TIM 事件监听注册接口
* //
* /////////////////////////////////////////////////////////////////////////////////
*/
bindTIMEvent() {
this.TUICore.on(
uni.$TIM.EVENT.PROFILE_UPDATED,
this.handleProfileUpdated,
this
);
}
unbindTIMEvent() {
this.TUICore.off(uni.$TIM.EVENT.PROFILE_UPDATED, this.handleProfileUpdated);
}
handleProfileUpdated(event) {
formatAppLog("log", "at pages/TUIKit/TUICore/server/profile/index.ts:51", event);
}
}
const _sfc_main$27 = vue.defineComponent({
name: "TUIChat",
components: {
MessageText,
MessageImage,
MessageVideo,
MessageAudio,
MessageFace,
MessageCustom,
MessageBubble,
MessageTip,
MessageRevoked,
MessageSystem,
TUIChatInput,
MessageOperate
},
setup(props2) {
const timStore2 = store.state.timStore;
uni.$TUIKit.TUIChatServer = new TUIChatServer();
const TUICallKit = vue.shallowRef(null);
const TUIServer = uni.$TUIKit.TUIChatServer;
const left = 0;
const right = 0;
const defaultDialogPosition = {
top: -70,
left,
right
};
const data = vue.reactive({
messageList: vue.computed(() => timStore2.messageList),
conversation: vue.computed(() => timStore2.conversation),
triggered: false,
scrollTop: 999,
text: "",
types: uni.$TIM.TYPES,
currentMessage: {},
dialogID: "",
forwardStatus: false,
imageFlag: false,
isCompleted: false,
oldMessageTime: 0,
dialogPosition: defaultDialogPosition,
imType: vue.computed(() => timStore2.imType),
orderId: vue.computed(() => timStore2.orderId)
});
const conversationType = vue.computed(() => {
const conversation = data.conversation;
if (!(conversation == null ? void 0 : conversation.conversationID)) {
return "";
}
if ((conversation == null ? void 0 : conversation.type) === uni.$TIM.TYPES.CONV_SYSTEM) {
return "system";
}
return "chat";
});
const messages2 = vue.computed(() => {
if (data.messageList.length > 0) {
data.oldMessageTime = data.messageList[0].time;
return data.messageList.filter((item) => {
return !item.isDeleted;
});
}
});
onLoad((options) => {
uni.setNavigationBarTitle({
title: options && options.conversationName
});
if (store.state.timStore.imType == 1)
;
else if (store.state.timStore.imType == 2)
;
});
onUnload(() => {
TUIServer.destroyed();
});
vue.watch(messages2, (newVal, oldVal) => {
vue.nextTick(() => {
const newLastMessage = newVal[newVal.length - 1];
const oldLastMessage = oldVal ? oldVal[oldVal.length - 1] : {};
data.oldMessageTime = messages2.value[0].time;
handleShowTime();
if (oldVal && newLastMessage.ID !== oldLastMessage.ID) {
handleScrollBottom();
}
});
});
onReady(() => {
const options = {
sdkAppID: uni.$chat_SDKAppID,
// 开通实时音视频服务创建应用后分配的 SDKAppID
userID: uni.$chat_userID,
// 用户 ID,可以由您的帐号系统指定
userSig: uni.$chat_userSig,
// 身份签名,相当于登录密码的作用
tim: uni.$TUIKit
// tim 参数适用于业务中已存在 TIM 实例,为保证 TIM 实例唯一性
};
uni.$TUICallKit = TUICallKit;
vue.nextTick(() => {
uni.$TUICallKit.value !== null && uni.$TUICallKit.value.init(options);
});
setTimeout(() => {
handleScrollBottom();
}, 500);
});
vue.onMounted(() => {
handleShowTime();
setTimeout(function() {
uni.$TUIKit.TUIConversationServer.setMessageRead(
data.conversation.conversationID
);
uni.$emit("refreshMsgCount");
}, 2e3);
});
onNavigationBarButtonTap(() => {
var _a;
if (((_a = data.conversation) == null ? void 0 : _a.type) === uni.$TIM.TYPES.CONV_GROUP) {
uni.navigateTo({
url: "../TUIGroup/index"
});
} else {
uni.showToast({
title: "暂无信息"
});
}
});
const handleGetProfile = () => {
uni.navigateTo({
url: "../TUIGroup/index"
});
};
const handleShowTime = () => {
if (messages2.value) {
Array.from(messages2.value).forEach((item) => {
if (item.time - data.oldMessageTime > 5 * 60) {
data.oldMessageTime = item.time;
item.showTime = true;
} else {
item.showTime = false;
}
});
}
};
const handleScrollBottom = () => {
uni.createSelectorQuery().select(".TUI-message-list").boundingClientRect((res) => {
const scrollH = res.height;
data.scrollTop = scrollH;
}).exec();
};
const handleCustomerItem = (event, item) => {
if (item.payload.data == "order") {
uni.navigateTo({
url: "/pages_order/inquiryOrderDetails?orderId=" + item.payload.description
});
} else if (item.payload.data == "prescribe") {
var prescribe = JSON.parse(item.payload.extension);
uni.navigateTo({
url: "/pages_order/prescribeDetails?prescribeId=" + prescribe.prescribeId
});
} else if (item.payload.data == "follow") {
var follow = JSON.parse(item.payload.extension);
formatAppLog("log", "at pages/TUIKit/TUIPages/TUIChat/index.vue:365", follow);
if (follow.writeStatus == 0) {
uni.navigateTo({
url: "/pages_user/doFollow?followId=" + follow.followId
});
} else if (follow.writeStatus == 1) {
uni.navigateTo({
url: "/pages_user/followDetails?followId=" + follow.followId
});
}
} else if (item.payload.data == "report") {
uni.navigateTo({
url: "/pages_order/inquiryOrderReport?orderId=" + item.payload.description
});
} else if (item.payload.data == "drugReport") {
uni.navigateTo({
url: "/pages_user/drugReportDetails?reportId=" + item.payload.description
});
}
};
const handleScroll = (e) => {
data.triggered = "restore";
};
const handleRefresher = () => {
data.triggered = true;
if (!data.isCompleted) {
TUIServer.getHistoryMessageList().then((res) => {
data.triggered = false;
data.isCompleted = res.isCompleted;
});
}
setTimeout(() => {
data.triggered = false;
}, 500);
};
const handleSend = (emo) => {
data.text += emo.name;
};
const handleItem = (event, item) => {
const { flow } = item;
try {
const query = uni.createSelectorQuery();
query.select(`#${item.flow + "-" + item.ID}`).boundingClientRect((res) => {
var _a;
const { top } = res;
if (top < 60 + 20) {
data.dialogPosition = {
...data.dialogPosition,
top: ((_a = res.height) == null ? void 0 : _a.res) + 10
// 在下面展示弹框 + 10px 间隔
};
data.dialogPosition = {
...data.dialogPosition,
right: flow === "out" ? 0 : null,
// 发出去的消息(弹框 right 都是 0)
left: flow === "in" ? 0 : null
// 接收的消息(弹框 left 都是 0)
};
} else {
data.dialogPosition = {
...defaultDialogPosition,
right: flow === "out" ? 0 : null,
// 发出去的消息(弹框 right 都是 0)
left: flow === "in" ? 0 : null
// 接收的消息(弹框 left 都是 0)
};
}
}).exec((res) => {
data.currentMessage = item;
data.dialogID = item.ID;
});
} catch (error2) {
data.currentMessage = item;
data.dialogID = item.ID;
}
};
const handleTouchStart = () => {
uni.hideKeyboard();
};
const handleEdit = (item) => {
data.text = item.payload.text;
};
return {
...vue.toRefs(data),
TUICallKit,
conversationType,
messages: messages2,
handleShowTime,
handleTouchStart,
handleRefresher,
handleScroll,
handleScrollBottom,
handleCustomerItem,
handleItem,
handleEdit,
handleTextMessageShowContext,
handleImageMessageShowContext,
handleVideoMessageShowContext,
handleAudioMessageShowContext,
handleFileMessageShowContext,
handleFaceMessageShowContext,
handleLocationMessageShowContext,
handleMergerMessageShowContext,
handleTipMessageShowContext,
handleCustomMessageShowContext,
handleSend,
caculateTimeago,
handleGetProfile
};
}
});
function _sfc_render$26(_ctx, _cache, $props, $setup, $data, $options) {
var _a;
const _component_MessageTip = vue.resolveComponent("MessageTip");
const _component_Message_Operate = vue.resolveComponent("Message-Operate");
const _component_MessageText = vue.resolveComponent("MessageText");
const _component_MessageImage = vue.resolveComponent("MessageImage");
const _component_MessageVideo = vue.resolveComponent("MessageVideo");
const _component_MessageAudio = vue.resolveComponent("MessageAudio");
const _component_MessageFace = vue.resolveComponent("MessageFace");
const _component_MessageCustom = vue.resolveComponent("MessageCustom");
const _component_MessageBubble = vue.resolveComponent("MessageBubble");
const _component_MessageRevoked = vue.resolveComponent("MessageRevoked");
const _component_TUIChatInput = vue.resolveComponent("TUIChatInput");
const _component_MessageSystem = vue.resolveComponent("MessageSystem");
return vue.openBlock(), vue.createElementBlock(
vue.Fragment,
null,
[
_ctx.conversationType === "chat" ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "TUIChat"
}, [
((_a = _ctx.conversation) == null ? void 0 : _a.type) === "GROUP" ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "more-btn",
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handleGetProfile && _ctx.handleGetProfile(...args))
}, " 更多")) : vue.createCommentVNode("v-if", true),
vue.createElementVNode("view", { class: "TUIChat-container" }, [
vue.createElementVNode("scroll-view", {
class: "TUIChat-main",
"scroll-y": "true",
"scroll-with-animation": true,
"refresher-triggered": _ctx.triggered,
"refresher-enabled": true,
onRefresherrefresh: _cache[3] || (_cache[3] = (...args) => _ctx.handleRefresher && _ctx.handleRefresher(...args)),
"scroll-top": _ctx.scrollTop
}, [
vue.createElementVNode(
"view",
{
class: "TUI-message-list",
onTouchstart: _cache[1] || (_cache[1] = (...args) => _ctx.handleTouchStart && _ctx.handleTouchStart(...args)),
onClick: _cache[2] || (_cache[2] = ($event) => _ctx.dialogID = "")
},
[
_ctx.isCompleted ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "loading-text"
}, "没有更多")) : vue.createCommentVNode("v-if", true),
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(_ctx.messages, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
key: item.ID,
id: "view" + item.ID
}, [
item.showTime ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: "time-container"
},
vue.toDisplayString(_ctx.caculateTimeago(item.time * 1e3)),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true),
!item.isRevoked && item.type === _ctx.types.MSG_GRP_TIP ? (vue.openBlock(), vue.createBlock(_component_MessageTip, {
key: 1,
data: _ctx.handleTipMessageShowContext(item)
}, null, 8, ["data"])) : vue.createCommentVNode("v-if", true),
vue.createCommentVNode(' '),
!item.isRevoked && item.type !== _ctx.types.MSG_GRP_TIP ? (vue.openBlock(), vue.createBlock(_component_MessageBubble, {
key: 2,
data: item
}, {
default: vue.withCtx(() => [
_ctx.dialogID === item.ID ? (vue.openBlock(), vue.createBlock(_component_Message_Operate, {
key: 0,
data: item,
class: "dialog dialog-item",
style: vue.normalizeStyle({
top: _ctx.dialogPosition.top + "px",
right: _ctx.dialogPosition.right + "px",
left: _ctx.dialogPosition.left + "px"
})
}, null, 8, ["data", "style"])) : vue.createCommentVNode("v-if", true),
item.type === _ctx.types.MSG_TEXT ? (vue.openBlock(), vue.createBlock(_component_MessageText, {
key: 1,
id: item.flow + "-" + item.ID,
data: _ctx.handleTextMessageShowContext(item),
messageData: item,
onLongpress: ($event) => _ctx.handleItem($event, item)
}, null, 8, ["id", "data", "messageData", "onLongpress"])) : vue.createCommentVNode("v-if", true),
item.type === _ctx.types.MSG_IMAGE ? (vue.openBlock(), vue.createBlock(_component_MessageImage, {
key: 2,
id: item.flow + "-" + item.ID,
data: _ctx.handleImageMessageShowContext(item),
messageData: item,
onLongpress: ($event) => _ctx.handleItem($event, item)
}, null, 8, ["id", "data", "messageData", "onLongpress"])) : vue.createCommentVNode("v-if", true),
item.type === _ctx.types.MSG_VIDEO ? (vue.openBlock(), vue.createBlock(_component_MessageVideo, {
key: 3,
id: item.flow + "-" + item.ID,
data: _ctx.handleVideoMessageShowContext(item),
messageData: item,
onLongpress: ($event) => _ctx.handleItem($event, item)
}, null, 8, ["id", "data", "messageData", "onLongpress"])) : vue.createCommentVNode("v-if", true),
item.type === _ctx.types.MSG_AUDIO ? (vue.openBlock(), vue.createBlock(_component_MessageAudio, {
key: 4,
id: item.flow + "-" + item.ID,
data: _ctx.handleAudioMessageShowContext(item),
messageData: item,
onLongpress: ($event) => _ctx.handleItem($event, item)
}, null, 8, ["id", "data", "messageData", "onLongpress"])) : vue.createCommentVNode("v-if", true),
item.type === _ctx.types.MSG_FACE ? (vue.openBlock(), vue.createBlock(_component_MessageFace, {
key: 5,
id: item.flow + "-" + item.ID,
data: _ctx.handleFaceMessageShowContext(item),
messageData: item,
onLongpress: ($event) => _ctx.handleItem($event, item)
}, null, 8, ["id", "data", "messageData", "onLongpress"])) : vue.createCommentVNode("v-if", true),
item.type === _ctx.types.MSG_CUSTOM ? (vue.openBlock(), vue.createBlock(_component_MessageCustom, {
key: 6,
id: item.flow + "-" + item.ID,
data: _ctx.handleCustomMessageShowContext(item),
messageData: item,
onClick: ($event) => _ctx.handleCustomerItem($event, item),
onLongpress: ($event) => _ctx.handleItem($event, item)
}, null, 8, ["id", "data", "messageData", "onClick", "onLongpress"])) : vue.createCommentVNode("v-if", true)
]),
_: 2
/* DYNAMIC */
}, 1032, ["data"])) : vue.createCommentVNode("v-if", true),
item.isRevoked ? (vue.openBlock(), vue.createBlock(_component_MessageRevoked, {
key: 3,
data: item,
onEdit: ($event) => _ctx.handleEdit(item)
}, null, 8, ["data", "onEdit"])) : vue.createCommentVNode("v-if", true)
], 8, ["id"]);
}),
128
/* KEYED_FRAGMENT */
))
],
32
/* NEED_HYDRATION */
)
], 40, ["refresher-triggered", "scroll-top"])
]),
_ctx.imType == 1 || _ctx.imType == 2 ? (vue.openBlock(), vue.createBlock(_component_TUIChatInput, {
key: 1,
text: _ctx.text,
conversationData: _ctx.conversation
}, null, 8, ["text", "conversationData"])) : vue.createCommentVNode("v-if", true)
])) : vue.createCommentVNode("v-if", true),
_ctx.conversationType === "system" ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "TUIChat"
}, [
vue.createVNode(_component_MessageSystem, {
data: _ctx.messages,
types: _ctx.types
}, null, 8, ["data", "types"])
])) : vue.createCommentVNode("v-if", true)
],
64
/* STABLE_FRAGMENT */
);
}
const PagesTUIKitTUIPagesTUIChatIndex = /* @__PURE__ */ _export_sfc(_sfc_main$27, [["render", _sfc_render$26], ["__scopeId", "data-v-1902a304"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIChat/index.vue"]]);
const _sfc_main$26 = vue.defineComponent({
name: "videoPlay",
setup(props2) {
const data = vue.reactive({
videoData: "",
show: false,
videoContext: null,
direction: 0
});
onLoad((option) => {
data.videoData = option && option.videoMessage;
data.show = true;
});
onReady(() => {
data.videoContext = uni.createVideoContext("videoEle");
});
const toggleClose = () => {
data.show = false;
uni.navigateBack({
delta: 1
});
};
return {
...vue.toRefs(data),
toggleClose
};
}
});
function _sfc_render$25(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "dialog-video" }, [
_ctx.show ? (vue.openBlock(), vue.createElementBlock("video", {
key: 0,
class: "video-box",
src: _ctx.videoData,
id: "videoEle",
controls: "",
autoplay: ""
}, [
vue.createCommentVNode(' \n \n \n ')
], 8, ["src"])) : vue.createCommentVNode("v-if", true)
]);
}
const PagesTUIKitTUIPagesTUIChatComponentsMessageElementsVideoPlay = /* @__PURE__ */ _export_sfc(_sfc_main$26, [["render", _sfc_render$25], ["__scopeId", "data-v-b57b47b7"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages/TUIKit/TUIPages/TUIChat/components/message-elements/video-play.vue"]]);
let request$e = new Request$1().http;
function getTestList(data) {
return request$e("/app/test/getTestList", data, "GET");
}
function getTestDetails(data) {
return request$e("/app/test/getTestDetails", data, "GET");
}
function getTestTempDetails(data) {
return request$e("/app/test/getTestTempDetails", data, "GET");
}
function getTestReport(data) {
return request$e("/app/test/getTestReport", data, "GET");
}
function getTestReportImg(data) {
return request$e("/app/test/getTestReportImg", data, "GET");
}
function doReport(data) {
return request$e("/app/test/doReport", data, "POST", "application/json;charset=UTF-8");
}
const _sfc_main$25 = {
mixins: [MescrollMixin],
data() {
return {
mescroll: null,
downOption: {
//下拉刷新
use: true,
auto: false
// 不自动加载 (mixin已处理第一个tab触发downCallback)
},
upOption: {
onScroll: false,
use: true,
// 是否启用上拉加载; 默认true
page: {
pae: 0,
// 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
size: 10
// 每页数据的数量,默认10
},
noMoreSize: 10,
// 配置列表的总数量要大于等于5条才显示'-- END --'的提示
textNoMore: "已经到底了",
empty: {
icon: "https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png",
tip: "暂无数据"
}
},
dataList: []
};
},
onShow() {
},
//发送给朋友
onShareAppMessage(res) {
if (this.$isLogin()) {
return {
title: "健康自测",
path: "/pages_index/testList",
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
//分享到朋友圈
onShareTimeline(res) {
if (this.utils.isLogin()) {
return {
title: "健康自测",
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
methods: {
mescrollInit(mescroll) {
this.mescroll = mescroll;
},
/*下拉刷新的回调 */
downCallback(mescroll) {
mescroll.resetUpScroll();
},
upCallback(page2) {
var that = this;
var data = {
pageNum: page2.num,
pageSize: page2.size
};
getTestList(data).then((res) => {
if (res.code == 200) {
if (page2.num == 1) {
that.dataList = res.data.list;
} else {
that.dataList = that.dataList.concat(res.data.list);
}
that.mescroll.endBySize(res.data.list.length, res.data.total);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
that.dataList = null;
that.mescroll.endErr();
}
});
},
// 查看详情
showDetail(item) {
uni.navigateTo({
url: "/pages_index/testDetails?tempId=" + item.tempId
});
}
}
};
function _sfc_render$24(_ctx, _cache, $props, $setup, $data, $options) {
const _component_mescroll_body = resolveEasycom(vue.resolveDynamicComponent("mescroll-body"), __easycom_1$6);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "bg" }, [
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/8e52ab17eabc4534b3ce56026fd5c624.jpg" })
]),
vue.createVNode(_component_mescroll_body, {
top: "0rpx",
ref: "mescrollRef",
onInit: $options.mescrollInit,
onDown: $options.downCallback,
onUp: $options.upCallback,
down: $data.downOption,
up: $data.upOption
}, {
default: vue.withCtx(() => [
vue.createElementVNode("view", { class: "test-list" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.dataList, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "item",
key: index2,
onClick: ($event) => $options.showDetail(item)
}, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode(
"view",
{ class: "title ellipsis2" },
vue.toDisplayString(item.name),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "subtitle ellipsis2" },
vue.toDisplayString(item.title),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "info-box" }, [
vue.createElementVNode("view", { class: "people-num" }, [
vue.createElementVNode(
"text",
{ class: "num" },
vue.toDisplayString(item.peopleNum) + "W",
1
/* TEXT */
),
vue.createTextVNode("人测过")
]),
vue.createElementVNode(
"view",
{ class: "time" },
vue.toDisplayString(item.num) + "题 | " + vue.toDisplayString(item.time) + "分钟",
1
/* TEXT */
)
])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("image", {
src: item.img,
mode: "aspectFill"
}, null, 8, ["src"])
])
], 8, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
))
])
]),
_: 1
/* STABLE */
}, 8, ["onInit", "onDown", "onUp", "down", "up"])
]);
}
const Pages_indexTestList = /* @__PURE__ */ _export_sfc(_sfc_main$25, [["render", _sfc_render$24], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/testList.vue"]]);
const _sfc_main$24 = {
data() {
return {
tempId: null,
item: {}
};
},
onLoad(option) {
this.tempId = option.tempId;
},
onShow() {
this.getTestDetails();
},
//发送给朋友
onShareAppMessage(res) {
if (this.$isLogin()) {
return {
title: "健康自测",
path: "/pages_index/testDetails?tempId=" + this.tempId,
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
//分享到朋友圈
onShareTimeline(res) {
if (this.utils.isLogin()) {
return {
title: "健康自测",
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
methods: {
navTo(url2) {
this.$isLogin().then(
(res) => {
formatAppLog("log", "at pages_index/testDetails.vue:71", res);
if (res) {
uni.navigateTo({
url: url2
});
} else {
uni.navigateTo({
url: "/pages/auth/login"
});
}
}
);
},
getTestDetails() {
let data = { tempId: this.tempId };
getTestDetails(data).then(
(res) => {
if (res.code == 200) {
this.item = res.data;
uni.setNavigationBarTitle({
title: this.item.name + "自测"
});
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
}
}
};
function _sfc_render$23(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "bg-box" }, [
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/71014b69fdcc4b56ae2a84bdc28f11c3.png" }),
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString($data.item.name),
1
/* TEXT */
)
])
]),
vue.createElementVNode("view", { class: "cont" }, [
vue.createElementVNode("view", { class: "msg-box" }, [
vue.createElementVNode(
"view",
{ class: "msg" },
vue.toDisplayString($data.item.msg),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "desc-box" }, [
vue.createElementVNode("view", {
class: "desc",
innerHTML: $data.item.descs
}, null, 8, ["innerHTML"])
]),
vue.createElementVNode("view", { class: "btn-box" }, [
vue.createElementVNode("view", {
class: "btn",
onClick: _cache[0] || (_cache[0] = ($event) => $options.navTo("/pages_index/test?tempId=" + $data.item.tempId))
}, "立即开始测试")
]),
vue.createElementVNode("view", { class: "logo" }, [
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/b95950e4208c493d8b74ce0de220c65c.png" })
])
])
]);
}
const Pages_indexTestDetails = /* @__PURE__ */ _export_sfc(_sfc_main$24, [["render", _sfc_render$23], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/testDetails.vue"]]);
const _sfc_main$23 = {
data() {
return {
scrollTop: 0,
//滚动条位置
formJson: null,
tempId: null,
patient: null,
items: {},
msgs: [],
index: 0,
item: null
};
},
onLoad(option) {
this.tempId = option.tempId;
var that = this;
uni.$on("refreshOrderPatient", (res) => {
that.patient = res;
});
},
onShow() {
this.getTestTempDetails();
this.getTestDetails();
},
//发送给朋友
onShareAppMessage(res) {
if (this.$isLogin()) {
return {
title: "健康体质检测",
path: "/pages_index/test?tempId=" + this.tempId,
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
//分享到朋友圈
onShareTimeline(res) {
if (this.utils.isLogin()) {
return {
title: "健康体质检测",
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
methods: {
getTestDetails() {
let data = { tempId: this.tempId };
getTestDetails(data).then(
(res) => {
if (res.code == 200) {
uni.setNavigationBarTitle({
title: res.data.name + "自测"
});
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
},
addMsg(type2, content) {
var msg = { type: type2, content };
this.msgs.push(msg);
var that = this;
uni.createSelectorQuery().select(".msgs").boundingClientRect((res) => {
const scrollH = res.height;
that.scrollTop = scrollH;
formatAppLog("log", "at pages_index/test.vue:185", that.scrollTop);
}).exec();
},
optionClick(item, option) {
if (this.patient == null) {
uni.showToast({
icon: "none",
title: "请选择体验者"
});
return;
}
item.option = option.name;
formatAppLog("log", "at pages_index/test.vue:201", item.option);
this.addMsg(2, option.name);
this.index++;
if (this.index <= this.items.length - 1) {
this.item = this.items[this.index];
this.addMsg(1, this.item.title);
} else {
this.submit();
}
},
getTestTempDetails() {
var data = { tempId: this.tempId };
getTestTempDetails(data).then(
(res) => {
if (res.code == 200) {
this.items = res.items;
if (this.items.length > 0) {
this.item = this.items[0];
this.addMsg(1, this.item.title);
}
}
},
(err) => {
}
);
},
addPatient() {
uni.navigateTo({
url: "/pages_user/patient"
});
},
submit() {
var data = {
tempId: this.tempId,
patientId: this.patient.patientId,
formJson: JSON.stringify(this.items)
};
doReport(data).then((res) => {
if (res.code == 200) {
uni.redirectTo({
url: "/pages_index/testResult?reportId=" + res.reportId
});
} else {
uni.showToast({
icon: "none",
title: res.msg
});
}
});
}
}
};
function _sfc_render$22(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "patient-cont" }, [
vue.createElementVNode("view", { class: "chose-patient" }, [
$data.patient == null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "patient-box",
onClick: _cache[0] || (_cache[0] = ($event) => $options.addPatient())
}, [
vue.createElementVNode("text", { class: "patient-title" }, "选择体验者"),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("text", { class: "value" }, "请点击添加"),
vue.createElementVNode("image", {
src: "/static/images/arrow_gray.png",
mode: ""
})
])
])) : vue.createCommentVNode("v-if", true),
$data.patient != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "patient",
onClick: _cache[1] || (_cache[1] = ($event) => $options.addPatient())
}, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode(
"view",
{ class: "name" },
vue.toDisplayString($data.patient.patientName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "info" }, [
$data.patient.sex == 1 ? (vue.openBlock(), vue.createElementBlock("text", {
key: 0,
class: "text"
}, "男")) : vue.createCommentVNode("v-if", true),
$data.patient.sex == 2 ? (vue.openBlock(), vue.createElementBlock("text", {
key: 1,
class: "text"
}, "女")) : vue.createCommentVNode("v-if", true),
vue.createElementVNode(
"text",
{ class: "text" },
vue.toDisplayString(_ctx.$getAge($data.patient.birthday)) + "岁",
1
/* TEXT */
),
vue.createElementVNode(
"text",
{ class: "text" },
vue.toDisplayString(_ctx.$parseIdCard($data.patient.idCard)),
1
/* TEXT */
)
])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("image", {
src: "/static/images/arrow_gray.png",
mode: ""
})
])
])) : vue.createCommentVNode("v-if", true)
])
]),
vue.createElementVNode("view", { class: "msg-cont" }, [
vue.createElementVNode("scroll-view", {
class: "msg-scroll",
"scroll-top": $data.scrollTop,
"scroll-y": "true",
"scroll-with-animation": true
}, [
vue.createElementVNode("view", { class: "msgs" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.msgs, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", { class: "msg-item" }, [
item.type == 1 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "left"
}, [
vue.createElementVNode("image", {
class: "img",
src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/5fd36547a3ca4d0b9935e623d3d8e1c5.png"
}),
vue.createElementVNode(
"view",
{ class: "msg-content" },
vue.toDisplayString(item.content),
1
/* TEXT */
)
])) : vue.createCommentVNode("v-if", true),
item.type == 2 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "right"
}, [
vue.createElementVNode(
"view",
{ class: "msg-content" },
vue.toDisplayString(item.content),
1
/* TEXT */
),
vue.createElementVNode("image", {
class: "img",
src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/d7d49263e2e04f56a7a86fa7bfd35687.jpg"
})
])) : vue.createCommentVNode("v-if", true)
]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
], 8, ["scroll-top"])
]),
$data.item != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "option-cont"
}, [
vue.createElementVNode(
"view",
{ class: "option-title" },
vue.toDisplayString($data.item.title),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "options" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(JSON.parse($data.item.scoreJson), (option) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "option-item",
onClick: ($event) => $options.optionClick($data.item, option)
}, vue.toDisplayString(option.name), 9, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
])) : vue.createCommentVNode("v-if", true),
vue.createCommentVNode(` \r
体质测试以当下感受为准作答,人的体质有可能会随季节变化。 \r
\r
\r
\r
选择体验者\r
\r
\r
\r
\r
\r
\r
{{patient.patientName}}\r
\r
男\r
女\r
{{$getAge(patient.birthday)}}岁\r
{{$parseIdCard(patient.idCard)}}\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
{{index+1}}{{item.title}}?\r
\r
\r
{{option.name}}\r
\r
\r
\r
\r
\r
\r
提交\r
\r
\r
提交代表你已接受以下声明\r
\r
本测试不作为诊断和治疗的依据,对于已经医生确诊的疾病,应按照医嘱积极治疗。所提及的内容仅作为生活保健的咨询建议。如遇不适请及时就医。\r
\r
`)
]);
}
const Pages_indexTest = /* @__PURE__ */ _export_sfc(_sfc_main$23, [["render", _sfc_render$22], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/test.vue"]]);
const _sfc_main$22 = {
data() {
return {
advImgs: [],
advs: [],
reportId: null,
statusBarHeight: uni.getStorageSync("menuInfo").statusBarHeight,
report: null
};
},
onLoad(option) {
this.reportId = option.reportId;
this.getTestReport();
},
onShow() {
this.getAdvList();
},
methods: {
shareImg() {
var data = { reportId: this.reportId };
getTestReportImg(data).then(
(res) => {
if (res.code == 200) {
formatAppLog("log", "at pages_index/testResult.vue:80", res);
wx.downloadFile({
url: res.img,
success: (res1) => {
formatAppLog("log", "at pages_index/testResult.vue:84", res1);
wx.showShareImageMenu({
path: res1.tempFilePath
});
},
fail: (res2) => {
formatAppLog("log", "at pages_index/testResult.vue:90", res2);
}
});
}
},
(err) => {
}
);
},
handleAdvClick(index2) {
var ad = this.advs[index2];
formatAppLog("log", "at pages_index/testResult.vue:105", ad.advUrl);
if (ad.showType == 1) {
uni.setStorageSync("url", ad.advUrl);
uni.navigateTo({
url: "h5"
});
} else if (ad.showType == 2) {
uni.navigateTo({
url: ad.advUrl
});
} else if (ad.showType == 3) {
uni.setStorageSync("content", ad.content);
uni.navigateTo({
url: "content"
});
}
},
getAdvList() {
var that = this;
var data = {
advType: 3
};
getAdvList(data).then((res) => {
if (res.code == 200) {
that.advImgs = [];
that.advs = res.data;
that.advs.forEach(function(element) {
if (element.imageUrl != null && element.imageUrl != "") {
that.advImgs.push(element.imageUrl);
}
});
formatAppLog("log", "at pages_index/testResult.vue:140", that.advImgs);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
getTestReport() {
var data = { reportId: this.reportId };
getTestReport(data).then(
(res) => {
if (res.code == 200) {
this.report = res.report;
}
},
(err) => {
}
);
},
goBack() {
uni.navigateBack();
}
}
};
function _sfc_render$21(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_swiper = resolveEasycom(vue.resolveDynamicComponent("u-swiper"), __easycom_0$e);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "cont" }, [
vue.createElementVNode("view", { class: "bg" }, [
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/8e52ab17eabc4534b3ce56026fd5c624.jpg" })
]),
$data.report != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "cont-box"
}, [
vue.createElementVNode("view", { class: "user" }, [
vue.createElementVNode("image", {
src: JSON.parse($data.report.patientJson).avatar == null ? "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/22cb9518a55040dea74d8f730551a7a2.jpg" : JSON.parse($data.report.patientJson).avatar
}, null, 8, ["src"]),
vue.createElementVNode("view", { class: "user-box" }, [
vue.createElementVNode(
"view",
{ class: "sex" },
"性别 " + vue.toDisplayString(JSON.parse($data.report.patientJson).sex == 1 ? "男" : "女"),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "username" },
"年龄 " + vue.toDisplayString(JSON.parse($data.report.patientJson).age) + "岁",
1
/* TEXT */
)
])
]),
vue.createElementVNode("view", { class: "items" }, [
vue.createElementVNode("view", { class: "result-box" }, [
vue.createElementVNode(
"view",
{ class: "time" },
"检测时间 " + vue.toDisplayString($data.report.createTime),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "title" },
"您属于" + vue.toDisplayString($data.report.testResult),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "name" },
vue.toDisplayString($data.report.testResult),
1
/* TEXT */
),
vue.createCommentVNode(' {{report.testResult}}是一种身心和谐的表现,努力保持吧! ')
]),
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(JSON.parse($data.report.conditioningPlanJson), (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", { class: "item-box" }, [
vue.createElementVNode("view", { class: "item" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString(item.name),
1
/* TEXT */
)
]),
vue.createElementVNode(
"view",
{ class: "descs" },
vue.toDisplayString(item.value.replace(/\\n/g, "
")),
1
/* TEXT */
)
]),
index2 < JSON.parse($data.report.conditioningPlanJson).length - 2 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "line"
})) : vue.createCommentVNode("v-if", true)
]);
}),
256
/* UNKEYED_FRAGMENT */
))
]),
vue.createElementVNode("view", { class: "tips" }, " 注:报告内容仅供参考,具体情况以医生建议为准 "),
$data.advImgs.length > 0 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "banner"
}, [
vue.createVNode(_component_u_swiper, {
list: $data.advImgs,
circular: "",
onClick: $options.handleAdvClick
}, null, 8, ["list", "onClick"])
])) : vue.createCommentVNode("v-if", true)
])) : vue.createCommentVNode("v-if", true)
]),
vue.createElementVNode("view", {
class: "share",
onClick: _cache[0] || (_cache[0] = ($event) => $options.shareImg())
}, [
vue.createElementVNode("text", null, "分享")
])
]);
}
const Pages_indexTestResult = /* @__PURE__ */ _export_sfc(_sfc_main$22, [["render", _sfc_render$21], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/testResult.vue"]]);
const _sfc_main$21 = {
name: "Poster",
components: {},
props: {},
data: function() {
return {
url: null
};
},
mounted: function() {
this.getTestReportImg();
},
methods: {
shareImg: function() {
wx.downloadFile({
url: this.url,
success: (res) => {
wx.showShareImageMenu({
path: res.tempFilePath
});
}
});
},
getTestReportImg: function() {
let that = this;
var data = {
reportId: this.reportId
};
getTestReportImg(data).then(
(res) => {
that.url = res.url;
},
(err) => {
uni.showToast({
title: err.msg,
icon: "none",
duration: 2e3
});
}
);
},
downloadIamge(imgsrc, name) {
var that = this;
this.isDown = true;
var downloadUrl = imgsrc;
that.downloadFile(downloadUrl);
},
saveImg: function() {
this.downloadIamge(this.url, "poster");
},
downloadFile(url2) {
formatAppLog("log", "at pages_index/testResultImg.vue:106", url2);
uni.showLoading({
title: "图片保存中..."
});
uni.downloadFile({
url: url2,
fail: function(res) {
uni.showModal({
title: "提示",
content: "保存失败"
});
},
success: function(res) {
formatAppLog("log", "at pages_index/testResultImg.vue:119", res);
var tempFilePath = res.tempFilePath;
uni.saveImageToPhotosAlbum({
filePath: tempFilePath,
success: () => {
uni.showToast({
title: "保存成功",
duration: 2e3
});
},
fail: () => {
formatAppLog("log", "at pages_index/testResultImg.vue:132", "saveImageToPhotosAlbum 失败");
uni.hideLoading();
},
complete: function() {
uni.hideLoading();
}
});
}
});
}
}
};
function _sfc_render$20(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "banenr" }, [
vue.createElementVNode("image", {
class: "slide-image",
src: _ctx.url,
mode: "widthFix",
"show-menu-by-longpress": ""
}, null, 8, ["src"])
]),
vue.createElementVNode("view", { class: "btn-box" }, [
vue.createElementVNode("view", {
class: "btn",
onClick: _cache[0] || (_cache[0] = ($event) => $options.shareImg())
}, "分享好友")
])
]);
}
const Pages_indexTestResultImg = /* @__PURE__ */ _export_sfc(_sfc_main$21, [["render", _sfc_render$20], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/testResultImg.vue"]]);
const _sfc_main$20 = {
components: { Menu },
mixins: [MescrollMixin],
data() {
return {
top: null,
cates: [],
cateId: 0,
keyword: "",
mescroll: null,
downOption: {
//下拉刷新
use: true,
auto: false
// 不自动加载 (mixin已处理第一个tab触发downCallback)
},
upOption: {
onScroll: false,
use: true,
// 是否启用上拉加载; 默认true
page: {
pae: 0,
// 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
size: 10
// 每页数据的数量,默认10
},
noMoreSize: 10,
// 配置列表的总数量要大于等于5条才显示'-- END --'的提示
textNoMore: "已经到底了",
empty: {
icon: "https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png",
tip: "暂无数据"
}
},
dataList: []
};
},
onShow() {
this.getArticleCateList();
},
methods: {
menuClick(item) {
this.cateId = item.cateId;
this.mescroll.resetUpScroll();
},
doSearch() {
this.mescroll.resetUpScroll();
},
getArticleCateList() {
var that = this;
let data = {};
getArticleCateList$1(data).then(
(res) => {
if (res.code == 200) {
this.cates = res.data;
var query = uni.createSelectorQuery().in(that);
setTimeout(function() {
query.select(".top-content").boundingClientRect((data2) => {
if (data2) {
formatAppLog("log", "at pages_index/articleList.vue:104", "View height:", data2.height + "px");
that.top = data2.height + "px";
}
}).exec();
}, 500);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
},
mescrollInit(mescroll) {
this.mescroll = mescroll;
},
/*下拉刷新的回调 */
downCallback(mescroll) {
mescroll.resetUpScroll();
},
upCallback(page2) {
var that = this;
var data = {
keyword: this.keyword,
cateId: this.cateId,
pageNum: page2.num,
pageSize: page2.size
};
getArticleList(data).then((res) => {
if (res.code == 200) {
if (page2.num == 1) {
that.dataList = res.data.list;
} else {
that.dataList = that.dataList.concat(res.data.list);
}
that.mescroll.endBySize(res.data.list.length, res.data.total);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
that.dataList = null;
that.mescroll.endErr();
}
});
},
// 关键词选择
choseCate(item) {
this.cateId = item.cateId;
this.mescroll.resetUpScroll();
},
// 查看详情
showDetail(item) {
uni.navigateTo({
url: "./articleDetails?articleId=" + item.articleId
});
}
}
};
function _sfc_render$1$(_ctx, _cache, $props, $setup, $data, $options) {
const _component_Menu = vue.resolveComponent("Menu");
const _component_mescroll_body = resolveEasycom(vue.resolveDynamicComponent("mescroll-body"), __easycom_1$6);
return vue.openBlock(), vue.createElementBlock("view", null, [
vue.createElementVNode("view", { class: "top-content" }, [
vue.createCommentVNode(" 搜索框 "),
vue.createElementVNode("view", { class: "search-cont" }, [
vue.createElementVNode("view", { class: "inner" }, [
vue.createElementVNode("image", {
class: "icon-search",
src: "/static/images/icon_search.png",
mode: ""
}),
vue.withDirectives(vue.createElementVNode(
"input",
{
type: "text",
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.keyword = $event),
placeholder: "输入关键字搜索",
"confirm-type": "search",
onConfirm: _cache[1] || (_cache[1] = (...args) => $options.doSearch && $options.doSearch(...args)),
"placeholder-style": "font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;"
},
null,
544
/* NEED_HYDRATION, NEED_PATCH */
), [
[vue.vModelText, $data.keyword]
])
])
]),
vue.createElementVNode("view", { class: "cate-list" }, [
$data.cates.length > 0 ? (vue.openBlock(), vue.createBlock(_component_Menu, {
key: 0,
list: $data.cates,
onMenuClick: $options.menuClick,
style: { "width": "100%" }
}, null, 8, ["list", "onMenuClick"])) : vue.createCommentVNode("v-if", true),
vue.createCommentVNode(" 关键字列表 "),
vue.createCommentVNode(` \r
\r
\r
{{item.cateName}} \r
\r
`)
])
]),
$data.top != null ? (vue.openBlock(), vue.createBlock(_component_mescroll_body, {
key: 0,
top: $data.top,
ref: "mescrollRef",
onInit: $options.mescrollInit,
onDown: $options.downCallback,
onUp: $options.upCallback,
down: $data.downOption,
up: $data.upOption
}, {
default: vue.withCtx(() => [
vue.createElementVNode("view", { class: "article-list" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.dataList, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "item",
key: index2,
onClick: ($event) => $options.showDetail(item)
}, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode(
"view",
{ class: "title ellipsis2" },
vue.toDisplayString(item.title),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "info-box" }, [
vue.createElementVNode("view", { class: "readers" }, [
vue.createElementVNode("view", { class: "readings" }, [
vue.createElementVNode("image", {
class: "eye",
src: "/static/images/eye.png"
}),
vue.createElementVNode(
"text",
{ class: "num" },
vue.toDisplayString(item.views),
1
/* TEXT */
)
])
]),
vue.createElementVNode(
"view",
{ class: "time" },
vue.toDisplayString(item.publishTime),
1
/* TEXT */
)
])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("image", {
src: item.imageUrl,
mode: "aspectFill"
}, null, 8, ["src"])
])
], 8, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
))
])
]),
_: 1
/* STABLE */
}, 8, ["top", "onInit", "onDown", "onUp", "down", "up"])) : vue.createCommentVNode("v-if", true)
]);
}
const Pages_indexArticleList = /* @__PURE__ */ _export_sfc(_sfc_main$20, [["render", _sfc_render$1$], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/articleList.vue"]]);
const _sfc_main$1$ = {
data() {
return {
articleId: null,
item: {}
};
},
onLoad(option) {
this.articleId = option.articleId;
},
onShow() {
this.getArticleById();
},
//发送给朋友
onShareAppMessage(res) {
return {
title: this.item.title,
path: "/pages_index/articleDetails?articleId=" + this.articleId
};
},
//分享到朋友圈
onShareTimeline(res) {
return {
title: this.item.title,
query: "articleId=" + this.articleId
//页面参数
};
},
methods: {
getArticleById() {
let data = { articleId: this.articleId };
getArticleById(data).then(
(res) => {
if (res.code == 200) {
this.item = res.data;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
}
}
};
function _sfc_render$1_(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "detail-cont" }, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString($data.item.title),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "info" }, [
vue.createElementVNode(
"view",
{ class: "reads" },
"阅读数:" + vue.toDisplayString($data.item.views),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "time" },
vue.toDisplayString($data.item.publishTime),
1
/* TEXT */
)
]),
vue.createCommentVNode(" 正文 "),
vue.createElementVNode("view", { class: "full-text" }, [
vue.createElementVNode("view", {
innerHTML: $data.item.contents
}, null, 8, ["innerHTML"])
])
]),
vue.createCommentVNode(" 咨询按钮 "),
vue.createElementVNode("view", { class: "inquiry" }, [
vue.createElementVNode("view", { class: "content" }, [
vue.createElementVNode("image", {
src: "/static/images/consult.png",
mode: ""
}),
vue.createElementVNode("text", { class: "text" }, "咨询"),
vue.createElementVNode("button", {
class: "contact-btn",
"open-type": "contact"
})
])
])
]);
}
const Pages_indexArticleDetails = /* @__PURE__ */ _export_sfc(_sfc_main$1$, [["render", _sfc_render$1_], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/articleDetails.vue"]]);
let request$d = new Request$1().http;
function getDiseaseList(data) {
return request$d("/app/disease/getDiseaseList", data, "GET");
}
function getDiseaseById(data) {
return request$d("/app/disease/getDiseaseById", data, "GET");
}
const _sfc_main$1_ = {
mixins: [MescrollMixin],
data() {
return {
depts: [],
deptId: 0,
keyword: "",
mescroll: null,
downOption: {
//下拉刷新
use: true,
auto: false
// 不自动加载 (mixin已处理第一个tab触发downCallback)
},
upOption: {
onScroll: false,
use: true,
// 是否启用上拉加载; 默认true
page: {
pae: 0,
// 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
size: 10
// 每页数据的数量,默认10
},
noMoreSize: 10,
// 配置列表的总数量要大于等于5条才显示'-- END --'的提示
textNoMore: "已经到底了",
empty: {
icon: "https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png",
tip: "暂无数据"
}
},
dataList: []
};
},
onShow() {
this.getDepartmentList();
},
methods: {
doSearch() {
this.mescroll.resetUpScroll();
},
getDepartmentList() {
let data = {};
getDepartmentList(data).then(
(res) => {
if (res.code == 200) {
this.depts = res.data;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
},
mescrollInit(mescroll) {
this.mescroll = mescroll;
},
/*下拉刷新的回调 */
downCallback(mescroll) {
mescroll.resetUpScroll();
},
upCallback(page2) {
var that = this;
var data = {
keyword: this.keyword,
deptId: this.deptId,
pageNum: page2.num,
pageSize: page2.size
};
getDiseaseList(data).then((res) => {
if (res.code == 200) {
if (page2.num == 1) {
that.dataList = res.data.list;
} else {
that.dataList = that.dataList.concat(res.data.list);
}
that.mescroll.endBySize(res.data.list.length, res.data.total);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
that.dataList = null;
that.mescroll.endErr();
}
});
},
choseDept(item) {
this.deptId = item.deptId;
this.mescroll.resetUpScroll();
},
showDetail(item) {
uni.navigateTo({
url: "./diseaseDetails?diseaseId=" + item.diseaseId
});
}
}
};
function _sfc_render$1Z(_ctx, _cache, $props, $setup, $data, $options) {
const _component_mescroll_body = resolveEasycom(vue.resolveDynamicComponent("mescroll-body"), __easycom_1$6);
return vue.openBlock(), vue.createElementBlock("view", null, [
vue.createElementVNode("view", { class: "top-content" }, [
vue.createCommentVNode(" 搜索框 "),
vue.createElementVNode("view", { class: "search-cont" }, [
vue.createElementVNode("view", { class: "inner" }, [
vue.createElementVNode("image", {
class: "icon-search",
src: "/static/images/icon_search.png",
mode: ""
}),
vue.withDirectives(vue.createElementVNode(
"input",
{
type: "text",
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.keyword = $event),
placeholder: "输入关键字搜索",
"confirm-type": "search",
onConfirm: _cache[1] || (_cache[1] = (...args) => $options.doSearch && $options.doSearch(...args)),
"placeholder-style": "font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;"
},
null,
544
/* NEED_HYDRATION, NEED_PATCH */
), [
[vue.vModelText, $data.keyword]
])
])
]),
vue.createElementVNode("view", { class: "dept-list" }, [
vue.createCommentVNode(" 关键字列表 "),
vue.createElementVNode("scroll-view", { "scroll-x": "true" }, [
vue.createElementVNode("view", { class: "inner" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.depts, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
key: index2,
class: vue.normalizeClass($data.deptId == item.deptId ? "item active" : "item"),
onClick: ($event) => $options.choseDept(item)
}, vue.toDisplayString(item.deptName), 11, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
))
])
])
])
]),
vue.createVNode(_component_mescroll_body, {
top: "192rpx",
ref: "mescrollRef",
onInit: $options.mescrollInit,
onDown: $options.downCallback,
onUp: $options.upCallback,
down: $data.downOption,
up: $data.upOption
}, {
default: vue.withCtx(() => [
vue.createElementVNode("view", { class: "disease-list" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.dataList, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "item",
key: index2,
onClick: ($event) => $options.showDetail(item)
}, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode(
"view",
{ class: "title ellipsis1" },
vue.toDisplayString(item.diseaseName),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("image", { src: "/static/images/icon_arrow_r.png" })
])
], 8, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
))
])
]),
_: 1
/* STABLE */
}, 8, ["onInit", "onDown", "onUp", "down", "up"])
]);
}
const Pages_indexDiseaseList = /* @__PURE__ */ _export_sfc(_sfc_main$1_, [["render", _sfc_render$1Z], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/diseaseList.vue"]]);
const _sfc_main$1Z = {
data() {
return {
advs: [],
advImgs: [],
diseaseId: null,
item: {}
};
},
onLoad(option) {
this.diseaseId = option.diseaseId;
},
onShow() {
this.getAdvList();
this.getDiseaseById();
},
onShareAppMessage(res) {
if (this.$isLogin()) {
return {
title: this.item.diseaseName,
path: "/pages_index/diseaseDetails?id=" + this.diseaseId,
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
//分享到朋友圈
onShareTimeline(res) {
if (this.utils.isLogin()) {
return {
title: this.item.diseaseName,
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
methods: {
handleAdvClick(index2) {
var ad = this.advs[index2];
formatAppLog("log", "at pages_index/diseaseDetails.vue:79", ad.advUrl);
if (ad.showType == 1) {
uni.setStorageSync("url", ad.advUrl);
uni.navigateTo({
url: "h5"
});
} else if (ad.showType == 2) {
uni.navigateTo({
url: ad.advUrl
});
} else if (ad.showType == 3) {
uni.setStorageSync("content", ad.content);
uni.navigateTo({
url: "content"
});
}
},
getAdvList() {
var that = this;
var data = {
advType: 7
};
getAdvList(data).then((res) => {
if (res.code == 200) {
that.advImgs = [];
that.advs = [];
res.data.forEach(function(element) {
if (element.imageUrl != null && element.imageUrl != "") {
that.advs.push(element);
that.advImgs.push(element.imageUrl);
}
});
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
getDiseaseById() {
let data = { diseaseId: this.diseaseId };
getDiseaseById(data).then(
(res) => {
if (res.code == 200) {
this.item = res.data;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
}
}
};
function _sfc_render$1Y(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_swiper = resolveEasycom(vue.resolveDynamicComponent("u-swiper"), __easycom_0$e);
return $data.item != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "content"
}, [
vue.createElementVNode("view", { class: "detail-cont" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "疾病名称")
]),
vue.createElementVNode("view", {
class: "desc",
innerHTML: $data.item.diseaseName
}, null, 8, ["innerHTML"]),
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "病情症状")
]),
vue.createElementVNode("view", {
class: "desc",
innerHTML: $data.item.symptom
}, null, 8, ["innerHTML"]),
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "病情诊断")
]),
vue.createElementVNode("view", {
class: "desc",
innerHTML: $data.item.diagnose
}, null, 8, ["innerHTML"]),
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "相关检验")
]),
vue.createElementVNode("view", {
class: "desc",
innerHTML: $data.item.inspect
}, null, 8, ["innerHTML"])
]),
vue.createElementVNode("view", { class: "ad" }, [
vue.createVNode(_component_u_swiper, {
list: $data.advImgs,
indicator: "",
indicatorMode: "line",
circular: "",
onClick: $options.handleAdvClick
}, null, 8, ["list", "onClick"])
])
])) : vue.createCommentVNode("v-if", true);
}
const Pages_indexDiseaseDetails = /* @__PURE__ */ _export_sfc(_sfc_main$1Z, [["render", _sfc_render$1Y], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/diseaseDetails.vue"]]);
let request$c = new Request$1().http;
function getHospitalList(data) {
return request$c("/app/hospital/getHospitalList", data, "GET");
}
function getHospitalById(data) {
return request$c("/app/hospital/getHospitalById", data, "GET");
}
const _sfc_main$1Y = {
mixins: [MescrollMixin],
data() {
return {
keyword: "",
mescroll: null,
downOption: {
//下拉刷新
use: true,
auto: false
// 不自动加载 (mixin已处理第一个tab触发downCallback)
},
upOption: {
onScroll: false,
use: true,
// 是否启用上拉加载; 默认true
page: {
pae: 0,
// 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
size: 10
// 每页数据的数量,默认10
},
noMoreSize: 10,
// 配置列表的总数量要大于等于5条才显示'-- END --'的提示
textNoMore: "已经到底了",
empty: {
icon: "https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png",
tip: "暂无数据"
}
},
dataList: []
};
},
onShow() {
},
methods: {
doSearch() {
this.mescroll.resetUpScroll();
},
mescrollInit(mescroll) {
this.mescroll = mescroll;
},
/*下拉刷新的回调 */
downCallback(mescroll) {
mescroll.resetUpScroll();
},
upCallback(page2) {
var that = this;
var data = {
keyword: this.keyword,
pageNum: page2.num,
pageSize: page2.size
};
getHospitalList(data).then((res) => {
if (res.code == 200) {
if (page2.num == 1) {
that.dataList = res.data.list;
} else {
that.dataList = that.dataList.concat(res.data.list);
}
that.mescroll.endBySize(res.data.list.length, res.data.total);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
that.dataList = null;
that.mescroll.endErr();
}
});
},
// 查看详情
showDetail(item) {
uni.navigateTo({
url: "./hospitalDetails?hospitalId=" + item.hospitalId
});
}
}
};
function _sfc_render$1X(_ctx, _cache, $props, $setup, $data, $options) {
const _component_mescroll_body = resolveEasycom(vue.resolveDynamicComponent("mescroll-body"), __easycom_1$6);
return vue.openBlock(), vue.createElementBlock("view", null, [
vue.createElementVNode("view", { class: "top-content" }, [
vue.createCommentVNode(" 搜索框 "),
vue.createElementVNode("view", { class: "search-cont" }, [
vue.createElementVNode("view", { class: "inner" }, [
vue.createElementVNode("image", {
class: "icon-search",
src: "/static/images/icon_search.png",
mode: ""
}),
vue.withDirectives(vue.createElementVNode(
"input",
{
type: "text",
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.keyword = $event),
placeholder: "输入关键字搜索",
"confirm-type": "search",
onConfirm: _cache[1] || (_cache[1] = (...args) => $options.doSearch && $options.doSearch(...args)),
"placeholder-style": "font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;"
},
null,
544
/* NEED_HYDRATION, NEED_PATCH */
), [
[vue.vModelText, $data.keyword]
])
])
])
]),
vue.createVNode(_component_mescroll_body, {
top: "88rpx",
ref: "mescrollRef",
onInit: $options.mescrollInit,
onDown: $options.downCallback,
onUp: $options.upCallback,
down: $data.downOption,
up: $data.upOption
}, {
default: vue.withCtx(() => [
vue.createElementVNode("view", { class: "hos-list" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.dataList, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "item",
key: index2,
onClick: ($event) => $options.showDetail(item)
}, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode("image", {
src: item.imgUrl,
mode: "aspectFit"
}, null, 8, ["src"])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode(
"view",
{ class: "title one-t" },
vue.toDisplayString(item.hospitalName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "desc" }, [
vue.createElementVNode("text", { class: "tag" }, "二甲"),
vue.createElementVNode("text", { class: "tag" }, "综合医院")
]),
vue.createElementVNode("view", { class: "address-box" }, [
vue.createElementVNode("view", { class: "address-left" }, [
vue.createElementVNode(
"view",
{ class: "address one-t" },
vue.toDisplayString(item.address),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "address-right" }, [
vue.createElementVNode("image", { src: "/static/images/icon_arrow_r.png" })
])
])
])
], 8, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
))
])
]),
_: 1
/* STABLE */
}, 8, ["onInit", "onDown", "onUp", "down", "up"])
]);
}
const Pages_indexHospitalList = /* @__PURE__ */ _export_sfc(_sfc_main$1Y, [["render", _sfc_render$1X], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/hospitalList.vue"]]);
const _sfc_main$1X = {
data() {
return {
hospitalId: null,
hospital: null,
doctors: []
};
},
onLoad(options) {
this.hospitalId = options.hospitalId;
this.getHospitalById();
this.getDoctorList();
},
methods: {
goMap() {
uni.openLocation({
latitude: parseFloat(this.hospital.lat),
longitude: parseFloat(this.hospital.lng),
scale: 18,
name: this.hospital.hospitalName,
address: this.hospital.address,
success: () => {
formatAppLog("log", "at pages_index/hospitalDetails.vue:113", "导航success");
}
});
},
getHospitalById() {
var data = {
hospitalId: this.hospitalId
};
getHospitalById(data).then((res) => {
if (res.code == 200) {
this.hospital = res.data;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
getDoctorList() {
var data = {
hospitalId: this.hospitalId,
pageNum: 1,
pageSize: 10
};
getDoctorList(data).then((res) => {
if (res.code == 200) {
res.data.list.forEach(function(value2, index2, array3) {
value2.prices = JSON.parse(value2.priceJson);
});
this.doctors = res.data.list;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
navTo(url2) {
uni.navigateTo({
url: url2
});
}
}
};
function _sfc_render$1W(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "bg" }),
vue.createElementVNode("view", { class: "cont" }, [
vue.createElementVNode("view", { class: "hos-box" }, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode("image", {
src: $data.hospital.imgUrl,
mode: "aspectFit"
}, null, 8, ["src"])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("view", { class: "hos-name-box" }, [
vue.createElementVNode(
"view",
{ class: "hos-name" },
vue.toDisplayString($data.hospital.hospitalName),
1
/* TEXT */
)
]),
vue.createElementVNode(
"view",
{ class: "hos-desc-box" },
vue.toDisplayString($data.hospital.hospitalType),
1
/* TEXT */
),
vue.createElementVNode("view", {
class: "hos-address-box",
onClick: _cache[0] || (_cache[0] = ($event) => $options.goMap())
}, [
vue.createElementVNode("view", { class: "address-left" }, [
vue.createElementVNode(
"view",
{ class: "address one-t" },
vue.toDisplayString($data.hospital.address),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "address-right" }, [
vue.createElementVNode("image", { src: "/static/images/icon_arrow_r.png" })
])
])
])
]),
vue.createElementVNode("view", { class: "desc-box" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "医院介绍")
]),
vue.createElementVNode(
"view",
{ class: "desc" },
vue.toDisplayString($data.hospital.descs),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "doctor-box" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "医院专家")
]),
$data.doctors.length > 0 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "doctors"
}, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.doctors, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "doctor",
onClick: ($event) => $options.navTo("/pages/doctor/doctorDetails?doctorId=" + item.doctorId)
}, [
vue.createElementVNode("view", { class: "item" }, [
vue.createElementVNode("image", {
mode: "aspectFill",
class: "doc-img",
src: item.avatar
}, null, 8, ["src"]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("view", { class: "doc-box" }, [
vue.createElementVNode(
"view",
{ class: "doc-name" },
vue.toDisplayString(item.doctorName),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "doc-position" },
vue.toDisplayString(item.position),
1
/* TEXT */
)
]),
vue.createElementVNode(
"view",
{ class: "hospital" },
vue.toDisplayString(item.hospitalName) + " " + vue.toDisplayString(item.deptName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "doc-spec" }, [
vue.createElementVNode("view", { class: "title" }, "擅长:"),
vue.createElementVNode(
"view",
{ class: "spec ellipsis" },
vue.toDisplayString(item.speciality),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "doc-ping" }, [
vue.createElementVNode(
"view",
{ class: "ping" },
"好评率:" + vue.toDisplayString(item.pingStar) + "%",
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "count" },
"咨询量:" + vue.toDisplayString(item.orderNumber),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "doc-price" }, [
vue.createElementVNode("view", { class: "left" }, [
vue.createTextVNode("¥ "),
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(item.prices, (price, index3) => {
return vue.openBlock(), vue.createElementBlock("text", null, [
vue.createTextVNode(
vue.toDisplayString(price.price.toFixed(2)) + " ",
1
/* TEXT */
),
index3 == 0 ? (vue.openBlock(), vue.createElementBlock("text", { key: 0 }, "/")) : vue.createCommentVNode("v-if", true)
]);
}),
256
/* UNKEYED_FRAGMENT */
))
]),
vue.createElementVNode("view", { class: "btns" }, [
vue.createElementVNode("view", { class: "btn" }, " 咨询医生 ")
])
])
])
])
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])) : vue.createCommentVNode("v-if", true)
])
])
]);
}
const Pages_indexHospitalDetails = /* @__PURE__ */ _export_sfc(_sfc_main$1X, [["render", _sfc_render$1W], ["__scopeId", "data-v-cd01f093"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/hospitalDetails.vue"]]);
const _sfc_main$1W = {
data() {
return {
searchHistory: [],
searchKey: "",
statusBarHeight: uni.getStorageSync("menuInfo").statusBarHeight
};
},
onLoad() {
this.searchHistory = this.$getHisSearch();
},
methods: {
clearHistory() {
this.$clearHisSearch();
this.searchHistory = this.$getHisSearch();
},
back() {
uni.navigateBack({
delta: 1
});
},
goSearchList(key) {
uni.navigateTo({
url: "/pages_doctor/doctorList?keyword=" + key
});
},
toSearchList() {
if (this.searchKey != "") {
this.$addHisSearch(this.searchKey);
}
uni.navigateTo({
url: "/pages_doctor/doctorList?keyword=" + this.searchKey
});
}
}
};
function _sfc_render$1V(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "top-cont" }, [
vue.createElementVNode(
"view",
{
class: "status_bar",
style: vue.normalizeStyle({ height: $data.statusBarHeight })
},
null,
4
/* STYLE */
),
vue.createElementVNode("view", { class: "inner" }, [
vue.createElementVNode("image", {
class: "back",
src: "/static/images/icon_back_b.png",
mode: "heightFix",
onClick: _cache[0] || (_cache[0] = ($event) => $options.back())
}),
vue.createElementVNode("view", { class: "screen-box" }, [
vue.createElementVNode("image", {
class: "search",
src: "/static/images/icon_search.png",
mode: ""
}),
vue.withDirectives(vue.createElementVNode(
"input",
{
type: "text",
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $data.searchKey = $event),
placeholder: "搜索医生/疾病/知识",
onConfirm: _cache[2] || (_cache[2] = ($event) => $options.toSearchList($data.searchKey)),
"placeholder-style": "font-size:26rpx;color:#DADADA;"
},
null,
544
/* NEED_HYDRATION, NEED_PATCH */
), [
[vue.vModelText, $data.searchKey]
]),
vue.createElementVNode("text", {
class: "text",
onClick: _cache[3] || (_cache[3] = (...args) => $options.toSearchList && $options.toSearchList(...args))
}, "搜索")
])
])
]),
vue.createElementVNode("view", { class: "cont-inner" }, [
vue.createCommentVNode(" 搜索历史 "),
vue.createElementVNode("view", { class: "search-info" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "title" }, "搜索历史"),
vue.createElementVNode("view", {
class: "btn",
onClick: _cache[4] || (_cache[4] = ($event) => $options.clearHistory())
}, "清除搜索历史")
]),
vue.createElementVNode("view", { class: "search-list" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.searchHistory, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
onClick: ($event) => $options.goSearchList(item),
key: index2,
class: "item ellipsis"
}, [
vue.createElementVNode(
"text",
{ class: "text" },
vue.toDisplayString(item),
1
/* TEXT */
)
], 8, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
)),
vue.createCommentVNode(' \r\n 名字很长很长很长很长很长很长很长很长\r\n ')
])
])
])
]);
}
const Pages_indexSearch = /* @__PURE__ */ _export_sfc(_sfc_main$1W, [["render", _sfc_render$1V], ["__scopeId", "data-v-e5a36dca"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/search.vue"]]);
const props$m = {
props: {
// 是否显示圆点
isDot: {
type: Boolean,
default: props$y.badge.isDot
},
// 显示的内容
value: {
type: [Number, String],
default: props$y.badge.value
},
// 显示的内容
modelValue: {
type: [Number, String],
default: props$y.badge.modelValue
},
// 是否显示
show: {
type: Boolean,
default: props$y.badge.show
},
// 最大值,超过最大值会显示 '{max}+'
max: {
type: [Number, String],
default: props$y.badge.max
},
// 主题类型,error|warning|success|primary
type: {
type: String,
default: props$y.badge.type
},
// 当数值为 0 时,是否展示 Badge
showZero: {
type: Boolean,
default: props$y.badge.showZero
},
// 背景颜色,优先级比type高,如设置,type参数会失效
bgColor: {
type: [String, null],
default: props$y.badge.bgColor
},
// 字体颜色
color: {
type: [String, null],
default: props$y.badge.color
},
// 徽标形状,circle-四角均为圆角,horn-左下角为直角
shape: {
type: String,
default: props$y.badge.shape
},
// 设置数字的显示方式,overflow|ellipsis|limit
// overflow会根据max字段判断,超出显示`${max}+`
// ellipsis会根据max判断,超出显示`${max}...`
// limit会依据1000作为判断条件,超出1000,显示`${value/1000}K`,比如2.2k、3.34w,最多保留2位小数
numberType: {
type: String,
default: props$y.badge.numberType
},
// 设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值,absolute为true时有效
offset: {
type: Array,
default: props$y.badge.offset
},
// 是否反转背景和字体颜色
inverted: {
type: Boolean,
default: props$y.badge.inverted
},
// 是否绝对定位
absolute: {
type: Boolean,
default: props$y.badge.absolute
}
}
};
const _sfc_main$1V = {
name: "u-badge",
mixins: [mpMixin, props$m, mixin],
computed: {
// 是否将badge中心与父组件右上角重合
boxStyle() {
let style = {};
return style;
},
// 整个组件的样式
badgeStyle() {
const style = {};
if (this.color) {
style.color = this.color;
}
if (this.bgColor && !this.inverted) {
style.backgroundColor = this.bgColor;
}
if (this.absolute) {
style.position = "absolute";
if (this.offset.length) {
const top = this.offset[0];
const right = this.offset[1] || top;
style.top = uni.$u.addUnit(top);
style.right = uni.$u.addUnit(right);
}
}
return style;
},
showValue() {
switch (this.numberType) {
case "overflow":
return Number(this.value) > Number(this.max) ? this.max + "+" : this.value;
case "ellipsis":
return Number(this.value) > Number(this.max) ? "..." : this.value;
case "limit":
return Number(this.value) > 999 ? Number(this.value) >= 9999 ? Math.floor(this.value / 1e4 * 100) / 100 + "w" : Math.floor(this.value / 1e3 * 100) / 100 + "k" : this.value;
default:
return Number(this.value);
}
}
}
};
function _sfc_render$1U(_ctx, _cache, $props, $setup, $data, $options) {
return _ctx.show && ((Number(_ctx.value) === 0 ? _ctx.showZero : true) || _ctx.isDot) ? (vue.openBlock(), vue.createElementBlock(
"text",
{
key: 0,
class: vue.normalizeClass([[_ctx.isDot ? "u-badge--dot" : "u-badge--not-dot", _ctx.inverted && "u-badge--inverted", _ctx.shape === "horn" && "u-badge--horn", `u-badge--${_ctx.type}${_ctx.inverted ? "--inverted" : ""}`], "u-badge"]),
style: vue.normalizeStyle([_ctx.$u.addStyle(_ctx.customStyle), $options.badgeStyle])
},
vue.toDisplayString(_ctx.isDot ? "" : $options.showValue),
7
/* TEXT, CLASS, STYLE */
)) : vue.createCommentVNode("v-if", true);
}
const __easycom_0$8 = /* @__PURE__ */ _export_sfc(_sfc_main$1V, [["render", _sfc_render$1U], ["__scopeId", "data-v-06cca9b7"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u-badge/u-badge.vue"]]);
const props$l = {
props: {
// 滑块的移动过渡时间,单位ms
duration: {
type: Number,
default: props$y.tabs.duration
},
// tabs标签数组
list: {
type: Array,
default: props$y.tabs.list
},
// 滑块颜色
lineColor: {
type: String,
default: props$y.tabs.lineColor
},
// 菜单选择中时的样式
activeStyle: {
type: [String, Object],
default: props$y.tabs.activeStyle
},
// 菜单非选中时的样式
inactiveStyle: {
type: [String, Object],
default: props$y.tabs.inactiveStyle
},
// 滑块长度
lineWidth: {
type: [String, Number],
default: props$y.tabs.lineWidth
},
// 滑块高度
lineHeight: {
type: [String, Number],
default: props$y.tabs.lineHeight
},
// 滑块背景显示大小,当滑块背景设置为图片时使用
lineBgSize: {
type: String,
default: props$y.tabs.lineBgSize
},
// 菜单item的样式
itemStyle: {
type: [String, Object],
default: props$y.tabs.itemStyle
},
// 菜单是否可滚动
scrollable: {
type: Boolean,
default: props$y.tabs.scrollable
},
// 当前选中标签的索引
current: {
type: [Number, String],
default: props$y.tabs.current
},
// 默认读取的键名
keyName: {
type: String,
default: props$y.tabs.keyName
}
}
};
const _sfc_main$1U = {
name: "u-tabs",
mixins: [mpMixin, mixin, props$l],
data() {
return {
firstTime: true,
scrollLeft: 0,
scrollViewWidth: 0,
lineOffsetLeft: 0,
tabsRect: {
left: 0
},
innerCurrent: 0,
moving: false
};
},
watch: {
current: {
immediate: true,
handler(newValue, oldValue) {
if (newValue !== this.innerCurrent) {
this.innerCurrent = newValue;
this.$nextTick(() => {
this.resize();
});
}
}
},
// list变化时,重新渲染list各项信息
list() {
this.$nextTick(() => {
this.resize();
});
}
},
computed: {
textStyle() {
return (index2) => {
const style = {};
const customeStyle = index2 === this.innerCurrent ? uni.$u.addStyle(this.activeStyle) : uni.$u.addStyle(
this.inactiveStyle
);
if (this.list[index2].disabled) {
style.color = "#c8c9cc";
}
return uni.$u.deepMerge(customeStyle, style);
};
},
propsBadge() {
return uni.$u.props.badge;
}
},
async mounted() {
this.init();
},
emits: ["click", "change"],
methods: {
setLineLeft() {
const tabItem = this.list[this.innerCurrent];
if (!tabItem) {
return;
}
let lineOffsetLeft = this.list.slice(0, this.innerCurrent).reduce((total, curr) => total + curr.rect.width, 0);
const lineWidth = uni.$u.getPx(this.lineWidth);
this.lineOffsetLeft = lineOffsetLeft + (tabItem.rect.width - lineWidth) / 2;
if (this.firstTime) {
setTimeout(() => {
this.firstTime = false;
}, 10);
}
},
// nvue下设置滑块的位置
animation(x, duration = 0) {
},
// 点击某一个标签
clickHandler(item, index2) {
this.$emit("click", {
...item,
index: index2
});
if (item.disabled)
return;
this.innerCurrent = index2;
this.resize();
this.$emit("change", {
...item,
index: index2
});
},
init() {
uni.$u.sleep().then(() => {
this.resize();
});
},
setScrollLeft() {
const tabRect = this.list[this.innerCurrent];
const offsetLeft = this.list.slice(0, this.innerCurrent).reduce((total, curr) => {
return total + curr.rect.width;
}, 0);
const windowWidth2 = uni.$u.sys().windowWidth;
let scrollLeft = offsetLeft - (this.tabsRect.width - tabRect.rect.width) / 2 - (windowWidth2 - this.tabsRect.right) / 2 + this.tabsRect.left / 2;
scrollLeft = Math.min(scrollLeft, this.scrollViewWidth - this.tabsRect.width);
this.scrollLeft = Math.max(0, scrollLeft);
},
// 获取所有标签的尺寸
resize() {
if (this.list.length === 0) {
return;
}
Promise.all([this.getTabsRect(), this.getAllItemRect()]).then(([tabsRect, itemRect = []]) => {
this.tabsRect = tabsRect;
this.scrollViewWidth = 0;
itemRect.map((item, index2) => {
this.scrollViewWidth += item.width;
this.list[index2].rect = item;
});
this.setLineLeft();
this.setScrollLeft();
});
},
// 获取导航菜单的尺寸
getTabsRect() {
return new Promise((resolve) => {
this.queryRect("u-tabs__wrapper__scroll-view").then((size) => resolve(size));
});
},
// 获取所有标签的尺寸
getAllItemRect() {
return new Promise((resolve) => {
const promiseAllArr = this.list.map((item, index2) => this.queryRect(
`u-tabs__wrapper__nav__item-${index2}`,
true
));
Promise.all(promiseAllArr).then((sizes) => resolve(sizes));
});
},
// 获取各个标签的尺寸
queryRect(el, item) {
return new Promise((resolve) => {
this.$uGetRect(`.${el}`).then((size) => {
resolve(size);
});
});
}
}
};
function _sfc_render$1T(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_badge = resolveEasycom(vue.resolveDynamicComponent("u-badge"), __easycom_0$8);
return vue.openBlock(), vue.createElementBlock("view", { class: "u-tabs" }, [
vue.createElementVNode("view", { class: "u-tabs__wrapper" }, [
vue.renderSlot(_ctx.$slots, "left", {}, void 0, true),
vue.createElementVNode("view", { class: "u-tabs__wrapper__scroll-view-wrapper" }, [
vue.createElementVNode("scroll-view", {
"scroll-x": _ctx.scrollable,
"scroll-left": $data.scrollLeft,
"scroll-with-animation": "",
class: "u-tabs__wrapper__scroll-view",
"show-scrollbar": false,
ref: "u-tabs__wrapper__scroll-view"
}, [
vue.createElementVNode(
"view",
{
class: "u-tabs__wrapper__nav",
ref: "u-tabs__wrapper__nav"
},
[
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(_ctx.list, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: vue.normalizeClass(["u-tabs__wrapper__nav__item", [`u-tabs__wrapper__nav__item-${index2}`, item.disabled && "u-tabs__wrapper__nav__item--disabled"]]),
key: index2,
onClick: ($event) => $options.clickHandler(item, index2),
ref_for: true,
ref: `u-tabs__wrapper__nav__item-${index2}`,
style: vue.normalizeStyle([_ctx.$u.addStyle(_ctx.itemStyle), { flex: _ctx.scrollable ? "" : 1 }])
}, [
vue.createElementVNode(
"text",
{
class: vue.normalizeClass([[item.disabled && "u-tabs__wrapper__nav__item__text--disabled"], "u-tabs__wrapper__nav__item__text"]),
style: vue.normalizeStyle([$options.textStyle(index2)])
},
vue.toDisplayString(item[_ctx.keyName]),
7
/* TEXT, CLASS, STYLE */
),
vue.createVNode(_component_u_badge, {
show: !!(item.badge && (item.badge.show || item.badge.isDot || item.badge.value)),
isDot: item.badge && item.badge.isDot || $options.propsBadge.isDot,
value: item.badge && item.badge.value || $options.propsBadge.value,
max: item.badge && item.badge.max || $options.propsBadge.max,
type: item.badge && item.badge.type || $options.propsBadge.type,
showZero: item.badge && item.badge.showZero || $options.propsBadge.showZero,
bgColor: item.badge && item.badge.bgColor || $options.propsBadge.bgColor,
color: item.badge && item.badge.color || $options.propsBadge.color,
shape: item.badge && item.badge.shape || $options.propsBadge.shape,
numberType: item.badge && item.badge.numberType || $options.propsBadge.numberType,
inverted: item.badge && item.badge.inverted || $options.propsBadge.inverted,
customStyle: "margin-left: 4px;"
}, null, 8, ["show", "isDot", "value", "max", "type", "showZero", "bgColor", "color", "shape", "numberType", "inverted"])
], 14, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
)),
vue.createElementVNode(
"view",
{
class: "u-tabs__wrapper__nav__line",
ref: "u-tabs__wrapper__nav__line",
style: vue.normalizeStyle([{
width: _ctx.$u.addUnit(_ctx.lineWidth),
transform: `translate(${$data.lineOffsetLeft}px)`,
transitionDuration: `${$data.firstTime ? 0 : _ctx.duration}ms`,
height: _ctx.$u.addUnit(_ctx.lineHeight),
background: _ctx.lineColor,
backgroundSize: _ctx.lineBgSize
}])
},
null,
4
/* STYLE */
)
],
512
/* NEED_PATCH */
)
], 8, ["scroll-x", "scroll-left"])
]),
vue.renderSlot(_ctx.$slots, "right", {}, void 0, true)
])
]);
}
const __easycom_0$7 = /* @__PURE__ */ _export_sfc(_sfc_main$1U, [["render", _sfc_render$1T], ["__scopeId", "data-v-02b0c54f"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u-tabs/u-tabs.vue"]]);
let request$b = new Request$1().http;
function getFamousPrescribeList(data) {
return request$b("/app/index/getFamousPrescribeList", data, "GET");
}
function getFamousPrescribeById(data) {
return request$b("/app/index/getFamousPrescribeById", data, "GET");
}
function getQuestionsList(data) {
return request$b("/app/index/getQuestionsList", data, "GET");
}
function getQuestionsById(data) {
return request$b("/app/index/getQuestionsById", data, "GET");
}
function getMedicatedFoodList(data) {
return request$b("/app/index/getMedicatedFoodList", data, "GET");
}
function getMedicatedFoodById(data) {
return request$b("/app/index/getMedicatedFoodById", data, "GET");
}
function getVesselList(data) {
return request$b("/app/index/getVesselList", data, "GET");
}
function getVesselById(data) {
return request$b("/app/index/getVesselById", data, "GET");
}
function getChineseMedicineList(data) {
return request$b("/app/index/getChineseMedicineList", data, "GET");
}
function getChineseMedicineById(data) {
return request$b("/app/index/getChineseMedicineById", data, "GET");
}
const _sfc_main$1T = {
data() {
return {
tabIndex: 1,
indication: "",
belongBook: "",
title: "",
prescribeType: 0,
pageNum: 1,
pageSize: 20,
typeOptions: [],
bookOptions: [],
indicationOptions: [],
tabs: [
{ name: "按类型", id: "1" },
{ name: "按疾病", id: "2" },
{ name: "按书籍", id: "3" }
],
keyword: "",
dataList: []
};
},
onLoad() {
this.getDictByKey("sys_famous_prescribe_type");
this.getDictByKey("sys_famous_prescribe_indication");
this.getDictByKey("sys_famous_prescribe_book");
},
methods: {
scrolltolower(e) {
this.pageNum++;
this.getFamousPrescribeList();
formatAppLog("log", "at pages_index/famousPrescribeList.vue:91", e);
},
typeClick(item) {
this.indication = "";
this.belongBook = "";
this.prescribeType = parseInt(item.dictValue);
formatAppLog("log", "at pages_index/famousPrescribeList.vue:97", this.prescribeType);
this.title = item.dictLabel;
this.pageNum = 1;
this.getFamousPrescribeList();
},
bookClick(item) {
this.indication = "";
this.prescribeType = 0;
this.belongBook = item.dictLabel;
this.title = item.dictLabel;
this.pageNum = 1;
this.getFamousPrescribeList();
},
indicationClick(item) {
formatAppLog("log", "at pages_index/famousPrescribeList.vue:111", item);
this.belongBook = "";
this.prescribeType = 0;
this.indication = item.dictLabel;
this.title = item.dictLabel;
this.pageNum = 1;
this.getFamousPrescribeList();
},
getDictByKey(key) {
var data = { key };
getDictByKey(data).then(
(res) => {
if (res.code == 200) {
if (key == "sys_famous_prescribe_type") {
this.typeOptions = res.data;
if (this.typeOptions != null && this.typeOptions.length > 0) {
this.typeClick(this.typeOptions[0]);
}
}
if (key == "sys_famous_prescribe_indication") {
this.indicationOptions = res.data;
}
if (key == "sys_famous_prescribe_book") {
this.bookOptions = res.data;
}
}
},
(err) => {
}
);
},
tabChange(item) {
this.tabIndex = item.id;
this.getFamousPrescribeList();
},
doSearch() {
this.pageNum = 1;
this.getFamousPrescribeList();
},
getFamousPrescribeList() {
var that = this;
var data = {
indication: this.indication,
belongBook: this.belongBook,
prescribeType: this.prescribeType,
keyword: this.keyword,
pageNum: this.pageNum,
pageSize: this.pageSize
};
getFamousPrescribeList(data).then((res) => {
if (res.code == 200) {
if (this.pageNum == 1) {
that.dataList = res.data.list;
} else {
that.dataList = that.dataList.concat(res.data.list);
}
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
that.dataList = [];
}
});
},
// 查看详情
showDetail(item) {
uni.navigateTo({
url: "./famousPrescribeDetails?id=" + item.id
});
}
}
};
function _sfc_render$1S(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_tabs = resolveEasycom(vue.resolveDynamicComponent("u-tabs"), __easycom_0$7);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "top-box" }, [
vue.createCommentVNode(" 搜索框 "),
vue.createElementVNode("view", { class: "search-cont" }, [
vue.createElementVNode("view", { class: "inner" }, [
vue.createElementVNode("image", {
class: "icon-search",
src: "/static/images/icon_search.png",
mode: ""
}),
vue.withDirectives(vue.createElementVNode(
"input",
{
type: "text",
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.keyword = $event),
placeholder: "输入关键字搜索",
"confirm-type": "search",
onConfirm: _cache[1] || (_cache[1] = (...args) => $options.doSearch && $options.doSearch(...args)),
"placeholder-style": "font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;"
},
null,
544
/* NEED_HYDRATION, NEED_PATCH */
), [
[vue.vModelText, $data.keyword]
])
])
]),
vue.createElementVNode("view", { class: "tabs" }, [
vue.createVNode(_component_u_tabs, {
scrollable: false,
list: $data.tabs,
lineColor: "#C39A58",
onChange: $options.tabChange
}, null, 8, ["list", "onChange"])
])
]),
vue.createElementVNode("view", { class: "cont-box" }, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode("view", { class: "items" }, [
$data.tabIndex == 1 ? (vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
{ key: 0 },
vue.renderList($data.typeOptions, (item) => {
return vue.openBlock(), vue.createElementBlock("view", {
onClick: ($event) => $options.typeClick(item),
class: vue.normalizeClass(item.dictValue == $data.prescribeType ? "item ellipsis active" : "item ellipsis")
}, [
item.dictValue == $data.prescribeType ? (vue.openBlock(), vue.createElementBlock("text", {
key: 0,
class: "line"
})) : vue.createCommentVNode("v-if", true),
vue.createTextVNode(
" " + vue.toDisplayString(_ctx.$parseText(item.dictLabel, 4)),
1
/* TEXT */
)
], 10, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
)) : vue.createCommentVNode("v-if", true),
$data.tabIndex == 2 ? (vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
{ key: 1 },
vue.renderList($data.indicationOptions, (item) => {
return vue.openBlock(), vue.createElementBlock("view", {
onClick: ($event) => $options.indicationClick(item),
class: vue.normalizeClass(item.dictLabel == $data.indication ? "item ellipsis active" : "item ellipsis")
}, [
item.dictLabel == $data.indication ? (vue.openBlock(), vue.createElementBlock("text", {
key: 0,
class: "line"
})) : vue.createCommentVNode("v-if", true),
vue.createTextVNode(
" " + vue.toDisplayString(_ctx.$parseText(item.dictLabel, 4)),
1
/* TEXT */
)
], 10, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
)) : vue.createCommentVNode("v-if", true),
$data.tabIndex == 3 ? (vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
{ key: 2 },
vue.renderList($data.bookOptions, (item) => {
return vue.openBlock(), vue.createElementBlock("view", {
onClick: ($event) => $options.bookClick(item),
class: vue.normalizeClass(item.dictLabel == $data.belongBook ? "item ellipsis active" : "item ellipsis")
}, [
item.dictLabel == $data.belongBook ? (vue.openBlock(), vue.createElementBlock("text", {
key: 0,
class: "line"
})) : vue.createCommentVNode("v-if", true),
vue.createTextVNode(
" " + vue.toDisplayString(_ctx.$parseText(item.dictLabel, 4)),
1
/* TEXT */
)
], 10, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
)) : vue.createCommentVNode("v-if", true)
])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString($data.title),
1
/* TEXT */
),
vue.createElementVNode(
"scroll-view",
{
onScrolltolower: _cache[2] || (_cache[2] = (...args) => $options.scrolltolower && $options.scrolltolower(...args)),
"scroll-y": "true",
style: { "height": "calc(100vh - 180rpx)" }
},
[
vue.createElementVNode("view", { class: "items" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.dataList, (item) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "r-item",
onClick: ($event) => $options.showDetail(item)
}, [
vue.createElementVNode(
"view",
{ class: "r-left" },
vue.toDisplayString(item.prescribeName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "r-right" }, [
vue.createElementVNode("image", { src: "/static/images/fire.png" })
])
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
],
32
/* NEED_HYDRATION */
)
])
])
]);
}
const Pages_indexFamousPrescribeList = /* @__PURE__ */ _export_sfc(_sfc_main$1T, [["render", _sfc_render$1S], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/famousPrescribeList.vue"]]);
const _sfc_main$1S = {
data() {
return {
advs: [],
advImgs: [],
tabIndex: 1,
id: null,
item: {}
};
},
onLoad(option) {
this.id = option.id;
},
onShow() {
this.getAdvList();
this.getFamousPrescribeById();
},
onShareAppMessage(res) {
if (this.$isLogin()) {
return {
title: this.item.prescribeName,
path: "/pages_index/famousPrescribeDetails?id=" + this.id,
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
//分享到朋友圈
onShareTimeline(res) {
if (this.utils.isLogin()) {
return {
title: this.item.title,
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
methods: {
handleAdvClick(index2) {
var ad = this.advs[index2];
formatAppLog("log", "at pages_index/famousPrescribeDetails.vue:95", ad.advUrl);
if (ad.showType == 1) {
uni.setStorageSync("url", ad.advUrl);
uni.navigateTo({
url: "h5"
});
} else if (ad.showType == 2) {
uni.navigateTo({
url: ad.advUrl
});
} else if (ad.showType == 3) {
uni.setStorageSync("content", ad.content);
uni.navigateTo({
url: "content"
});
}
},
getAdvList() {
var that = this;
var data = {
advType: 9
};
getAdvList(data).then((res) => {
if (res.code == 200) {
that.advImgs = [];
that.advs = [];
res.data.forEach(function(element) {
if (element.imageUrl != null && element.imageUrl != "") {
that.advs.push(element);
that.advImgs.push(element.imageUrl);
}
});
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
tabClick(index2) {
this.tabIndex = index2;
},
getFamousPrescribeById() {
let data = { id: this.id };
getFamousPrescribeById(data).then(
(res) => {
if (res.code == 200) {
this.item = res.data;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
}
}
};
function _sfc_render$1R(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_swiper = resolveEasycom(vue.resolveDynamicComponent("u-swiper"), __easycom_0$e);
return $data.item != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "content"
}, [
vue.createElementVNode("view", { class: "image" }, [
vue.createElementVNode("image", {
mode: "aspectFill",
src: $data.item.imgUrl
}, null, 8, ["src"])
]),
vue.createElementVNode("view", { class: "detail-cont" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString($data.item.prescribeName),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "title-py" },
vue.toDisplayString($data.item.pinyin),
1
/* TEXT */
)
]),
vue.createElementVNode(
"view",
{ class: "desc" },
vue.toDisplayString($data.item.actionTitle),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "line-h" }),
vue.createElementVNode("view", { class: "tabs" }, [
vue.createElementVNode(
"view",
{
onClick: _cache[0] || (_cache[0] = ($event) => $options.tabClick(1)),
class: vue.normalizeClass($data.tabIndex == 1 ? "tab1 active" : "tab1")
},
" 基本用法 ",
2
/* CLASS */
),
vue.createElementVNode(
"view",
{
onClick: _cache[1] || (_cache[1] = ($event) => $options.tabClick(2)),
class: vue.normalizeClass($data.tabIndex == 2 ? "tab2 active" : "tab2")
},
" 药物作用 ",
2
/* CLASS */
),
vue.createElementVNode(
"view",
{
onClick: _cache[2] || (_cache[2] = ($event) => $options.tabClick(3)),
class: vue.normalizeClass($data.tabIndex == 3 ? "tab3 active" : "tab3")
},
" 用药方法 ",
2
/* CLASS */
),
vue.createElementVNode(
"view",
{
onClick: _cache[3] || (_cache[3] = ($event) => $options.tabClick(4)),
class: vue.normalizeClass($data.tabIndex == 4 ? "tab4 active" : "tab4")
},
" 注意事项 ",
2
/* CLASS */
)
]),
$data.tabIndex == 1 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "content",
innerHTML: $data.item.descs
}, null, 8, ["innerHTML"])) : vue.createCommentVNode("v-if", true),
$data.tabIndex == 2 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "content",
innerHTML: $data.item.action
}, null, 8, ["innerHTML"])) : vue.createCommentVNode("v-if", true),
$data.tabIndex == 3 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 2,
class: "content",
innerHTML: $data.item.usageMethod
}, null, 8, ["innerHTML"])) : vue.createCommentVNode("v-if", true),
$data.tabIndex == 4 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 3,
class: "content",
innerHTML: $data.item.msg
}, null, 8, ["innerHTML"])) : vue.createCommentVNode("v-if", true)
]),
vue.createElementVNode("view", { class: "ad" }, [
vue.createVNode(_component_u_swiper, {
list: $data.advImgs,
indicator: "",
indicatorMode: "line",
circular: "",
onClick: $options.handleAdvClick
}, null, 8, ["list", "onClick"])
])
])) : vue.createCommentVNode("v-if", true);
}
const Pages_indexFamousPrescribeDetails = /* @__PURE__ */ _export_sfc(_sfc_main$1S, [["render", _sfc_render$1R], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/famousPrescribeDetails.vue"]]);
const _sfc_main$1R = {
data() {
return {
tabIndex: 1,
vessel: "",
region: "",
title: "",
pageNum: 1,
pageSize: 20,
vesselOptions: [],
regionOptions: [],
tabs: [
{ name: "按经络查询", id: "1" },
{ name: "按部位查询", id: "2" }
],
keyword: "",
dataList: []
};
},
onLoad() {
this.getDictByKey("sys_vessel");
this.getDictByKey("sys_vessel_region");
this.getVesselList();
},
methods: {
scrolltolower(e) {
this.pageNum++;
this.getVesselList();
formatAppLog("log", "at pages_index/vesselList.vue:85", e);
},
regionClick(item) {
this.vessel = "";
this.region = item.dictLabel;
this.title = item.dictLabel;
this.pageNum = 1;
this.getVesselList();
},
vesselClick(item) {
this.region = "";
this.vessel = item.dictLabel;
this.title = item.dictLabel;
this.pageNum = 1;
this.getVesselList();
},
getDictByKey(key) {
var data = { key };
getDictByKey(data).then(
(res) => {
if (res.code == 200) {
if (key == "sys_vessel") {
this.vesselOptions = res.data;
}
if (key == "sys_vessel_region") {
this.regionOptions = res.data;
}
}
},
(err) => {
}
);
},
tabChange(item) {
this.tabIndex = item.id;
this.getVesselList();
},
doSearch() {
this.pageNum = 1;
this.getVesselList();
},
getVesselList() {
var that = this;
var data = {
vessel: this.vessel,
region: this.region,
keyword: this.keyword,
pageNum: this.pageNum,
pageSize: this.pageSize
};
getVesselList(data).then((res) => {
if (res.code == 200) {
if (this.pageNum == 1) {
that.dataList = res.data.list;
} else {
that.dataList = that.dataList.concat(res.data.list);
}
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
that.dataList = [];
}
});
},
// 查看详情
showDetail(item) {
uni.navigateTo({
url: "./vesselDetails?id=" + item.id
});
}
}
};
function _sfc_render$1Q(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_tabs = resolveEasycom(vue.resolveDynamicComponent("u-tabs"), __easycom_0$7);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "top-box" }, [
vue.createCommentVNode(" 搜索框 "),
vue.createElementVNode("view", { class: "search-cont" }, [
vue.createElementVNode("view", { class: "inner" }, [
vue.createElementVNode("image", {
class: "icon-search",
src: "/static/images/icon_search.png",
mode: ""
}),
vue.withDirectives(vue.createElementVNode(
"input",
{
type: "text",
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.keyword = $event),
placeholder: "输入关键字搜索",
"confirm-type": "search",
onConfirm: _cache[1] || (_cache[1] = (...args) => $options.doSearch && $options.doSearch(...args)),
"placeholder-style": "font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;"
},
null,
544
/* NEED_HYDRATION, NEED_PATCH */
), [
[vue.vModelText, $data.keyword]
])
])
]),
vue.createElementVNode("view", { class: "tabs" }, [
vue.createVNode(_component_u_tabs, {
scrollable: false,
list: $data.tabs,
lineColor: "#C39A58",
onChange: $options.tabChange
}, null, 8, ["list", "onChange"])
])
]),
vue.createElementVNode("view", { class: "cont-box" }, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode("view", { class: "items" }, [
$data.tabIndex == 1 ? (vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
{ key: 0 },
vue.renderList($data.vesselOptions, (item) => {
return vue.openBlock(), vue.createElementBlock("view", {
onClick: ($event) => $options.vesselClick(item),
class: vue.normalizeClass(item.dictValue == $data.vessel ? "item ellipsis active" : "item ellipsis")
}, [
item.dictValue == $data.vessel ? (vue.openBlock(), vue.createElementBlock("text", {
key: 0,
class: "line"
})) : vue.createCommentVNode("v-if", true),
vue.createTextVNode(
" " + vue.toDisplayString(_ctx.$parseText(item.dictLabel, 4)),
1
/* TEXT */
)
], 10, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
)) : vue.createCommentVNode("v-if", true),
$data.tabIndex == 2 ? (vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
{ key: 1 },
vue.renderList($data.regionOptions, (item) => {
return vue.openBlock(), vue.createElementBlock("view", {
onClick: ($event) => $options.regionClick(item),
class: vue.normalizeClass(item.dictLabel == $data.region ? "item ellipsis active" : "item ellipsis")
}, [
item.dictLabel == $data.region ? (vue.openBlock(), vue.createElementBlock("text", {
key: 0,
class: "line"
})) : vue.createCommentVNode("v-if", true),
vue.createTextVNode(
" " + vue.toDisplayString(_ctx.$parseText(item.dictLabel, 4)),
1
/* TEXT */
)
], 10, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
)) : vue.createCommentVNode("v-if", true)
])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString($data.title),
1
/* TEXT */
),
vue.createElementVNode(
"scroll-view",
{
onScrolltolower: _cache[2] || (_cache[2] = (...args) => $options.scrolltolower && $options.scrolltolower(...args)),
"scroll-y": "true",
style: { "height": "calc(100vh - 180rpx)" }
},
[
vue.createElementVNode("view", { class: "items" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.dataList, (item) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "r-item",
onClick: ($event) => $options.showDetail(item)
}, [
vue.createElementVNode(
"view",
{ class: "r-left" },
vue.toDisplayString(item.vesselName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "r-right" }, [
vue.createElementVNode("image", { src: "/static/images/fire.png" })
])
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
],
32
/* NEED_HYDRATION */
)
])
])
]);
}
const Pages_indexVesselList = /* @__PURE__ */ _export_sfc(_sfc_main$1R, [["render", _sfc_render$1Q], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/vesselList.vue"]]);
const _sfc_main$1Q = {
data() {
return {
advs: [],
advImgs: [],
tabIndex: 1,
item: {}
};
},
onLoad(option) {
this.id = option.id;
},
onShow() {
this.getAdvList();
this.getVesselById();
},
//发送给朋友
onShareAppMessage(res) {
if (this.$isLogin()) {
return {
title: this.item.vesselName,
path: "/pages_index/vesselDetails?id=" + this.id,
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
//分享到朋友圈
onShareTimeline(res) {
if (this.utils.isLogin()) {
return {
title: this.item.vesselName,
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
methods: {
handleAdvClick(index2) {
var ad = this.advs[index2];
formatAppLog("log", "at pages_index/vesselDetails.vue:75", ad.advUrl);
if (ad.showType == 1) {
uni.setStorageSync("url", ad.advUrl);
uni.navigateTo({
url: "h5"
});
} else if (ad.showType == 2) {
uni.navigateTo({
url: ad.advUrl
});
} else if (ad.showType == 3) {
uni.setStorageSync("content", ad.content);
uni.navigateTo({
url: "content"
});
}
},
getAdvList() {
var that = this;
var data = {
advType: 5
};
getAdvList(data).then((res) => {
if (res.code == 200) {
that.advImgs = [];
that.advs = [];
res.data.forEach(function(element) {
if (element.imageUrl != null && element.imageUrl != "") {
that.advs.push(element);
that.advImgs.push(element.imageUrl);
}
});
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
getVesselById() {
let data = { id: this.id };
getVesselById(data).then(
(res) => {
if (res.code == 200) {
this.item = res.data;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
}
}
};
function _sfc_render$1P(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_swiper = resolveEasycom(vue.resolveDynamicComponent("u-swiper"), __easycom_0$e);
return $data.item != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "content"
}, [
vue.createElementVNode("view", { class: "image" }, [
vue.createElementVNode("image", {
mode: "aspectFill",
src: $data.item.imgUrl
}, null, 8, ["src"])
]),
vue.createElementVNode("view", { class: "detail-cont" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString($data.item.vesselName),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "title-py" },
vue.toDisplayString($data.item.pinyin),
1
/* TEXT */
)
]),
vue.createElementVNode(
"view",
{ class: "desc" },
vue.toDisplayString($data.item.actionTitle),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "line-h" }),
vue.createElementVNode("view", {
class: "content",
innerHTML: $data.item.descs
}, null, 8, ["innerHTML"])
]),
vue.createElementVNode("view", { class: "ad" }, [
vue.createVNode(_component_u_swiper, {
list: $data.advImgs,
indicator: "",
indicatorMode: "line",
circular: "",
onClick: $options.handleAdvClick
}, null, 8, ["list", "onClick"])
])
])) : vue.createCommentVNode("v-if", true);
}
const Pages_indexVesselDetails = /* @__PURE__ */ _export_sfc(_sfc_main$1Q, [["render", _sfc_render$1P], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/vesselDetails.vue"]]);
const _sfc_main$1P = {
data() {
return {
tabIndex: 1,
indication: "",
flavor: "",
vessel: "",
title: "",
pageNum: 1,
pageSize: 20,
flavorOptions: [],
indicationOptions: [],
tabs: [
{ name: "按五味", id: "1" },
{ name: "按疾病", id: "2" }
],
keyword: "",
dataList: []
};
},
onLoad() {
this.getDictByKey("sys_chinese_medicine_flavor");
this.getDictByKey("sys_indication");
this.getChineseMedicineList();
},
methods: {
scrolltolower(e) {
this.pageNum++;
this.getChineseMedicineList();
formatAppLog("log", "at pages_index/chineseMedicineList.vue:83", e);
},
indicationClick(item) {
this.flavor = "";
this.indication = item.dictLabel;
this.title = item.dictLabel;
this.pageNum = 1;
this.getChineseMedicineList();
},
flavorClick(item) {
formatAppLog("log", "at pages_index/chineseMedicineList.vue:93", item);
this.indication = "";
this.flavor = item.dictLabel;
this.title = item.dictLabel;
this.pageNum = 1;
this.getChineseMedicineList();
},
getDictByKey(key) {
var data = { key };
getDictByKey(data).then(
(res) => {
if (res.code == 200) {
if (key == "sys_indication") {
this.indicationOptions = res.data;
}
if (key == "sys_chinese_medicine_flavor") {
this.flavorOptions = res.data;
}
}
},
(err) => {
}
);
},
tabChange(item) {
this.tabIndex = item.id;
this.getChineseMedicineList();
},
doSearch() {
this.pageNum = 1;
this.getChineseMedicineList();
},
getChineseMedicineList() {
var that = this;
var data = {
indication: this.indication,
flavor: this.flavor,
vessel: this.vessel,
keyword: this.keyword,
pageNum: this.pageNum,
pageSize: this.pageSize
};
getChineseMedicineList(data).then((res) => {
if (res.code == 200) {
if (this.pageNum == 1) {
that.dataList = res.data.list;
} else {
that.dataList = that.dataList.concat(res.data.list);
}
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
that.dataList = [];
}
});
},
// 查看详情
showDetail(item) {
uni.navigateTo({
url: "./chineseMedicineDetails?id=" + item.id
});
}
}
};
function _sfc_render$1O(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_tabs = resolveEasycom(vue.resolveDynamicComponent("u-tabs"), __easycom_0$7);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "top-box" }, [
vue.createCommentVNode(" 搜索框 "),
vue.createElementVNode("view", { class: "search-cont" }, [
vue.createElementVNode("view", { class: "inner" }, [
vue.createElementVNode("image", {
class: "icon-search",
src: "/static/images/icon_search.png",
mode: ""
}),
vue.withDirectives(vue.createElementVNode(
"input",
{
type: "text",
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.keyword = $event),
placeholder: "输入关键字搜索",
"confirm-type": "search",
onConfirm: _cache[1] || (_cache[1] = (...args) => $options.doSearch && $options.doSearch(...args)),
"placeholder-style": "font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;"
},
null,
544
/* NEED_HYDRATION, NEED_PATCH */
), [
[vue.vModelText, $data.keyword]
])
])
]),
vue.createElementVNode("view", { class: "tabs" }, [
vue.createVNode(_component_u_tabs, {
scrollable: false,
list: $data.tabs,
lineColor: "#C39A58",
onChange: $options.tabChange
}, null, 8, ["list", "onChange"])
])
]),
vue.createElementVNode("view", { class: "cont-box" }, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode("view", { class: "items" }, [
$data.tabIndex == 1 ? (vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
{ key: 0 },
vue.renderList($data.flavorOptions, (item) => {
return vue.openBlock(), vue.createElementBlock("view", {
onClick: ($event) => $options.flavorClick(item),
class: vue.normalizeClass(item.dictValue == $data.flavor ? "item ellipsis active" : "item ellipsis")
}, [
item.dictValue == $data.flavor ? (vue.openBlock(), vue.createElementBlock("text", {
key: 0,
class: "line"
})) : vue.createCommentVNode("v-if", true),
vue.createTextVNode(
" " + vue.toDisplayString(_ctx.$parseText(item.dictLabel, 4)),
1
/* TEXT */
)
], 10, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
)) : vue.createCommentVNode("v-if", true),
$data.tabIndex == 2 ? (vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
{ key: 1 },
vue.renderList($data.indicationOptions, (item) => {
return vue.openBlock(), vue.createElementBlock("view", {
onClick: ($event) => $options.indicationClick(item),
class: vue.normalizeClass(item.dictLabel == $data.indication ? "item ellipsis active" : "item ellipsis")
}, [
item.dictLabel == $data.indication ? (vue.openBlock(), vue.createElementBlock("text", {
key: 0,
class: "line"
})) : vue.createCommentVNode("v-if", true),
vue.createTextVNode(
" " + vue.toDisplayString(_ctx.$parseText(item.dictLabel, 4)),
1
/* TEXT */
)
], 10, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
)) : vue.createCommentVNode("v-if", true)
])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString($data.title),
1
/* TEXT */
),
vue.createElementVNode(
"scroll-view",
{
onScrolltolower: _cache[2] || (_cache[2] = (...args) => $options.scrolltolower && $options.scrolltolower(...args)),
"scroll-y": "true",
style: { "height": "calc(100vh - 180rpx)" }
},
[
vue.createElementVNode("view", { class: "items" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.dataList, (item) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "r-item",
onClick: ($event) => $options.showDetail(item)
}, [
vue.createElementVNode(
"view",
{ class: "r-left" },
vue.toDisplayString(item.medicineName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "r-right" }, [
vue.createElementVNode("image", { src: "/static/images/fire.png" })
])
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
],
32
/* NEED_HYDRATION */
)
])
])
]);
}
const Pages_indexChineseMedicineList = /* @__PURE__ */ _export_sfc(_sfc_main$1P, [["render", _sfc_render$1O], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/chineseMedicineList.vue"]]);
const _sfc_main$1O = {
data() {
return {
advs: [],
advImgs: [],
tabIndex: 1,
articleId: null,
item: {}
};
},
onLoad(option) {
this.id = option.id;
},
onShow() {
this.getChineseMedicineById();
this.getAdvList();
},
onShareAppMessage(res) {
if (this.$isLogin()) {
return {
title: this.item.medicineName,
path: "/pages_index/chineseMedicineDetails?id=" + this.id,
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
//分享到朋友圈
onShareTimeline(res) {
if (this.utils.isLogin()) {
return {
title: this.item.title,
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
methods: {
handleAdvClick(index2) {
var ad = this.advs[index2];
formatAppLog("log", "at pages_index/chineseMedicineDetails.vue:95", ad.advUrl);
if (ad.showType == 1) {
uni.setStorageSync("url", ad.advUrl);
uni.navigateTo({
url: "h5"
});
} else if (ad.showType == 2) {
uni.navigateTo({
url: ad.advUrl
});
} else if (ad.showType == 3) {
uni.setStorageSync("content", ad.content);
uni.navigateTo({
url: "content"
});
}
},
getAdvList() {
var that = this;
var data = {
advType: 8
};
getAdvList(data).then((res) => {
if (res.code == 200) {
that.advImgs = [];
that.advs = [];
res.data.forEach(function(element) {
if (element.imageUrl != null && element.imageUrl != "") {
that.advs.push(element);
that.advImgs.push(element.imageUrl);
}
});
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
tabClick(index2) {
this.tabIndex = index2;
},
getChineseMedicineById() {
let data = { id: this.id };
getChineseMedicineById(data).then(
(res) => {
if (res.code == 200) {
this.item = res.data;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
}
}
};
function _sfc_render$1N(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_swiper = resolveEasycom(vue.resolveDynamicComponent("u-swiper"), __easycom_0$e);
return $data.item != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "content"
}, [
vue.createElementVNode("view", { class: "image" }, [
vue.createElementVNode("image", {
mode: "aspectFill",
src: $data.item.imgUrl
}, null, 8, ["src"])
]),
vue.createElementVNode("view", { class: "detail-cont" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString($data.item.medicineName),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "title-py" },
vue.toDisplayString($data.item.pinyin),
1
/* TEXT */
)
]),
vue.createElementVNode(
"view",
{ class: "desc" },
vue.toDisplayString($data.item.actionTitle),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "line-h" }),
vue.createElementVNode("view", { class: "tabs" }, [
vue.createElementVNode(
"view",
{
onClick: _cache[0] || (_cache[0] = ($event) => $options.tabClick(1)),
class: vue.normalizeClass($data.tabIndex == 1 ? "tab1 active" : "tab1")
},
" 基本用法 ",
2
/* CLASS */
),
vue.createElementVNode(
"view",
{
onClick: _cache[1] || (_cache[1] = ($event) => $options.tabClick(2)),
class: vue.normalizeClass($data.tabIndex == 2 ? "tab2 active" : "tab2")
},
" 药物作用 ",
2
/* CLASS */
),
vue.createElementVNode(
"view",
{
onClick: _cache[2] || (_cache[2] = ($event) => $options.tabClick(3)),
class: vue.normalizeClass($data.tabIndex == 3 ? "tab3 active" : "tab3")
},
" 用药方法 ",
2
/* CLASS */
),
vue.createElementVNode(
"view",
{
onClick: _cache[3] || (_cache[3] = ($event) => $options.tabClick(4)),
class: vue.normalizeClass($data.tabIndex == 4 ? "tab4 active" : "tab4")
},
" 注意事项 ",
2
/* CLASS */
)
]),
$data.tabIndex == 1 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "content",
innerHTML: $data.item.descs
}, null, 8, ["innerHTML"])) : vue.createCommentVNode("v-if", true),
$data.tabIndex == 2 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "content",
innerHTML: $data.item.action
}, null, 8, ["innerHTML"])) : vue.createCommentVNode("v-if", true),
$data.tabIndex == 3 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 2,
class: "content",
innerHTML: $data.item.usageMethod
}, null, 8, ["innerHTML"])) : vue.createCommentVNode("v-if", true),
$data.tabIndex == 4 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 3,
class: "content",
innerHTML: $data.item.msg
}, null, 8, ["innerHTML"])) : vue.createCommentVNode("v-if", true)
]),
vue.createElementVNode("view", { class: "ad" }, [
vue.createVNode(_component_u_swiper, {
list: $data.advImgs,
indicator: "",
indicatorMode: "line",
circular: "",
onClick: $options.handleAdvClick
}, null, 8, ["list", "onClick"])
])
])) : vue.createCommentVNode("v-if", true);
}
const Pages_indexChineseMedicineDetails = /* @__PURE__ */ _export_sfc(_sfc_main$1O, [["render", _sfc_render$1N], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/chineseMedicineDetails.vue"]]);
const _sfc_main$1N = {
mixins: [MescrollMixin],
data() {
return {
foodOptions: [],
actionOptions: [],
indicationOptions: [],
action: "",
food: "",
indications: "",
keyword: "",
mescroll: null,
downOption: {
//下拉刷新
use: true,
auto: false
// 不自动加载 (mixin已处理第一个tab触发downCallback)
},
upOption: {
onScroll: false,
use: true,
// 是否启用上拉加载; 默认true
page: {
pae: 0,
// 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
size: 10
// 每页数据的数量,默认10
},
noMoreSize: 10,
// 配置列表的总数量要大于等于5条才显示'-- END --'的提示
textNoMore: "已经到底了",
empty: {
icon: "https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png",
tip: "暂无数据"
}
},
dataList: []
};
},
onShow() {
this.getDictByKey("sys_medicated_food");
this.getDictByKey("sys_medicated_food_action");
this.getDictByKey("sys_indication");
},
methods: {
getDictByKey(key) {
var data = { key };
getDictByKey(data).then(
(res) => {
if (res.code == 200) {
if (key == "sys_medicated_food") {
this.foodOptions = res.data;
}
if (key == "sys_medicated_food_action") {
this.actionOptions = res.data;
}
if (key == "sys_indication") {
this.indicationOptions = res.data;
}
}
},
(err) => {
}
);
},
doSearch() {
this.mescroll.resetUpScroll();
},
mescrollInit(mescroll) {
this.mescroll = mescroll;
},
/*下拉刷新的回调 */
downCallback(mescroll) {
mescroll.resetUpScroll();
},
upCallback(page2) {
var that = this;
var data = {
food: this.food,
action: this.action,
indications: this.indications,
keyword: this.keyword,
pageNum: page2.num,
pageSize: page2.size
};
getMedicatedFoodList(data).then((res) => {
if (res.code == 200) {
if (page2.num == 1) {
that.dataList = res.data.list;
} else {
that.dataList = that.dataList.concat(res.data.list);
}
that.mescroll.endBySize(res.data.list.length, res.data.total);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
that.dataList = null;
that.mescroll.endErr();
}
});
},
choseAction(item) {
this.action = item.dictLabel;
this.mescroll.resetUpScroll();
},
choseFood(item) {
this.food = item.dictLabel;
this.mescroll.resetUpScroll();
},
choseIndications(item) {
this.indications = item.dictLabel;
this.mescroll.resetUpScroll();
},
// 查看详情
showDetail(item) {
uni.navigateTo({
url: "./medicatedFoodDetails?id=" + item.id
});
}
}
};
function _sfc_render$1M(_ctx, _cache, $props, $setup, $data, $options) {
const _component_mescroll_body = resolveEasycom(vue.resolveDynamicComponent("mescroll-body"), __easycom_1$6);
return vue.openBlock(), vue.createElementBlock("view", null, [
vue.createElementVNode("view", { class: "top-content" }, [
vue.createCommentVNode(" 搜索框 "),
vue.createElementVNode("view", { class: "search-cont" }, [
vue.createElementVNode("view", { class: "inner" }, [
vue.createElementVNode("image", {
class: "icon-search",
src: "/static/images/icon_search.png",
mode: ""
}),
vue.withDirectives(vue.createElementVNode(
"input",
{
type: "text",
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.keyword = $event),
placeholder: "输入关键字搜索",
"confirm-type": "search",
onConfirm: _cache[1] || (_cache[1] = (...args) => $options.doSearch && $options.doSearch(...args)),
"placeholder-style": "font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;"
},
null,
544
/* NEED_HYDRATION, NEED_PATCH */
), [
[vue.vModelText, $data.keyword]
])
])
]),
vue.createElementVNode("view", { class: "cate-list" }, [
vue.createCommentVNode(" 关键字列表 "),
vue.createElementVNode("scroll-view", { "scroll-x": "true" }, [
vue.createElementVNode("view", { class: "inner" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.foodOptions, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
key: index2,
class: vue.normalizeClass($data.food == item.dictLabel ? "item active" : "item"),
onClick: ($event) => $options.choseFood(item)
}, vue.toDisplayString(item.dictLabel), 11, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
))
])
]),
vue.createElementVNode("scroll-view", { "scroll-x": "true" }, [
vue.createElementVNode("view", { class: "inner" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.actionOptions, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
key: index2,
class: vue.normalizeClass($data.action == item.dictLabel ? "item active" : "item"),
onClick: ($event) => $options.choseAction(item)
}, vue.toDisplayString(item.dictLabel), 11, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
))
])
]),
vue.createElementVNode("scroll-view", { "scroll-x": "true" }, [
vue.createElementVNode("view", { class: "inner" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.indicationOptions, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
key: index2,
class: vue.normalizeClass($data.indications == item.dictLabel ? "item active" : "item"),
onClick: ($event) => $options.choseIndications(item)
}, vue.toDisplayString(item.dictLabel), 11, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
))
])
])
])
]),
vue.createVNode(_component_mescroll_body, {
top: "376rpx",
ref: "mescrollRef",
onInit: $options.mescrollInit,
onDown: $options.downCallback,
onUp: $options.upCallback,
down: $data.downOption,
up: $data.upOption
}, {
default: vue.withCtx(() => [
vue.createElementVNode("view", { class: "article-list" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.dataList, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "item",
key: index2,
onClick: ($event) => $options.showDetail(item)
}, [
vue.createElementVNode("view", { class: "top" }, [
vue.createElementVNode("image", {
src: item.imgUrl,
mode: "aspectFill"
}, null, 8, ["src"])
]),
vue.createElementVNode(
"view",
{ class: "title ellipsis" },
vue.toDisplayString(item.foodName),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "desc ellipsis" },
vue.toDisplayString(item.actionTitle),
1
/* TEXT */
)
], 8, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
))
])
]),
_: 1
/* STABLE */
}, 8, ["onInit", "onDown", "onUp", "down", "up"])
]);
}
const Pages_indexMedicatedFoodList = /* @__PURE__ */ _export_sfc(_sfc_main$1N, [["render", _sfc_render$1M], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/medicatedFoodList.vue"]]);
const _sfc_main$1M = {
data() {
return {
advs: [],
advImgs: [],
item: {}
};
},
onLoad(option) {
this.id = option.id;
},
onShow() {
this.getAdvList();
this.getMedicatedFoodById();
},
onShareAppMessage(res) {
if (this.utils.isLogin()) {
return {
title: this.item.foodName,
path: "/pages_index/medicatedFoodDetails?id=" + this.id,
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
//分享到朋友圈
onShareTimeline(res) {
if (this.utils.isLogin()) {
return {
title: this.item.title,
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
methods: {
handleAdvClick(index2) {
var ad = this.advs[index2];
formatAppLog("log", "at pages_index/medicatedFoodDetails.vue:73", ad.advUrl);
if (ad.showType == 1) {
uni.setStorageSync("url", ad.advUrl);
uni.navigateTo({
url: "h5"
});
} else if (ad.showType == 2) {
uni.navigateTo({
url: ad.advUrl
});
} else if (ad.showType == 3) {
uni.setStorageSync("content", ad.content);
uni.navigateTo({
url: "content"
});
}
},
getAdvList() {
var that = this;
var data = {
advType: 4
};
getAdvList(data).then((res) => {
if (res.code == 200) {
that.advImgs = [];
that.advs = [];
res.data.forEach(function(element) {
if (element.imageUrl != null && element.imageUrl != "") {
that.advs.push(element);
that.advImgs.push(element.imageUrl);
}
});
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
getMedicatedFoodById() {
let data = { id: this.id };
getMedicatedFoodById(data).then(
(res) => {
if (res.code == 200) {
this.item = res.data;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
}
}
};
function _sfc_render$1L(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_swiper = resolveEasycom(vue.resolveDynamicComponent("u-swiper"), __easycom_0$e);
return $data.item != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "content"
}, [
vue.createElementVNode("view", { class: "image" }, [
vue.createElementVNode("image", {
mode: "aspectFill",
src: $data.item.imgUrl
}, null, 8, ["src"])
]),
vue.createElementVNode("view", { class: "detail-cont" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString($data.item.foodName),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "title-py" },
vue.toDisplayString($data.item.pinyin),
1
/* TEXT */
)
]),
vue.createElementVNode(
"view",
{ class: "desc" },
vue.toDisplayString($data.item.actionTitle),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "line-h" }),
vue.createElementVNode("view", {
class: "content",
innerHTML: $data.item.descs
}, null, 8, ["innerHTML"])
]),
vue.createElementVNode("view", { class: "ad" }, [
vue.createVNode(_component_u_swiper, {
list: $data.advImgs,
indicator: "",
indicatorMode: "line",
circular: "",
onClick: $options.handleAdvClick
}, null, 8, ["list", "onClick"])
])
])) : vue.createCommentVNode("v-if", true);
}
const Pages_indexMedicatedFoodDetails = /* @__PURE__ */ _export_sfc(_sfc_main$1M, [["render", _sfc_render$1L], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/medicatedFoodDetails.vue"]]);
const _sfc_main$1L = {
mixins: [MescrollMixin],
data() {
return {
typeOptions: [],
questionsType: 0,
keyword: "",
mescroll: null,
downOption: {
//下拉刷新
use: true,
auto: false
// 不自动加载 (mixin已处理第一个tab触发downCallback)
},
upOption: {
onScroll: false,
use: true,
// 是否启用上拉加载; 默认true
page: {
pae: 0,
// 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
size: 10
// 每页数据的数量,默认10
},
noMoreSize: 10,
// 配置列表的总数量要大于等于5条才显示'-- END --'的提示
textNoMore: "已经到底了",
empty: {
icon: "https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png",
tip: "暂无数据"
}
},
dataList: []
};
},
onShow() {
this.getDictByKey("sys_questions_type");
},
methods: {
getDictByKey(key) {
var data = { key };
getDictByKey(data).then(
(res) => {
if (res.code == 200) {
if (key == "sys_questions_type") {
this.typeOptions = res.data;
}
}
},
(err) => {
}
);
},
doSearch() {
this.mescroll.resetUpScroll();
},
mescrollInit(mescroll) {
this.mescroll = mescroll;
},
/*下拉刷新的回调 */
downCallback(mescroll) {
mescroll.resetUpScroll();
},
upCallback(page2) {
var that = this;
var data = {
keyword: this.keyword,
questionsType: this.questionsType,
pageNum: page2.num,
pageSize: page2.size
};
getQuestionsList(data).then((res) => {
if (res.code == 200) {
if (page2.num == 1) {
that.dataList = res.data.list;
} else {
that.dataList = that.dataList.concat(res.data.list);
}
that.mescroll.endBySize(res.data.list.length, res.data.total);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
that.dataList = null;
that.mescroll.endErr();
}
});
},
// 关键词选择
choseType(item) {
this.questionsType = item.dictValue;
this.mescroll.resetUpScroll();
},
// 查看详情
showDetail(item) {
uni.navigateTo({
url: "./questionsDetails?id=" + item.id
});
}
}
};
function _sfc_render$1K(_ctx, _cache, $props, $setup, $data, $options) {
const _component_mescroll_body = resolveEasycom(vue.resolveDynamicComponent("mescroll-body"), __easycom_1$6);
return vue.openBlock(), vue.createElementBlock("view", null, [
vue.createElementVNode("view", { class: "top-content" }, [
vue.createCommentVNode(" 搜索框 "),
vue.createElementVNode("view", { class: "search-cont" }, [
vue.createElementVNode("view", { class: "inner" }, [
vue.createElementVNode("image", {
class: "icon-search",
src: "/static/images/icon_search.png",
mode: ""
}),
vue.withDirectives(vue.createElementVNode(
"input",
{
type: "text",
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.keyword = $event),
placeholder: "输入服务包搜索",
"confirm-type": "search",
onConfirm: _cache[1] || (_cache[1] = (...args) => $options.doSearch && $options.doSearch(...args)),
"placeholder-style": "font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;"
},
null,
544
/* NEED_HYDRATION, NEED_PATCH */
), [
[vue.vModelText, $data.keyword]
])
])
]),
vue.createElementVNode("view", { class: "cate-list" }, [
vue.createCommentVNode(" 关键字列表 "),
vue.createElementVNode("scroll-view", { "scroll-x": "true" }, [
vue.createElementVNode("view", { class: "inner" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.typeOptions, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
key: index2,
class: vue.normalizeClass($data.questionsType == item.dictValue ? "item active" : "item"),
onClick: ($event) => $options.choseType(item)
}, vue.toDisplayString(item.dictLabel), 11, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
))
])
])
])
]),
vue.createVNode(_component_mescroll_body, {
top: "192rpx",
ref: "mescrollRef",
onInit: $options.mescrollInit,
onDown: $options.downCallback,
onUp: $options.upCallback,
down: $data.downOption,
up: $data.upOption
}, {
default: vue.withCtx(() => [
vue.createElementVNode("view", { class: "article-list" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.dataList, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "item",
key: index2,
onClick: ($event) => $options.showDetail(item)
}, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode(
"view",
{ class: "title ellipsis2" },
vue.toDisplayString(item.title),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "info-box" }, [
vue.createElementVNode("view", { class: "readers" }, [
vue.createElementVNode("view", { class: "readings" }, [
vue.createElementVNode("image", {
class: "eye",
src: "/static/images/eye.png"
}),
vue.createElementVNode(
"text",
{ class: "num" },
vue.toDisplayString(item.views),
1
/* TEXT */
)
])
]),
vue.createElementVNode(
"view",
{ class: "time" },
vue.toDisplayString(item.createTime),
1
/* TEXT */
)
])
])
], 8, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
))
])
]),
_: 1
/* STABLE */
}, 8, ["onInit", "onDown", "onUp", "down", "up"])
]);
}
const Pages_indexQuestionsList = /* @__PURE__ */ _export_sfc(_sfc_main$1L, [["render", _sfc_render$1K], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/questionsList.vue"]]);
const _sfc_main$1K = {
data() {
return {
advs: [],
advImgs: [],
id: null,
item: {}
};
},
onLoad(option) {
this.id = option.id;
},
onShow() {
this.getAdvList();
this.getQuestionsById();
},
onShareAppMessage(res) {
if (this.$isLogin()) {
return {
title: this.item.vesselName,
path: "/pages_index/questionsDetails?id=" + this.id,
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
//分享到朋友圈
onShareTimeline(res) {
if (this.utils.isLogin()) {
return {
title: this.item.title,
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
}
},
methods: {
handleAdvClick(index2) {
var ad = this.advs[index2];
formatAppLog("log", "at pages_index/questionsDetails.vue:70", ad.advUrl);
if (ad.showType == 1) {
uni.setStorageSync("url", ad.advUrl);
uni.navigateTo({
url: "h5"
});
} else if (ad.showType == 2) {
uni.navigateTo({
url: ad.advUrl
});
} else if (ad.showType == 3) {
uni.setStorageSync("content", ad.content);
uni.navigateTo({
url: "content"
});
}
},
getAdvList() {
var that = this;
var data = {
advType: 6
};
getAdvList(data).then((res) => {
if (res.code == 200) {
that.advImgs = [];
that.advs = [];
res.data.forEach(function(element) {
if (element.imageUrl != null && element.imageUrl != "") {
that.advs.push(element);
that.advImgs.push(element.imageUrl);
}
});
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
getQuestionsById() {
let data = { id: this.id };
getQuestionsById(data).then(
(res) => {
if (res.code == 200) {
this.item = res.data;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
}
}
};
function _sfc_render$1J(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_swiper = resolveEasycom(vue.resolveDynamicComponent("u-swiper"), __easycom_0$e);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "detail-cont" }, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString($data.item.title),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "info" }, [
vue.createElementVNode(
"view",
{ class: "reads" },
"阅读数:" + vue.toDisplayString($data.item.views),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "time" },
vue.toDisplayString($data.item.createTime),
1
/* TEXT */
)
]),
vue.createCommentVNode(" 正文 "),
vue.createElementVNode("view", { class: "full-text" }, [
vue.createElementVNode("view", {
innerHTML: $data.item.answers
}, null, 8, ["innerHTML"])
])
]),
vue.createElementVNode("view", { class: "ad" }, [
vue.createVNode(_component_u_swiper, {
list: $data.advImgs,
indicator: "",
indicatorMode: "line",
circular: "",
onClick: $options.handleAdvClick
}, null, 8, ["list", "onClick"])
])
]);
}
const Pages_indexQuestionsDetails = /* @__PURE__ */ _export_sfc(_sfc_main$1K, [["render", _sfc_render$1J], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/questionsDetails.vue"]]);
const _sfc_main$1J = {
components: { Menu },
mixins: [MescrollMixin],
// 使用mixin
data() {
return {
top: null,
cates: [],
diseaseType: 0,
keyword: "",
mescroll: null,
downOption: {
//下拉刷新
use: true,
auto: false
// 不自动加载 (mixin已处理第一个tab触发downCallback)
},
upOption: {
onScroll: false,
use: true,
// 是否启用上拉加载; 默认true
page: {
pae: 0,
// 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
size: 10
// 每页数据的数量,默认10
},
noMoreSize: 10,
// 配置列表的总数量要大于等于5条才显示'-- END --'的提示
textNoMore: "已经到底了",
empty: {
icon: "https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png",
tip: "暂无数据"
}
},
dataList: []
};
},
onLoad() {
},
onShow() {
this.getPackagCateList(1);
},
methods: {
menuClick(item) {
this.diseaseType = item.cateId;
this.mescroll.resetUpScroll();
},
getPackagCateList(type2) {
var data = { type: type2 };
var that = this;
getPackagCateList(data).then(
(res) => {
if (res.code == 200) {
this.cates = res.data;
var query = uni.createSelectorQuery().in(that);
setTimeout(function() {
query.select(".top-content").boundingClientRect((data2) => {
if (data2) {
formatAppLog("log", "at pages_index/packageList.vue:99", "View height:", data2.height + "px");
that.top = data2.height + "px";
}
}).exec();
}, 500);
}
},
(err) => {
}
);
},
// 关键词选择
choseType(item) {
this.diseaseType = item.cateCode;
this.mescroll.resetUpScroll();
},
doSearch() {
this.mescroll.resetUpScroll();
},
navTo(url2) {
uni.navigateTo({
url: url2
});
},
mescrollInit(mescroll) {
this.mescroll = mescroll;
},
/*下拉刷新的回调 */
downCallback() {
this.mescroll.resetUpScroll();
},
/*上拉加载的回调*/
upCallback(page2) {
var that = this;
var data = {
isShow: 1,
diseaseType: this.diseaseType,
keyword: this.keyword,
pageNum: page2.num,
pageSize: page2.size
};
getPackageList(data).then((res) => {
if (res.code == 200) {
if (page2.num == 1) {
that.dataList = res.data.list;
} else {
that.dataList = that.dataList.concat(res.data.list);
}
that.mescroll.endBySize(res.data.list.length, res.data.total);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
that.dataList = null;
that.mescroll.endErr();
}
});
}
}
};
function _sfc_render$1I(_ctx, _cache, $props, $setup, $data, $options) {
const _component_Menu = vue.resolveComponent("Menu");
const _component_mescroll_body = resolveEasycom(vue.resolveDynamicComponent("mescroll-body"), __easycom_1$6);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "top-content" }, [
vue.createCommentVNode(" 搜索框 "),
vue.createElementVNode("view", { class: "search-cont" }, [
vue.createElementVNode("view", { class: "inner" }, [
vue.createElementVNode("image", {
class: "icon-search",
src: "/static/images/icon_search.png",
mode: ""
}),
vue.withDirectives(vue.createElementVNode(
"input",
{
type: "text",
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.keyword = $event),
placeholder: "输入关键字搜索",
"confirm-type": "search",
onConfirm: _cache[1] || (_cache[1] = (...args) => $options.doSearch && $options.doSearch(...args)),
"placeholder-style": "font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;"
},
null,
544
/* NEED_HYDRATION, NEED_PATCH */
), [
[vue.vModelText, $data.keyword]
])
])
]),
vue.createElementVNode("view", { class: "cate-list" }, [
$data.cates.length > 0 ? (vue.openBlock(), vue.createBlock(_component_Menu, {
key: 0,
list: $data.cates,
onMenuClick: $options.menuClick,
style: { "width": "100%" }
}, null, 8, ["list", "onMenuClick"])) : vue.createCommentVNode("v-if", true),
vue.createCommentVNode(`
\r
{{item.cateName}}
`)
])
]),
$data.top != null ? (vue.openBlock(), vue.createBlock(_component_mescroll_body, {
key: 0,
top: $data.top,
bottom: "0",
ref: "mescrollRef",
onInit: $options.mescrollInit,
down: $data.downOption,
up: $data.upOption,
onDown: $options.downCallback,
onUp: $options.upCallback
}, {
default: vue.withCtx(() => [
vue.createElementVNode("view", { class: "package-box" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.dataList, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "item",
onClick: ($event) => $options.navTo("/pages_index/packageDetails?packageId=" + item.packageId)
}, [
vue.createElementVNode("view", { class: "top" }, [
vue.createElementVNode("image", {
src: item.imgUrl
}, null, 8, ["src"])
]),
vue.createElementVNode("view", { class: "bottom" }, [
vue.createElementVNode(
"view",
{ class: "title ellipsis2" },
vue.toDisplayString(item.packageName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "price-box" }, [
vue.createElementVNode(
"view",
{ class: "price" },
"¥" + vue.toDisplayString(item.price.toFixed(2)) + "元/日",
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "count" },
vue.toDisplayString(item.sales) + "人已购",
1
/* TEXT */
)
])
])
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
]),
_: 1
/* STABLE */
}, 8, ["top", "onInit", "down", "up", "onDown", "onUp"])) : vue.createCommentVNode("v-if", true)
]);
}
const Pages_indexPackageList = /* @__PURE__ */ _export_sfc(_sfc_main$1J, [["render", _sfc_render$1I], ["__scopeId", "data-v-09c8d24b"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/packageList.vue"]]);
let request$a = new Request$1().http;
function create$1(data) {
return request$a("/app/packageOrder/create", data, "POST", "application/json;charset=UTF-8");
}
function compute$2(data) {
return request$a("/app/packageOrder/compute", data, "POST", "application/json;charset=UTF-8");
}
function pay$2(data) {
return request$a("/app/packageOrder/pay", data, "POST", "application/json;charset=UTF-8");
}
function payment$2(data) {
return request$a("/app/packageOrder/payment", data, "POST", "application/json;charset=UTF-8");
}
function getPackageOrderById(data) {
return request$a("/app/packageOrder/getPackageOrderById", data, "GET");
}
function getMyPackageOrderList(data) {
return request$a("/app/packageOrder/getMyPackageOrderList", data, "GET");
}
function getCompanyUserPackageOrderList(data) {
return request$a("/app/packageOrder/getCompanyUserPackageOrderList", data, "GET");
}
function getSharePackageOrderById(data) {
return request$a("/app/packageOrder/getSharePackageOrderById", data, "GET");
}
function getCompanyUserPackageOrderById(data) {
return request$a("/app/packageOrder/getCompanyUserPackageOrderById", data, "GET");
}
function cancelOrder$1(data) {
return request$a("/app/packageOrder/cancel", data, "POST", "application/json;charset=UTF-8");
}
let request$9 = new Request$1().http;
function login(data) {
return request$9("/app/companyUser/login", data, "POST", "application/json;charset=UTF-8");
}
function getUserInfo(data) {
return request$9("/app/companyUser/getUserInfo", data, "GET", "application/json;charset=UTF-8");
}
function bindCompanyUser(data) {
return request$9("/app/companyUser/bindCompanyUser", data, "POST", "application/json;charset=UTF-8");
}
const _sfc_main$1I = {
data() {
return {
// isDrug:0,
storeName: "",
displayText: "查看更多",
displayMore: 0,
imgs: [],
activeImg: 1,
doctorShow: false,
doctors: [],
products: [],
packageId: null,
item: {},
describe: null,
doctorId: null,
doctorPageNum: 1,
doctorLastPage: false,
doctorTotal: 0,
companyUserId: null,
companyId: null
};
},
onLoad(option) {
this.packageId = option.packageId;
if (!this.$isEmpty(option.companyId)) {
this.companyId = option.companyId;
}
if (!this.$isEmpty(option.companyUserId)) {
this.companyUserId = option.companyUserId;
}
},
onShow() {
this.$isLogin().then(
(res) => {
if (res) {
let data = { companyUserId: this.companyUserId };
bindCompanyUser(data).then(
(res2) => {
if (res2.code == 200)
;
},
(rej) => {
}
);
}
}
);
this.getPackageById();
this.getPackageDoctorList();
},
onShareAppMessage(res) {
return {
title: this.item.packageName,
path: "/pages_index/packageDetails?packageId=" + this.packageId + "&companyId=" + this.companyId + "&companyUserId=" + this.companyUserId,
imageUrl: this.item.imgUrl
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
},
methods: {
showMore() {
this.displayMore = this.displayMore == 1 ? 0 : 1;
this.displayText = this.displayMore == 1 ? "收起" : "查看更多";
formatAppLog("log", "at pages_index/packageDetails.vue:249", this.displayText);
},
swiperChange(event) {
this.activeImg = event.detail.current + 1;
},
handleDoctorClick(item) {
this.doctorShow = false;
this.doctorId = item.doctorId;
this.doSubmit();
},
lower(event) {
if (this.doctorTotal > this.doctors.length) {
this.doctorPageNum++;
this.getPackageDoctorList();
}
},
doSubmit() {
var that = this;
this.$isLogin().then(
(res) => {
if (res) {
that.submit();
} else {
uni.navigateTo({
url: "/pages/auth/login"
});
}
}
);
},
submit() {
if (this.doctors.length > 0 && this.doctorId == null) {
this.doctorShow = true;
} else {
uni.navigateTo({
url: "/pages_index/packageForm?packageId=" + this.packageId + "&doctorId=" + this.doctorId + "&companyId=" + this.companyId + "&companyUserId=" + this.companyUserId
});
}
},
createOrder() {
uni.showLoading({
title: "处理中..."
});
var data = {
companyId: this.companyId,
companyUserId: this.companyUserId,
packageId: this.packageId,
doctorId: this.doctorId
};
create$1(data).then((res) => {
uni.hideLoading();
if (res.code == 200) {
uni.navigateTo({
url: "/pages_order/packageOrderPay?orderId=" + res.order.orderId
});
} else {
uni.showToast({
icon: "none",
title: res.msg
});
}
});
},
doctorOpen() {
this.doctorShow = true;
},
doctorClose() {
this.doctorShow = false;
},
showImg() {
uni.previewImage({
urls: this.imgs,
current: this.imgs[0]
});
},
getPackageDoctorList() {
if (this.doctorLastPage) {
return;
}
var data = {
packageId: this.packageId,
pageNum: this.doctorPageNum,
pageSize: 10
};
var that = this;
getPackageDoctorList(data).then(
(res) => {
if (res.code == 200) {
if (this.doctorPageNum == 0) {
that.doctors = res.data.list;
} else {
that.doctors = that.doctors.concat(res.data.list);
}
this.doctorLastPage = res.data.isLastPage;
this.doctorTotal = res.data.total;
formatAppLog("log", "at pages_index/packageDetails.vue:360", that.doctors);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
},
getPackageById() {
let data = { packageId: this.packageId };
getPackageById(data).then(
(res) => {
if (res.code == 200) {
this.item = res.data;
this.storeName = res.storeName;
if (res.data.images != null) {
this.imgs = res.data.images.split(",");
} else {
this.activeImg = 0;
}
this.describe = JSON.parse(this.item.describeJson);
if (this.item.productJson != null) {
this.products = JSON.parse(this.item.productJson);
}
formatAppLog("log", "at pages_index/packageDetails.vue:397", this.imgs);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
}
}
};
function _sfc_render$1H(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_popup = resolveEasycom(vue.resolveDynamicComponent("u-popup"), __easycom_2$3);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createCommentVNode(' \r\n \r\n '),
vue.createElementVNode("view", { class: "cont-box" }, [
vue.createElementVNode("view", {
class: "goods-banner",
onClick: _cache[1] || (_cache[1] = ($event) => $options.showImg())
}, [
vue.createElementVNode(
"swiper",
{
class: "swiper",
"indicator-dots": false,
circular: true,
autoplay: true,
interval: 3e3,
duration: 1e3,
"indicator-color": "rgba(255, 255, 255, 0.6)",
"indicator-active-color": "#ffffff",
onChange: _cache[0] || (_cache[0] = (...args) => $options.swiperChange && $options.swiperChange(...args))
},
[
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.imgs, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("swiper-item", {
class: "swiper-item",
key: index2
}, [
vue.createElementVNode("image", {
src: item,
mode: "aspectFit"
}, null, 8, ["src"])
]);
}),
128
/* KEYED_FRAGMENT */
))
],
32
/* NEED_HYDRATION */
),
vue.createCommentVNode(" 数量 "),
vue.createElementVNode(
"view",
{ class: "num-box" },
vue.toDisplayString($data.activeImg) + "/" + vue.toDisplayString($data.imgs.length),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "package-box" }, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString($data.item.packageName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "desc" }, [
$data.item.cycle > 0 ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: "cycle"
},
"用药周期" + vue.toDisplayString($data.item.cycle) + "天",
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true),
$data.item.duration > 0 ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 1,
class: "duration"
},
"签约时长" + vue.toDisplayString($data.item.duration) + "天",
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true)
]),
vue.createElementVNode("view", { class: "num-box" }, [
vue.createElementVNode("view", { class: "price-box" }, [
$data.item != null ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: "price"
},
"¥" + vue.toDisplayString($data.item.price.toFixed(2)) + "元/日",
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true),
$data.item != null && $data.item.packageSubType == 1 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "price"
}, "咨询包")) : vue.createCommentVNode("v-if", true),
$data.item != null && $data.item.packageSubType == 2 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 2,
class: "price"
}, "治疗包")) : vue.createCommentVNode("v-if", true),
$data.item != null && $data.item.packageSubType == 3 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 3,
class: "price"
}, "产品包")) : vue.createCommentVNode("v-if", true)
]),
vue.createElementVNode(
"view",
{ class: "count" },
vue.toDisplayString($data.item.sales) + "人已购",
1
/* TEXT */
)
])
]),
$data.products.length > 0 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "drug-box"
}, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "产品列表")
]),
vue.createElementVNode("view", { class: "drug-list" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.products, (product, index2) => {
return vue.openBlock(), vue.createElementBlock("view", { class: "drug-item" }, [
($data.displayMore == 0 ? index2 < 2 : true) ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "drug"
}, [
vue.createElementVNode("view", { class: "img-box" }, [
vue.createElementVNode("image", {
src: product.image,
mode: "aspectFill"
}, null, 8, ["src"])
]),
vue.createElementVNode("view", { class: "drug-info" }, [
vue.createElementVNode("view", null, [
vue.createElementVNode(
"view",
{ class: "name-box ellipsis2" },
vue.toDisplayString(product.productName),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "spec" },
vue.toDisplayString(product.sku),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "num-box" }, [
vue.createElementVNode(
"view",
{ class: "use" },
vue.toDisplayString(product.usageMethod),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "price" }, [
vue.createCommentVNode(' ¥\r\n {{product.price.toFixed(2)}} ')
]),
vue.createCommentVNode(' x{{product.count}} ')
])
])
])) : vue.createCommentVNode("v-if", true)
]);
}),
256
/* UNKEYED_FRAGMENT */
))
]),
$data.products.length > 2 ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: "display-more",
onClick: _cache[2] || (_cache[2] = ($event) => $options.showMore())
},
vue.toDisplayString($data.displayText),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true),
vue.createElementVNode("view", { class: "tip" }, [
vue.createElementVNode("image", {
class: "img",
src: "/static/images/dui.png"
}),
vue.createElementVNode(
"view",
{ class: "text" },
"本疗法所包含药品由" + vue.toDisplayString($data.storeName) + "配送",
1
/* TEXT */
)
])
])) : vue.createCommentVNode("v-if", true),
$data.describe.use != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "desc-box"
}, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "功能")
]),
$data.describe != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "desc",
innerHTML: $data.describe.use
}, null, 8, ["innerHTML"])) : vue.createCommentVNode("v-if", true)
])) : vue.createCommentVNode("v-if", true),
$data.item.indication != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 2,
class: "desc-box"
}, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "主治")
]),
$data.item != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "desc",
innerHTML: $data.item.indication
}, null, 8, ["innerHTML"])) : vue.createCommentVNode("v-if", true)
])) : vue.createCommentVNode("v-if", true),
$data.describe.usageMethod != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 3,
class: "desc-box"
}, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "服用/使用方式")
]),
vue.createElementVNode("view", {
class: "desc",
innerHTML: $data.describe.usageMethod
}, null, 8, ["innerHTML"])
])) : vue.createCommentVNode("v-if", true),
$data.describe.forPeople != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 4,
class: "desc-box"
}, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "适宜人群")
]),
vue.createElementVNode("view", {
class: "desc",
innerHTML: $data.describe.forPeople
}, null, 8, ["innerHTML"])
])) : vue.createCommentVNode("v-if", true),
$data.describe.tabooPeople != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 5,
class: "desc-box"
}, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "禁忌人群")
]),
vue.createElementVNode("view", {
class: "desc",
innerHTML: $data.describe.tabooPeople
}, null, 8, ["innerHTML"])
])) : vue.createCommentVNode("v-if", true),
$data.item.explain != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 6,
class: "desc-box"
}, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "方解/搭配优势")
]),
vue.createElementVNode("view", {
class: "desc",
innerHTML: $data.item.explain
}, null, 8, ["innerHTML"])
])) : vue.createCommentVNode("v-if", true),
vue.createElementVNode("view", { class: "desc-box" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "套餐描述")
]),
vue.createElementVNode("view", {
class: "html",
innerHTML: $data.item.desc
}, null, 8, ["innerHTML"])
])
]),
vue.createElementVNode("view", { class: "btn-foot" }, [
vue.createElementVNode("view", { class: "p-price-box" }, [
vue.createElementVNode("view", { class: "p-name" }, "¥"),
$data.item != null ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: "p-price"
},
vue.toDisplayString($data.item.totalPrice.toFixed(2)),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true)
]),
vue.createElementVNode("view", { class: "btn-box" }, [
vue.createElementVNode("view", {
class: "btn buy",
onClick: _cache[3] || (_cache[3] = ($event) => $options.doSubmit())
}, "提交需求")
])
]),
vue.createVNode(_component_u_popup, {
bgColor: "#f6f6f6",
round: 10,
mode: "bottom",
show: $data.doctorShow,
onOpen: _cache[5] || (_cache[5] = ($event) => $options.doctorOpen()),
onClose: _cache[6] || (_cache[6] = ($event) => $options.doctorClose())
}, {
default: vue.withCtx(() => [
vue.createElementVNode("view", { class: "doctors" }, [
vue.createElementVNode(
"scroll-view",
{
class: "scroll-list",
"scroll-y": "true",
onScrolltolower: _cache[4] || (_cache[4] = (...args) => $options.lower && $options.lower(...args))
},
[
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.doctors, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "doctor",
onClick: ($event) => _ctx.navTo("/pages_doctor/doctorDetails?doctorId=" + item.doctorId)
}, [
vue.createElementVNode("view", { class: "item" }, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode("image", {
mode: "aspectFill",
class: "doc-img",
src: item.avatar
}, null, 8, ["src"]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("view", { class: "doc-box" }, [
vue.createElementVNode(
"view",
{ class: "doc-name" },
vue.toDisplayString(item.doctorName),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "doc-position" },
vue.toDisplayString(item.position),
1
/* TEXT */
)
]),
vue.createElementVNode(
"view",
{ class: "hospital" },
vue.toDisplayString(item.hospitalName) + " " + vue.toDisplayString(item.deptName),
1
/* TEXT */
)
])
]),
vue.createElementVNode("view", {
class: "btn",
onClick: ($event) => $options.handleDoctorClick(item)
}, "选择", 8, ["onClick"])
])
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
],
32
/* NEED_HYDRATION */
)
])
]),
_: 1
/* STABLE */
}, 8, ["show"])
]);
}
const Pages_indexPackageDetails = /* @__PURE__ */ _export_sfc(_sfc_main$1I, [["render", _sfc_render$1H], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/packageDetails.vue"]]);
const _sfc_main$1H = {
data() {
return {
content: null,
show: false,
scrollTop: 0,
//滚动条位置
patient: null,
items: [
{
title: "您是否已在线下就诊,且对所购买的药品无过敏或不良反应?",
options: [
{ name: "是,我线下就诊过", value: 1, color: "green" },
{ name: "无,从未就诊", value: 0, color: "red" }
]
},
{
title: "您是否已详细阅读药物说明,确认自己符合药物适用人群,并了解用药方法、用药禁忌等信息?",
options: [
{ name: "是,我已充分了解", value: 1, color: "green" },
{ name: "否,未阅读", value: 0, color: "red" }
]
}
],
msgs: [],
index: 0,
item: null,
notice: [
{ title: "好的。我将根据您提交的复诊信息开具处方,请详细阅读药品说明书,遵医嘱用药。" },
{ title: "您存在用药禁忌证,目前不推荐购买此套餐包。建议您尽早就医,在医生指导下采取针对性的治疗措施!在改善相关禁忌证后,也可以再次咨询,重新评估是否可以使用该套餐包。" }
],
packageId: null,
doctorId: null,
isComplete: 0,
companyUserId: null,
companyId: null
};
},
onLoad(option) {
this.packageId = option.packageId;
this.doctorId = option.doctorId;
if (!this.$isEmpty(option.companyId)) {
this.companyId = option.companyId;
}
if (!this.$isEmpty(option.companyUserId)) {
this.companyUserId = option.companyUserId;
}
var that = this;
uni.$on("refreshOrderPatient", (res) => {
that.patient = res;
});
this.item = this.items[0];
this.addMsg(1, this.item.title);
},
onShow() {
},
methods: {
close() {
this.show = false;
},
confirm() {
if (this.isComplete == 1) {
this.submit();
} else {
uni.navigateBack();
}
},
addMsg(type2, content) {
var msg = { type: type2, content };
this.msgs.push(msg);
var that = this;
uni.createSelectorQuery().select(".msgs").boundingClientRect((res) => {
const scrollH = res.height;
that.scrollTop = scrollH;
formatAppLog("log", "at pages_index/packageForm.vue:150", that.scrollTop);
}).exec();
},
optionClick(item, option) {
if (this.patient == null) {
uni.showToast({
icon: "none",
title: "请选择就诊人"
});
return;
}
if (option.value == 0) {
this.content = this.notice[1].title;
this.show = true;
this.isComplete = 0;
return;
}
item.option = option.name;
formatAppLog("log", "at pages_index/packageForm.vue:172", item.option);
this.addMsg(2, option.name);
this.index++;
if (this.index <= this.items.length - 1) {
this.item = this.items[this.index];
this.addMsg(1, this.item.title);
} else {
this.content = this.notice[0].title;
this.show = true;
this.isComplete = 1;
return;
}
},
addPatient() {
uni.navigateTo({
url: "/pages_user/patient"
});
},
submit() {
uni.showLoading({
title: "处理中..."
});
var data = {
companyId: this.companyId,
companyUserId: this.companyUserId,
patientId: this.patient.patientId,
patientJson: JSON.stringify(this.patient),
packageId: this.packageId,
doctorId: this.doctorId,
formJson: JSON.stringify(this.items)
};
create$1(data).then((res) => {
uni.hideLoading();
if (res.code == 200) {
var temps = ["jARl4BpoBkRu-2MxPMkQVhIfGMG0V9qW-X3V_7NtEOU"];
uni.requestSubscribeMessage({
tmplIds: temps,
success(e) {
setTimeout(function() {
uni.navigateTo({
url: "/pages_order/packageOrderPay?orderId=" + res.order.orderId
});
}, 200);
},
fail(e) {
setTimeout(function() {
uni.navigateTo({
url: "/pages_order/packageOrderPay?orderId=" + res.order.orderId
});
}, 200);
}
});
} else {
uni.showToast({
icon: "none",
title: res.msg
});
}
});
}
}
};
function _sfc_render$1G(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_modal = resolveEasycom(vue.resolveDynamicComponent("u-modal"), __easycom_0$9);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "patient-cont" }, [
vue.createElementVNode("view", { class: "chose-patient" }, [
$data.patient == null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "patient-box",
onClick: _cache[0] || (_cache[0] = ($event) => $options.addPatient())
}, [
vue.createElementVNode("view", { class: "patient-item" }, [
vue.createElementVNode("view", { class: "patient-tip" }, "*"),
vue.createElementVNode("view", { class: "patient-title" }, "选择就诊人")
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("image", {
src: "/static/images/arrow_gray.png",
mode: ""
})
])
])) : vue.createCommentVNode("v-if", true),
$data.patient != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "patient",
onClick: _cache[1] || (_cache[1] = ($event) => $options.addPatient())
}, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode(
"view",
{ class: "name" },
vue.toDisplayString($data.patient.patientName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "info" }, [
$data.patient.sex == 1 ? (vue.openBlock(), vue.createElementBlock("text", {
key: 0,
class: "text"
}, "男")) : vue.createCommentVNode("v-if", true),
$data.patient.sex == 2 ? (vue.openBlock(), vue.createElementBlock("text", {
key: 1,
class: "text"
}, "女")) : vue.createCommentVNode("v-if", true),
vue.createElementVNode(
"text",
{ class: "text" },
vue.toDisplayString(_ctx.$getAge($data.patient.birthday)) + "岁",
1
/* TEXT */
),
vue.createElementVNode(
"text",
{ class: "text" },
vue.toDisplayString(_ctx.$parseIdCard($data.patient.idCard)),
1
/* TEXT */
)
])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("image", {
src: "/static/images/arrow_gray.png",
mode: ""
})
])
])) : vue.createCommentVNode("v-if", true)
])
]),
vue.createElementVNode("view", { class: "msg-cont" }, [
vue.createElementVNode("scroll-view", {
class: "msg-scroll",
"scroll-top": $data.scrollTop,
"scroll-y": "true",
"scroll-with-animation": true
}, [
vue.createElementVNode("view", { class: "msgs" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.msgs, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", { class: "msg-item" }, [
item.type == 1 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "left"
}, [
vue.createElementVNode("image", {
class: "img",
src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/be32b8d2ae9f497297d10327656bb43c.png"
}),
vue.createElementVNode(
"view",
{ class: "msg-content" },
vue.toDisplayString(item.content),
1
/* TEXT */
)
])) : vue.createCommentVNode("v-if", true),
item.type == 2 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "right"
}, [
vue.createElementVNode(
"view",
{ class: "msg-content" },
vue.toDisplayString(item.content),
1
/* TEXT */
),
vue.createElementVNode("image", {
class: "img",
src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/1d7eb0607a074892964dd32e8735e540.jpg"
})
])) : vue.createCommentVNode("v-if", true)
]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
], 8, ["scroll-top"])
]),
$data.item != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "option-cont"
}, [
vue.createElementVNode(
"view",
{ class: "option-title" },
vue.toDisplayString($data.item.title),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "options" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.item.options, (option, opIndex) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: vue.normalizeClass(option.color == "red" ? "option-item red" : "option-item green"),
onClick: ($event) => $options.optionClick($data.item, option)
}, vue.toDisplayString(option.name), 11, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
])) : vue.createCommentVNode("v-if", true),
vue.createVNode(_component_u_modal, {
onCancel: _cache[2] || (_cache[2] = ($event) => $options.close()),
onConfirm: _cache[3] || (_cache[3] = ($event) => $options.confirm()),
show: $data.show,
title: "温馨提示",
content: $data.content
}, null, 8, ["show", "content"])
]);
}
const Pages_indexPackageForm = /* @__PURE__ */ _export_sfc(_sfc_main$1H, [["render", _sfc_render$1G], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_index/packageForm.vue"]]);
const _sfc_main$1G = {
components: { Menu },
mixins: [MescrollMixin],
data() {
return {
top: null,
cates: [],
cateId: 0,
keyword: "",
mescroll: null,
downOption: {
//下拉刷新
use: true,
auto: false
// 不自动加载 (mixin已处理第一个tab触发downCallback)
},
upOption: {
onScroll: false,
use: true,
// 是否启用上拉加载; 默认true
page: {
pae: 0,
// 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
size: 10
// 每页数据的数量,默认10
},
noMoreSize: 10,
// 配置列表的总数量要大于等于5条才显示'-- END --'的提示
textNoMore: "已经到底了",
empty: {
icon: "https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png",
tip: "暂无数据"
}
},
dataList: []
};
},
onLoad() {
},
onShow() {
this.getDoctorArticleCateList();
},
methods: {
menuClick(item) {
this.cateId = item.cateId;
this.mescroll.resetUpScroll();
},
getDoctorArticleCateList() {
var that = this;
let data = {};
getDoctorArticleCateList(data).then(
(res) => {
if (res.code == 200) {
this.cates = res.data;
var query = uni.createSelectorQuery().in(that);
setTimeout(function() {
query.select(".top-content").boundingClientRect((data2) => {
if (data2) {
formatAppLog("log", "at pages_doctor/doctorArticleList.vue:114", "View height:", data2.height + "px");
that.top = data2.height + "px";
}
}).exec();
}, 500);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
},
doSearch() {
this.mescroll.resetUpScroll();
},
getArticleCateList() {
let data = {};
getArticleCateList(data).then(
(res) => {
if (res.code == 200) {
this.cates = res.data;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
},
mescrollInit(mescroll) {
this.mescroll = mescroll;
},
/*下拉刷新的回调 */
downCallback(mescroll) {
mescroll.resetUpScroll();
},
upCallback(page2) {
var that = this;
var data = {
keyword: this.keyword,
cateId: this.cateId,
pageNum: page2.num,
pageSize: page2.size
};
getDoctorArticleList(data).then((res) => {
if (res.code == 200) {
if (page2.num == 1) {
that.dataList = res.data.list;
} else {
that.dataList = that.dataList.concat(res.data.list);
}
that.mescroll.endBySize(res.data.list.length, res.data.total);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
that.dataList = null;
that.mescroll.endErr();
}
});
},
// 关键词选择
choseCate(item) {
this.cateId = item.cateId;
this.mescroll.resetUpScroll();
},
// 查看详情
showDetail(item) {
uni.navigateTo({
url: "./doctorArticleDetails?articleId=" + item.articleId
});
}
}
};
function _sfc_render$1F(_ctx, _cache, $props, $setup, $data, $options) {
const _component_Menu = vue.resolveComponent("Menu");
const _component_mescroll_body = resolveEasycom(vue.resolveDynamicComponent("mescroll-body"), __easycom_1$6);
return vue.openBlock(), vue.createElementBlock("view", null, [
vue.createElementVNode("view", { class: "top-content" }, [
vue.createCommentVNode(" 搜索框 "),
vue.createElementVNode("view", { class: "search-cont" }, [
vue.createElementVNode("view", { class: "inner" }, [
vue.createElementVNode("image", {
class: "icon-search",
src: "/static/images/icon_search.png",
mode: ""
}),
vue.withDirectives(vue.createElementVNode(
"input",
{
type: "text",
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.keyword = $event),
placeholder: "输入关键字搜索",
"confirm-type": "search",
onConfirm: _cache[1] || (_cache[1] = (...args) => $options.doSearch && $options.doSearch(...args)),
"placeholder-style": "font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;"
},
null,
544
/* NEED_HYDRATION, NEED_PATCH */
), [
[vue.vModelText, $data.keyword]
])
])
]),
vue.createElementVNode("view", { class: "cate-list" }, [
$data.cates.length > 0 ? (vue.openBlock(), vue.createBlock(_component_Menu, {
key: 0,
list: $data.cates,
onMenuClick: $options.menuClick,
style: { "width": "100%" }
}, null, 8, ["list", "onMenuClick"])) : vue.createCommentVNode("v-if", true),
vue.createCommentVNode(" 关键字列表 "),
vue.createCommentVNode(' '),
vue.createCommentVNode(` \r
\r
\r
{{item.cateName}} \r
\r
`),
vue.createCommentVNode(" ")
])
]),
$data.top != null ? (vue.openBlock(), vue.createBlock(_component_mescroll_body, {
key: 0,
top: $data.top,
ref: "mescrollRef",
onInit: $options.mescrollInit,
onDown: $options.downCallback,
onUp: $options.upCallback,
down: $data.downOption,
up: $data.upOption
}, {
default: vue.withCtx(() => [
vue.createElementVNode("view", { class: "article-list" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.dataList, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "item",
key: index2,
onClick: ($event) => $options.showDetail(item)
}, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode(
"view",
{ class: "title ellipsis2" },
vue.toDisplayString(item.title),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "info-box" }, [
vue.createElementVNode("view", { class: "readers" }, [
vue.createElementVNode("view", { class: "head-box" }, [
vue.createElementVNode("view", { class: "head" }, [
vue.createElementVNode("image", {
class: "eye",
mode: "aspectFill",
src: item.avatar
}, null, 8, ["src"])
])
]),
vue.createElementVNode("view", { class: "readings" }, [
vue.createElementVNode("image", {
class: "eye",
src: "/static/images/eye.png"
}),
vue.createElementVNode(
"text",
{ class: "num" },
vue.toDisplayString(item.views),
1
/* TEXT */
)
])
]),
vue.createElementVNode(
"view",
{ class: "time-box" },
vue.toDisplayString(item.createTime),
1
/* TEXT */
)
])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("image", {
src: item.imageUrl,
mode: "aspectFill"
}, null, 8, ["src"])
])
], 8, ["onClick"]);
}),
128
/* KEYED_FRAGMENT */
))
])
]),
_: 1
/* STABLE */
}, 8, ["top", "onInit", "onDown", "onUp", "down", "up"])) : vue.createCommentVNode("v-if", true)
]);
}
const Pages_doctorDoctorArticleList = /* @__PURE__ */ _export_sfc(_sfc_main$1G, [["render", _sfc_render$1F], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_doctor/doctorArticleList.vue"]]);
const _sfc_main$1F = {
data() {
return {
advs: [],
advImgs: [],
src: "",
articleId: null,
item: {}
};
},
onLoad(option) {
this.articleId = option.articleId;
},
onShow() {
this.getAdvList();
this.getDoctorArticleById();
},
//发送给朋友
onShareAppMessage(res) {
return {
title: this.item.title,
path: "/pages_doctor/doctorArticleDetails?articleId=" + this.articleId
};
},
//分享到朋友圈
onShareTimeline(res) {
return {
title: this.item.title,
query: "articleId=" + this.articleId
//页面参数
};
},
methods: {
handleAdvClick(index2) {
var ad = this.advs[index2];
formatAppLog("log", "at pages_doctor/doctorArticleDetails.vue:79", ad.advUrl);
if (ad.showType == 1) {
uni.setStorageSync("url", ad.advUrl);
uni.navigateTo({
url: "h5"
});
} else if (ad.showType == 2) {
uni.navigateTo({
url: ad.advUrl
});
} else if (ad.showType == 3) {
uni.setStorageSync("content", ad.content);
uni.navigateTo({
url: "content"
});
}
},
getAdvList() {
var that = this;
var data = {
advType: 10
};
getAdvList(data).then((res) => {
if (res.code == 200) {
that.advImgs = [];
that.advs = [];
res.data.forEach(function(element) {
if (element.imageUrl != null && element.imageUrl != "") {
that.advs.push(element);
that.advImgs.push(element.imageUrl);
}
});
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
videoErrorCallback: function(e) {
uni.showModal({
content: e.target.errMsg,
showCancel: false
});
},
navTo(url2) {
uni.navigateTo({
url: url2
});
},
getDoctorArticleById() {
let data = { articleId: this.articleId };
getDoctorArticleById(data).then(
(res) => {
if (res.code == 200) {
this.item = res.data;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
},
(rej) => {
}
);
}
}
};
function _sfc_render$1E(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_swiper = resolveEasycom(vue.resolveDynamicComponent("u-swiper"), __easycom_0$e);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "detail-cont" }, [
vue.createElementVNode(
"view",
{ class: "title" },
vue.toDisplayString($data.item.title),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "info" }, [
vue.createElementVNode(
"view",
{ class: "reads" },
"阅读数:" + vue.toDisplayString($data.item.views),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "time" },
vue.toDisplayString($data.item.createTime),
1
/* TEXT */
)
]),
$data.item.videoUrl != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "video"
}, [
vue.createElementVNode("video", {
class: "myVideo",
id: "myVideo",
src: $data.item.videoUrl,
onError: _cache[0] || (_cache[0] = (...args) => $options.videoErrorCallback && $options.videoErrorCallback(...args)),
controls: ""
}, null, 40, ["src"])
])) : vue.createCommentVNode("v-if", true),
vue.createCommentVNode(" 正文 "),
vue.createElementVNode("view", { class: "full-text" }, [
vue.createElementVNode("view", {
innerHTML: $data.item.content
}, null, 8, ["innerHTML"])
])
]),
vue.createCommentVNode(" 咨询按钮 "),
vue.createElementVNode("view", { class: "inquiry" }, [
vue.createElementVNode("view", {
class: "content",
onClick: _cache[1] || (_cache[1] = ($event) => $options.navTo("/pages_doctor/doctorDetails?doctorId=" + $data.item.doctorId))
}, [
vue.createElementVNode("image", {
mode: "aspectFill",
src: $data.item.avatar
}, null, 8, ["src"]),
vue.createElementVNode(
"text",
{ class: "text" },
vue.toDisplayString($data.item.doctorName),
1
/* TEXT */
)
])
]),
vue.createElementVNode("view", { class: "ad" }, [
vue.createVNode(_component_u_swiper, {
list: $data.advImgs,
indicator: "",
indicatorMode: "line",
circular: "",
onClick: $options.handleAdvClick
}, null, 8, ["list", "onClick"])
])
]);
}
const Pages_doctorDoctorArticleDetails = /* @__PURE__ */ _export_sfc(_sfc_main$1F, [["render", _sfc_render$1E], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_doctor/doctorArticleDetails.vue"]]);
const _sfc_main$1E = {
mixins: [MescrollMixin],
// 使用mixin
data() {
return {
keyword: "",
hosLevelOptions: [],
tabIndex: 0,
tabs: [
{ name: "全部", deptId: 0 }
],
deptId: 0,
mescroll: null,
downOption: {
//下拉刷新
use: true,
auto: false
// 不自动加载 (mixin已处理第一个tab触发downCallback)
},
upOption: {
onScroll: false,
use: true,
// 是否启用上拉加载; 默认true
page: {
pae: 0,
// 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
size: 10
// 每页数据的数量,默认10
},
noMoreSize: 10,
// 配置列表的总数量要大于等于5条才显示'-- END --'的提示
textNoMore: "已经到底了",
empty: {
icon: "https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png",
tip: "暂无数据"
}
},
dataList: []
};
},
onLoad(options) {
if (options.deptId != null) {
this.deptId = options.deptId;
}
if (options.keyword != null) {
this.keyword = options.keyword;
}
formatAppLog("log", "at pages_doctor/doctorList.vue:124", this.deptId);
this.getDictByKey("sys_hospital_level");
this.getDepartmentList();
},
onShow() {
},
methods: {
doSearch() {
this.mescroll.resetUpScroll();
},
getDictByKey(key) {
var data = { key };
getDictByKey(data).then(
(res) => {
if (res.code == 200) {
if (key == "sys_hospital_level") {
this.hosLevelOptions = res.data;
}
}
},
(err) => {
}
);
},
getDepartmentList(page2) {
var that = this;
var data = {};
getDepartmentList(data).then((res) => {
if (res.code == 200) {
res.data.forEach(function(value2, index2, array3) {
var data2 = { name: value2.deptName, deptId: value2.deptId };
that.tabs.push(data2);
if (value2.deptId == that.deptId) {
that.tabIndex = index2 + 1;
formatAppLog("log", "at pages_doctor/doctorList.vue:160", that.tabIndex);
}
});
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
deptChange(item) {
this.deptId = item.deptId;
this.mescroll.resetUpScroll();
},
navTo(url2) {
uni.navigateTo({
url: url2
});
},
mescrollInit(mescroll) {
this.mescroll = mescroll;
},
/*下拉刷新的回调 */
downCallback() {
this.mescroll.resetUpScroll();
},
/*上拉加载的回调*/
upCallback(page2) {
var that = this;
var data = {
keyword: this.keyword,
deptId: this.deptId,
pageNum: page2.num,
pageSize: page2.size
};
getDoctorList(data).then((res) => {
if (res.code == 200) {
if (page2.num == 1) {
res.data.list.forEach(function(value2, index2, array3) {
value2.prices = JSON.parse(value2.priceJson);
});
that.dataList = res.data.list;
} else {
that.dataList = that.dataList.concat(res.data.list);
}
that.mescroll.endBySize(res.data.list.length, res.data.total);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
that.dataList = null;
that.mescroll.endErr();
}
});
}
}
};
function _sfc_render$1D(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_tabs = resolveEasycom(vue.resolveDynamicComponent("u-tabs"), __easycom_0$7);
const _component_mescroll_body = resolveEasycom(vue.resolveDynamicComponent("mescroll-body"), __easycom_1$6);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "search-cont" }, [
vue.createElementVNode("view", { class: "inner" }, [
vue.createElementVNode("image", {
class: "icon-search",
src: "/static/images/icon_search.png",
mode: ""
}),
vue.withDirectives(vue.createElementVNode(
"input",
{
type: "text",
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.keyword = $event),
placeholder: "输入医生姓名搜索",
"confirm-type": "search",
onConfirm: _cache[1] || (_cache[1] = (...args) => $options.doSearch && $options.doSearch(...args)),
"placeholder-style": "font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;"
},
null,
544
/* NEED_HYDRATION, NEED_PATCH */
), [
[vue.vModelText, $data.keyword]
])
])
]),
vue.createElementVNode("view", { class: "top-fixed" }, [
vue.createVNode(_component_u_tabs, {
current: $data.tabIndex,
scrollable: true,
list: $data.tabs,
lineColor: "#C39A58",
onChange: $options.deptChange
}, null, 8, ["current", "list", "onChange"])
]),
vue.createVNode(_component_mescroll_body, {
top: "176rpx",
bottom: "0",
ref: "mescrollRef",
onInit: $options.mescrollInit,
down: $data.downOption,
up: $data.upOption,
onDown: $options.downCallback,
onUp: $options.upCallback
}, {
default: vue.withCtx(() => [
$data.dataList.length > 0 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "doctors"
}, [
vue.createElementVNode("view", { class: "doctor-box" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.dataList, (item, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "doctor",
onClick: ($event) => $options.navTo("/pages_doctor/doctorDetails?doctorId=" + item.doctorId)
}, [
vue.createElementVNode("view", { class: "item" }, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode("view", { class: "head-box" }, [
vue.createElementVNode("image", {
mode: "aspectFill",
class: "doc-img",
src: item.avatar
}, null, 8, ["src"]),
item.workStatus == 1 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "isline"
}, [
vue.createElementVNode("view", { class: "img" }, [
vue.createElementVNode("image", { src: "/static/images/isline.png" }),
vue.createElementVNode("view", { class: "name" }, "在线")
])
])) : vue.createCommentVNode("v-if", true)
])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("view", { class: "doc-box" }, [
vue.createElementVNode(
"view",
{ class: "doc-name" },
vue.toDisplayString(item.doctorName),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "doc-position" },
vue.toDisplayString(item.position),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "doc-dept" },
vue.toDisplayString(item.deptName),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "hospital-box" }, [
item.hospitalLevel != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "tag"
}, [
vue.createElementVNode(
"text",
null,
vue.toDisplayString(_ctx.$getDictLabelName($data.hosLevelOptions, item.hospitalLevel)),
1
/* TEXT */
)
])) : vue.createCommentVNode("v-if", true),
vue.createElementVNode(
"view",
{ class: "name" },
vue.toDisplayString(item.hospitalName),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "doc-spec" }, [
vue.createElementVNode(
"view",
{ class: "spec ellipsis2" },
vue.toDisplayString(item.speciality),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "doc-count" }, [
vue.createElementVNode("view", { class: "name" }, "好评:"),
vue.createElementVNode(
"view",
{ class: "count" },
vue.toDisplayString(item.pingStar) + "分",
1
/* TEXT */
),
vue.createElementVNode("view", { class: "name" }, "接诊量:"),
vue.createElementVNode(
"view",
{ class: "count" },
vue.toDisplayString(item.orderNumber),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "name" }, "平均响应:"),
vue.createElementVNode(
"view",
{ class: "count" },
vue.toDisplayString(item.speed) + "分钟",
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "doc-price" }, [
vue.createElementVNode("view", { class: "btn" }, [
vue.createTextVNode(" 咨询医生¥ "),
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(item.prices, (price, index3) => {
return vue.openBlock(), vue.createElementBlock("text", null, [
vue.createTextVNode(
vue.toDisplayString(price.price.toFixed(2)) + " ",
1
/* TEXT */
),
index3 == 0 ? (vue.openBlock(), vue.createElementBlock("text", { key: 0 }, "/")) : vue.createCommentVNode("v-if", true)
]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
])
])
])
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
])) : vue.createCommentVNode("v-if", true)
]),
_: 1
/* STABLE */
}, 8, ["onInit", "down", "up", "onDown", "onUp"])
]);
}
const Pages_doctorDoctorList = /* @__PURE__ */ _export_sfc(_sfc_main$1E, [["render", _sfc_render$1D], ["__scopeId", "data-v-5e54308c"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_doctor/doctorList.vue"]]);
const props$k = {
props: {
// 用于v-model双向绑定选中的星星数量
modelValue: {
type: [String, Number],
default: props$y.rate.value
},
// 要显示的星星数量
count: {
type: [String, Number],
default: props$y.rate.count
},
// 是否不可选中
disabled: {
type: Boolean,
default: props$y.rate.disabled
},
// 是否只读
readonly: {
type: Boolean,
default: props$y.rate.readonly
},
// 星星的大小,单位px
size: {
type: [String, Number],
default: props$y.rate.size
},
// 未选中时的颜色
inactiveColor: {
type: String,
default: props$y.rate.inactiveColor
},
// 选中的颜色
activeColor: {
type: String,
default: props$y.rate.activeColor
},
// 星星之间的间距,单位px
gutter: {
type: [String, Number],
default: props$y.rate.gutter
},
// 最少能选择的星星个数
minCount: {
type: [String, Number],
default: props$y.rate.minCount
},
// 是否允许半星
allowHalf: {
type: Boolean,
default: props$y.rate.allowHalf
},
// 选中时的图标(星星)
activeIcon: {
type: String,
default: props$y.rate.activeIcon
},
// 未选中时的图标(星星)
inactiveIcon: {
type: String,
default: props$y.rate.inactiveIcon
},
// 是否可以通过滑动手势选择评分
touchable: {
type: Boolean,
default: props$y.rate.touchable
}
}
};
const _sfc_main$1D = {
name: "u-rate",
mixins: [mpMixin, mixin, props$k],
data() {
return {
// 生成一个唯一id,否则一个页面多个评分组件,会造成冲突
elId: uni.$u.guid(),
elClass: uni.$u.guid(),
rateBoxLeft: 0,
// 评分盒子左边到屏幕左边的距离,用于滑动选择时计算距离
activeIndex: this.modelValue,
rateWidth: 0,
// 每个星星的宽度
// 标识是否正在滑动,由于iOS事件上touch比click先触发,导致快速滑动结束后,接着触发click,导致事件混乱而出错
moving: false
};
},
watch: {
modelValue(val) {
this.activeIndex = val;
},
activeIndex: "emitEvent"
},
emits: ["update:modelValue", "change"],
methods: {
init() {
uni.$u.sleep().then(() => {
this.getRateItemRect();
this.getRateIconWrapRect();
});
},
// 获取评分组件盒子的布局信息
async getRateItemRect() {
await uni.$u.sleep();
this.$uGetRect("#" + this.elId).then((res) => {
this.rateBoxLeft = res.left;
});
},
// 获取单个星星的尺寸
getRateIconWrapRect() {
this.$uGetRect("." + this.elClass).then((res) => {
this.rateWidth = res.width;
});
},
// 手指滑动
touchMove(e) {
if (!this.touchable) {
return;
}
this.preventEvent(e);
const x = e.changedTouches[0].pageX;
this.getActiveIndex(x);
},
// 停止滑动
touchEnd(e) {
if (!this.touchable) {
return;
}
this.preventEvent(e);
const x = e.changedTouches[0].pageX;
this.getActiveIndex(x);
},
// 通过点击,直接选中
clickHandler(e, index2) {
if (uni.$u.os() === "ios" && this.moving) {
return;
}
this.preventEvent(e);
let x = 0;
x = e.changedTouches[0].pageX;
this.getActiveIndex(x, true);
},
// 发出事件
emitEvent() {
this.$emit("change", this.activeIndex);
this.$emit("update:modelValue", this.activeIndex);
},
// 获取当前激活的评分图标
getActiveIndex(x, isClick = false) {
if (this.disabled || this.readonly) {
return;
}
const allRateWidth = this.rateWidth * this.count + this.rateBoxLeft;
x = uni.$u.range(this.rateBoxLeft, allRateWidth, x) - this.rateBoxLeft;
const distance = x;
let index2;
if (this.allowHalf) {
index2 = Math.floor(distance / this.rateWidth);
const decimal = distance % this.rateWidth;
if (decimal <= this.rateWidth / 2 && decimal > 0) {
index2 += 0.5;
} else if (decimal > this.rateWidth / 2) {
index2++;
}
} else {
index2 = Math.floor(distance / this.rateWidth);
const decimal = distance % this.rateWidth;
if (isClick) {
if (decimal > 0)
index2++;
} else {
if (decimal > this.rateWidth / 2)
index2++;
}
}
this.activeIndex = Math.min(index2, this.count);
if (this.activeIndex < this.minCount) {
this.activeIndex = this.minCount;
}
setTimeout(() => {
this.moving = true;
}, 10);
setTimeout(() => {
this.moving = false;
}, 10);
}
},
mounted() {
this.init();
}
};
function _sfc_render$1C(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_icon = resolveEasycom(vue.resolveDynamicComponent("u-icon"), __easycom_0$a);
return vue.openBlock(), vue.createElementBlock("view", {
class: "u-rate",
id: $data.elId,
ref: "u-rate",
style: vue.normalizeStyle([_ctx.$u.addStyle(_ctx.customStyle)])
}, [
vue.createElementVNode(
"view",
{
class: "u-rate__content",
onTouchmove: _cache[0] || (_cache[0] = vue.withModifiers((...args) => $options.touchMove && $options.touchMove(...args), ["stop"])),
onTouchend: _cache[1] || (_cache[1] = vue.withModifiers((...args) => $options.touchEnd && $options.touchEnd(...args), ["stop"]))
},
[
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(Number(_ctx.count), (item, index2) => {
return vue.openBlock(), vue.createElementBlock(
"view",
{
class: vue.normalizeClass(["u-rate__content__item", [$data.elClass]]),
key: index2
},
[
vue.createElementVNode("view", {
class: "u-rate__content__item__icon-wrap",
ref_for: true,
ref: "u-rate__content__item__icon-wrap",
onClick: vue.withModifiers(($event) => $options.clickHandler($event, index2 + 1), ["stop"])
}, [
vue.createVNode(_component_u_icon, {
name: Math.floor($data.activeIndex) > index2 ? _ctx.activeIcon : _ctx.inactiveIcon,
color: _ctx.disabled ? "#c8c9cc" : Math.floor($data.activeIndex) > index2 ? _ctx.activeColor : _ctx.inactiveColor,
"custom-style": {
padding: `0 ${_ctx.$u.addUnit(_ctx.gutter / 2)}`
},
size: _ctx.size
}, null, 8, ["name", "color", "custom-style", "size"])
], 8, ["onClick"]),
_ctx.allowHalf ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
onClick: vue.withModifiers(($event) => $options.clickHandler($event, index2 + 1), ["stop"]),
class: "u-rate__content__item__icon-wrap u-rate__content__item__icon-wrap--half",
style: vue.normalizeStyle([{
width: _ctx.$u.addUnit($data.rateWidth / 2)
}]),
ref_for: true,
ref: "u-rate__content__item__icon-wrap"
}, [
vue.createVNode(_component_u_icon, {
name: Math.ceil($data.activeIndex) > index2 ? _ctx.activeIcon : _ctx.inactiveIcon,
color: _ctx.disabled ? "#c8c9cc" : Math.ceil($data.activeIndex) > index2 ? _ctx.activeColor : _ctx.inactiveColor,
"custom-style": {
padding: `0 ${_ctx.$u.addUnit(_ctx.gutter / 2)}`
},
size: _ctx.size
}, null, 8, ["name", "color", "custom-style", "size"])
], 12, ["onClick"])) : vue.createCommentVNode("v-if", true)
],
2
/* CLASS */
);
}),
128
/* KEYED_FRAGMENT */
))
],
32
/* NEED_HYDRATION */
)
], 12, ["id"]);
}
const __easycom_0$6 = /* @__PURE__ */ _export_sfc(_sfc_main$1D, [["render", _sfc_render$1C], ["__scopeId", "data-v-69a384ee"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u-rate/u-rate.vue"]]);
const _sfc_main$1C = {
data() {
return {
statusBarHeight: uni.getStorageSync("menuInfo").statusBarHeight,
isFollow: false,
doctorId: null,
doctor: null,
department: null,
hospital: null,
pings: []
};
},
onLoad(options) {
if (options.doctorId != null) {
this.doctorId = options.doctorId;
} else if (options.hasOwnProperty("q") && options.q) {
const url2 = decodeURIComponent(options.q);
const obj = this.$urlToObj(url2);
uni.setStorageSync("doctorId", obj.doctorId);
this.doctorId = obj.doctorId;
}
},
onShow() {
this.getDoctorDetails();
this.getDoctorPingList();
var that = this;
this.$isLogin().then(
(res) => {
if (res) {
that.checkFollow();
}
},
(rej) => {
}
);
},
//发送给朋友
onShareAppMessage(res) {
return {
title: this.doctor.doctorName,
path: "/pages_doctor/doctorDetails?doctorId=" + this.doctorId,
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
},
//分享到朋友圈
onShareTimeline(res) {
return {
title: this.doctor.doctorName,
query: "doctorId=" + this.doctorId,
//页面参数
imageUrl: "https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230106/6b459adfb1004c1a96219bcdf07e337c.png"
//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
};
},
methods: {
goback() {
uni.navigateBack();
},
gohome() {
uni.switchTab({
url: "/pages/index/index"
});
},
doInquiry(price) {
if (this.doctor.workStatus == 0) {
uni.showToast({
icon: "none",
title: "医生休息中"
});
return;
}
var that = this;
this.$isLogin().then(
(res) => {
if (res) {
uni.navigateTo({
url: "/pages_order/inquiryForm1?inquiryType=1&orderType=" + price.type + "&doctorId=" + that.doctorId
});
} else {
uni.navigateTo({
url: "/pages/auth/login"
});
}
},
(rej) => {
}
);
},
followChange() {
this.$isLogin().then(
(res) => {
if (res) {
this.doFollow();
} else {
uni.navigateTo({
url: "/pages/auth/login"
});
}
},
(rej) => {
}
);
},
checkFollow() {
var data = { doctorId: this.doctorId };
checkFollow(data).then(
(res) => {
if (res.code == 200) {
if (res.isFollow == 1) {
this.isFollow = true;
} else {
this.isFollow = false;
}
} else {
this.isFollow = false;
}
},
(rej) => {
}
);
},
doFollow() {
var data = { doctorId: this.doctorId };
doFollow$1(data).then(
(res) => {
this.isFollow = !this.isFollow;
if (res.code = 200) {
uni.showToast({
title: res.msg
});
}
},
(rej) => {
}
);
},
getDoctorDetails() {
var data = {
doctorId: this.doctorId
};
getDoctorDetails(data).then((res) => {
if (res.code == 200) {
this.doctor = res.data.doctor;
this.doctor.prices = JSON.parse(this.doctor.priceJson);
this.department = res.data.department;
this.hospital = res.data.hospital;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
getDoctorPingList() {
var data = {
doctorId: this.doctorId,
pageNum: 1,
pageSize: 10
};
getDoctorPingList(data).then((res) => {
if (res.code == 200) {
this.pings = res.data.list;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
},
navTo(url2) {
uni.navigateTo({
url: url2
});
}
}
};
function _sfc_render$1B(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_rate = resolveEasycom(vue.resolveDynamicComponent("u-rate"), __easycom_0$6);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "bg" }, [
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/dd7da40764af4db0ac326db271c7f1d3.png" })
]),
vue.createElementVNode("view", { class: "top-box" }, [
vue.createElementVNode(
"view",
{
class: "status_bar",
style: vue.normalizeStyle({ height: $data.statusBarHeight })
},
null,
4
/* STYLE */
),
vue.createElementVNode("view", { class: "btn-box" }, [
vue.createElementVNode("view", {
class: "btns",
onClick: _cache[1] || (_cache[1] = ($event) => $options.goback())
}, [
vue.createElementVNode("view", { class: "btn" }, [
vue.createElementVNode("image", { src: "/static/images/back_white.png" })
]),
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", {
class: "btn",
onClick: _cache[0] || (_cache[0] = ($event) => $options.gohome())
}, [
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/5981c2cd5f23484181f5b328c820d0de.png" })
])
])
])
]),
vue.createElementVNode("view", { class: "cont" }, [
vue.createElementVNode(
"view",
{
class: "status_bar",
style: vue.normalizeStyle({ height: $data.statusBarHeight })
},
null,
4
/* STYLE */
),
vue.createElementVNode("view", {
class: "docs",
style: { "margin-top": "88rpx" }
}, [
vue.createElementVNode("view", {
class: "tip",
onClick: _cache[2] || (_cache[2] = ($event) => $options.navTo("/pages_doctor/doctorImgs?doctorId=" + $data.doctor.doctorId))
}, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode("view", { class: "title" }, [
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/a58ee2a3fb674c2e8339243cb4ca1378.png" }),
vue.createElementVNode("view", null, "实名认证")
]),
vue.createElementVNode("view", { class: "cert" }, [
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/62aeeb0579974b67863a6ab56e9562f9.png" }),
vue.createElementVNode(
"view",
null,
"资格证编号:" + vue.toDisplayString($data.doctor.certificateCode != null ? $data.doctor.certificateCode.substr(0, 4) + "****" + $data.doctor.certificateCode.substr($data.doctor.certificateCode.length - 4, $data.doctor.certificateCode.length) : ""),
1
/* TEXT */
)
])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/1d519ad0467e4daea843aac745ae6b40.png" })
])
]),
vue.createElementVNode("view", { class: "doc-cont" }, [
vue.createElementVNode("view", { class: "doc-box" }, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode("image", {
src: $data.doctor.avatar,
mode: "aspectFill"
}, null, 8, ["src"])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("view", { class: "doc-name-box" }, [
vue.createElementVNode(
"view",
{ class: "doc-name" },
vue.toDisplayString($data.doctor.doctorName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "doc-btns" }, [
vue.createElementVNode("view", {
class: "btn",
onClick: _cache[3] || (_cache[3] = ($event) => $options.followChange())
}, [
$data.isFollow ? (vue.openBlock(), vue.createElementBlock("image", {
key: 0,
src: "/static/images/icon_strar.png"
})) : vue.createCommentVNode("v-if", true),
!$data.isFollow ? (vue.openBlock(), vue.createElementBlock("image", {
key: 1,
src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/d509e50536804703a4b7dc066b16beee.png"
})) : vue.createCommentVNode("v-if", true),
vue.createTextVNode(" 关注 ")
]),
vue.createElementVNode("view", { class: "btn" }, [
vue.createElementVNode("image", { src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/f79c3b9cbefa40be8c2beb74f616eefc.png" }),
vue.createTextVNode(" 分享 "),
vue.createElementVNode("button", {
class: "contact-btn",
"data-name": "shareBtn",
"open-type": "share"
}, "分享")
])
])
]),
vue.createElementVNode("view", { class: "doc-dept-box" }, [
vue.createTextVNode(
vue.toDisplayString($data.doctor.position) + " ",
1
/* TEXT */
),
vue.createElementVNode("view", { class: "line" }),
vue.createTextVNode(
" " + vue.toDisplayString($data.department.deptName),
1
/* TEXT */
)
]),
vue.createElementVNode(
"view",
{ class: "doc-his-box" },
vue.toDisplayString($data.hospital.hospitalName),
1
/* TEXT */
)
])
]),
vue.createElementVNode("view", { class: "doc-desc-box" }, [
vue.createElementVNode("view", {
class: "doc-desc-cont",
onClick: _cache[4] || (_cache[4] = ($event) => $options.navTo("/pages_doctor/doctorInfo?doctorId=" + $data.doctor.doctorId))
}, [
vue.createElementVNode(
"view",
{ class: "desc-cont ellipsis2" },
" " + vue.toDisplayString($data.doctor.speciality),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "title" }, "擅长:"),
vue.createElementVNode("view", { class: "btn" }, "详情")
]),
vue.createElementVNode("view", {
class: "doc-desc-cont",
onClick: _cache[5] || (_cache[5] = ($event) => $options.navTo("/pages_doctor/doctorInfo?doctorId=" + $data.doctor.doctorId))
}, [
vue.createElementVNode(
"view",
{ class: "desc-cont ellipsis2" },
" " + vue.toDisplayString($data.doctor.introduction),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "title" }, "介绍:"),
vue.createElementVNode("view", { class: "btn" }, "详情")
])
])
])
]),
vue.createElementVNode("view", { class: "price-box" }, [
vue.createElementVNode("view", { class: "count-box" }, [
vue.createElementVNode("view", { class: "count-item" }, [
vue.createElementVNode(
"view",
{ class: "count yellow" },
vue.toDisplayString($data.doctor.pingStar) + "分",
1
/* TEXT */
),
vue.createElementVNode("view", { class: "name" }, "好评")
]),
vue.createElementVNode("view", { class: "count-item" }, [
vue.createElementVNode(
"view",
{ class: "count" },
vue.toDisplayString($data.doctor.orderNumber),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "name" }, "接诊量")
]),
vue.createElementVNode("view", { class: "count-item" }, [
vue.createElementVNode(
"view",
{ class: "count" },
vue.toDisplayString($data.doctor.speed) + "分钟",
1
/* TEXT */
),
vue.createElementVNode("view", { class: "name" }, "平均响应")
]),
vue.createElementVNode("view", { class: "count-item" }, [
vue.createElementVNode("view", { class: "count" }, "0"),
vue.createElementVNode("view", { class: "name" }, "粉丝数")
])
]),
$data.doctor != null && $data.doctor.prices != null && $data.doctor.prices.length > 0 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "price-list"
}, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.doctor.prices, (price, index2) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "price-item",
onClick: ($event) => $options.doInquiry(price)
}, [
vue.createElementVNode("view", { class: "p-left" }, [
price.type == 1 ? (vue.openBlock(), vue.createElementBlock("image", {
key: 0,
src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/645f3f298a264882b48e529342fc4074.png"
})) : vue.createCommentVNode("v-if", true),
price.type == 2 ? (vue.openBlock(), vue.createElementBlock("image", {
key: 1,
src: "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/45e904a9e74f4d1da771936a4b83f015.png"
})) : vue.createCommentVNode("v-if", true),
vue.createElementVNode("view", { class: "price-name" }, [
vue.createElementVNode("view", { class: "price" }, [
price.type == 1 ? (vue.openBlock(), vue.createElementBlock("text", {
key: 0,
class: "title"
}, "图文问诊")) : vue.createCommentVNode("v-if", true),
price.type == 2 ? (vue.openBlock(), vue.createElementBlock("text", {
key: 1,
class: "title"
}, "视频问诊")) : vue.createCommentVNode("v-if", true),
vue.createElementVNode(
"text",
{ class: "money" },
vue.toDisplayString(price.price.toFixed(2)) + "/次",
1
/* TEXT */
)
]),
price.type == 1 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "price-desc"
}, " 与医生图文交流 ")) : vue.createCommentVNode("v-if", true),
price.type == 2 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "price-desc"
}, " 与医生视频交流 ")) : vue.createCommentVNode("v-if", true)
])
]),
vue.createElementVNode("view", { class: "p-right" }, [
vue.createElementVNode(
"view",
{
class: vue.normalizeClass($data.doctor.workStatus == 1 ? "btn" : "btn gray")
},
" 去咨询 ",
2
/* CLASS */
)
])
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])) : vue.createCommentVNode("v-if", true)
]),
vue.createCommentVNode(` \r
\r
执业医院\r
\r
\r
\r
\r
{{hospital.hospitalName}}\r
\r
\r
{{hospital.hospitalType}}\r
\r
\r
\r
\r
\r
\r
`),
vue.createCommentVNode(' \r\n \r\n 医生介绍\r\n \r\n \r\n {{doctor.introduction}}\r\n \r\n '),
vue.createElementVNode("view", { class: "ping-box" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode(
"view",
{ class: "title" },
"患者评价(" + vue.toDisplayString($data.pings.length) + ")",
1
/* TEXT */
)
]),
vue.createElementVNode("view", {
class: "more",
onClick: _cache[6] || (_cache[6] = ($event) => $options.navTo("./doctorPingList?doctorId=" + $data.doctorId))
}, [
vue.createElementVNode("view", null, "更多"),
vue.createElementVNode("image", { src: "/static/images/icon_arrow_r.png" })
])
]),
$data.pings.length > 0 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "ping-list"
}, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.pings, (item) => {
return vue.openBlock(), vue.createElementBlock("view", { class: "ping-item" }, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode("image", {
src: item.avatar == null ? "/static/images/detault_head.jpg" : item.avatar
}, null, 8, ["src"])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("view", { class: "user-name-box" }, [
vue.createElementVNode(
"view",
{ class: "user-name" },
vue.toDisplayString(item.nickName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "ping-star" }, [
vue.createVNode(_component_u_rate, {
activeColor: "#ffc603",
count: "5",
readonly: "",
modelValue: item.pingStar,
"onUpdate:modelValue": ($event) => item.pingStar = $event
}, null, 8, ["modelValue", "onUpdate:modelValue"])
])
]),
vue.createElementVNode(
"view",
{ class: "ping-cont" },
vue.toDisplayString(item.pingContent),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "ping-time" },
vue.toDisplayString(item.pingTime),
1
/* TEXT */
)
])
]);
}),
256
/* UNKEYED_FRAGMENT */
))
])) : vue.createCommentVNode("v-if", true)
])
])
]);
}
const Pages_doctorDoctorDetails = /* @__PURE__ */ _export_sfc(_sfc_main$1C, [["render", _sfc_render$1B], ["__scopeId", "data-v-e79e20d9"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_doctor/doctorDetails.vue"]]);
const _sfc_main$1B = {
mixins: [MescrollMixin],
// 使用mixin
data() {
return {
total: 0,
doctorId: null,
mescroll: null,
downOption: {
//下拉刷新
use: true,
auto: false
// 不自动加载 (mixin已处理第一个tab触发downCallback)
},
upOption: {
onScroll: false,
use: true,
// 是否启用上拉加载; 默认true
page: {
pae: 0,
// 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
size: 10
// 每页数据的数量,默认10
},
noMoreSize: 10,
// 配置列表的总数量要大于等于5条才显示'-- END --'的提示
textNoMore: "已经到底了",
empty: {
icon: "https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png",
tip: "暂无数据"
}
},
dataList: []
};
},
onLoad(options) {
this.doctorId = options.doctorId;
},
methods: {
mescrollInit(mescroll) {
this.mescroll = mescroll;
},
/*下拉刷新的回调 */
downCallback() {
this.mescroll.resetUpScroll();
},
/*上拉加载的回调*/
upCallback(page2) {
var that = this;
var data = {
doctorId: this.doctorId,
pageNum: page2.num,
pageSize: page2.size
};
getDoctorPingList(data).then((res) => {
if (res.code == 200) {
this.total = res.data.total;
if (page2.num == 1) {
that.dataList = res.data.list;
} else {
that.dataList = that.dataList.concat(res.data.list);
}
that.mescroll.endBySize(res.data.list.length, res.data.total);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
that.dataList = null;
that.mescroll.endErr();
}
});
}
}
};
function _sfc_render$1A(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_rate = resolveEasycom(vue.resolveDynamicComponent("u-rate"), __easycom_0$6);
const _component_mescroll_body = resolveEasycom(vue.resolveDynamicComponent("mescroll-body"), __easycom_1$6);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "cont" }, [
vue.createElementVNode("view", { class: "ping-box" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode(
"view",
{ class: "title" },
"患者评价(" + vue.toDisplayString($data.total) + ")",
1
/* TEXT */
)
])
]),
vue.createVNode(_component_mescroll_body, {
top: "88rpx",
bottom: "0",
ref: "mescrollRef",
onInit: $options.mescrollInit,
down: $data.downOption,
up: $data.upOption,
onDown: $options.downCallback,
onUp: $options.upCallback
}, {
default: vue.withCtx(() => [
vue.createElementVNode("view", { class: "ping-list" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.dataList, (item) => {
return vue.openBlock(), vue.createElementBlock("view", { class: "ping-item" }, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode("image", {
src: item.avatar == null ? "https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/dfdd555016854b0d9fb623937238729f.jpg" : item.avatar
}, null, 8, ["src"])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("view", { class: "user-name-box" }, [
vue.createElementVNode(
"view",
{ class: "user-name" },
vue.toDisplayString(item.nickName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "ping-star" }, [
vue.createVNode(_component_u_rate, {
activeColor: "#ffc603",
count: "5",
readonly: "",
modelValue: item.pingStar,
"onUpdate:modelValue": ($event) => item.pingStar = $event
}, null, 8, ["modelValue", "onUpdate:modelValue"])
])
]),
vue.createElementVNode(
"view",
{ class: "ping-cont" },
vue.toDisplayString(item.pingContent),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "ping-time" },
vue.toDisplayString(item.pingTime),
1
/* TEXT */
)
])
]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
]),
_: 1
/* STABLE */
}, 8, ["onInit", "down", "up", "onDown", "onUp"])
])
])
]);
}
const Pages_doctorDoctorPingList = /* @__PURE__ */ _export_sfc(_sfc_main$1B, [["render", _sfc_render$1A], ["__scopeId", "data-v-9dbb509a"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_doctor/doctorPingList.vue"]]);
const _sfc_main$1A = {
data() {
return {
isFollow: false,
doctorId: null,
doctor: null,
department: null,
hospital: null,
pings: []
};
},
onLoad(options) {
this.doctorId = options.doctorId;
},
onShow() {
this.getDoctorDetails();
},
methods: {
showImg() {
var data = [];
data.push(this.doctor.avatar);
uni.previewImage({
current: 0,
urls: data
});
},
getDoctorDetails() {
var data = {
doctorId: this.doctorId
};
getDoctorDetails(data).then((res) => {
if (res.code == 200) {
this.doctor = res.data.doctor;
this.department = res.data.department;
this.hospital = res.data.hospital;
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
}
}
};
function _sfc_render$1z(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_rate = resolveEasycom(vue.resolveDynamicComponent("u-rate"), __easycom_0$6);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "bg" }),
vue.createElementVNode("view", { class: "cont" }, [
vue.createElementVNode("view", { class: "doc-box" }, [
vue.createElementVNode("view", { class: "left" }, [
vue.createElementVNode("image", {
onClick: _cache[0] || (_cache[0] = ($event) => $options.showImg()),
src: $data.doctor.avatar,
mode: "aspectFill"
}, null, 8, ["src"])
]),
vue.createElementVNode("view", { class: "right" }, [
vue.createElementVNode("view", { class: "doc-name-box" }, [
vue.createElementVNode(
"view",
{ class: "doc-name" },
vue.toDisplayString($data.doctor.doctorName),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "doc-ping" }, [
vue.createVNode(_component_u_rate, {
activeColor: "#ffc603",
count: "5",
readonly: "",
modelValue: $data.doctor.pingStar,
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $data.doctor.pingStar = $event)
}, null, 8, ["modelValue"])
])
]),
vue.createElementVNode(
"view",
{ class: "doc-dept-box" },
vue.toDisplayString($data.department.deptName) + "|" + vue.toDisplayString($data.doctor.position),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "doc-his-box" },
vue.toDisplayString($data.hospital.hospitalName),
1
/* TEXT */
)
])
]),
vue.createElementVNode("view", { class: "desc-box" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "擅长方向")
]),
vue.createElementVNode(
"view",
{ class: "desc" },
vue.toDisplayString($data.doctor.speciality),
1
/* TEXT */
)
]),
vue.createElementVNode("view", { class: "desc-box" }, [
vue.createElementVNode("view", { class: "title-box" }, [
vue.createElementVNode("view", { class: "line" }),
vue.createElementVNode("view", { class: "title" }, "医生介绍")
]),
vue.createElementVNode(
"view",
{ class: "desc" },
vue.toDisplayString($data.doctor.introduction),
1
/* TEXT */
)
])
])
]);
}
const Pages_doctorDoctorInfo = /* @__PURE__ */ _export_sfc(_sfc_main$1A, [["render", _sfc_render$1z], ["__scopeId", "data-v-012aad91"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_doctor/doctorInfo.vue"]]);
const _sfc_main$1z = {
data() {
return {
imgs: []
};
},
onLoad(options) {
this.doctorId = options.doctorId;
},
onShow() {
this.getDoctorDetails();
},
methods: {
showImg(index2) {
uni.previewImage({
current: index2,
urls: this.imgs
});
},
getDoctorDetails() {
var data = {
doctorId: this.doctorId
};
this.imgs = [];
getDoctorDetails(data).then((res) => {
if (res.code == 200) {
this.doctor = res.data.doctor;
if (this.doctor.certificateImages != null) {
this.imgs.concat(this.doctor.certificateImages);
}
if (this.doctor.practiseImages != null) {
this.imgs.concat(this.doctor.practiseImages);
}
formatAppLog("log", "at pages_doctor/doctorImgs.vue:49", this.imgs);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
}
});
}
}
};
function _sfc_render$1y(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "imgs" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.imgs, (img, index2) => {
return vue.openBlock(), vue.createElementBlock("view", { class: "img" }, [
vue.createElementVNode("image", {
onClick: ($event) => $options.showImg(index2),
src: img
}, null, 8, ["onClick", "src"])
]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
]);
}
const Pages_doctorDoctorImgs = /* @__PURE__ */ _export_sfc(_sfc_main$1z, [["render", _sfc_render$1y], ["__scopeId", "data-v-3b09300f"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_doctor/doctorImgs.vue"]]);
let request$8 = new Request$1().http;
function confirm(data) {
return request$8("/app/inquiryOrder/confirm", data, "POST", "application/json;charset=UTF-8");
}
function create(data) {
return request$8("/app/inquiryOrder/create", data, "POST", "application/json;charset=UTF-8");
}
function pay$1(data) {
return request$8("/app/inquiryOrder/pay", data, "POST", "application/json;charset=UTF-8");
}
function compute$1(data) {
return request$8("/app/inquiryOrder/compute", data, "POST", "application/json;charset=UTF-8");
}
function payment$1(data) {
return request$8("/app/inquiryOrder/payment", data, "POST", "application/json;charset=UTF-8");
}
function cancel(data) {
return request$8("/app/inquiryOrder/cancel", data, "POST", "application/json;charset=UTF-8");
}
function getMyInquiryOrderList(data) {
return request$8("/app/inquiryOrder/getMyInquiryOrderList", data, "GET");
}
function getMyInquiryOrderById(data) {
return request$8("/app/inquiryOrder/getMyInquiryOrderById", data, "GET");
}
function getMyInquiryOrderPingList(data) {
return request$8("/app/inquiryOrder/getMyInquiryOrderPingList", data, "GET");
}
function getInquiryOrderById(data) {
return request$8("/app/inquiryOrder/getInquiryOrderById", data, "GET");
}
function getCompanyUserInquiryOrderById(data) {
return request$8("/app/inquiryOrder/getCompanyUserInquiryOrderById", data, "GET");
}
function pingOrder(data) {
return request$8("/app/inquiryOrder/pingOrder", data, "POST", "application/json;charset=UTF-8");
}
function getInquiryTemp(data) {
return request$8("/app/inquiryOrder/getInquiryTemp", data, "GET");
}
function getInquiryOrderReport(data) {
return request$8("/app/inquiryOrder/getInquiryOrderReport", data, "GET");
}
function getCompanyUserInquiryOrderList(data) {
return request$8("/app/inquiryOrder/getCompanyUserInquiryOrderList", data, "GET");
}
const _sfc_main$1y = {
mixins: [MescrollMixin],
// 使用mixin
data() {
return {
orderStatusOptions: [],
orderTypeOptions: [],
inquiryTypeOptions: [],
tabs: [
{
id: 2,
name: "快速问诊"
},
{
id: 1,
name: "专家问诊"
},
{
id: 3,
name: "开药问诊"
}
],
inquiryType: 2,
mescroll: null,
downOption: {
//下拉刷新
use: true,
auto: false
// 不自动加载 (mixin已处理第一个tab触发downCallback)
},
upOption: {
onScroll: false,
use: true,
// 是否启用上拉加载; 默认true
page: {
pae: 0,
// 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
size: 10
// 每页数据的数量,默认10
},
noMoreSize: 10,
// 配置列表的总数量要大于等于5条才显示'-- END --'的提示
textNoMore: "已经到底了",
empty: {
icon: "https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png",
tip: "暂无数据"
}
},
dataList: []
};
},
onLoad() {
this.getDictByKey("sys_inquiry_order_type");
this.getDictByKey("sys_inquiry_type");
this.getDictByKey("sys_inquiry_status");
var that = this;
uni.$on("refreshInquiryOrder", () => {
that.mescroll.resetUpScroll();
});
},
onShow() {
},
methods: {
cancel(item) {
uni.showModal({
title: "提示",
content: "确认取消订单吗?",
showCancel: true,
cancelText: "取消",
confirmText: "确定",
success: (res) => {
if (res.confirm) {
var data = { orderId: item.orderId };
cancel(data).then(
(res2) => {
if (res2.code == 200) {
this.mescroll.resetUpScroll();
uni.showToast({
icon: "success",
title: "操作成功"
});
} else {
uni.showToast({
icon: "none",
title: res2.msg
});
}
},
(rej) => {
}
);
}
}
});
},
ping(item) {
uni.navigateTo({
url: "/pages_order/pingOrder?orderId=" + item.orderId
});
},
pay(item) {
uni.navigateTo({
url: "/pages_order/inquiryPay?orderId=" + item.orderId
});
},
toIM(item) {
var id = "C2CD-" + item.doctorId;
store.commit("timStore/setType", "startInquiry");
store.commit("timStore/setOrderType", item.orderType);
store.commit("timStore/setImType", 1);
store.commit("timStore/setFollowId", 0);
store.commit("timStore/setOrderId", item.orderId);
store.commit("timStore/setConversationID", id);
uni.$TUIKit.TUIConversationServer.setMessageRead(id);
uni.$TUIKit.TUIConversationServer.getConversationProfile(id).then((res) => {
var _a;
const { conversation } = res.data;
store.commit("timStore/setConversation", conversation);
let url2 = "/pages/TUIKit/TUIPages/TUIChat/index";
conversation.userProfile;
url2 = `${url2}?conversationName=${((_a = conversation.userProfile.nick) == null ? void 0 : _a.nick) || conversation.userProfile.userID}&orderId=` + item.orderId;
uni.redirectTo({ url: url2 });
}).catch((err) => {
formatAppLog("warn", "at pages_order/inquiryOrderList.vue:215", "获取 group profile 异常 = ", err);
});
},
getDictByKey(key) {
var data = { key };
getDictByKey(data).then(
(res) => {
if (res.code == 200) {
if (key == "sys_inquiry_order_type") {
this.orderTypeOptions = res.data;
}
if (key == "sys_inquiry_type") {
this.inquiryTypeOptions = res.data;
}
if (key == "sys_inquiry_status") {
this.orderStatusOptions = res.data;
}
}
},
(err) => {
}
);
},
inquiryTypeChange(item) {
this.inquiryType = item.id;
formatAppLog("log", "at pages_order/inquiryOrderList.vue:241", item);
this.mescroll.resetUpScroll();
},
navTo(url2) {
uni.navigateTo({
url: url2
});
},
mescrollInit(mescroll) {
this.mescroll = mescroll;
},
/*下拉刷新的回调 */
downCallback() {
this.mescroll.resetUpScroll();
},
/*上拉加载的回调*/
upCallback(page2) {
var that = this;
var data = {
inquiryType: this.inquiryType,
pageNum: page2.num,
pageSize: page2.size
};
getMyInquiryOrderList(data).then((res) => {
if (res.code == 200) {
if (page2.num == 1) {
that.dataList = res.data.list;
} else {
that.dataList = that.dataList.concat(res.data.list);
}
that.mescroll.endBySize(res.data.list.length, res.data.total);
} else {
uni.showToast({
icon: "none",
title: "请求失败"
});
that.dataList = null;
that.mescroll.endErr();
}
});
}
}
};
function _sfc_render$1x(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_tabs = resolveEasycom(vue.resolveDynamicComponent("u-tabs"), __easycom_0$7);
const _component_mescroll_body = resolveEasycom(vue.resolveDynamicComponent("mescroll-body"), __easycom_1$6);
return vue.openBlock(), vue.createElementBlock("view", { class: "content" }, [
vue.createElementVNode("view", { class: "top-fixed" }, [
vue.createVNode(_component_u_tabs, {
scrollable: false,
list: $data.tabs,
lineColor: "#C39A58",
onChange: $options.inquiryTypeChange
}, null, 8, ["list", "onChange"])
]),
vue.createVNode(_component_mescroll_body, {
top: "88rpx",
bottom: "0",
ref: "mescrollRef",
onInit: $options.mescrollInit,
down: $data.downOption,
up: $data.upOption,
onDown: $options.downCallback,
onUp: $options.upCallback
}, {
default: vue.withCtx(() => [
vue.createElementVNode("view", { class: "order-list" }, [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList($data.dataList, (item) => {
return vue.openBlock(), vue.createElementBlock("view", {
class: "order-item",
onClick: ($event) => $options.navTo("./inquiryOrderDetails?orderId=" + item.orderId)
}, [
vue.createElementVNode("view", { class: "order-top" }, [
item.doctorId != null ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "left"
}, [
vue.createElementVNode("image", {
class: "head",
mode: "aspectFill",
src: item.avatar
}, null, 8, ["src"]),
vue.createElementVNode(
"view",
{ class: "name" },
vue.toDisplayString(item.doctorName),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "dept" },
vue.toDisplayString(item.deptName),
1
/* TEXT */
)
])) : vue.createCommentVNode("v-if", true),
item.inquiryType == 2 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "left"
}, [
item.status == 1 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "title"
}, " 支付后为您安排医生接诊 ")) : vue.createCommentVNode("v-if", true),
item.status == 2 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "title"
}, " 正在为您安排医生接诊 ")) : vue.createCommentVNode("v-if", true),
item.status == -1 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 2,
class: "title"
}, " 订单已取消 ")) : vue.createCommentVNode("v-if", true),
item.status == -2 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 3,
class: "title"
}, " 订单已退款 ")) : vue.createCommentVNode("v-if", true),
item.status == -3 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 4,
class: "title"
}, " 医生已拒单 ")) : vue.createCommentVNode("v-if", true)
])) : vue.createCommentVNode("v-if", true),
item.status == 1 ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 2,
class: "status red"
},
vue.toDisplayString(_ctx.$getDictLabelName($data.orderStatusOptions, item.status)),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true),
item.status == 2 ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 3,
class: "status red"
},
vue.toDisplayString(_ctx.$getDictLabelName($data.orderStatusOptions, item.status)),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true),
item.status == 3 ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 4,
class: "status green"
},
vue.toDisplayString(_ctx.$getDictLabelName($data.orderStatusOptions, item.status)),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true),
item.status == 4 ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 5,
class: "status green"
},
vue.toDisplayString(_ctx.$getDictLabelName($data.orderStatusOptions, item.status)),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true),
item.status < 0 ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 6,
class: "status gray"
},
vue.toDisplayString(_ctx.$getDictLabelName($data.orderStatusOptions, item.status)),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true)
]),
vue.createElementVNode("view", { class: "order-cont" }, [
vue.createElementVNode("view", { class: "order-type" }, [
vue.createTextVNode(" 订单类型: "),
vue.createElementVNode(
"text",
null,
vue.toDisplayString(_ctx.$getDictLabelName($data.inquiryTypeOptions, item.inquiryType)),
1
/* TEXT */
),
vue.createElementVNode(
"text",
null,
"-" + vue.toDisplayString(_ctx.$getDictLabelName($data.orderTypeOptions, item.orderType)),
1
/* TEXT */
)
]),
vue.createElementVNode(
"view",
{ class: "order-desc" },
"病情描述:" + vue.toDisplayString(item.title),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "order-time-box" }, [
vue.createElementVNode(
"view",
{ class: "order-time" },
vue.toDisplayString(item.createTime),
1
/* TEXT */
),
vue.createElementVNode("view", { class: "right" }, [
item.status == 1 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "btn",
onClick: vue.withModifiers(($event) => $options.pay(item), ["stop"])
}, "去支付", 8, ["onClick"])) : vue.createCommentVNode("v-if", true),
item.status == 2 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "btn",
onClick: vue.withModifiers(($event) => $options.cancel(item), ["stop"])
}, "取消订单", 8, ["onClick"])) : vue.createCommentVNode("v-if", true),
item.status == 4 && item.isPing == 0 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 2,
class: "btn",
onClick: vue.withModifiers(($event) => $options.ping(item), ["stop"])
}, "去评价", 8, ["onClick"])) : vue.createCommentVNode("v-if", true),
item.status == 3 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 3,
class: "btn",
onClick: vue.withModifiers(($event) => $options.toIM(item), ["stop"])
}, "去咨询", 8, ["onClick"])) : vue.createCommentVNode("v-if", true)
])
])
])
], 8, ["onClick"]);
}),
256
/* UNKEYED_FRAGMENT */
))
])
]),
_: 1
/* STABLE */
}, 8, ["onInit", "down", "up", "onDown", "onUp"])
]);
}
const Pages_orderInquiryOrderList = /* @__PURE__ */ _export_sfc(_sfc_main$1y, [["render", _sfc_render$1x], ["__scopeId", "data-v-e21794e7"], ["__file", "E:/Project/2023/问诊平台/his_user_app/pages_order/inquiryOrderList.vue"]]);
const props$j = {
props: {
// 文字颜色
color: {
type: String,
default: props$y.link.color
},
// 字体大小,单位px
fontSize: {
type: [String, Number],
default: props$y.link.fontSize
},
// 是否显示下划线
underLine: {
type: Boolean,
default: props$y.link.underLine
},
// 要跳转的链接
href: {
type: String,
default: props$y.link.href
},
// 小程序中复制到粘贴板的提示语
mpTips: {
type: String,
default: props$y.link.mpTips
},
// 下划线颜色
lineColor: {
type: String,
default: props$y.link.lineColor
},
// 超链接的问题,不使用slot形式传入,是因为nvue下无法修改颜色
text: {
type: String,
default: props$y.link.text
}
}
};
const _sfc_main$1x = {
name: "u-link",
mixins: [mpMixin, mixin, props$j],
computed: {
linkStyle() {
const style = {
color: this.color,
fontSize: uni.$u.addUnit(this.fontSize),
// line-height设置为比字体大小多2px
lineHeight: uni.$u.addUnit(uni.$u.getPx(this.fontSize) + 2),
textDecoration: this.underLine ? "underline" : "none"
};
return style;
}
},
methods: {
openLink() {
plus.runtime.openURL(this.href);
this.$emit("click");
}
}
};
function _sfc_render$1w(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock(
"text",
{
class: "u-link",
onClick: _cache[0] || (_cache[0] = vue.withModifiers((...args) => $options.openLink && $options.openLink(...args), ["stop"])),
style: vue.normalizeStyle([$options.linkStyle, _ctx.$u.addStyle(_ctx.customStyle)])
},
vue.toDisplayString(_ctx.text),
5
/* TEXT, STYLE */
);
}
const __easycom_1$3 = /* @__PURE__ */ _export_sfc(_sfc_main$1x, [["render", _sfc_render$1w], ["__scopeId", "data-v-12f6646d"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u-link/u-link.vue"]]);
const value = {
computed: {
// 经处理后需要显示的值
value() {
const {
text,
mode,
format: format2,
href
} = this;
if (mode === "price") {
if (!/^\d+(\.\d+)?$/.test(text)) {
uni.$u.error("金额模式下,text参数需要为金额格式");
}
if (uni.$u.test.func(format2)) {
return format2(text);
}
return uni.$u.priceFormat(text, 2);
}
if (mode === "date") {
!uni.$u.test.date(text) && uni.$u.error("日期模式下,text参数需要为日期或时间戳格式");
if (uni.$u.test.func(format2)) {
return format2(text);
}
if (format2) {
return uni.$u.timeFormat(text, format2);
}
return uni.$u.timeFormat(text, "yyyy-mm-dd");
}
if (mode === "phone") {
if (uni.$u.test.func(format2)) {
return format2(text);
}
if (format2 === "encrypt") {
return `${text.substr(0, 3)}****${text.substr(7)}`;
}
return text;
}
if (mode === "name") {
!(typeof text === "string") && uni.$u.error("姓名模式下,text参数需要为字符串格式");
if (uni.$u.test.func(format2)) {
return format2(text);
}
if (format2 === "encrypt") {
return this.formatName(text);
}
return text;
}
if (mode === "link") {
!uni.$u.test.url(href) && uni.$u.error("超链接模式下,href参数需要为URL格式");
return text;
}
return text;
}
},
methods: {
// 默认的姓名脱敏规则
formatName(name) {
let value2 = "";
if (name.length === 2) {
value2 = name.substr(0, 1) + "*";
} else if (name.length > 2) {
let char = "";
for (let i = 0, len = name.length - 2; i < len; i++) {
char += "*";
}
value2 = name.substr(0, 1) + char + name.substr(-1, 1);
} else {
value2 = name;
}
return value2;
}
}
};
const button = {
props: {
lang: String,
sessionFrom: String,
sendMessageTitle: String,
sendMessagePath: String,
sendMessageImg: String,
showMessageCard: Boolean,
appParameter: String,
formType: String,
openType: String
}
};
const openType = {
props: {
openType: String
},
methods: {
onGetUserInfo(event) {
this.$emit("getuserinfo", event.detail);
},
onContact(event) {
this.$emit("contact", event.detail);
},
onGetPhoneNumber(event) {
this.$emit("getphonenumber", event.detail);
},
onError(event) {
this.$emit("error", event.detail);
},
onLaunchApp(event) {
this.$emit("launchapp", event.detail);
},
onOpenSetting(event) {
this.$emit("opensetting", event.detail);
}
}
};
const props$i = {
props: {
// 主题颜色
type: {
type: String,
default: props$y.text.type
},
// 是否显示
show: {
type: Boolean,
default: props$y.text.show
},
// 显示的值
text: {
type: [String, Number],
default: props$y.text.text
},
// 前置图标
prefixIcon: {
type: String,
default: props$y.text.prefixIcon
},
// 后置图标
suffixIcon: {
type: String,
default: props$y.text.suffixIcon
},
// 文本处理的匹配模式
// text-普通文本,price-价格,phone-手机号,name-姓名,date-日期,link-超链接
mode: {
type: String,
default: props$y.text.mode
},
// mode=link下,配置的链接
href: {
type: String,
default: props$y.text.href
},
// 格式化规则
format: {
type: [String, Function],
default: props$y.text.format
},
// mode=phone时,点击文本是否拨打电话
call: {
type: Boolean,
default: props$y.text.call
},
// 小程序的打开方式
openType: {
type: String,
default: props$y.text.openType
},
// 是否粗体,默认normal
bold: {
type: Boolean,
default: props$y.text.bold
},
// 是否块状
block: {
type: Boolean,
default: props$y.text.block
},
// 文本显示的行数,如果设置,超出此行数,将会显示省略号
lines: {
type: [String, Number],
default: props$y.text.lines
},
// 文本颜色
color: {
type: String,
default: props$y.text.color
},
// 字体大小
size: {
type: [String, Number],
default: props$y.text.size
},
// 图标的样式
iconStyle: {
type: [Object, String],
default: props$y.text.iconStyle
},
// 文字装饰,下划线,中划线等,可选值 none|underline|line-through
decoration: {
tepe: String,
default: props$y.text.decoration
},
// 外边距,对象、字符串,数值形式均可
margin: {
type: [Object, String, Number],
default: props$y.text.margin
},
// 文本行高
lineHeight: {
type: [String, Number],
default: props$y.text.lineHeight
},
// 文本对齐方式,可选值left|center|right
align: {
type: String,
default: props$y.text.align
},
// 文字换行,可选值break-word|normal|anywhere
wordWrap: {
type: String,
default: props$y.text.wordWrap
}
}
};
const _sfc_main$1w = {
name: "u--text",
mixins: [mpMixin, mixin, value, props$i],
emits: ["click"],
computed: {
valueStyle() {
const style = {
textDecoration: this.decoration,
fontWeight: this.bold ? "bold" : "normal",
wordWrap: this.wordWrap,
fontSize: uni.$u.addUnit(this.size)
};
!this.type && (style.color = this.color);
this.isNvue && this.lines && (style.lines = this.lines);
this.lineHeight && (style.lineHeight = uni.$u.addUnit(this.lineHeight));
!this.isNvue && this.block && (style.display = "block");
return uni.$u.deepMerge(style, uni.$u.addStyle(this.customStyle));
},
isNvue() {
let nvue = false;
return nvue;
},
isMp() {
let mp = false;
return mp;
}
},
data() {
return {};
},
methods: {
clickHandler() {
if (this.call && this.mode === "phone") {
uni.makePhoneCall({
phoneNumber: this.text
});
}
this.$emit("click");
}
}
};
function _sfc_render$1v(_ctx, _cache, $props, $setup, $data, $options) {
const _component_u_icon = resolveEasycom(vue.resolveDynamicComponent("u-icon"), __easycom_0$a);
const _component_u_link = resolveEasycom(vue.resolveDynamicComponent("u-link"), __easycom_1$3);
return _ctx.show ? (vue.openBlock(), vue.createElementBlock(
"view",
{
key: 0,
class: vue.normalizeClass(["u-text", []]),
style: vue.normalizeStyle({
margin: _ctx.margin,
justifyContent: _ctx.align === "left" ? "flex-start" : _ctx.align === "center" ? "center" : "flex-end"
}),
onClick: _cache[6] || (_cache[6] = (...args) => $options.clickHandler && $options.clickHandler(...args))
},
[
_ctx.mode === "price" ? (vue.openBlock(), vue.createElementBlock(
"text",
{
key: 0,
class: vue.normalizeClass(["u-text__price", _ctx.type && `u-text__value--${_ctx.type}`]),
style: vue.normalizeStyle([$options.valueStyle])
},
"¥",
6
/* CLASS, STYLE */
)) : vue.createCommentVNode("v-if", true),
_ctx.prefixIcon ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "u-text__prefix-icon"
}, [
vue.createVNode(_component_u_icon, {
name: _ctx.prefixIcon,
customStyle: _ctx.$u.addStyle(_ctx.iconStyle)
}, null, 8, ["name", "customStyle"])
])) : vue.createCommentVNode("v-if", true),
_ctx.mode === "link" ? (vue.openBlock(), vue.createBlock(_component_u_link, {
key: 2,
text: _ctx.value,
href: _ctx.href,
underLine: ""
}, null, 8, ["text", "href"])) : _ctx.openType && $options.isMp ? (vue.openBlock(), vue.createElementBlock("button", {
key: 3,
class: "u-reset-button u-text__value",
style: vue.normalizeStyle([$options.valueStyle]),
"data-index": _ctx.index,
openType: _ctx.openType,
onGetuserinfo: _cache[0] || (_cache[0] = (...args) => _ctx.onGetUserInfo && _ctx.onGetUserInfo(...args)),
onContact: _cache[1] || (_cache[1] = (...args) => _ctx.onContact && _ctx.onContact(...args)),
onGetphonenumber: _cache[2] || (_cache[2] = (...args) => _ctx.onGetPhoneNumber && _ctx.onGetPhoneNumber(...args)),
onError: _cache[3] || (_cache[3] = (...args) => _ctx.onError && _ctx.onError(...args)),
onLaunchapp: _cache[4] || (_cache[4] = (...args) => _ctx.onLaunchApp && _ctx.onLaunchApp(...args)),
onOpensetting: _cache[5] || (_cache[5] = (...args) => _ctx.onOpenSetting && _ctx.onOpenSetting(...args)),
lang: _ctx.lang,
"session-from": _ctx.sessionFrom,
"send-message-title": _ctx.sendMessageTitle,
"send-message-path": _ctx.sendMessagePath,
"send-message-img": _ctx.sendMessageImg,
"show-message-card": _ctx.showMessageCard,
"app-parameter": _ctx.appParameter
}, vue.toDisplayString(_ctx.value), 45, ["data-index", "openType", "lang", "session-from", "send-message-title", "send-message-path", "send-message-img", "show-message-card", "app-parameter"])) : (vue.openBlock(), vue.createElementBlock(
"text",
{
key: 4,
class: vue.normalizeClass(["u-text__value", [
_ctx.type && `u-text__value--${_ctx.type}`,
_ctx.lines && `u-line-${_ctx.lines}`
]]),
style: vue.normalizeStyle([$options.valueStyle])
},
vue.toDisplayString(_ctx.value),
7
/* TEXT, CLASS, STYLE */
)),
_ctx.suffixIcon ? (vue.openBlock(), vue.createElementBlock("view", {
key: 5,
class: "u-text__suffix-icon"
}, [
vue.createVNode(_component_u_icon, {
name: _ctx.suffixIcon,
customStyle: _ctx.$u.addStyle(_ctx.iconStyle)
}, null, 8, ["name", "customStyle"])
])) : vue.createCommentVNode("v-if", true)
],
4
/* STYLE */
)) : vue.createCommentVNode("v-if", true);
}
const uvText = /* @__PURE__ */ _export_sfc(_sfc_main$1w, [["render", _sfc_render$1v], ["__scopeId", "data-v-0a574502"], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u-text/u-text.vue"]]);
const _sfc_main$1v = {
name: "u--text",
mixins: [mpMixin, mixin, props$i],
components: {
uvText
}
};
function _sfc_render$1u(_ctx, _cache, $props, $setup, $data, $options) {
const _component_uvText = vue.resolveComponent("uvText");
return vue.openBlock(), vue.createBlock(_component_uvText, {
type: _ctx.type,
show: _ctx.show,
text: _ctx.text,
prefixIcon: _ctx.prefixIcon,
suffixIcon: _ctx.suffixIcon,
mode: _ctx.mode,
href: _ctx.href,
format: _ctx.format,
call: _ctx.call,
openType: _ctx.openType,
bold: _ctx.bold,
block: _ctx.block,
lines: _ctx.lines,
color: _ctx.color,
decoration: _ctx.decoration,
size: _ctx.size,
iconStyle: _ctx.iconStyle,
margin: _ctx.margin,
lineHeight: _ctx.lineHeight,
align: _ctx.align,
wordWrap: _ctx.wordWrap,
customStyle: _ctx.customStyle
}, null, 8, ["type", "show", "text", "prefixIcon", "suffixIcon", "mode", "href", "format", "call", "openType", "bold", "block", "lines", "color", "decoration", "size", "iconStyle", "margin", "lineHeight", "align", "wordWrap", "customStyle"]);
}
const __easycom_0$5 = /* @__PURE__ */ _export_sfc(_sfc_main$1v, [["render", _sfc_render$1u], ["__file", "E:/Project/2023/问诊平台/his_user_app/uni_modules/uview-plus/components/u--text/u--text.vue"]]);
const props$h = {
props: {
// 图片地址,Array|Array