提交 3604de7f 作者: 毛细亚

更新代码

上级 146bd230
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>company_app</title><script src="https://g.alicdn.com/dingding/dinglogin/0.0.5/ddLogin.js"></script><script defer="defer" src="static/js/chunk-vendors.6db6cb17.js"></script><script defer="defer" src="static/js/app.7d43d61c.js"></script><link href="static/css/chunk-vendors.34a02360.css" rel="stylesheet"><link href="static/css/app.c6113497.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but company_app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="favicon.ico">
<title>company_app</title>
<!-- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0,shrink-to-fit=no,user-scalable=no"> -->
<script src="https://g.alicdn.com/dingding/dinglogin/0.0.5/ddLogin.js"></script>
<script defer src="static/js/chunk-vendors.js"></script><script defer src="static/js/app.js"></script></head>
<body>
<noscript>
<strong>We're sorry but company_app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
</body>
</html>
<template>
<div id="app" class="mobile-app-wrapper">
<Debug />
<div class="mobile-menu-bar" v-if="token && external_userid && showMemberId">
<!-- 临时调试信息 -->
<div class="menu-container">
......@@ -46,9 +46,11 @@ import { getToken } from '@/utils/auth'
import { mapState, mapMutations } from 'vuex'
import Cookies from 'js-cookie'
import { getParams } from '@/utils/index'
import Debug from '@/components/debug.vue'
export default {
name: 'App',
components: {
Debug,
bindUserList
},
data() {
......
<template>
<!-- 开发模式触发区域 - 隐藏的点击区域 -->
<div class="dev-mode-trigger" @click="handleDevModeClick" title="开发模式触发区域"></div>
</template>
<script>
import devModeManager from '@/utils/devMode'
export default {
name: 'Debug',
methods: {
handleDevModeClick() {
devModeManager.handleClick()
}
}
}
</script>
<style lang="scss" scoped>
/* 开发模式触发区域 */
.dev-mode-trigger {
position: absolute;
top: 5px;
left: 5px;
width: 50px;
height: 50px;
background: transparent;
cursor: pointer;
z-index: 999;
user-select: none;
}
/* 开发环境下显示边框提示 */
.dev-mode-trigger:hover {
background: rgba(0, 191, 138, 0.1);
border-radius: 4px;
}
</style>
\ No newline at end of file
......@@ -15,7 +15,7 @@ import VConsole from 'vconsole';
import uploading from '@/utils/cos-upload'
import errorHandle from '@/utils/errorHandle'
import { getParams } from '@/utils/index'
import * as ww from '@wecom/jssdk'
import globalComponent from '@/components/register.js'
import loadmore from '@/directive/loadmore/index.js' // 加载更多
import clickagain from './directive/clickagain'
......@@ -36,6 +36,7 @@ Vue.config.devtools = process.env.NODE_ENV === 'development'
Vue.prototype.$cookies = Cookies;
Vue.prototype.$lodash = _;
Vue.prototype.$moment = moment;
Vue.prototype.$ww = ww;
new Vue({
router,
store,
......
......@@ -28,7 +28,7 @@
<div class="rowFlex titleFixed columnCenter">
<div class="num">{{ items.message.attachments.length > 1 ? `+${items.message.attachments.length - 1}条` : '' }}</div>
<el-button class="button rowFlex allCenter" :disabled="Boolean(setIntervalTimer)" @click.stop="sendMessage(items.message.attachments, items._id)">发送</el-button>
<!-- <el-button class="button rowFlex allCenter" :disabled="Boolean(setIntervalTimer)" @click.stop="sendMessage(items.message.attachments, items._id)">发送</el-button> -->
</div>
<el-collapse-item title="" :name="items._id" class="contentItem">
<div v-for="(i, j) in items.message.attachments" :key="j">
......@@ -39,7 +39,7 @@
</div>
<div v-if="i.msgtype == 'image'" class="contentItemDetails rowFlex spaceBetween columnCenter">
<el-image class="image" :src="i.image.picurl" :preview-src-list="[i.image.picurl]" fit="contain"></el-image>
<el-button class="sendButton rowFlex allCenter" :disabled="Boolean(setIntervalTimer)" @click.stop="sendMessage([i], items._id)">发送</el-button>
<el-button class="sendButton rowFlex allCenter" :disabled="Boolean(setIntervalTimer)" @click.stop="sendMessageEdit(i, items._id)">发送</el-button>
</div>
</div>
</div>
......@@ -218,22 +218,67 @@ export default {
}
},
// 发送语音的时候 先编辑再发送
// 发送语音的时候 先编辑再发送
sendMessageEdit(item, id) {
console.log(item, id, '--------------')
// 复制内容到粘贴板
if(item.msgtype == 'text'){
if (item && item.text && item.text.content) {
copyToClipboard(
item.text.content,
(message) => this.$message.success(message),
(message) => this.$message.error(message)
)
// copyToClipboard(
// item.text.content,
// (message) => this.$message.success(message),
// (message) => this.$message.error(message)
// )
this.sendChatMessage(item.text.content)
}
}else if(item.msgtype == 'image' && item.image.picurl){
this.sendMessageImage(item)
}
},
sendMessageImage(item, id){
// 发送图片作为链接消息
if (item.image && item.image.picurl) {
this.sendImageAsLink(item.image.picurl)
} else {
// 如果没有图片URL,提示用户
this.$message.error('图片链接不存在,无法发送')
}
},
if (!this.setIntervalTimer) {
this.set_isEditSkill([item])
this.skillQuote(id, 1)
// 发送图片作为链接消息
sendImageAsLink(picurl) {
this.$ww.sendChatMessage({
msgtype: 'link',
link: {
title: '图片消息',
description: '点击查看图片',
url: picurl,
picurl: picurl
},
success: (res) => {
console.log(res, '发送图片链接成功')
this.$message.success('图片发送成功')
},
fail: (err) => {
console.log(err, '发送图片链接失败')
this.$message.error('图片发送失败:' + (err.errMsg || err.message || '未知错误'))
}
})
},
// 发送文本消息
sendChatMessage(text){
this.$ww.sendChatMessage({
msgtype: 'text',
text: {
content: text
},
success: (res) => {
console.log(res, '发送文本成功')
},
fail: (err) => {
console.log(err, '发送文本失败')
}
})
},
contentSearch() {
this.pageInfo = {
......
......@@ -28,7 +28,7 @@
<div class="rowFlex titleFixed columnCenter">
<div class="num">{{ items.message.attachments.length > 1 ? `+${items.message.attachments.length - 1}条` : '' }}</div>
<el-button class="button rowFlex allCenter" @click.stop="sendMessage(items.message.attachments, items._id)">发送</el-button>
<!-- <el-button class="button rowFlex allCenter" @click.stop="sendMessage(items.message.attachments, items._id)">发送</el-button> -->
</div>
<el-collapse-item title="" :name="items._id" class="contentItem">
<div v-for="(i, j) in items.message.attachments" :key="j">
......@@ -39,7 +39,7 @@
</div>
<div v-if="i.msgtype == 'image'" class="contentItemDetails rowFlex spaceBetween columnCenter">
<el-image class="image" :src="i.image.picurl" :preview-src-list="[i.image.picurl]" fit="contain"></el-image>
<el-button class="sendButton rowFlex allCenter" @click.stop="sendMessage([i], items._id)">发送</el-button>
<el-button class="sendButton rowFlex allCenter" @click.stop="sendMessageEdit(i, items._id)">发送</el-button>
</div>
</div>
</div>
......@@ -53,7 +53,7 @@
</div>
</template>
<script>
import { procedure_group, procedureList, procedureSort, procedureGroupSort, skillQuote } from '@/api/skill'
import { procedure_group, procedureList, procedureSort, procedureGroupSort } from '@/api/skill'
import { mapState, mapMutations, mapActions } from 'vuex'
import { debounce, copyToClipboard } from '@/utils/index'
export default {
......@@ -125,22 +125,75 @@ export default {
methods: {
// ...mapMutations('common', ['set_sendSkillMessage', 'set_isEditSkill']),
sendMessage: debounce(function(item, id) {
this.skillQuote(id, item.length)
console.log(item, id, 'sendMessage')
}, 500),
handleDragStart(e, item, index) {
this.sortID._id = item._id
this.dragging = item
// 发送语音的时候 先编辑再发送
sendMessageEdit(item, id) {
console.log(item)
// 复制内容到粘贴板
if(item.msgtype == 'text'){
if (item && item.text && item.text.content) {
// copyToClipboard(
// item.text.content,
// (message) => this.$message.success(message),
// (message) => this.$message.error(message)
// )
this.sendChatMessage(item.text.content)
}
}else if(item.msgtype == 'image' && item.image.picurl){
this.sendMessageImage(item)
}
},
skillQuote(id, num) {
const data = {
type: this.activeName,
procedure_id: id,
quote_count: num || 1
sendMessageImage(item, id){
// 发送图片作为链接消息
if (item.image && item.image.picurl) {
this.sendImageAsLink(item.image.picurl)
} else {
// 如果没有图片URL,提示用户
this.$message.error('图片链接不存在,无法发送')
}
},
// 发送图片作为链接消息
sendImageAsLink(picurl) {
this.$ww.sendChatMessage({
msgtype: 'link',
link: {
title: '图片消息',
description: '点击查看图片',
url: picurl,
picurl: picurl
},
success: (res) => {
console.log(res, '发送图片链接成功')
this.$message.success('图片发送成功')
},
fail: (err) => {
console.log(err, '发送图片链接失败')
this.$message.error('图片发送失败:' + (err.errMsg || err.message || '未知错误'))
}
skillQuote(data).then((res) => {
console.log(res)
})
},
// 发送文本消息
sendChatMessage(text){
this.$ww.sendChatMessage({
msgtype: 'text',
text: {
content: text
},
success: (res) => {
console.log(res, '发送文本成功')
},
fail: (err) => {
console.log(err, '发送文本失败')
}
})
},
handleDragStart(e, item, index) {
this.sortID._id = item._id
this.dragging = item
},
sortSkill() {
procedureSort(this.sortID).then((res) => {
if (res.status_code == 1) {
......@@ -215,19 +268,7 @@ export default {
this.groupDataList = newItems
}
},
// 发送语音的时候 先编辑再发送
sendMessageEdit(item, id) {
// 复制内容到粘贴板
if (item && item.text && item.text.content) {
copyToClipboard(
item.text.content,
(message) => this.$message.success(message),
(message) => this.$message.error(message)
)
}
this.skillQuote(id, 1)
},
contentSearch() {
this.pageInfo = {
page: 1,
......
......@@ -18,8 +18,6 @@
</div>
</div>
</div>
<!-- 开发模式触发区域 - 隐藏的点击区域 -->
<div class="dev-mode-trigger" @click="handleDevModeClick" title="开发模式触发区域"></div>
<!-- 组织切换弹窗 -->
<el-dialog :visible.sync="showOrgDialog" width="300px" title="选择组织">
<ul style="list-style:none;padding:0;margin-top: -20px;">
......@@ -49,8 +47,9 @@ import { getParams } from '@/utils/index'
import { mapMutations, mapState } from 'vuex'
import { getToken, setToken } from '@/utils/auth'
import jsApiList from '@/utils/jsApiList'
import devModeManager from '@/utils/devMode'
export default {
components: {
},
data() {
return {
wecomUserInfo: null, // 企微用户信息
......@@ -102,10 +101,6 @@ export default {
}
},
// 处理开发模式点击
handleDevModeClick() {
devModeManager.handleClick()
},
// 设置缓存
cacheCorp_id(corp_id) {
Cookies.set('corp_id', corp_id, { expires: 7 })
......@@ -181,7 +176,7 @@ export default {
}
},
getCurExternalContact() {
ww.getCurExternalContact({
this.$ww.getCurExternalContact({
success: (res) => {
if (res.err_msg === "getCurExternalContact:ok") {
console.log(res, '重新进入获取企微外部联系人')
......@@ -202,7 +197,7 @@ export default {
// 2. 注册企微JS-SDK
registerWeComSDK() {
console.log('删除企业签名', 1231)
ww.register({
this.$ww.register({
corpId: Cookies.get('corp_id'),
agentId: this.signData.agent_id,
jsApiList: jsApiList,
......@@ -349,24 +344,7 @@ export default {
justify-content: center;
}
/* 开发模式触发区域 */
.dev-mode-trigger {
position: absolute;
top: 5px;
right: 5px;
width: 50px;
height: 50px;
background: transparent;
cursor: pointer;
z-index: 999;
user-select: none;
}
/* 开发环境下显示边框提示 */
.dev-mode-trigger:hover {
background: rgba(0, 191, 138, 0.1);
border-radius: 4px;
}
.qr-contain {
margin: 0 auto;
......
......@@ -53,6 +53,9 @@ import skillPersonal from './components/skill/skillPersonal.vue'
import skillLibrary from './components/skill/skillLibrary.vue'
// import aiLibrary from './components/skill/aiLibrary.vue'
import { mapState, mapMutations, mapActions } from 'vuex'
import { getSignature } from '@/api/user'
import Cookies from 'js-cookie'
import jsApiList from '@/utils/jsApiList'
export default {
components: {
skillCompany,
......@@ -65,9 +68,56 @@ export default {
activeName: 'personal'
}
},
created() { },
created() {
this.getSignature()
},
mounted() { },
methods: {}
methods: {
async getSignature() {
console.log('获取签名', window.location.href)
const corp_id = Cookies.get('corp_id')
try {
const res = await getSignature({ corp_id: corp_id, path: window.location.href });
if (res.status_code === 1) {
try {
this.registerWeComSDK(res.data);
} catch (err) {
console.log(err, '初始化sdk 失败')
}
}
} catch (err) {
console.log(err, '获取签名失败')
// window.location.href = window.location.origin + '/company_app/index.html?corp_id=' + corp_id + '&msg=signerror'
}
},
registerWeComSDK(signData) {
this.$ww.register({
corpId: Cookies.get('corp_id'),
agentId: signData.agent_id,
jsApiList: jsApiList,
// getConfigSignature: () => Promise.resolve({
// nonceStr: this.signData.nonce_str,
// timestamp: this.signData.signature_time,
// signature: this.signData.corp_signature,
// }),
// 只用到应用的 api 可以只进行应用的签名
getAgentConfigSignature: () => Promise.resolve({
nonceStr: signData.nonce_str,
timestamp: signData.signature_time,
signature: signData.agent_signature,
}),
onAgentConfigSuccess: (res) => {
console.log('注册成功可以调用企微 js-sdk', res)
// 注册成功后不立即获取外部联系人,等钉钉扫码后再获取
},
onAgentConfigFail: (err) => {
console.log('注册失败不能使用企微js-sdk', err)
// 错误处理123
}
});
},
}
}
</script>
<style lang="scss" scoped>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论