This commit is contained in:
liuyuan
2025-09-04 13:55:23 +08:00
parent 9126f47346
commit 0d0bf4bb3a
27 changed files with 9302 additions and 5262 deletions

19
App.vue
View File

@@ -17,14 +17,17 @@ export default {
appRegisterMap: undefined,
};
},
onLaunch: function() {
uni.setStorageSync("isJump", null);
// 禁止横屏
onLaunch: function() {
// #ifdef APP-PLUS
updata();
plus.screen.lockOrientation("portrait-primary");
// 检测自动更新
updata();
// #endif
uni.setStorageSync("isJump", null);
// 禁止横屏
uni.getSystemInfo({
success(res) {
Vue.prototype.winWidth = res.screenWidth;
@@ -32,7 +35,8 @@ export default {
Vue.prototype.statusBarHeight = res.statusBarHeight;
},
});
//取出缓存数据
store.commit("setCacheData");
// #ifdef MP-WEIXIN
@@ -77,7 +81,10 @@ export default {
});
store.commit("setChatScenesInfo", Object.assign(e.query, data));
// #endif
},
},methods: {
// 处理通知权限
},
onHide: function() {
console.log('App Hide')
},

View File

@@ -47,9 +47,9 @@
</view>
</view>
</view>
<view style="padding: 0rpx 30rpx; width: calc(100% - 100rpx);margin-left: 100rpx;">
<u-read-more showHeight="120" :toggle="true" color="#5a6988">
<view class="title" style="text-indent: 0 !important">{{ title }}</view>
<view style="padding: 0rpx 30rpx; width: calc(100% - 100rpx);margin-left: 100rpx;"> <view class="title" style="text-indent: 0 !important">{{ title }}</view>
<u-read-more showHeight="110" :toggle="true" color="#5a6988" @open="openRead()">
<rich-text
:nodes="content"
style="
@@ -178,6 +178,9 @@ export default {
likeCount: {
type: Number,
},
id: {
type: Number,
},
readCount: {
type: Number,
},
@@ -217,8 +220,9 @@ export default {
operateDisplay: "block",
shadowStyle: {
// #ifndef APP-NVUE
backgroundImage:
"linear-gradient(-180deg, rgba(255, 255, 255, 0) 0%, #fff 80%)",
"linear-gradient((177deg, rgb(255, 255, 255) 0%, rgba(220, 230, 255, 0.4) 80%))",
// #endif
// #ifdef APP-NVUE
// nvue上不支持设置复杂的backgroundImage属性
@@ -247,8 +251,12 @@ export default {
this.initOperate();
},
methods: {
openRead(){
this.$emit('addRead',this.id)
},
// 预览图片
previewImg(index) {
this.$emit('addRead',this.id)
uni.previewImage({
urls: this.imgList,
// longPressActions: {
@@ -554,4 +562,10 @@ export default {
-webkit-line-clamp: 5;
height: auto;
}
::v-deep .u-read-more__toggle{
background-image: linear-gradient(177deg,
rgb(255, 255, 255) 0%,
rgba(220, 230, 255, 0.4) 80%
) !important;
}
</style>

View File

@@ -3,11 +3,11 @@ let baseUrl = "";
let socketUrl = "";
if (process.env.NODE_ENV === 'development') {
// 开发环境
baseUrl = "http://192.168.110.100:9200/pb/"; // 张川川
// baseUrl = "https://api.nuttyreading.com/"; //线上正式
// baseUrl = "http://192.168.110.100:9200/pb/"; // 张川川
baseUrl = "https://api.nuttyreading.com/"; //线上正式
} else if (process.env.NODE_ENV === 'production') {
baseUrl = "http://192.168.110.100:9200/pb/"; // 张川川
// baseUrl = "https://api.nuttyreading.com/"; //线上正式
// baseUrl = "http://192.168.110.100:9200/pb/"; // 张川川
baseUrl = "https://api.nuttyreading.com/"; //线上正式
}
const courtConfig = {
//微信公众号APPID

View File

@@ -2,8 +2,8 @@
"name" : "太湖云医",
"appid" : "__UNI__1B1584A",
"description" : "太湖云医",
"versionName" : "1.0.03",
"versionCode" : 1003,
"versionName" : "1.0.05",
"versionCode" : 1005,
"transformPx" : false,
/* 5+App */
"app-plus" : {
@@ -130,7 +130,8 @@
}
}
}
}
},
"nativePlugins" : {}
},
/* */
"quickapp" : {},

View File

@@ -96,6 +96,18 @@
}
}
},
{
"path": "pages/articleList/articleAdd",
"style": {
"navigationBarTitleText": "文章",
"app-plus": {
"bounce": "none",
"titleNView": false,
"popGesture": "none"
}
}
},
{
"path": "pages/user/login",

View File

@@ -85,7 +85,7 @@
<view
class="home_wrap home_wrap_analysis"
v-if="options.type != 'detail'"
:style="`height: calc(100% - ${48 + statusBarHeight}px);`"
:style="`height:auto;overflow-y: visible`"
>
<view class="home_form" style="position: relative">
<view
@@ -133,8 +133,8 @@
@afterRead="addPic"
@delete="deletePic"
multiple
width="120"
height="120"
width="110"
height="110"
:previewFullImage="true"
>
</u-upload>
@@ -264,7 +264,7 @@
v-if="articleInfo.createTime"
>{{ articleInfo.createTime }}
<uni-icons
v-if="articleInfo.come == 0"
type="trash-filled"
size="24"
@tap="showDel = true"
@@ -632,6 +632,7 @@ export default {
delArticle() {
var that = this;
this.showDel=false
uni.showLoading({
title: "加载中",
});
@@ -649,6 +650,7 @@ export default {
.then((res) => {
uni.hideLoading();
if (res.code == 0) {
uni.showToast({
title: "删除成功",
icon: "success",
@@ -657,6 +659,7 @@ export default {
this.$commonJS.refreshPrevPageData();
} else {
this.showDel=false
uni.showToast({
title: "删除失败",
icon: "success",
@@ -685,7 +688,7 @@ export default {
type: 0,
href: this.$apkUrl,
title: `我在【太湖云医】发布了文章 “ ${this.articleInfo.title} ”`,
// summary: `${this.productInfo.content}`,
summary: `${this.articleInfo.content.substring(0, 50).replace(/<[^>]*>/g, '').trim()}`,
imageUrl: image,
success: function (res) {
console.log("success:" + JSON.stringify(res));
@@ -702,7 +705,7 @@ export default {
type: 0,
href: this.$apkUrl,
title: `我在【太湖云医】发布了文章 “ ${this.articleInfo.title} ”`,
// summary: `${this.taskInfo.content}`,
summary: `${this.articleInfo.content.substring(0, 50).replace(/<[^>]*>/g, '').trim()}`,
imageUrl: image,
success: function (res) {
console.log("success:" + JSON.stringify(res));

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
<template>
<view class="richtext" style="height: 100%;">
<piaoyiEditor :height="height" :placeholder="placeholder" :values="values" @changes="saveContens" :readOnly="readOnly" :photoUrl="photoUrl" :api="api" :name="name"/>
<piaoyiEditor :toolbarTop="`${48 + statusBarHeight}px`" :height="height" :placeholder="placeholder" :values="values" @changes="saveContens" :readOnly="readOnly" :photoUrl="photoUrl" :api="api" :name="name"/>
</view>

View File

@@ -72,7 +72,7 @@
><text
style="margin-right: 30rpx; color: #e38d54"
v-if="item.come == 1"
>医案转发</text
>医案同步</text
><text style="letter-spacing: 1rpx">{{
item.createTime ? item.createTime : ""
}}</text></view
@@ -273,7 +273,7 @@ export default {
selectClick(e) {
console.log(e.name);
if (e.name == "删除") {
if (e.name == "删除文章") {
this.showDel=true;
} else {
uni.navigateTo({
@@ -308,9 +308,9 @@ export default {
}
if (item.come == 1) {
this.operateList = list;
} else {
// if (item.come == 1) {
// this.operateList = list;
// } else {
this.operateList = [
...list,
{
@@ -321,7 +321,7 @@ export default {
fontSize: "16",
},
];
}
// }
this.selectArticleId = item.id;
this.showOperate = true;
// this.$refs.commentLikePopup.showCommentPopup();
@@ -343,7 +343,7 @@ export default {
},
createFolder() {
uni.navigateTo({
url: `/pages/articleList/article?navTitle=文章&title=文章&type=add`,
url: `/pages/articleList/articleAdd?navTitle=文章&title=文章&type=add`,
});
},
//判断显示‘上/中/下’
@@ -386,6 +386,7 @@ export default {
//获取列表数据
delArticle() {
var that = this;
this.showDel=false;
uni.showLoading({
title: "加载中",
});
@@ -403,18 +404,27 @@ export default {
.then((res) => {
uni.hideLoading();
if (res.code == 0) {
uni.showToast({
title: "删除成功",
icon: "success",
duration: 2000,
});
}
this.$nextTick(() => {
this.$nextTick(() => {
this.list = this.list.filter((e) => {
return e.id != this.selectArticleId;
});
this.count = this.list.length;
});
}else {
this.showDel=false
uni.showToast({
title: "删除失败",
icon: "success",
duration: 2000,
});
}
});
},
getListData(taihumedId, type) {

View File

@@ -6,7 +6,7 @@
fontColor="#fff"
:backState="2000"
>
<template v-slot:right v-if="activeTab === 1">
<template v-slot:right v-if="activeTab === 1&&showArticleButton">
<view class="top_right" @tap="createFolder" style="margin-right: 20rpx">
<uni-icons type="folder-add" size="17" color="#fff"></uni-icons>
<text>发布文章</text>
@@ -202,6 +202,7 @@
:name="item.taihuTalent&&item.taihuTalent.name?item.taihuTalent.name:''"
:createTime="item.createTime"
:title="item.title"
:id="item.id"
:content="item.content"
:isLike="item.likeFlag"
:isGiveReward="item.isGiveReward"
@@ -211,6 +212,7 @@
:giveRewardNumber="item.giveRewardNumber"
:commentCount="item.commentCount"
@clickDynamic="clickDynamic(index)"
@addRead="addRead"
@clickUser="clickUser(item)"
@clickFocus="clickFocus(index)"
@clickThumbsup="(type) => clickThumbsup(item.id, type)"
@@ -265,6 +267,7 @@ export default {
return {
sysNotices_list:[],
shareId: null,
showArticleButton: false,
activeTab: 0,
tabsList: [],
currentCateIndex: 0,
@@ -326,8 +329,34 @@ export default {
uni.hideTabBar();
this.getTabData();
},
onShow() {},
onShow() {
this.isShowArticleButton()
if (this.activeTab == 0&&this.taihumedId!=null) {
this.getListData(this.taihumedId);
} else if (this.activeTab == 1) {
this.getArticleListData(true);
}
},
methods: {
async addRead(articleId){
// common/taihuTalentArticle/addReadCount
await $http
.request({
url: "common/taihuTalentArticle/addReadCount",
method: "POST",
data: {"articleId":articleId},
header: {
"Content-Type": "application/json",
},
})
.then(async (res) => {
if(res.code == 0){
console.log(res)
this.getArticleDetail(articleId);
}
});
},
confirm2(){
this.$refs.customModal2.close();
this.sysNotices_list.forEach(e=>{
@@ -358,6 +387,26 @@ readArticle(item){
})
.then(async (res) => {
});
},
//已读记录
async isShowArticleButton() {
await $http
.request({
url: "common/taihuTalentArticle/getArticleRoleByUser",
method: "POST",
data: { },
header: {
"Content-Type": "application/json",
},
})
.then(async (res) => {
if(res.code == 0 && res.roleFlag == 1){
this.showArticleButton=true
}else{
this.showArticleButton=false
}
});
},
async getSysNotices() {
@@ -378,8 +427,8 @@ readArticle(item){
}
});
},
refreshData(reset) {
if (reset) {
refreshData() {
this.activeTab=1;
this.currentCateIndex = 0;
//重置
@@ -389,21 +438,21 @@ readArticle(item){
this.count = 0;
this.current = 1;
this.getArticleListData();
}
},
createFolder() {
uni.navigateTo({
url: `/pages/articleList/article?navTitle=文章&title=文章&type=add`,
url: `/pages/articleList/articleAdd?navTitle=文章&title=文章&type=add`,
});
},
newOnShare() {
this.$refs.share.open();
},
haveSelected() {
var data = this.list.find((item) => item.id == this.shareId);
haveSelected(data) {
var data1 = this.list.find((item) => item.id == this.shareId);
let image = "";
data.img && data.img != ""
? (image = data.img.split(",")[0])
data1.img && data1.img != ""
? (image = data1.img.split(",")[0])
: (image = "static/logo_zi.png");
console.log(data, " 选择的是");
if (data.index == 0) {
@@ -413,8 +462,8 @@ readArticle(item){
scene: "WXSceneSession",
type: 0,
href: this.$apkUrl,
title: `我在【太湖云医】发布了文章 “ ${data.title} ”`,
// summary: `${this.productInfo.content}`,
title: `我在【太湖云医】发布了文章 “ ${data1.title} ”`,
summary: `${data1.content.substring(0, 50).replace(/<[^>]*>/g, '').trim()}`,
imageUrl: image,
success: function (res) {
console.log("success:" + JSON.stringify(res));
@@ -430,8 +479,8 @@ readArticle(item){
scene: "WXSceneTimeline",
type: 0,
href: this.$apkUrl,
title: `我在【太湖云医】发布了文章 “ ${data.title} ”`,
// summary: `${this.taskInfo.content}`,
title: `我在【太湖云医】发布了文章 “ ${data1.title} ”`,
summary: `${data1.content.substring(0, 50).replace(/<[^>]*>/g, '').trim()}`,
imageUrl: image,
success: function (res) {
console.log("success:" + JSON.stringify(res));
@@ -597,6 +646,7 @@ readArticle(item){
},
//获取列表数据
getArticleListData(type) {
if (type) {
this.current = 1;
this.list = [];

View File

@@ -173,18 +173,18 @@
item.showFlag == 1 ? '#5188e5' : '#5e6d82'
};display: flex;align-items: center;`"
>
<template @click.stop="changeShowFlag(item)">
<text style="margin-right: 10rpx"
<view @click.stop="changeShowFlag(item)">
<text style="margin-right: 10rpx"
>是否在我的医案中展示</text
>
<uni-icons
<uni-icons style="margin-right: 10rpx;display: inline-block;"
:color="item.showFlag == 1 ? '#5188e5' : '#5e6d82'"
:type="
item.showFlag == 0 ? 'eye-slash-filled' : 'eye-filled'
"
size="24"
></uni-icons>
</template>
</view>
<view @click.stop="changeShowArticleFlag(item)"
v-if="item.articleFlag == 0"

View File

@@ -386,6 +386,10 @@ export default {
this.$commonJS.showToast("请至少上传一张图片");
return;
}
if (this.fileList1.length == 0) {
this.$commonJS.showToast("请至少上传一张图片");
return;
}
}
if (
["妇科", "儿科"].includes(this.medicalForm.labelTitle) &&

View File

@@ -128,11 +128,11 @@ export default {
this.payType = 1;
}
this.chargeOrderSn = options.orderSn;
this.getDevName();
},
//页面显示
onShow() {
this.getDevName();
},
computed: {
...mapState(["userInfo"]),
@@ -373,8 +373,8 @@ export default {
title: '加载中'
})
var data = {
type: "point",
qudao: "Android",
type: "vip",
qudao: "google",
};
$http.request({
url: this.urlList.list,
@@ -385,6 +385,7 @@ export default {
},
})
.then((res) => {
console.log(res,'11111111111111')
uni.hideLoading();
this.cjList = res.bookBuyConfigList;
//this.stepsCj = res.bookBuyConfigList[0];

View File

@@ -3,6 +3,7 @@
class="hb-comment"
:style="isDisable || isShowList || isPopup ? 'height:auto' : 'height: 70vh'"
id="commentData"
>
<!-- 阅读数-start -->
@@ -73,7 +74,7 @@
<view
class="comment-main-content"
style="color: #232325; line-height: 38rpx"
@click="reply(item.user.nickname, item.user.nickname, item.id)"
@click.stop="reply(item.user.nickname, item.user.nickname, item.id)"
>
{{ item.content }}
<!-- {{
@@ -90,9 +91,7 @@
</view>
<view class="comment-main-foot">
<view
@click="
reply(item.user.nickname, item.user.nickname, item.id)
"
@click.stop="reply(item.user.nickname, item.user.nickname, item.id)"
class="foot-time"
style="color: #b7b8ba; letter-spacing: 1rpx; font-size: 24rpx"
>{{ item.createTime }}</view
@@ -101,7 +100,7 @@
class="foot-btn"
style="color: #777775"
v-if="!isDisable"
@click="
@click.stop="
reply(item.user.nickname, item.user.nickname, item.id)
"
>回复</view
@@ -145,7 +144,7 @@
<view
class="comment-main-content"
style="color: #232325 !important; line-height: 38rpx"
@click="
@click.stop="
reply(each.user.nickname, each.user.nickname, item.id)
"
>
@@ -153,9 +152,9 @@
</view>
<view class="comment-main-foot">
<view
@click="
reply(each.user.nickname, each.user.nickname, item.id)
"
@click.stop="
reply(each.user.nickname, each.user.nickname, item.id)
"
class="foot-time"
style="
color: #b7b8ba;
@@ -168,7 +167,7 @@
class="foot-btn"
style="color: #777775"
v-if="each.user && !isDisable"
@click="
@click.stop="
reply(each.user.nickname, each.user.nickname, item.id)
"
>
@@ -249,7 +248,7 @@
</view>
<view
class="input-container"
:style="{ bottom: (show?205:0) + 'px' }"
:style="{ bottom: (show?200:0) + 'px' }"
v-if="showInput"
>
<view style="overflow: hidden; margin-bottom: 4rpx; font-size: 32rpx"
@@ -262,7 +261,7 @@
>取消</text
>
<text @click.stop="sendComment" style="float: right; color: #1985fd;margin-right:20rpx;margin-top:4rpx;"
<text @click.stop="sendComment" style="float: right; color: #1985fd;margin-right:20rpx;margin-top:4rpx;z-index: 99999;"
>发送</text
>
<image
@@ -284,7 +283,7 @@
</view>
<view>
<view :style="!show?'padding-bottom: 20rpx':'padding-bottom: 10rpx'">
<textarea
auto-height
@@ -294,8 +293,8 @@
maxlength="-1"
:placeholder="placeholder ? placeholder : '发表评论...'"
@focus.stop="onInputFocus"
:auto-focus="showInput"
@blur.stop="onInputBlur"
:auto-focus="focus"
/>
</view>
@@ -542,8 +541,12 @@ export default {
emojichet() {
// this.reply("", "", 0);
this.show = true; // 打开 emoji 列表
setTimeout(()=>{
this.focus=false
this.showInput=true
this.show = true;
},50)
// 打开 emoji 列表
// if(this.show){
// this.focus = false;
// }else{
@@ -568,20 +571,28 @@ export default {
},
// 输入框失去焦点
onInputBlur() {
onInputBlur(event) {
console.log(11111111111);
if (!this.commentContent.trim()) {
this.showInput = false;
}
// 阻止焦点事件冒泡,防止冲突
event.stopPropagation();
console.log('失去焦点');
// if (!this.commentContent.trim()) {
setTimeout(()=>{
this.showInput = false;
},50)
// }
// 如果输入框为空,点击空白处关闭输入框
},
// 发送评论
sendComment() {
if (this.commentContent.trim()) {
sendComment(event) {
setTimeout(()=>{
event.stopPropagation();
console.log('按钮点击');
if (this.commentContent.trim()) {
// 这里添加发送评论的逻辑
console.log("发送评论:", this.commentContent);
this.$emit("add", this.commentContent, this.pId);
@@ -592,6 +603,8 @@ export default {
} else {
this.$commonJS.showToast("请输入评论");
}
},0)
},
// 初始化评论
init(cmData) {
@@ -607,7 +620,9 @@ export default {
stopPrevent() {},
// 回复评论
reply(pUser, reUser, pId) {
this.showInput = false;
this.show=false
this.focus=false
if (this.isDisable) {
return false;
}
@@ -632,7 +647,12 @@ export default {
// } else {
// this.commentReq.content = "";
// }
this.showInput = true;
setTimeout(()=>{
this.focus=true
this.showInput = true;
},20)
// this.showTag = true;
// this.commentInput();
},
@@ -937,6 +957,7 @@ export default {
// text-align: center;
color: #999999;
position: fixed;
padding-bottom: 20rpx;
bottom: 0;
left: 0;
display: flex;

View File

@@ -4,7 +4,7 @@
<view class="page-body" style="height: 100%;">
<view class='wrapper' style="height: 100%;">
<PickerColor ref="colorPicker" :color="{r: 255,g: 0,b: 0,a: 0.6}" @confirm="confirm"></PickerColor>
<view class='toolbar' @tap="format">
<view class='toolbar' @tap="format" :style="`top:${toolbarTop?toolbarTop:0} ;`">
<!-- <view class="iconfont icon-undo" @tap="undo"></view>
<view class="iconfont icon-redo" @tap="redo"></view> -->
<!-- <view class="iconfont icon-charutupian" @tap="insertImage"></view> -->
@@ -75,6 +75,10 @@
type: String,
default: ''
},
toolbarTop: {
type: String,
default: ''
},
placeholder: {
type: String,
default: ''
@@ -399,8 +403,8 @@
position: sticky;
top: -1px; /* 距离顶部的距离 */
z-index: 10; /* 确保在其他内容之上 */
background-color: #d8e6ff;
border-bottom: 1rpx solid #5188e5;
background-color: #fff;
border-bottom: 1rpx solid #f7f7f7;
/* position: fixed;
bottom: 10upx;
left: 0;
@@ -419,6 +423,9 @@
line-height: 1;
padding-bottom: 60upx;
}
/deep/ .ql-container .ql-editor{
overflow: visible !important;
}
/deep/ .ql-editor.ql-blank:before {
font-size: 28upx;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 966 B

File diff suppressed because one or more lines are too long