Commit f5d842f9 authored by chenqikuai's avatar chenqikuai

处理网点被删除了的情况

parent 26e121a8
...@@ -25,3 +25,15 @@ ...@@ -25,3 +25,15 @@
.van-search__content{ .van-search__content{
background-color: #FFFFFF; background-color: #FFFFFF;
} }
.filterGray {
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter: grayscale(100%);
filter: gray;
}
\ No newline at end of file
...@@ -8,7 +8,14 @@ ...@@ -8,7 +8,14 @@
alt="avatar" alt="avatar"
/> />
<img <img
v-else v-else-if="isRobootCard"
class="w-10 h-10 rounded-md object-contain"
:class="{'filterGray': isDeleted}"
src="@/assets/img/roboot.png"
alt="avatar"
/>
<img
v-else-if="!isRobootCard"
class="w-10 h-10 rounded-md object-contain" class="w-10 h-10 rounded-md object-contain"
src="@/assets/icons/staff.png" src="@/assets/icons/staff.png"
alt="avatar" alt="avatar"
...@@ -54,6 +61,12 @@ const props = defineProps({ ...@@ -54,6 +61,12 @@ const props = defineProps({
}, },
userType: { userType: {
type: Number as PropType<eRole> type: Number as PropType<eRole>
},
isRobootCard: {
type: Boolean
},
isDeleted: {
type: Boolean
} }
}) })
......
...@@ -18,7 +18,7 @@ export default class OutletDBService { ...@@ -18,7 +18,7 @@ export default class OutletDBService {
return this.outlet.add(outlet) return this.outlet.add(outlet)
} }
update(outlet: iOutLet) { update(outlet: Partial<Omit<iOutLet, 'id'>> & Pick<iOutLet, 'id'>) {
return this.outlet.update(outlet.id, outlet) return this.outlet.update(outlet.id, outlet)
} }
......
...@@ -14,14 +14,15 @@ export interface iChatListCard { ...@@ -14,14 +14,15 @@ export interface iChatListCard {
datetime: number datetime: number
inChat: boolean // 会话状态,会话中? inChat: boolean // 会话状态,会话中?
isRobootCard?: boolean isRobootCard?: boolean
isDeleted?: boolean
} }
export interface iOutLet { export interface iOutLet {
id: number id: number
name: string name: string
isDeleted?: boolean
} }
export class MyAppDatabase extends Dexie { export class MyAppDatabase extends Dexie {
chatMessage: Dexie.Table<iChatMessage, number> chatMessage: Dexie.Table<iChatMessage, number>
chatListCard: Dexie.Table<iChatListCard, number> chatListCard: Dexie.Table<iChatListCard, number>
...@@ -35,10 +36,11 @@ export class MyAppDatabase extends Dexie { ...@@ -35,10 +36,11 @@ export class MyAppDatabase extends Dexie {
this.version(1.4).stores({ this.version(1.4).stores({
chatMessage: chatMessage:
'++id, content, from, uuid, state, uploadProgress, type, datetime, hideDatetime, logid, masterId, readed', '++id, content, from, uuid, state, uploadProgress, type, datetime, hideDatetime, logid, masterId, readed',
chatListCard: '++id, masterId, targetId, unreadMsgCount, content, inChat, isRobootCard', chatListCard:
'++id, masterId, targetId, unreadMsgCount, content, inChat, isRobootCard,isDeleted',
contactPerson: '++id, addr, bank, phone, user_name, out_let_name', contactPerson: '++id, addr, bank, phone, user_name, out_let_name',
userInfo: '++id, created_at, phone, remark, user_name, uuid, addr', userInfo: '++id, created_at, phone, remark, user_name, uuid, addr',
outlet: 'id, name', outlet: 'id, name, isDeleted',
}) })
this.chatMessage = this.table('chatMessage') this.chatMessage = this.table('chatMessage')
......
...@@ -10,6 +10,7 @@ const baseAxios = axios.create({ ...@@ -10,6 +10,7 @@ const baseAxios = axios.create({
baseAxios.interceptors.response.use( baseAxios.interceptors.response.use(
(baseRet: AxiosResponse) => { (baseRet: AxiosResponse) => {
const ret = baseRet.data as iRet const ret = baseRet.data as iRet
if ([504, 503].includes(ret.code)) { if ([504, 503].includes(ret.code)) {
Toast.fail(ret.msg) Toast.fail(ret.msg)
deleteUserMsg() deleteUserMsg()
...@@ -18,6 +19,10 @@ baseAxios.interceptors.response.use( ...@@ -18,6 +19,10 @@ baseAxios.interceptors.response.use(
}) })
} else if (ret.code === 1000) { } else if (ret.code === 1000) {
Toast('您好,非常抱歉,该网点暂无营业人员。') Toast('您好,非常抱歉,该网点暂无营业人员。')
} else if (
baseRet.config.url?.match(/\/address\/getOutlet$/) &&
ret.code === 513
) {
} else if (ret.code !== 200) { } else if (ret.code !== 200) {
// console.log(baseRet, 'show baseret'); // console.log(baseRet, 'show baseret');
if (baseRet.config.url === '/staff/enable_live') return baseRet.data if (baseRet.config.url === '/staff/enable_live') return baseRet.data
......
...@@ -78,6 +78,7 @@ export const getDisplayNamesFromOutletId = async (outletids: number[]) => { ...@@ -78,6 +78,7 @@ export const getDisplayNamesFromOutletId = async (outletids: number[]) => {
return ret.data.outlet_name return ret.data.outlet_name
} }
} else { } else {
!outlet.isDeleted &&
AddressService.getInstance() AddressService.getInstance()
.getOutlet({ .getOutlet({
id, id,
...@@ -88,9 +89,14 @@ export const getDisplayNamesFromOutletId = async (outletids: number[]) => { ...@@ -88,9 +89,14 @@ export const getDisplayNamesFromOutletId = async (outletids: number[]) => {
name: ret.data.outlet_name, name: ret.data.outlet_name,
id: ret.data.id, id: ret.data.id,
}) })
} else {
OutletDBService.getInstance().update({
id,
isDeleted: true,
})
} }
}) })
return outlet.name return `${outlet.name}${outlet.isDeleted ? '(已停止营业)' : ''}`
} }
}) })
const list = await Promise.all(promiseList) const list = await Promise.all(promiseList)
......
...@@ -8,11 +8,11 @@ ...@@ -8,11 +8,11 @@
<q-spinner color="primary" size="3rem" :thickness="5" /> <q-spinner color="primary" size="3rem" :thickness="5" />
</div> </div>
<div class="flex flex-col flex-grow overflow-hidden" style="flex-basis: 0px"> <div class="flex flex-col flex-grow overflow-hidden" style="flex-basis: 0px">
<ChatContentVue /> <ChatContentVue :isRobootOffLine="isRobootOffLine"/>
<ServiceRating :setSelectedRate="handleSelect" :selected="selected" v-if="showServiceRating" /> <ServiceRating :setSelectedRate="handleSelect" :selected="selected" v-if="showServiceRating" />
<ChatOption> <ChatOption>
<ChatOptionItemVue <ChatOptionItemVue
v-if="isUser && isChatWithRoboot" v-if="isUser && isChatWithRoboot && !isRobootOffLine"
:selected="questionSelected" :selected="questionSelected"
@click="handleClickQuestionOption" @click="handleClickQuestionOption"
value="常用问题" value="常用问题"
...@@ -261,6 +261,14 @@ export default defineComponent({ ...@@ -261,6 +261,14 @@ export default defineComponent({
return route.query.outlet !== undefined return route.query.outlet !== undefined
}) })
const isRobootOffLine = computed(() => {
if (isChatWithRoboot.value) {
return !!title.value.match(/\(已停止营业\)$/)
} else {
return undefined;
}
})
const initTitle = async () => { const initTitle = async () => {
console.log(isChatWithRoboot.value, "show isChatWithRoboot") console.log(isChatWithRoboot.value, "show isChatWithRoboot")
...@@ -341,7 +349,8 @@ export default defineComponent({ ...@@ -341,7 +349,8 @@ export default defineComponent({
showCall, showCall,
callPhone, callPhone,
isChatWithRoboot, isChatWithRoboot,
isUser isUser,
isRobootOffLine
}; };
}, },
}); });
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
:state="message.state" :state="message.state"
:hideDatetime="message.hideDatetime" :hideDatetime="message.hideDatetime"
:uploadProgress="message.uploadProgress" :uploadProgress="message.uploadProgress"
:isRobootOffLine="isRobootOffLine"
/> />
<!-- </div> --> <!-- </div> -->
<!-- </div> --> <!-- </div> -->
...@@ -47,6 +48,7 @@ import { fffList } from "@/store/test"; ...@@ -47,6 +48,7 @@ import { fffList } from "@/store/test";
export default defineComponent({ export default defineComponent({
components: { ChatContentMessageVue }, components: { ChatContentMessageVue },
props: ['isRobootOffLine'],
setup() { setup() {
const noMoreMessages = messageStore.noMoreHistoryMessages; const noMoreMessages = messageStore.noMoreHistoryMessages;
const myid = getFromId(); const myid = getFromId();
......
...@@ -8,10 +8,7 @@ ...@@ -8,10 +8,7 @@
:class="{ 'flex-row-reverse': fromMyself }" :class="{ 'flex-row-reverse': fromMyself }"
> >
<!-- 头像 --> <!-- 头像 -->
<q-avatar <q-avatar class="mx-4 min-w-chat-msg-avatar !rounded-md !w-10 !h-10" v-if="type !== 6">
class="mx-4 min-w-chat-msg-avatar !rounded-md !w-10 !h-10"
v-if="type !== 6"
>
<img v-if="fromMyself && userType === eRole.user" :src="userAvatarUrl" /> <img v-if="fromMyself && userType === eRole.user" :src="userAvatarUrl" />
<img <img
v-if="fromMyself && userType === eRole.staff" v-if="fromMyself && userType === eRole.staff"
...@@ -19,10 +16,16 @@ ...@@ -19,10 +16,16 @@
class="object-contain" class="object-contain"
/> />
<img <img
v-else-if="!fromMyself && userType === eRole.user" v-else-if="!fromMyself && userType === eRole.user && !isRoboot"
:src="staffAvatarUrl" :src="staffAvatarUrl"
class="object-contain" class="object-contain"
/> />
<img
v-else-if="!fromMyself && userType === eRole.user && isRoboot"
src="@/assets/img/roboot.png"
class="object-contain"
:class="{ filterGray: isRobootOffLine }"
/>
<img v-else-if="!fromMyself && userType === eRole.staff" :src="userAvatarUrl" /> <img v-else-if="!fromMyself && userType === eRole.staff" :src="userAvatarUrl" />
</q-avatar> </q-avatar>
...@@ -139,6 +142,7 @@ export default defineComponent({ ...@@ -139,6 +142,7 @@ export default defineComponent({
hideDatetime: Boolean, hideDatetime: Boolean,
uploadProgress: Object, uploadProgress: Object,
logid: { type: String, required: false, }, logid: { type: String, required: false, },
isRobootOffLine: { type: Boolean, required: false }
}, },
setup(props) { setup(props) {
...@@ -198,6 +202,10 @@ export default defineComponent({ ...@@ -198,6 +202,10 @@ export default defineComponent({
showPopOver.value = false; showPopOver.value = false;
} }
const isRoboot = computed(() => {
return route.query.outlet
})
return { return {
default_avatar_url, resend, isMedia, abort, ChatMessageTypes, handleTouchHoldItem, default_avatar_url, resend, isMedia, abort, ChatMessageTypes, handleTouchHoldItem,
onTextMsgSelect, onTextMsgSelect,
...@@ -208,6 +216,7 @@ export default defineComponent({ ...@@ -208,6 +216,7 @@ export default defineComponent({
userType, userType,
userAvatarUrl, userAvatarUrl,
staffAvatarUrl, staffAvatarUrl,
isRoboot
}; };
}, },
}); });
......
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
:latest_msg_content="item.content" :latest_msg_content="item.content"
:userType="userType" :userType="userType"
:datetime="item.datetime" :datetime="item.datetime"
:isRobootCard="item.isRobootCard"
:isDeleted="item.isDeleted"
></ChatListItem> ></ChatListItem>
</template> </template>
</van-popover> </van-popover>
...@@ -45,7 +47,7 @@ import { getUserMsg } from "@/utils/userMsg"; ...@@ -45,7 +47,7 @@ import { getUserMsg } from "@/utils/userMsg";
import { eRole } from "@/types/roleType"; import { eRole } from "@/types/roleType";
import ChatMessageDB from "@/db/ChatMessageDB"; import ChatMessageDB from "@/db/ChatMessageDB";
import router from "@/router"; import router from "@/router";
import { getDisplayNames, getDisplayNamesFromAddress, getDisplayNamesFromOutletId } from "@/utils/displayName"; import { getDisplayNames } from "@/utils/displayName";
const cardList = ref<(iChatListCard & { displayName?: string })[]>([]); const cardList = ref<(iChatListCard & { displayName?: string })[]>([]);
...@@ -57,7 +59,6 @@ const renderList = async () => { ...@@ -57,7 +59,6 @@ const renderList = async () => {
cardListLoading.value = true; cardListLoading.value = true;
const list = await ChatListCardDB.getInstance().getCardList(getFromId() as string) const list = await ChatListCardDB.getInstance().getCardList(getFromId() as string)
const addressList = list.map(i => i.targetId);
cardList.value = list; cardList.value = list;
const reqlist = list.map(i => { const reqlist = list.map(i => {
...@@ -74,12 +75,11 @@ const renderList = async () => { ...@@ -74,12 +75,11 @@ const renderList = async () => {
const displayNames = await getDisplayNames(reqlist) const displayNames = await getDisplayNames(reqlist)
// const displayNames = await getDisplayNamesFromAddress(addressList)
// await getDisplayNamesFromOutletId(list)
cardList.value = list.map((item, index) => { cardList.value = list.map((item, index) => {
return { return {
...item, ...item,
displayName: displayNames[index] displayName: displayNames[index],
isDeleted: !!displayNames[index]?.match(/\(已停止营业\)$/)
} }
}) })
cardListLoading.value = false; cardListLoading.value = false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment