import { addUsers, createGroup, delGroup, dispatchGroupList, removeUsers, dispatchUsers } from "@/api/gwsd"; const gwsdModules = { state: { // 调度员PTT账号信息,刷新页面后自动在@/api/auth.js中赋值 account: { adminName: process.env.VUE_APP_PTT_ADMIN_NAME, // 一个公司共用的账号,写死 account: "", coordSaveDays: 0, name: "", password: "", uid: null, id: "", }, // 音视频调度员的状态 yardman: { type: "1", // 调度类型:1视频调度 2 视频上拉(只看远端视频,本地不显示不播放):除了视频上拉传2,其他音频调度与视频调度都传1 callType: "video", isMutedAudio: false, // 是否静音 isMutedVideo: false, // 是否关闭视频 video: true, // 是否开启视频 audio: true, // 是否开启音频 }, // 调度组群信息 groupInfo: { groupName: "", groupId: null, }, memberList: [], // 被调度组群成员列表(周边调度被勾选中的人) dispatchMembers: [], // 周边调度成员列表 participant: [], // 参会人列表,包括调度员和被调度人 unParticipated: [], // 未参与人员列表 }, getters: { pttGroupId: (state) => state.groupInfo.groupId, pttGroupName: (state) => state.groupInfo.groupName, roomId: (state) => state.account.uid, }, mutations: { SET_MEMBER_LIST(state, list = []) { state.memberList = list; }, SET_PARTICIPANT(state, list = []) { state.participant = list; }, SET_DISPATCH_MEMBERS(state, list = []) { state.dispatchMembers = list; }, UPDATE_DISPATCH_MEMBERS(state, { index, member }) { state.dispatchMembers[index] = member; }, UPDATE_UN_PARTICIPATED(state, { index, member }) { state.unParticipated[index] = member; }, UNCHECK_ALL_UN_PARTICIPANT(state) { state.unParticipated.forEach((item) => { item.checked = false; }); }, SET_PTT_ACCOUNT(state, info) { state.account = { ...{}, ...info, adminName: "ttadmin3" }; }, SET_YARDMAN(state, info) { state.yardman = { ...state.yardman, ...info }; }, // 调度员禁麦、开麦 SET_YARDMAN_AUDIO_MUTED(state, isMuted) { state.yardman.isMutedAudio = isMuted; }, SET_YARDMAN_VIDEO_MUTED(state, isMuted) { state.yardman.isMutedVideo = isMuted; }, }, actions: { // 创建组群,获取groupId async createPTTGroup({ state }, payload) { return createGroup(payload).then((res) => { console.log("createGroup", res); const { status, data } = res; if (status === 200) { const { disId } = data; state.groupInfo.groupId = disId; state.groupInfo.groupName = payload.name; } return Promise.resolve(res); }); }, async dismissPTTGroup({ state }, payload) { return delGroup(payload).then((res) => { state.groupInfo.groupId = null; state.groupInfo.groupName = ""; return Promise.resolve(res); }); }, /** * 删除成员 * @param state * @param commit * @param {string} payload * @returns {Promise<*>} */ async removePTTGroupUser({ state, commit }, payload) { return removeUsers({ adminName: state.account.adminName, gid: state.groupInfo.groupId, accountLists: [payload], }).then((res) => { console.log(res); // dispatch("getParticipant"); const memberList = state.memberList.filter((item) => item.dispatchNo !== payload); commit("SET_MEMBER_LIST", memberList); const index = state.dispatchMembers.findIndex((item) => item.dispatchNo === payload); commit("UPDATE_DISPATCH_MEMBERS", { index, member: { ...state.dispatchMembers[index], active: false } }); return res; }); }, getUnParticipated({ state }) { const dispatchMembers = state.dispatchMembers; const memberList = dispatchMembers.filter((item) => item.status === "Online" && !item.active); state.unParticipated = memberList.map((member) => { return { ...member, name: member.dispatchNo, nameSlice: member.dispatchNo.slice(-3), checked: false, }; }); return state.unParticipated; }, /** * 添加成员 * @param state * @param commit * @param {string[]} payload 要添加成员的dispatchNo集合 * @returns {Promise} */ async addPTTGroupUsers({ state, commit }, payload) { return addUsers({ adminName: state.account.adminName, gid: state.groupInfo.groupId, accountLists: payload, }).then((res) => { console.log(res); /** * 1、先更新state.dispatchMembers,dispatchMembers中dispatchNo存在于payload中的active为true,这样做是为了调度弹框中同步勾选起添加成员 */ state.dispatchMembers.forEach((item) => { if (payload.includes(item.dispatchNo)) { item.active = true; } }); /** * 2、更新state.memberList,把dispatchMembers中active为true的元素添加进memberList里 */ const memberList = state.memberList.concat(state.dispatchMembers.filter((item) => item.active)); commit("SET_MEMBER_LIST", memberList); return res; }); }, addMQTTGroupUsers({ state, commit }, payload) { state.dispatchMembers.forEach((item) => { if (payload.includes(item.dispatchNo)) { item.active = true; item.state = "CONNECTING"; item.isMutedAudio = true; } }); /** * 2、更新state.memberList,把dispatchMembers中active为true的元素添加进memberList里 */ const memberList = state.dispatchMembers.filter((item) => item.active); console.log("addMQTTGroupUsers", memberList); commit("SET_MEMBER_LIST", memberList); }, async clearGroup({ state, dispatch }) { const { data } = await dispatchGroupList({ adminName: state.account.adminName }); console.log(data); if (data && data.length > 0) { await dispatch("dismissPTTGroup", { adminName: state.account.adminName, gid: data[0].id, }); } }, async getParticipant({ state, commit }) { const { data } = await dispatchUsers({ gid: state.groupInfo.groupId }); console.log("getParticipant data", data); if (data && data.length > 0) { commit("SET_PARTICIPANT", data); return Promise.resolve(data); } }, async setYardman({ commit }, payload) { commit("SET_YARDMAN", payload); }, }, }; export default gwsdModules;