|
@@ -8,8 +8,10 @@ import {
|
|
|
Field,
|
|
|
Icon,
|
|
|
Image,
|
|
|
- showConfirmDialog
|
|
|
+ showConfirmDialog,
|
|
|
+ showToast
|
|
|
} from 'vant';
|
|
|
+import { postMessage } from '@/helpers/native-message';
|
|
|
import MUploader from '@/components/m-uploader';
|
|
|
import MPopup from '@/components/m-popup';
|
|
|
import SelectSend from './select-send';
|
|
@@ -19,31 +21,100 @@ import iconContent from './images/icon-content.png';
|
|
|
import iconFile from './images/icon-file.png';
|
|
|
import iconUsers from './images/icon-users.png';
|
|
|
|
|
|
-import badge1 from './images/badge-1.png';
|
|
|
-import class1 from './images/1.png';
|
|
|
+// import badge1 from './images/badge-1.png';
|
|
|
+// import class1 from './images/1.png';
|
|
|
import MSticky from '@/components/m-sticky';
|
|
|
+import request from '@/helpers/request';
|
|
|
+import { useRouter } from 'vue-router';
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'mass-message',
|
|
|
setup() {
|
|
|
+ const router = useRouter();
|
|
|
const forms = reactive({
|
|
|
- textMessage: '',
|
|
|
- attachments: [],
|
|
|
+ messageContent: '',
|
|
|
+ fileUrl: [] as any,
|
|
|
selectStatus: false,
|
|
|
- selectObject: []
|
|
|
+ receives: [] as any[],
|
|
|
+ selectObject: {} as any
|
|
|
});
|
|
|
|
|
|
- const onClose = () => {
|
|
|
+ const onClose = (item: any) => {
|
|
|
showConfirmDialog({
|
|
|
title: '提示',
|
|
|
message: '您是否删除该数据'
|
|
|
}).then(() => {
|
|
|
//
|
|
|
+ const selectList = forms.selectObject;
|
|
|
+ if (item.receiveType === 'GROUPCHAT') {
|
|
|
+ const tempClass = selectList.groupChat || [];
|
|
|
+ const sIndex = tempClass.findIndex(
|
|
|
+ (child: any) => child.id === item.receiveId
|
|
|
+ );
|
|
|
+ tempClass.splice(sIndex, 1);
|
|
|
+ } else if (item.receiveType === 'CONTACTS') {
|
|
|
+ const tempSchool = selectList.contcats || [];
|
|
|
+ const sIndex = tempSchool.findIndex(
|
|
|
+ (child: any) => child.id === item.receiveId
|
|
|
+ );
|
|
|
+ tempSchool.splice(sIndex, 1);
|
|
|
+ }
|
|
|
+ forms.selectObject = selectList;
|
|
|
+
|
|
|
+ const index = forms.receives.findIndex(
|
|
|
+ (child: any) => child.receiveId === item.receiveId
|
|
|
+ );
|
|
|
+ forms.receives.splice(index, 1);
|
|
|
});
|
|
|
};
|
|
|
|
|
|
- const onSubmit = () => {
|
|
|
+ const checkForms = () => {
|
|
|
+ if (!forms.messageContent) {
|
|
|
+ showToast('请输入消息内容');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (
|
|
|
+ forms.messageContent.length < 3 &&
|
|
|
+ forms.messageContent.length > 150
|
|
|
+ ) {
|
|
|
+ showToast('消息内容长度为3~150个字');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (forms.receives.length <= 0) {
|
|
|
+ showToast('请选择发送对象');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ };
|
|
|
+ const onSubmit = async () => {
|
|
|
console.log('onSubmit');
|
|
|
+ const targetIds = forms.selectObject.groupChat.map(
|
|
|
+ (item: any) => item.id
|
|
|
+ );
|
|
|
+ const userTargetIds = forms.selectObject.contacts.map(
|
|
|
+ (item: any) => item.id
|
|
|
+ );
|
|
|
+ console.log(targetIds, userTargetIds);
|
|
|
+ try {
|
|
|
+ if (!checkForms()) return;
|
|
|
+ await request.post('/api-web/imSendGroupMessage/schoolSend', {
|
|
|
+ hideLoading: false,
|
|
|
+ data: {
|
|
|
+ messageContent: forms.messageContent,
|
|
|
+ messageType: 'IMG',
|
|
|
+ sendType: 'NOW',
|
|
|
+ fileUrl: forms.fileUrl.join(','),
|
|
|
+ targetIds: targetIds.join(','),
|
|
|
+ userTargetIds: userTargetIds.join(',')
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ postMessage({ api: 'back' });
|
|
|
+ } catch {
|
|
|
+ //
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
return () => (
|
|
@@ -63,7 +134,7 @@ export default defineComponent({
|
|
|
<Field
|
|
|
style={{ padding: '0', marginTop: '12px' }}
|
|
|
placeholder="请输入您的消息内容"
|
|
|
- v-model={forms.textMessage}
|
|
|
+ v-model={forms.messageContent}
|
|
|
type="textarea"
|
|
|
rows={3}
|
|
|
showWordLimit
|
|
@@ -85,7 +156,7 @@ export default defineComponent({
|
|
|
),
|
|
|
label: () => (
|
|
|
<MUploader
|
|
|
- v-model:modelValue={forms.attachments}
|
|
|
+ v-model:modelValue={forms.fileUrl}
|
|
|
maxCount={5}
|
|
|
uploadIcon={iconUploader}
|
|
|
/>
|
|
@@ -115,47 +186,30 @@ export default defineComponent({
|
|
|
}}
|
|
|
</Field>
|
|
|
|
|
|
- <Cell center border={false}>
|
|
|
- {{
|
|
|
- icon: () => <Image src={class1} class={styles.imgLogo} />,
|
|
|
- title: () => (
|
|
|
- <div class={styles.infos}>
|
|
|
- <div class={styles.infoTitle}>长笛班</div>
|
|
|
- <div class={styles.infoContent}>
|
|
|
- 武汉洪山区第二小学第一乐团
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- ),
|
|
|
- 'right-icon': () => (
|
|
|
- <Icon
|
|
|
- name={iconClose}
|
|
|
- class={styles.infoClose}
|
|
|
- onClick={onClose}
|
|
|
- />
|
|
|
- )
|
|
|
- }}
|
|
|
- </Cell>
|
|
|
- {[1, 2, 3, 4, 5, 6].map(() => (
|
|
|
+ {forms.receives.map((item: any) => (
|
|
|
<Cell center border={false}>
|
|
|
{{
|
|
|
icon: () => (
|
|
|
- <Image src={class1} class={styles.imgLogo} fit="contain" />
|
|
|
+ <Image
|
|
|
+ src={item.avatar}
|
|
|
+ class={styles.imgLogo}
|
|
|
+ fit="contain"
|
|
|
+ />
|
|
|
),
|
|
|
title: () => (
|
|
|
<div class={styles.infos}>
|
|
|
<div class={styles.infoTitle}>
|
|
|
- 长笛班 <img src={badge1} class={styles.iconBadge} />
|
|
|
- </div>
|
|
|
- <div class={styles.infoContent}>
|
|
|
- 武汉洪山区第二小学第一乐团
|
|
|
+ {item.receiveName}
|
|
|
+ {/* <img src={badge1} class={styles.iconBadge} /> */}
|
|
|
</div>
|
|
|
+ <div class={styles.infoContent}>{item.receiveText}</div>
|
|
|
</div>
|
|
|
),
|
|
|
'right-icon': () => (
|
|
|
<Icon
|
|
|
name={iconClose}
|
|
|
class={styles.infoClose}
|
|
|
- onClick={onClose}
|
|
|
+ onClick={() => onClose(item)}
|
|
|
/>
|
|
|
)
|
|
|
}}
|
|
@@ -175,6 +229,33 @@ export default defineComponent({
|
|
|
<SelectSend
|
|
|
v-model:selectObject={forms.selectObject}
|
|
|
onClose={() => (forms.selectStatus = false)}
|
|
|
+ onConfirm={(val: any) => {
|
|
|
+ const groupChat = val.groupChat;
|
|
|
+ const contacts = val.contacts;
|
|
|
+ const tempList: any = [];
|
|
|
+ console.log(groupChat, contacts, tempList);
|
|
|
+ groupChat.forEach((item: any) => {
|
|
|
+ tempList.push({
|
|
|
+ receiveType: 'GROUPCHAT',
|
|
|
+ receiveId: item.id,
|
|
|
+ receiveName: item.value,
|
|
|
+ receiveText: item.text,
|
|
|
+ avatar: item.avatar
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ contacts.forEach((item: any) => {
|
|
|
+ tempList.push({
|
|
|
+ receiveType: 'CONTACTS',
|
|
|
+ receiveId: item.id,
|
|
|
+ receiveName: item.value,
|
|
|
+ receiveText: item.text,
|
|
|
+ avatar: item.avatar
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ forms.receives = tempList;
|
|
|
+ }}
|
|
|
/>
|
|
|
</MPopup>
|
|
|
</div>
|