Merge remote-tracking branch 'origin/dev-2.45hjf' into dev-h2.45

This commit is contained in:
huxuejian 2026-05-27 14:29:11 +08:00
commit 4dc96b2337
55 changed files with 1656 additions and 1056 deletions

View File

@ -344,19 +344,19 @@
}
.text-sm {
font-size: 24rpx;
font-size: 26rpx;
}
.text-base {
font-size: 28rpx;
font-size: 30rpx;
}
.text-lg {
font-size: 32rpx;
font-size: 34rpx;
}
.text-xl {
font-size: 36rpx;
font-size: 38rpx;
}
.leading-normal {

View File

@ -21,11 +21,11 @@
display: flex;
align-items: center;
text-align: right;
font-size: 28rpx;
font-size: 30rpx;
}
.form__placeholder {
font-size: 28rpx;
font-size: 30rpx;
color: #666;
}
@ -49,7 +49,7 @@
align-items: center;
padding: 24rpx 30rpx;
border-bottom: 1px solid #eee;
font-size: 28rpx;
font-size: 30rpx;
}
.form-row__label {

View File

@ -84,13 +84,13 @@ function open() {
gap: 12rpx;
}
.label {
font-size: 28rpx;
font-size: 30rpx;
color: #111827;
font-weight: 700;
}
.required {
color: #ff4d4f;
font-size: 28rpx;
font-size: 30rpx;
}
.right {
display: flex;
@ -100,7 +100,7 @@ function open() {
justify-content: flex-end;
}
.value {
font-size: 28rpx;
font-size: 30rpx;
color: #111827;
max-width: 440rpx;
overflow: hidden;

View File

@ -40,13 +40,23 @@ const files = computed(() => {
if (Array.isArray(v)) {
return v
.map((i) => {
if (typeof i === 'string') return { url: normalizeFileUrl(i) };
if (i && typeof i === 'object' && i.url) return { url: normalizeFileUrl(String(i.url)) };
if (typeof i === 'string') return { url: normalizeFileUrl(i), name: getFileNameFromUrl(i) };
if (i && typeof i === 'object' && i.url) {
const url = normalizeFileUrl(String(i.url));
return {
...i,
url,
name: i.name || i.fileName || getFileNameFromUrl(url),
};
}
return null;
})
.filter(Boolean);
}
if (typeof v === 'string' && v) return [{ url: normalizeFileUrl(v) }];
if (typeof v === 'string' && v) {
const url = normalizeFileUrl(v);
return [{ url, name: getFileNameFromUrl(url) }];
}
return [];
});
@ -74,7 +84,21 @@ async function add() {
}
const url = await chooseAndUploadImage({ count: 1 });
if (!url) return;
emitValue([...files.value, { url }]);
emitValue([...files.value, { url, name: getFileNameFromUrl(url) }]);
}
function getFileNameFromUrl(url) {
const cleanUrl = String(url || '').split('?')[0].split('#')[0];
const rawName = cleanUrl.split('/').pop() || '';
if (!rawName) return '';
let fileName = rawName;
try {
fileName = decodeURIComponent(rawName);
} catch (error) {
fileName = rawName;
}
return fileName.replace(/^\d{10,}[-_]/, '');
}
</script>
@ -88,7 +112,7 @@ async function add() {
}
.files-label {
font-size: 28rpx;
font-size: 30rpx;
line-height: 42rpx;
}
@ -124,7 +148,7 @@ async function add() {
background: rgba(0, 0, 0, 0.55);
color: #fff;
border-radius: 18rpx;
font-size: 28rpx;
font-size: 30rpx;
}
.add {
@ -139,7 +163,7 @@ async function add() {
}
.plus {
font-size: 56rpx;
font-size: 58rpx;
line-height: 56rpx;
}
</style>

View File

@ -68,7 +68,7 @@ function change(e) {
.form-input {
flex-grow: 1;
font-size: 28rpx;
font-size: 30rpx;
}
.appendText {

View File

@ -126,7 +126,7 @@ function onOtherInput(e) {
}
.label {
font-size: 28rpx;
font-size: 30rpx;
line-height: 42rpx;
}
@ -142,7 +142,7 @@ function onOtherInput(e) {
padding: 12rpx 20rpx;
border: 1px solid #ddd;
border-radius: 8rpx;
font-size: 26rpx;
font-size: 28rpx;
text-align: center;
color: #333;
background: #fff;
@ -160,7 +160,7 @@ function onOtherInput(e) {
.other-input {
width: 100%;
font-size: 28rpx;
font-size: 30rpx;
padding: 18rpx 20rpx;
border: 1px solid #eee;
border-radius: 8rpx;

View File

@ -113,13 +113,13 @@ function remove(idx) {
gap: 12rpx;
}
.label {
font-size: 28rpx;
font-size: 30rpx;
font-weight: 700;
color: #111827;
}
.required {
color: #ff4d4f;
font-size: 28rpx;
font-size: 30rpx;
}
.list {
margin-top: 20rpx;
@ -140,14 +140,14 @@ function remove(idx) {
min-width: 0;
}
.item-title {
font-size: 28rpx;
font-size: 30rpx;
color: #111827;
font-weight: 600;
word-break: break-all;
}
.item-sub {
margin-top: 12rpx;
font-size: 26rpx;
font-size: 28rpx;
color: #6b7280;
white-space: pre-wrap;
word-break: break-all;
@ -160,7 +160,7 @@ function remove(idx) {
padding-top: 4rpx;
}
.text-action {
font-size: 26rpx;
font-size: 28rpx;
line-height: 1;
}
.text-action.edit {
@ -171,7 +171,7 @@ function remove(idx) {
}
.empty {
margin-top: 20rpx;
font-size: 26rpx;
font-size: 28rpx;
color: #9aa0a6;
}
</style>

View File

@ -79,12 +79,12 @@ function onInput(e, key) {
.num {
width: 80rpx;
text-align: right;
font-size: 28rpx;
font-size: 30rpx;
border-bottom: 1px solid #888;
}
.unit {
font-size: 26rpx;
font-size: 28rpx;
color: #333;
}
</style>

View File

@ -72,7 +72,7 @@ function onPick(e) {
.input {
flex: 1;
text-align: right;
font-size: 28rpx;
font-size: 30rpx;
}
.relation {
@ -83,7 +83,7 @@ function onPick(e) {
min-width: 180rpx;
border-left: 1px solid #eee;
padding-left: 16rpx;
font-size: 28rpx;
font-size: 30rpx;
}
.arrow {

View File

@ -112,7 +112,7 @@ function onOtherInput(e) {
.other-input {
width: 100%;
font-size: 28rpx;
font-size: 30rpx;
padding: 18rpx 20rpx;
border: 1px solid #eee;
border-radius: 8rpx;

View File

@ -99,12 +99,12 @@ function change(e) {
.textarea-row {
padding: 24rpx 30rpx;
border-bottom: 1px solid #eee;
font-size: 28rpx;
font-size: 30rpx;
}
.form-textarea {
width: 100%;
font-size: 28rpx;
font-size: 30rpx;
padding: 20rpx;
border-radius: 8rpx;
box-sizing: border-box;
@ -118,6 +118,6 @@ function change(e) {
padding-top: 20rpx;
text-align: right;
color: #666;
font-size: 24rpx;
font-size: 26rpx;
}
</style>

View File

@ -60,7 +60,7 @@ function handleSave() {
align-items: center;
justify-content: center;
border-radius: 12rpx;
font-size: 28rpx;
font-size: 30rpx;
}
.save-btn {

View File

@ -367,7 +367,7 @@ const getRequiredFields = () => {
}
.item-label {
font-size: 28rpx;
font-size: 30rpx;
color: #333333;
margin-bottom: 16rpx;
}
@ -379,7 +379,7 @@ const getRequiredFields = () => {
padding: 0 24rpx;
background-color: #f8f9fa;
border-radius: 8rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #333333;
&[disabled] {
@ -399,7 +399,7 @@ const getRequiredFields = () => {
padding: 20rpx 24rpx;
background-color: #f8f9fa;
border-radius: 8rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #333333;
height: 100px;
&[disabled] {
@ -416,7 +416,7 @@ const getRequiredFields = () => {
.tips-text {
display: block;
font-size: 24rpx;
font-size: 26rpx;
color: #666666;
line-height: 1.6;
margin-bottom: 8rpx;
@ -450,7 +450,7 @@ const getRequiredFields = () => {
border-radius: 44rpx;
.btn-text {
font-size: 32rpx;
font-size: 34rpx;
font-weight: 500;
}
}

View File

@ -1,4 +1,4 @@
<template>
<template>
<view class="page">
<scroll-view
scroll-y
@ -985,7 +985,7 @@ const saveAddGroup = async () => {
}
.name {
font-size: 36rpx;
font-size: 38rpx;
font-weight: 600;
color: #1f1f1f;
max-width: 440rpx;
@ -995,13 +995,13 @@ const saveAddGroup = async () => {
}
.meta {
font-size: 26rpx;
font-size: 28rpx;
color: #666;
}
.sub-line {
margin-top: 12rpx;
font-size: 24rpx;
font-size: 26rpx;
color: #666;
}
@ -1012,7 +1012,7 @@ const saveAddGroup = async () => {
.id-row {
display: flex;
align-items: center;
font-size: 24rpx;
font-size: 26rpx;
color: #666;
line-height: 36rpx;
}
@ -1033,7 +1033,7 @@ const saveAddGroup = async () => {
}
.create-text {
font-size: 24rpx;
font-size: 26rpx;
color: #999;
}
@ -1080,7 +1080,7 @@ const saveAddGroup = async () => {
}
.input-label {
font-size: 30rpx;
font-size: 32rpx;
color: #666;
}
@ -1100,7 +1100,7 @@ const saveAddGroup = async () => {
}
.phone-text {
font-size: 32rpx;
font-size: 34rpx;
color: #0877F1;
font-weight: 500;
}
@ -1114,12 +1114,12 @@ const saveAddGroup = async () => {
}
.placeholder {
font-size: 28rpx;
font-size: 30rpx;
color: #999;
}
.note-content {
font-size: 28rpx;
font-size: 30rpx;
color: #333;
line-height: 1.5;
word-break: break-all;
@ -1137,7 +1137,7 @@ const saveAddGroup = async () => {
padding: 0 20rpx;
border: 2rpx solid #0877F1;
border-radius: 24rpx;
font-size: 24rpx;
font-size: 26rpx;
color: #0877F1;
box-sizing: border-box;
}
@ -1166,7 +1166,7 @@ const saveAddGroup = async () => {
text-align: center;
height: 88rpx;
line-height: 88rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #333;
position: relative;
}
@ -1213,7 +1213,7 @@ const saveAddGroup = async () => {
.empty-text {
margin-top: 20rpx;
font-size: 26rpx;
font-size: 28rpx;
color: #9aa0a6;
}
@ -1237,7 +1237,7 @@ const saveAddGroup = async () => {
align-items: center;
justify-content: center;
gap: 16rpx;
font-size: 30rpx;
font-size: 32rpx;
}
.bind-text {
@ -1253,7 +1253,7 @@ const saveAddGroup = async () => {
}
.modal-title {
font-size: 32rpx;
font-size: 34rpx;
font-weight: 600;
text-align: center;
padding: 28rpx 24rpx;
@ -1271,7 +1271,7 @@ const saveAddGroup = async () => {
border: 2rpx solid #e6e6e6;
border-radius: 8rpx;
padding: 0 20rpx;
font-size: 28rpx;
font-size: 30rpx;
box-sizing: border-box;
}
@ -1287,7 +1287,7 @@ const saveAddGroup = async () => {
line-height: 80rpx;
text-align: center;
border-radius: 8rpx;
font-size: 28rpx;
font-size: 30rpx;
}
.modal-btn.cancel {
@ -1320,7 +1320,7 @@ const saveAddGroup = async () => {
.sheet-title {
flex: 1;
text-align: center;
font-size: 32rpx;
font-size: 34rpx;
font-weight: 600;
color: #333;
}
@ -1340,7 +1340,7 @@ const saveAddGroup = async () => {
.sheet-link {
min-width: 120rpx;
text-align: right;
font-size: 28rpx;
font-size: 30rpx;
color: #0877F1;
}
@ -1354,14 +1354,14 @@ const saveAddGroup = async () => {
border: 2rpx solid #e6e6e6;
border-radius: 8rpx;
padding: 20rpx;
font-size: 28rpx;
font-size: 30rpx;
box-sizing: border-box;
}
.counter {
text-align: right;
margin-top: 16rpx;
font-size: 24rpx;
font-size: 26rpx;
color: #999;
}
@ -1379,7 +1379,7 @@ const saveAddGroup = async () => {
.group-name {
margin-left: 20rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #333;
}
@ -1393,7 +1393,7 @@ const saveAddGroup = async () => {
background: #0877F1;
color: #fff;
border-radius: 8rpx;
font-size: 30rpx;
font-size: 32rpx;
line-height: 88rpx;
}
</style>

View File

@ -388,7 +388,7 @@ watch(() => props.data?._id, () => {
align-items: center;
justify-content: space-between;
padding: 24rpx 28rpx;
font-size: 30rpx;
font-size: 32rpx;
font-weight: 600;
color: #333;
border-bottom: 2rpx solid #f2f2f2;
@ -411,13 +411,13 @@ watch(() => props.data?._id, () => {
}
.label {
width: 180rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #666;
}
.val {
flex: 1;
text-align: right;
font-size: 28rpx;
font-size: 30rpx;
color: #333;
}
.val.link {
@ -431,7 +431,7 @@ watch(() => props.data?._id, () => {
.picker {
flex: 1;
text-align: right;
font-size: 28rpx;
font-size: 30rpx;
color: #333;
}
@ -451,7 +451,7 @@ watch(() => props.data?._id, () => {
height: 88rpx;
line-height: 88rpx;
border-radius: 12rpx;
font-size: 30rpx;
font-size: 32rpx;
}
.btn::after {
border: none;
@ -479,7 +479,7 @@ watch(() => props.data?._id, () => {
}
.popup-title-text {
text-align: center;
font-size: 32rpx;
font-size: 34rpx;
font-weight: 600;
color: #333;
}
@ -526,7 +526,7 @@ watch(() => props.data?._id, () => {
box-shadow: 0 0 0 4rpx #0877F1;
}
.time {
font-size: 24rpx;
font-size: 26rpx;
color: #999;
margin-bottom: 16rpx;
}
@ -537,7 +537,7 @@ watch(() => props.data?._id, () => {
background: #fafafa;
}
.trow {
font-size: 28rpx;
font-size: 30rpx;
color: #333;
line-height: 40rpx;
}
@ -552,7 +552,7 @@ watch(() => props.data?._id, () => {
}
.empty-text {
font-size: 28rpx;
font-size: 30rpx;
color: #999;
}
</style>

View File

@ -714,7 +714,7 @@ watch(
}
.pill-text {
font-size: 26rpx;
font-size: 28rpx;
color: #333;
max-width: 360rpx;
overflow: hidden;
@ -743,7 +743,7 @@ watch(
display: inline-block;
background: #eef2ff;
color: #4338ca;
font-size: 24rpx;
font-size: 26rpx;
padding: 12rpx 20rpx;
border-radius: 12rpx;
}
@ -772,13 +772,13 @@ watch(
}
.record-title {
font-size: 30rpx;
font-size: 32rpx;
font-weight: 600;
color: #1f1f1f;
}
.record-date {
font-size: 28rpx;
font-size: 30rpx;
font-weight: 600;
color: #333;
}
@ -790,7 +790,7 @@ watch(
.line {
display: flex;
padding-top: 20rpx;
font-size: 26rpx;
font-size: 28rpx;
color: #333;
line-height: 36rpx;
}
@ -831,7 +831,7 @@ watch(
}
.thumb-more {
font-size: 24rpx;
font-size: 26rpx;
color: #6b7280;
}
@ -841,7 +841,7 @@ watch(
justify-content: space-between;
padding: 24rpx 24rpx;
border-top: 2rpx solid #f2f2f2;
font-size: 24rpx;
font-size: 26rpx;
color: #999;
}
@ -851,7 +851,7 @@ watch(
}
.record-tag {
font-size: 24rpx;
font-size: 26rpx;
color: #fff;
padding: 8rpx 16rpx;
border-radius: 16rpx;
@ -885,7 +885,7 @@ watch(
padding: 240rpx 0;
text-align: center;
color: #9aa0a6;
font-size: 26rpx;
font-size: 28rpx;
}
.fab-picker {

View File

@ -748,7 +748,7 @@ watch(
box-sizing: border-box; /* Ensure padding doesn't overflow width */
}
.pill-text {
font-size: 26rpx;
font-size: 28rpx;
color: #333;
flex: 1;
min-width: 0;
@ -799,12 +799,12 @@ watch(
background: #0877F1;
}
.time {
font-size: 28rpx;
font-size: 30rpx;
font-weight: 600;
color: #1f1f1f;
}
.file-link {
font-size: 26rpx;
font-size: 28rpx;
color: #0877F1;
}
.meta {
@ -815,14 +815,14 @@ watch(
margin-bottom: 12rpx;
}
.tag {
font-size: 24rpx;
font-size: 26rpx;
color: #0877F1;
border: 2rpx solid #0877F1;
border-radius: 999rpx;
padding: 8rpx 16rpx;
}
.meta-text {
font-size: 26rpx;
font-size: 28rpx;
color: #333;
}
.truncate {
@ -840,7 +840,7 @@ watch(
}
.content {
flex: 1;
font-size: 26rpx;
font-size: 28rpx;
color: #666;
line-height: 36rpx;
margin-right: 20rpx;
@ -870,7 +870,7 @@ watch(
padding: 240rpx 0;
text-align: center;
color: #9aa0a6;
font-size: 26rpx;
font-size: 28rpx;
}
@ -901,7 +901,7 @@ watch(
}
.popup-title-text {
text-align: center;
font-size: 32rpx;
font-size: 34rpx;
font-weight: 600;
color: #333;
}
@ -917,7 +917,7 @@ watch(
padding: 28rpx;
}
.desc {
font-size: 28rpx;
font-size: 30rpx;
color: #333;
line-height: 40rpx;
word-break: break-all;
@ -928,7 +928,7 @@ watch(
height: 88rpx;
line-height: 88rpx;
border-radius: 12rpx;
font-size: 30rpx;
font-size: 32rpx;
}
.btn::after {
border: none;
@ -957,7 +957,7 @@ watch(
height: 36rpx;
}
.edit-title {
font-size: 32rpx;
font-size: 34rpx;
font-weight: 600;
color: #333;
}
@ -977,13 +977,13 @@ watch(
padding: 20rpx;
border: 2rpx solid #e5e7eb;
border-radius: 12rpx;
font-size: 28rpx;
font-size: 30rpx;
box-sizing: border-box;
}
.counter {
margin-top: 12rpx;
text-align: right;
font-size: 24rpx;
font-size: 26rpx;
color: #999;
}
.edit-footer {

View File

@ -32,7 +32,7 @@ defineProps({
border-radius: 50%;
background: #0877F1;
color: #fff;
font-size: 24rpx;
font-size: 26rpx;
text-align: center;
z-index: 3;
}

View File

@ -64,7 +64,7 @@ const sendFile = computed(() => {
<style scoped>
.card {
font-size: 28rpx;
font-size: 30rpx;
background: #fff;
border-radius: 16rpx;
box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.06);

View File

@ -98,7 +98,7 @@ const taskShowList = computed(() => {
flex: 1;
min-width: 0;
padding-left: 20rpx;
font-size: 28rpx;
font-size: 30rpx;
font-weight: 600;
color: #111827;
overflow: hidden;
@ -112,7 +112,7 @@ const taskShowList = computed(() => {
margin-left: 20rpx;
}
.toggle-text {
font-size: 28rpx;
font-size: 30rpx;
color: #6b7280;
}
.toggle-icon {

View File

@ -1,4 +1,4 @@
<template>
<template>
<view class="page">
<!-- Mobile 来源: ykt-management-mobile/src/pages/customer/followup-detail/followup-detail.vue -->
<scroll-view scroll-y class="scroll">
@ -452,13 +452,13 @@ function remove() {
justify-content: space-between;
}
.head-title {
font-size: 32rpx;
font-size: 34rpx;
font-weight: 600;
color: #111827;
}
.head-tag {
flex-shrink: 0;
font-size: 24rpx;
font-size: 26rpx;
padding: 12rpx 20rpx;
border-radius: 16rpx;
background: #f3f4f6;
@ -483,24 +483,24 @@ function remove() {
}
.head-content {
margin-top: 24rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #6b7280;
line-height: 44rpx;
}
.sub-label {
font-size: 28rpx;
font-size: 30rpx;
color: #6b7280;
}
.sub-content {
margin-top: 24rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #6b7280;
line-height: 44rpx;
}
.file-line {
margin-top: 12rpx;
font-size: 28rpx;
font-size: 30rpx;
line-height: 40rpx;
}
.file-type {
@ -512,7 +512,7 @@ function remove() {
}
.section-title {
font-size: 28rpx;
font-size: 30rpx;
font-weight: 600;
color: #111827;
}
@ -527,7 +527,7 @@ function remove() {
margin-right: 20rpx;
}
.method-label {
font-size: 28rpx;
font-size: 30rpx;
color: #111827;
margin-right: 20rpx;
}
@ -543,7 +543,7 @@ function remove() {
justify-content: space-between;
}
.method-value {
font-size: 28rpx;
font-size: 30rpx;
color: #111827;
max-width: 320rpx;
overflow: hidden;
@ -560,11 +560,11 @@ function remove() {
justify-content: space-between;
}
.kv-left {
font-size: 28rpx;
font-size: 30rpx;
color: #6b7280;
}
.kv-right {
font-size: 28rpx;
font-size: 30rpx;
color: #111827;
max-width: 70%;
text-align: right;
@ -589,13 +589,13 @@ function remove() {
.result-textarea {
width: 100%;
min-height: 160rpx;
font-size: 28rpx;
font-size: 30rpx;
line-height: 48rpx;
color: #111827;
box-sizing: border-box;
}
.meta {
font-size: 28rpx;
font-size: 30rpx;
}
.meta-row {
margin-top: 24rpx;
@ -629,7 +629,7 @@ function remove() {
height: 80rpx;
line-height: 80rpx;
border-radius: 16rpx;
font-size: 28rpx;
font-size: 30rpx;
}
.footer-btn::after {
border: none;

View File

@ -1,4 +1,4 @@
<template>
<template>
<view class="page">
<view class="body">
<scroll-view scroll-y class="scroll">
@ -235,7 +235,7 @@ async function handleSave() {
}
.header-title {
padding: 28rpx 28rpx;
font-size: 32rpx;
font-size: 34rpx;
font-weight: 600;
color: #333;
}
@ -260,7 +260,7 @@ async function handleSave() {
height: 88rpx;
line-height: 88rpx;
border-radius: 12rpx;
font-size: 30rpx;
font-size: 32rpx;
}
.btn::after {
border: none;

View File

@ -1,4 +1,4 @@
<template>
<template>
<view class="page">
<scroll-view scroll-y class="scroll">
<view class="section header">
@ -282,12 +282,12 @@ async function confirm() {
margin-top: 20rpx;
}
.header-title {
font-size: 32rpx;
font-size: 34rpx;
font-weight: 600;
color: #111827;
}
.sub {
font-size: 28rpx;
font-size: 30rpx;
color: #6b7280;
line-height: 48rpx;
}
@ -295,7 +295,7 @@ async function confirm() {
padding: 120rpx 0;
text-align: center;
color: #9ca3af;
font-size: 28rpx;
font-size: 30rpx;
}
.row {
display: flex;
@ -312,12 +312,12 @@ async function confirm() {
align-items: center;
}
.label {
font-size: 28rpx;
font-size: 30rpx;
color: #6b7280;
}
.req {
margin-left: 8rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #ff4d4f;
}
.right {
@ -326,7 +326,7 @@ async function confirm() {
gap: 20rpx;
}
.value {
font-size: 28rpx;
font-size: 30rpx;
color: #111827;
max-width: 420rpx;
overflow: hidden;
@ -349,7 +349,7 @@ async function confirm() {
height: 80rpx;
line-height: 80rpx;
border-radius: 16rpx;
font-size: 30rpx;
font-size: 32rpx;
}
.btn::after {
border: none;
@ -372,7 +372,7 @@ async function confirm() {
}
.picker-title {
text-align: center;
font-size: 32rpx;
font-size: 34rpx;
font-weight: 600;
padding: 28rpx;
border-bottom: 1px solid #f0f0f0;
@ -388,7 +388,7 @@ async function confirm() {
background: #f2f6ff;
}
.picker-item-text {
font-size: 28rpx;
font-size: 30rpx;
color: #111827;
}
.picker-actions {

View File

@ -1,4 +1,4 @@
<template>
<template>
<view class="page">
<scroll-view scroll-y class="scroll">
<view class="section header">
@ -68,7 +68,7 @@ function back() {
margin-top: 20rpx;
}
.header-title {
font-size: 32rpx;
font-size: 34rpx;
font-weight: 600;
color: #111827;
}
@ -76,10 +76,10 @@ function back() {
padding: 120rpx 0;
text-align: center;
color: #9ca3af;
font-size: 28rpx;
font-size: 30rpx;
}
.sub {
font-size: 28rpx;
font-size: 30rpx;
color: #6b7280;
line-height: 48rpx;
}
@ -93,7 +93,7 @@ function back() {
height: 80rpx;
line-height: 80rpx;
border-radius: 16rpx;
font-size: 28rpx;
font-size: 30rpx;
background: #fff;
color: #111827;
border: 1px solid #e5e7eb;

View File

@ -1,4 +1,4 @@
<template>
<template>
<view class="page">
<!-- Mobile 来源: ykt-management-mobile/src/pages/customer/visit-record-detail/visit-record-detail.vue -->
<view class="body">
@ -358,7 +358,7 @@ async function remove() {
}
.header-title {
padding: 28rpx 28rpx;
font-size: 32rpx;
font-size: 34rpx;
font-weight: 600;
color: #333;
}
@ -385,7 +385,7 @@ async function remove() {
height: 88rpx;
line-height: 88rpx;
border-radius: 12rpx;
font-size: 30rpx;
font-size: 32rpx;
}
.btn::after {
border: none;

View File

@ -1,4 +1,4 @@
<template>
<template>
<!-- 详情页参考截图顶部蓝条显示创建信息支持编辑/删除黄底提示不渲染 -->
<view class="page">
<scroll-view scroll-y class="scroll" :style="{ height: scrollHeight + 'px' }">
@ -667,7 +667,7 @@ function remove() {
}
.topbar-text {
color: #fff;
font-size: 28rpx;
font-size: 30rpx;
text-align: center;
}
.content {
@ -682,24 +682,24 @@ function remove() {
}
.label {
width: 180rpx;
font-size: 28rpx;
font-size: 30rpx;
font-weight: 600;
color: #111827;
}
.value {
flex: 1;
font-size: 28rpx;
font-size: 30rpx;
color: #111827;
word-break: break-all;
}
.h2 {
font-size: 28rpx;
font-size: 30rpx;
font-weight: 700;
color: #111827;
padding: 16rpx 0;
}
.p {
font-size: 28rpx;
font-size: 30rpx;
color: #111827;
line-height: 40rpx;
white-space: pre-wrap;
@ -722,7 +722,7 @@ function remove() {
height: 140rpx;
}
.files-empty {
font-size: 26rpx;
font-size: 28rpx;
color: #9aa0a6;
padding: 16rpx 0;
}
@ -746,7 +746,7 @@ function remove() {
height: 88rpx;
line-height: 88rpx;
border-radius: 12rpx;
font-size: 30rpx;
font-size: 32rpx;
}
.btn::after {
border: none;

View File

@ -1798,7 +1798,7 @@ onShow(async () => {
.team-selector {
display: flex;
align-items: center;
font-size: 32rpx;
font-size: 34rpx;
font-weight: bold;
color: #333;
@ -1807,7 +1807,7 @@ onShow(async () => {
}
.team-icon {
font-size: 32rpx;
font-size: 34rpx;
color: #333;
}
}
@ -1823,7 +1823,7 @@ onShow(async () => {
justify-content: center;
.action-text {
font-size: 20rpx;
font-size: 22rpx;
color: #333;
margin-top: 4rpx;
}
@ -1850,7 +1850,7 @@ onShow(async () => {
.tab-item {
padding: 10rpx 30rpx;
margin-right: 20rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #666;
background-color: #fff;
border-radius: 8rpx;
@ -1866,7 +1866,7 @@ onShow(async () => {
}
.total-count-inline {
font-size: 24rpx;
font-size: 26rpx;
color: #666;
white-space: nowrap;
flex-shrink: 0;
@ -1890,7 +1890,7 @@ onShow(async () => {
.group-title {
padding: 10rpx 30rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #333;
}
@ -1923,14 +1923,14 @@ onShow(async () => {
margin-right: 20rpx;
.patient-name {
font-size: 32rpx;
font-size: 34rpx;
font-weight: bold;
color: #333;
margin-right: 16rpx;
}
.patient-meta {
font-size: 24rpx;
font-size: 26rpx;
color: #999;
margin-bottom: 4rpx;
}
@ -1941,7 +1941,7 @@ onShow(async () => {
gap: 10rpx;
.tag {
font-size: 20rpx;
font-size: 22rpx;
color: #5d8aff;
border: 2rpx solid #5d8aff;
padding: 0 8rpx;
@ -1953,7 +1953,7 @@ onShow(async () => {
}
.card-row-middle {
font-size: 28rpx;
font-size: 30rpx;
margin-bottom: 12rpx;
.record-text {
@ -1974,7 +1974,7 @@ onShow(async () => {
}
.card-row-bottom {
font-size: 28rpx;
font-size: 30rpx;
.record-text {
color: #666;
@ -2014,7 +2014,7 @@ onShow(async () => {
.footer-text {
margin-left: 10rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #333;
}
}
@ -2024,7 +2024,7 @@ onShow(async () => {
gap: 20rpx;
.footer-btn {
font-size: 28rpx;
font-size: 30rpx;
padding: 0 30rpx;
height: 64rpx;
line-height: 64rpx;
@ -2064,7 +2064,7 @@ onShow(async () => {
z-index: 10;
.index-item {
font-size: 20rpx;
font-size: 22rpx;
color: #555;
padding: 4rpx 0;
width: 40rpx;

View File

@ -160,7 +160,7 @@ function toTeams() {
}
.team-name {
font-size: 32rpx;
font-size: 34rpx;
font-weight: 500;
color: #333;
overflow: hidden;
@ -206,7 +206,7 @@ function toTeams() {
}
.action-text {
font-size: 20rpx;
font-size: 22rpx;
color: #666;
line-height: 1.4;
text-align: center;
@ -244,7 +244,7 @@ function toTeams() {
}
.tab-text {
font-size: 28rpx;
font-size: 30rpx;
color: #666;
transition: color 0.3s;
}
@ -280,7 +280,7 @@ function toTeams() {
}
.picker-title {
font-size: 32rpx;
font-size: 34rpx;
font-weight: 500;
color: #333;
}
@ -316,13 +316,13 @@ function toTeams() {
}
.team-item-name {
font-size: 30rpx;
font-size: 32rpx;
color: #333;
flex: 1;
}
.check-icon {
font-size: 32rpx;
font-size: 34rpx;
color: #1890ff;
font-weight: bold;
}

View File

@ -738,7 +738,7 @@ onHide(() => {
}
.loading-text {
font-size: 28rpx;
font-size: 30rpx;
color: #999;
}
@ -749,7 +749,7 @@ onHide(() => {
}
.empty-text {
font-size: 28rpx;
font-size: 30rpx;
color: #999;
}
@ -792,7 +792,7 @@ onHide(() => {
}
.unread-text {
font-size: 20rpx;
font-size: 22rpx;
color: #fff;
line-height: 1;
}
@ -820,7 +820,7 @@ onHide(() => {
}
.name {
font-size: 30rpx;
font-size: 32rpx;
font-weight: 500;
color: #333;
overflow: hidden;
@ -830,14 +830,14 @@ onHide(() => {
}
.patient-info {
font-size: 26rpx;
font-size: 28rpx;
padding-left: 12rpx;
color: #999;
flex-shrink: 0;
}
.time {
font-size: 24rpx;
font-size: 26rpx;
color: #999;
margin-left: 16rpx;
flex-shrink: 0;
@ -849,7 +849,7 @@ onHide(() => {
}
.preview-text {
font-size: 26rpx;
font-size: 28rpx;
color: #999;
overflow: hidden;
text-overflow: ellipsis;
@ -865,7 +865,7 @@ onHide(() => {
}
.load-more-text {
font-size: 24rpx;
font-size: 26rpx;
color: #999;
}
@ -891,7 +891,7 @@ onHide(() => {
.subscribe-entry-text {
width: 56rpx;
font-size: 24rpx;
font-size: 26rpx;
line-height: 1.4;
color: #3876f6;
text-align: center;

View File

@ -338,7 +338,7 @@ useShow(async () => {
}
.tag-text {
font-size: 22rpx;
font-size: 24rpx;
line-height: 1;
}
}
@ -367,7 +367,7 @@ useShow(async () => {
justify-content: center;
.more-icon {
font-size: 48rpx;
font-size: 50rpx;
color: #333;
line-height: 1;
font-weight: bold;

View File

@ -150,7 +150,7 @@ function save() {
border-bottom: 2rpx solid #f2f2f2;
}
.label {
font-size: 28rpx;
font-size: 30rpx;
color: #111827;
margin-right: 20rpx;
}
@ -158,7 +158,7 @@ function save() {
padding: 120rpx 0;
text-align: center;
color: #9aa0a6;
font-size: 26rpx;
font-size: 28rpx;
}
.footer {
position: fixed;
@ -174,7 +174,7 @@ function save() {
height: 88rpx;
line-height: 88rpx;
border-radius: 12rpx;
font-size: 30rpx;
font-size: 32rpx;
}
.btn::after {
border: none;

View File

@ -153,7 +153,7 @@ onLoad(async (query) => {
}
.group-title {
font-size: 28rpx;
font-size: 30rpx;
font-weight: 600;
margin-bottom: 20rpx;
display: flex;
@ -162,7 +162,7 @@ onLoad(async (query) => {
}
.hint {
font-size: 22rpx;
font-size: 24rpx;
color: #5d8aff;
}
@ -177,7 +177,7 @@ onLoad(async (query) => {
padding: 12rpx 20rpx;
border: 1px solid #ddd;
border-radius: 16rpx;
font-size: 24rpx;
font-size: 26rpx;
line-height: 1.2em;
color: #333;
background: #fff;
@ -207,7 +207,7 @@ onLoad(async (query) => {
height: 88rpx;
line-height: 88rpx;
border-radius: 12rpx;
font-size: 30rpx;
font-size: 32rpx;
text-align: center;
}

View File

@ -147,7 +147,7 @@ onLoad((opts) => {
line-height: 80rpx;
background: linear-gradient(270deg, #1b5cc8 2.26%, #0877f1 94.33%);
color: #fff;
font-size: 30rpx;
font-size: 32rpx;
border-radius: 48rpx;
font-weight: 600;
box-shadow: 0 4rpx 16rpx rgba(59, 124, 255, 0.08);

View File

@ -134,12 +134,12 @@ onLoad((options) => {
.loading-text {
margin-top: 20rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #999;
}
.error-text {
font-size: 28rpx;
font-size: 30rpx;
color: #999;
margin-bottom: 30rpx;
text-align: center;
@ -151,7 +151,7 @@ onLoad((options) => {
color: #fff;
border: none;
border-radius: 8rpx;
font-size: 28rpx;
font-size: 30rpx;
}
.article-content {
@ -165,7 +165,7 @@ onLoad((options) => {
.article-title {
display: block;
font-size: 36rpx;
font-size: 38rpx;
font-weight: bold;
color: #333;
line-height: 1.6;
@ -174,7 +174,7 @@ onLoad((options) => {
.article-date {
display: block;
font-size: 24rpx;
font-size: 26rpx;
color: #999;
}

View File

@ -558,7 +558,7 @@ watch(userId, n => {
.search-input {
flex: 1;
margin-left: 16rpx;
font-size: 28rpx;
font-size: 30rpx;
}
.content {
@ -577,7 +577,7 @@ watch(userId, n => {
.category-item {
padding: 20rpx 24rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #333;
text-align: center;
border-bottom: 1px solid #eee;
@ -604,7 +604,7 @@ watch(userId, n => {
.loading-text {
margin-top: 20rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #999;
}
@ -623,6 +623,13 @@ watch(userId, n => {
gap: 16rpx;
}
.article-title {
font-size: 30rpx;
color: #333;
line-height: 1.6;
word-break: break-all;
font-weight: 500;
}
.article-footer {
display: flex;
@ -633,13 +640,13 @@ watch(userId, n => {
.article-date {
flex: 1;
font-size: 24rpx;
font-size: 26rpx;
color: #999;
}
.send-btn {
flex-shrink: 0;
font-size: 26rpx;
font-size: 28rpx;
padding: 8rpx 32rpx;
height: auto;
line-height: 1.4;
@ -651,7 +658,7 @@ watch(userId, n => {
align-items: center;
justify-content: center;
padding: 30rpx 0;
font-size: 24rpx;
font-size: 26rpx;
color: #999;
gap: 10rpx;
}
@ -688,7 +695,7 @@ watch(userId, n => {
.preview-title {
flex: 1;
font-size: 32rpx;
font-size: 34rpx;
font-weight: bold;
color: #333;
}

View File

@ -1,7 +1,7 @@
// SCSS 变量定义
$font-size-text: 30rpx;
$font-size-tip: 28rpx;
$font-size-title: 32rpx;
$font-size-text: 32rpx;
$font-size-tip: 30rpx;
$font-size-title: 34rpx;
$text-color-sub: #999;
$primary-color: #0877F1;
@ -287,7 +287,7 @@ $primary-color: #0877F1;
}
.username-text {
font-size: 22rpx;
font-size: 24rpx;
color: #999;
line-height: 1.2;
}
@ -358,7 +358,7 @@ $primary-color: #0877F1;
}
.message-text {
font-size: 30rpx;
font-size: 32rpx;
line-height: 1.4;
word-wrap: break-word;
word-break: break-all;
@ -425,7 +425,7 @@ $primary-color: #0877F1;
.send-btn {
background: #3876f6;
color: #fff;
font-size: 28rpx;
font-size: 30rpx;
font-weight: 600;
border: none;
border-radius: 40rpx;
@ -448,7 +448,7 @@ $primary-color: #0877F1;
.disabled-btn {
background: #ccc;
color: #fff;
font-size: 28rpx;
font-size: 30rpx;
font-weight: 600;
border: none;
border-radius: 40rpx;
@ -479,7 +479,7 @@ $primary-color: #0877F1;
padding: 16rpx;
background-color: #f3f5fa;
border-radius: 10rpx;
font-size: 28rpx;
font-size: 30rpx;
min-height: 80rpx;
max-height: 200rpx;
border: none;
@ -514,15 +514,15 @@ $primary-color: #0877F1;
justify-content: flex-start;
background: #fff;
border-top: 1rpx solid #eee;
padding: 20rpx 0 40rpx 60rpx;
gap: 40rpx 50rpx;
padding: 20rpx 32rpx 40rpx;
gap: 40rpx 28rpx;
flex-wrap: wrap;
background-color: #f5f5f5;
}
.more-btn {
flex: none;
width: 120rpx;
width: 144rpx;
display: flex;
flex-direction: column;
align-items: center;
@ -538,6 +538,8 @@ $primary-color: #0877F1;
margin-top: 20rpx;
font-size: $font-size-text;
color: #6b7a8b;
line-height: 1.25;
white-space: nowrap;
}
.consultation-bar {
@ -1175,7 +1177,7 @@ $primary-color: #0877F1;
}
.voice-duration {
font-size: 24rpx;
font-size: 26rpx;
color: inherit;
}

File diff suppressed because it is too large Load Diff

View File

@ -296,7 +296,7 @@ defineExpose({
}
.button-text {
font-size: 28rpx;
font-size: 30rpx;
color: #333333;
white-space: nowrap;
}

View File

@ -201,6 +201,67 @@ const sendTextMessageFromPhrase = async (content) => {
});
};
const normalizePhraseImageFile = (file) => {
return new Promise((resolve) => {
const imageUrl =
typeof file === "string"
? file
: file?.url || file?.URL || file?.download_url || file?.tempFilePath || file?.path;
if (!imageUrl) {
resolve(null);
return;
}
const makeImageFile = (path, size = 0) => ({
type: "image",
tempFilePaths: [path],
tempFiles: [
{
tempFilePath: path,
path,
size,
fileType: "image",
type: "image",
},
],
tempFilePath: path,
});
if (/^https?:\/\//.test(imageUrl)) {
uni.downloadFile({
url: imageUrl,
success: (res) => {
if (res.statusCode === 200 && res.tempFilePath) {
const imageFile = makeImageFile(res.tempFilePath, file?.size || 0);
resolve(imageFile);
} else {
resolve(null);
}
},
fail: (error) => {
console.error("常用语图片下载失败:", error);
resolve(null);
},
});
return;
}
const imageFile = makeImageFile(imageUrl, file?.size || 0);
resolve(imageFile);
});
};
const sendImageMessageFromPhrase = async (file) => {
const imageFile = await normalizePhraseImageFile(file);
if (!imageFile) {
uni.showToast({ title: "图片发送失败", icon: "none" });
return;
}
await sendImageMessage(imageFile);
};
//
const setInputText = (text) => {
inputText.value = text;
@ -214,6 +275,7 @@ const clearInputText = () => {
//
defineExpose({
sendTextMessageFromPhrase,
sendImageMessageFromPhrase,
appendStreamText,
setInputText,
clearInputText,

View File

@ -45,7 +45,7 @@ const handleReject = () => {
}
.accept-text {
font-size: 28rpx;
font-size: 30rpx;
color: #333;
line-height: 1.6;
}
@ -60,7 +60,7 @@ const handleReject = () => {
flex: 1;
height: 80rpx;
border-radius: 8rpx;
font-size: 28rpx;
font-size: 30rpx;
border: none;
display: flex;
align-items: center;

View File

@ -199,14 +199,14 @@ defineExpose({
z-index: 10;
.close-icon {
font-size: 40rpx;
font-size: 42rpx;
color: #999999;
}
}
.progress-content {
.progress-title {
font-size: 32rpx;
font-size: 34rpx;
font-weight: 600;
color: #333333;
margin-bottom: 32rpx;
@ -234,7 +234,7 @@ defineExpose({
}
.progress-text {
font-size: 28rpx;
font-size: 30rpx;
color: #1890ff;
font-weight: 600;
min-width: 80rpx;
@ -246,7 +246,7 @@ defineExpose({
margin-bottom: 24rpx;
.detected-title {
font-size: 28rpx;
font-size: 30rpx;
color: #666666;
display: block;
margin-bottom: 16rpx;
@ -269,7 +269,7 @@ defineExpose({
}
.check-icon {
font-size: 28rpx;
font-size: 30rpx;
color: #52c41a;
font-weight: bold;
margin-top: 2rpx;
@ -277,7 +277,7 @@ defineExpose({
.info-text {
flex: 1;
font-size: 26rpx;
font-size: 28rpx;
color: #333333;
line-height: 1.6;
word-break: break-all;
@ -292,7 +292,7 @@ defineExpose({
}
.generating-text {
font-size: 28rpx;
font-size: 30rpx;
color: #1890ff;
text-align: center;
padding: 16rpx 0;
@ -345,7 +345,7 @@ defineExpose({
}
.button-text {
font-size: 30rpx;
font-size: 32rpx;
font-weight: 500;
}
}

View File

@ -81,7 +81,7 @@ defineExpose({
margin-bottom: 40rpx;
.header-title {
font-size: 36rpx;
font-size: 38rpx;
font-weight: 600;
color: #333333;
}
@ -94,7 +94,7 @@ defineExpose({
justify-content: center;
.close-icon {
font-size: 40rpx;
font-size: 42rpx;
color: #999999;
}
}
@ -123,7 +123,7 @@ defineExpose({
}
.type-name {
font-size: 30rpx;
font-size: 32rpx;
color: #333333;
text-align: center;
font-weight: 500;

View File

@ -159,7 +159,7 @@ const handleConfirm = () => {
}
.modal-title {
font-size: 32rpx;
font-size: 34rpx;
font-weight: 500;
color: #333;
line-height: 1.5;
@ -194,7 +194,7 @@ const handleConfirm = () => {
}
.option-text {
font-size: 28rpx;
font-size: 30rpx;
color: #333;
flex: 1;
}
@ -220,13 +220,13 @@ const handleConfirm = () => {
}
.check-mark {
font-size: 24rpx;
font-size: 26rpx;
color: #fff;
font-weight: bold;
}
.arrow-icon {
font-size: 40rpx;
font-size: 42rpx;
color: #999;
font-weight: 300;
}
@ -241,7 +241,7 @@ const handleConfirm = () => {
.custom-textarea {
width: 100%;
min-height: 120rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #333;
line-height: 1.6;
background-color: transparent;
@ -253,7 +253,7 @@ const handleConfirm = () => {
.char-count {
display: block;
text-align: right;
font-size: 24rpx;
font-size: 26rpx;
color: #999;
margin-top: 8rpx;
}
@ -270,7 +270,7 @@ const handleConfirm = () => {
flex: 1;
height: 80rpx;
border-radius: 8rpx;
font-size: 28rpx;
font-size: 30rpx;
border: none;
display: flex;
align-items: center;

View File

@ -149,7 +149,7 @@ const notifyText = computed(() => {
.notify-text {
margin: 0 20rpx;
font-size: 24rpx;
font-size: 26rpx;
color: red;
white-space: nowrap;
flex-shrink: 0;

View File

@ -992,11 +992,46 @@ onHide(() => {
console.log("✓ 页面隐藏已清空当前会话ID");
});
const sendCommonPhrase = (content) => {
if (chatInputRef.value) {
//
const sendCommonPhrase = async (phraseOrContent) => {
if (!chatInputRef.value) return;
const content =
typeof phraseOrContent === "string"
? phraseOrContent
: phraseOrContent?.content || "";
const files = Array.isArray(phraseOrContent?.files) ? phraseOrContent.files : [];
if (content.trim()) {
chatInputRef.value.setInputText(content);
}
if (files.length === 0) {
return;
}
const shouldSendImages = await new Promise((resolve) => {
uni.showModal({
title: "提示",
content: `该常用语包含${files.length}张图片,是否发送图片?`,
cancelText: "取消",
confirmText: "发送",
success: (res) => {
resolve(Boolean(res.confirm));
},
fail: (error) => {
console.error("常用语图片发送确认失败:", error);
resolve(false);
},
});
});
if (!shouldSendImages) {
return;
}
for (const file of files) {
await chatInputRef.value.sendImageMessageFromPhrase(file);
}
};
//

View File

@ -118,7 +118,7 @@ onLoad(opts => {
@at-root &__customer {
text-align: right;
font-size: 28rpx;
font-size: 30rpx;
padding-bottom: 16rpx;
margin-bottom: 24rpx;
color: #333;
@ -127,7 +127,7 @@ onLoad(opts => {
@at-root &__title {
text-align: center;
font-size: 32rpx;
font-size: 34rpx;
font-weight: 600;
margin-bottom: 24rpx;
}
@ -135,7 +135,7 @@ onLoad(opts => {
@at-root &__desc {
text-align: left;
color: #666;
font-size: 28rpx;
font-size: 30rpx;
margin-bottom: 24rpx;
}
@ -146,7 +146,7 @@ onLoad(opts => {
@at-root &__question {
position: relative;
font-size: 32rpx;
font-size: 34rpx;
margin-bottom: 24rpx;
@at-root &--require::before {
@ -160,7 +160,7 @@ onLoad(opts => {
@at-root &__input {
padding: 10rpx 24rpx;
font-size: 28rpx;
font-size: 30rpx;
border: 1px solid #eee;
border-radius: 8rpx;
}
@ -176,7 +176,7 @@ onLoad(opts => {
margin-top: 30rpx;
padding: 24rpx 30rpx;
border-radius: 8rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #fff;
background: #006eff;
text-align: center;
@ -194,7 +194,7 @@ onLoad(opts => {
@at-root &__label {
flex-grow: 1;
font-size: 32rpx;
font-size: 34rpx;
}
}
@ -213,7 +213,7 @@ onLoad(opts => {
}
@at-root &__txt {
font-size: 32rpx;
font-size: 34rpx;
color: #666;
}
}

View File

@ -414,7 +414,7 @@ onMounted(() => {
.search-input {
flex: 1;
margin-left: 16rpx;
font-size: 28rpx;
font-size: 30rpx;
}
.content {
@ -435,7 +435,7 @@ onMounted(() => {
.category-item {
padding: 20rpx 24rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #333;
text-align: center;
border-bottom: 1px solid #eee;
@ -470,7 +470,7 @@ onMounted(() => {
.loading-text {
margin-top: 20rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #999;
}
@ -489,7 +489,7 @@ onMounted(() => {
}
.survey-title {
font-size: 28rpx;
font-size: 30rpx;
color: #333;
font-weight: 500;
line-height: 1.5;
@ -497,7 +497,7 @@ onMounted(() => {
}
.survey-desc {
font-size: 24rpx;
font-size: 26rpx;
color: #999;
line-height: 1.4;
overflow: hidden;
@ -512,7 +512,7 @@ onMounted(() => {
}
.send-btn {
font-size: 26rpx;
font-size: 28rpx;
}
.loading-more,
@ -521,7 +521,7 @@ onMounted(() => {
align-items: center;
justify-content: center;
padding: 30rpx 0;
font-size: 24rpx;
font-size: 26rpx;
color: #999;
gap: 10rpx;
}

View File

@ -87,7 +87,7 @@ function save() {
padding: 32rpx 28rpx 0;
}
.title {
font-size: 30rpx;
font-size: 32rpx;
font-weight: 700;
color: #111827;
margin-bottom: 20rpx;
@ -99,7 +99,7 @@ function save() {
border-radius: 16rpx;
padding: 20rpx;
box-sizing: border-box;
font-size: 28rpx;
font-size: 30rpx;
color: #111827;
}
.placeholder {
@ -121,7 +121,7 @@ function save() {
height: 88rpx;
line-height: 88rpx;
border-radius: 12rpx;
font-size: 30rpx;
font-size: 32rpx;
}
.btn::after {
border: none;

View File

@ -247,7 +247,7 @@ useLoad((opt) => {
border-radius: 32rpx;
background: #fff;
border: 1px solid #e5e8ef;
font-size: 26rpx;
font-size: 28rpx;
}
.search-placeholder {
@ -255,7 +255,7 @@ useLoad((opt) => {
}
.clear-btn {
font-size: 24rpx;
font-size: 26rpx;
color: #2a6ff2;
padding: 6rpx 10rpx;
}
@ -266,7 +266,7 @@ useLoad((opt) => {
.sidebar-item {
padding: 30rpx 18rpx;
font-size: 28rpx;
font-size: 30rpx;
color: #333;
text-align: center;
border-bottom: 1px solid #eef0f5;
@ -287,7 +287,7 @@ useLoad((opt) => {
.sidebar-empty {
padding: 40rpx 16rpx;
font-size: 24rpx;
font-size: 26rpx;
color: #8c94a6;
text-align: center;
}
@ -326,7 +326,7 @@ useLoad((opt) => {
}
.dept-name {
font-size: 30rpx;
font-size: 32rpx;
color: #333;
font-weight: 600;
}
@ -342,7 +342,7 @@ useLoad((opt) => {
padding: 12rpx 16rpx;
background: #f6f8fb;
border-radius: 10rpx;
font-size: 26rpx;
font-size: 28rpx;
color: #3a3a3a;
border: 1px solid #e5e9f2;
display: flex;
@ -363,7 +363,7 @@ useLoad((opt) => {
.check-tag {
padding: 6rpx 14rpx;
font-size: 22rpx;
font-size: 24rpx;
color: #2a6ff2;
background: #eaf1ff;
border-radius: 20rpx;
@ -382,7 +382,7 @@ useLoad((opt) => {
.footer-tip {
padding: 24rpx 20rpx 40rpx;
font-size: 26rpx;
font-size: 28rpx;
color: #666;
text-align: center;
line-height: 1.6;

View File

@ -12,10 +12,10 @@
</view>
</template>
<scroll-view v-if="list.length" class="h-full bg-white" scroll-y="true">
<view v-for="i in list" :key="`filter-${i.hospitalId}`" class="flex items-center px-15 py-12 border-b"
<view v-for="i in list" :key="`filter-${getHospitalId(i)}`" class="flex items-center px-15 py-12 border-b"
@click="select(i)">
<view class="mr-10 w-0 flex-grow text-base text-dark">{{ i.name }}</view>
<image v-if="hospital && hospital.hospitalId === i.hospitalId" class="flex-shrink-0 icon-checked"
<image v-if="hospital && getHospitalId(hospital) === getHospitalId(i)" class="flex-shrink-0 icon-checked"
src="/static/form/checked.svg" />
</view>
</scroll-view>
@ -52,6 +52,10 @@ function select(i) {
hospital.value = i;
}
function getHospitalId(item) {
return item?.hospitalId || item?._id || "";
}
function getMore() {
if (hasMore.value && !loading.value) {
changePage(page.value + 1)
@ -60,7 +64,11 @@ function getMore() {
function save() {
if (hospital.value) {
uni.$emit(eventName.value, hospital.value.name)
uni.$emit(eventName.value, {
hospitalId: getHospitalId(hospital.value),
hospitalName: hospital.value.name || hospital.value.hospitalName || "",
name: hospital.value.name || hospital.value.hospitalName || "",
})
uni.navigateBack()
} else {
toast('请选择医院')

View File

@ -239,7 +239,7 @@ const openDepartmentSelect = () => {
align-items: center;
justify-content: flex-end;
text-align: right;
font-size: 28rpx;
font-size: 30rpx;
input {
text-align: right;
@ -267,7 +267,7 @@ const openDepartmentSelect = () => {
justify-content: center;
.avatar-icon {
font-size: 48rpx;
font-size: 50rpx;
color: #999;
}
}
@ -290,7 +290,7 @@ const openDepartmentSelect = () => {
line-height: 88rpx;
text-align: center;
border-radius: 8rpx;
font-size: 32rpx;
font-size: 34rpx;
}
.btn-cancel {

View File

@ -78,7 +78,13 @@ function selectHospital() {
url: `/pages/work/hospital-select?eventName=${eventName}`
})
uni.$once(eventName, data => {
form.value.hospitalName = data
if (typeof data === 'string') {
form.value.hospitalName = data
form.value.hospitalId = ''
} else {
form.value.hospitalName = data?.hospitalName || data?.name || ''
form.value.hospitalId = data?.hospitalId || data?._id || ''
}
})
}
@ -110,6 +116,7 @@ async function save() {
return toast('请上传医师执业资格证第二页')
}
const data = {
hospitalId: formData.value.hospitalId || '',
hospitalName: formData.value.hospitalName,
medicalLicenseFront: formData.value.medicalLicenseFront,
medicalLicenseBack: formData.value.medicalLicenseBack,

View File

@ -322,7 +322,7 @@ useShow(async () => {
}
.tag-text {
font-size: 22rpx;
font-size: 24rpx;
line-height: 1;
}
}
@ -351,7 +351,7 @@ useShow(async () => {
justify-content: center;
.more-icon {
font-size: 48rpx;
font-size: 50rpx;
color: #333;
line-height: 1;
font-weight: bold;

View File

@ -46,11 +46,11 @@ $spacing-base: 24rpx;
$spacing-large: 32rpx;
// 字体大小
$font-size-small: 24rpx;
$font-size-base: 28rpx;
$font-size-medium: 32rpx;
$font-size-large: 36rpx;
$font-size-xlarge: 40rpx;
$font-size-small: 26rpx;
$font-size-base: 30rpx;
$font-size-medium: 34rpx;
$font-size-large: 38rpx;
$font-size-xlarge: 42rpx;
// 阴影
$box-shadow-light: 0 2rpx 12rpx rgba(0, 0, 0, 0.04);

View File

@ -43,17 +43,18 @@ const urlsConfig = {
getArticleByIds: 'getArticleByIds',// 诊断库
getDisease: 'getDisease',
getCommonPhrases: 'getCommonPhrases',
getCommonWordsList: 'getCommonWordsList',
getCorpCommonWordCate: 'getCorpCommonWordCate',
getUserCommonWordCate: 'getUserCommonWordCate',
addUserCommonWordCate: 'addUserCommonWordCate',
updateUserCommonWordCate: 'updateUserCommonWordCate',
deleteUserCommonWordCate: 'deleteUserCommonWordCate',
setCommonWords: 'setCommonWords',
removeCommonWords: 'removeCommonWords',
saveCommonPhrase: 'saveCommonPhrase',
deleteCommonPhrase: 'deleteCommonPhrase',
getCommonPhraseCategories: 'getCommonPhraseCategories',
saveCommonPhraseCategory: 'saveCommonPhraseCategory',
// 个人常用语接口
getPersonalPhrases: 'getPersonalPhrases',
savePersonalPhrase: 'savePersonalPhrase',
deletePersonalPhrase: 'deletePersonalPhrase',
getPersonalPhraseCategories: 'getPersonalPhraseCategories',
savePersonalPhraseCategory: 'savePersonalPhraseCategory',
deletePersonalPhraseCategory: 'deletePersonalPhraseCategory',
// 宣教文章接口
getArticleCateList: 'getArticleCateList',
getArticleList: 'getArticleList',