Commit a25d997e authored by derong.zhang's avatar derong.zhang

去代理,修改样式

parent c9f8a04d
......@@ -39,5 +39,6 @@ module.exports = {
"no-useless-escape": 0,
// allow debugger during development
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
"vue/no-parsing-error": [2, { "x-invalid-end-tag": false }]
}
}
......@@ -11,11 +11,11 @@ module.exports = {
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {
'/gateway': {
target: 'https://s-engine-ai3.liangkebang.net',
changeOrigin: true,
pathRewrite: {'^/gateway' : ''}
}
// '/gateway': {
// target: 'https://s-engine-ai3.liangkebang.net',
// changeOrigin: true,
// pathRewrite: {'^/gateway' : ''}
// }
},
// Various Dev Server settings
......
......@@ -4,8 +4,6 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>strategy-ui</title>
<script src="https://g.alicdn.com/dingding/dingtalk-jsapi/2.7.13/dingtalk.open.js"></script>
<script type="text/javascript" src="http://g.alicdn.com/dingding/dingtalk-pc-api/2.3.1/index.js"></script>
</head>
<body>
<div id="app"></div>
......
import axios from '../services/http.service'
// import sapi from '../config/index'
export function getSoulSoother () {
return axios.get(`/gateway/api/sysStrategy/getTodaySoul`, {headers: {
'Content-Type': 'application/json'
......@@ -90,3 +91,9 @@ export function getconfiglist () {
'Content-Type': 'application/json'
}})
}
// 发送钉钉消息
export function sendding (data) {
return axios.post(`/gateway/api/dingNotice/send`, data, {headers: {
'Content-Type': 'application/json'
}})
}
<template>
<div class="layout">
<Layout class="layout_content">
<Sider breakpoint="md" collapsible :collapsed-width="78" v-model="isCollapsed">
<Sider breakpoint="md" ref="side1" hide-trigger collapsible :collapsed-width="78" v-model="isCollapsed">
<div class="title">
战略引擎
</div>
......@@ -15,8 +15,13 @@
</Sider>
<Layout>
<Header class="layout-header-bar">
<span class="signout" @click="logOut">退出</span>
<span class="message">{{me}}</span>
<Header :style="{padding: 0}" class="layout-header-bar">
<Icon @click.native="collapsedSider" :class="rotateIcon" :style="{margin: '0 0px'}" type="md-menu" size="24"></Icon>
<span class="signout" @click="logOut">退出</span>
<span class="message">{{me}}</span>
</Header>
<!-- <span class="signout" @click="logOut">退出</span>
<span class="message">{{me}}</span> -->
</Header>
<Content :style="{margin: '5px', background: '#fff', minHeight: '220px'}">
<router-view></router-view>
......@@ -35,6 +40,12 @@ export default {
}
},
computed: {
rotateIcon () {
return [
'menu-icon',
this.isCollapsed ? 'rotate-icon' : ''
];
},
menuitemClasses: function () {
return [
'menu-item',
......@@ -55,8 +66,11 @@ export default {
},
getmass () {
getmassage().then(data => {
this.me = data.data.userCode
this.me = data.data.body.userName
})
},
collapsedSider () {
this.$refs.side1.toggleCollapse();
}
},
mounted () {
......
......@@ -31,7 +31,7 @@
<img src="../../static/dingding.png" alt="钉钉" @click="ding(item)" style="margin-left:20px">
</p>
<p v-show="item.showselect">
<Select v-model="item.dingNamearr" size="small" clearable style="width:100%" multiple filterable :remote-method="remoteMethod" remote>
<Select v-model="item.dingNamearr" size="small" label-in-value @on-change="selectName" clearable style="width:100%" multiple filterable :remote-method="remoteMethod" remote>
<Option v-for="(item, index) in getNamearr" :value="item.userId" :key="index">{{item.name}}</Option>
</Select>
</p>
......@@ -39,7 +39,7 @@
<div class="confirediv" v-show="item.showselect">
<p style="margin-top:22px">
<Button type="primary" size='small'>取消</Button>
<Button type="primary" size='small'>确认</Button>
<Button type="primary" size='small' @click="confireding(item)">确认</Button>
</p>
</div>
</div>
......@@ -65,8 +65,7 @@
</div>
</template>
<script>
// import dd from 'dingtalk-jsapi'
import {getdetailList, edutListitem, delateListitem, getname} from '../api/strategymange.serve'
import {getdetailList, edutListitem, delateListitem, getname, sendding} from '../api/strategymange.serve'
export default {
data () {
return {
......@@ -78,7 +77,12 @@ export default {
delateUid: '',
delatelefthostmodal: false,
dingNamearr: [],
getNamearr: []
getNamearr: [],
confiredingarr: [],
resultdingArr: [],
resultdingcontentarr: [],
busUid: '',
content: ''
}
},
methods: {
......@@ -130,21 +134,30 @@ export default {
})
})
},
// getnamelist () {
// dd.biz.ding.post({
// users: ['100', '101'], // 用户列表,userid
// corpId: 'dingcdf747c33620747835c2f4657eb6378f', // 加密的企业id
// type: 2, // 钉类型 1:image 2:link
// alertType: 2,
// alertDate: {'format': 'yyyy-MM-dd HH:mm', 'value': '2015-05-09 08:00'},
// attachment: {
// images: [''] // 只取第一个image
// }, // 附件信息
// text: '', // 消息体
// onSuccess: function () {},
// onFail: function () {}
// })
// },
selectName (item) {
this.resultdingArr = item
},
confireding (item) {
this.busUid = item.uid
this.content = item.content
this.resultdingArr.map(item => {
this.resultdingcontentarr.push({
busUid: this.busUid,
name: item.label,
userId: item.value,
text: this.content
})
})
sendding(this.resultdingcontentarr).then(data => {
if (data.data.success === true) {
this.$Message.success('发送消息成功')
this.getlist()
} else {
this.$Message.error(data.data.body.message)
this.getlist()
}
})
},
async remoteMethod (query) {
if (query !== '') {
setTimeout(async () => {
......@@ -195,6 +208,7 @@ export default {
width: 100%;
background: url('../../static/logo.jpg') repeat;
background-size: 100% 100%;
font-family:"Microsoft Yahei"
}
.detailstrategy_title{
height: 40px;
......@@ -216,51 +230,41 @@ export default {
width: 100%;
float: left;
overflow-y: auto;
/* border: 1px solid black */
}
}
.detailstrategy_content_warp{
width: 85%;
margin: 0 11%;
min-height: 80px;
/* border: 1px solid yellow */
}
.content_warpleft{
min-height: 80px;
width: 80%;
float: left;
/* border: 1px solid black; */
margin-top:5px;
}
.content_warpright{
height: 80px;
width: 20%;
float: left;
/* border: #848484 1px solid; */
margin-top:5px;
}
.content_warp_remarks{
min-height:60px;
min-height:20px;
width: 100%;
height: 40px;
float: left;
line-height: 20px;
padding: 10px 0;
color: #848484;
/* border: 1px solid yellow */
padding: 5px 0
}
.content_warp_put{
min-height:60px;
width: 100%;
float: left;
/* border: 1px solid yellow */
}
.warp_put_value{
min-height: 60px;
width: 100%;
float: left;
background: white;
/* margin-top:15px; */
/* border: 1px solid red */
}
.warp_put_img{
width: 100%;
......@@ -270,18 +274,18 @@ export default {
.imgdiv{
height: 100%;
width: 50%;
/* border: 1px solid yellow; */
float: left;
cursor: pointer;
}
.imglist {
width: 100%;
height: 20px;
display: flex
display: flex;
cursor: pointer;
}
.confirediv{
height: 100%;
width: 50%;
/* border: 1PX solid red; */
float: left;
text-align: center
}
......@@ -327,7 +331,8 @@ export default {
align-items:Center;
padding: 5px 5px;
border: 1px solid #a2825f;
border-radius: 2px
border-radius: 2px;
cursor: pointer;
}
.spansend{
display: inline-block;
......
......@@ -31,8 +31,8 @@
<img src="../../static/dingding.png" alt="钉钉" @click="ding(item)" style="margin-left:20px">
</p>
<p v-show="item.showselect">
<Select v-model="item.dingNamearr" size="small" clearable style="width:100%" multiple filterable :remote-method="remoteMethod" remote>
<Option v-for="(item, index) in getNamearr" :value="item.userId" :key="index">{{item.name}}</Option>
<Select v-model="item.dingNamearr" size="small" label-in-value @on-change="selectName" clearable style="width:100%" multiple filterable :remote-method="remoteMethod" remote>
<Option v-for="(ele, index) in getNamearr" :value="ele.userId" :key="index">{{ele.name}}</Option>
</Select>
</p>
</div>
......@@ -64,11 +64,8 @@
</Modal>
</div>
</template>
<script src="https://g.alicdn.com/dingding/dingtalk-jsapi/2.7.13/dingtalk.open.js"></script>
<script type="text/javascript" src="http://g.alicdn.com/dingding/dingtalk-pc-api/2.3.1/index.js"></script>
<script>
import {getsourcelist, editsourceitem, delatesourceitem, getname, getconfiglist} from '../api/strategymange.serve'
import * as dd from 'dingtalk-jsapi'
import {getsourcelist, editsourceitem, delatesourceitem, getname, getconfiglist, sendding} from '../api/strategymange.serve'
export default {
data () {
return {
......@@ -81,12 +78,16 @@ export default {
delateuid: '',
getNamearr: [],
confiredingarr: [],
agentId: '', //微应用ID
timeStamp: '', //生成签名的时间戳
corpId: '', //企业ID
resultdingArr: [],
resultdingcontentarr: [],
busUid: '',
content: '',
agentId: '', // 微应用ID
timeStamp: '', // 生成签名的时间戳
corpId: '', // 企业ID
nonceStr: '', // 生成签名的随机串
signature: '', // 签名
dingcode: '',
dingcode: ''
}
},
methods: {
......@@ -160,12 +161,29 @@ export default {
item.showselect = true
this.contentarr = [...this.contentarr]
},
selectName (item) {
this.resultdingArr = item
},
confireding (item) {
console.log(111)
console.log(dd)
this.confiredingarr = item.dingNamearr
// console.log(dd)
this.busUid = item.uid
this.content = item.content
this.resultdingArr.map(item => {
this.resultdingcontentarr.push({
busUid: this.busUid,
name: item.label,
userId: item.value,
text: this.content
})
})
sendding(this.resultdingcontentarr).then(data => {
if (data.data.success === true) {
this.$Message.success('发送消息成功')
this.getlist()
} else {
this.$Message.error(data.data.body.message)
this.getlist()
}
})
},
confiredelatehostListleft () {
delatesourceitem(this.delateuid).then(data => {
......@@ -185,110 +203,14 @@ export default {
getconfiglist().then(data => {
this.agentId = data.data.body.agentId
this.corpId = data.data.body.corpId
this.timeStamp = toString(data.data.body.timeStamp)
this.timeStamp = toString(data.data.body.timeStamp)
this.nonceStr = data.data.body.nonceStr
this.signature = data.data.body.signature
console.log(this.timeStamp, 8888, typeof(this.timeStamp), 999)
})
}
},
async mounted () {
await this.getdingTokenconfig ()
// if(DingTalkPC.ua.isDesktop&&DingTalkPC.ua.isInDingTalk){//PC端钉钉执行此方法
// dd.runtime.permission.requestAuthCode({
// corpId: this.corpId, // 企业id
// onSuccess: function (info) {
// this.dingcode = info.code // 通过该免登授权码可以获取用户身份
// }});
// dd.biz.ding.create({
// users : this.confiredingarr,//用户列表,userid
// corpId: this.corpId, //企业id
// type: 2, //钉类型 1:image 2:link
// alertType: 2,
// alertDate: {"format":"yyyy-MM-dd HH:mm","value":"2015-05-09 08:00"},
// attachment: {
// title: '', //附件的标题
// url: '', //附件点击后跳转url
// image: '', //附件显示时的图片 【可选】
// text: '', //附件显示时的消息体 【可选】
// showInApp: false, // 跳转url在PC客户端上的打开方式,true:从PC容器内打开,false:跳转到浏览器打开 【可选】
// },
// text: '', //消息体
// onSuccess : function() {
// console.log('成功回调')
// },
// onFail : function() {
// console.log('失败回调3333')
// }
// })
// }
// console.log(dd)
dd.config({
agentId: this.agentId, // 必填,微应用ID
corpId: this.corpId, // 必填,企业ID
timeStamp: this.timeStamp, // 必填,生成签名的时间戳
nonceStr: this.nonceStr, // 必填,生成签名的随机串
signature: this.signature , // 必填,签名
type: 0 / 1, // 选填。0表示微应用的jsapi,1表示服务窗的jsapi;不填默认为0。该参数从dingtalk.js的0.8.3版本开始支持
jsApiList: [
'runtime.info',
'biz.contact.choose',
'device.notification.confirm',
'device.notification.alert',
'device.notification.prompt',
'biz.ding.post',
'biz.util.openLink'
], // 必填,需要使用的jsapi列表,注意:不要带dd。
onSuccess : function () {
alert('成功回调')
},
onFail : function () {
alert('失败回调111')
}
})
dd.ready(function () {
alert(222)
dd.runtime.info({
onSuccess: function(info) {
logger.i('runtime info: ' + JSON.stringify(info));
},
onFail: function(err) {
logger.e('fail: ' + JSON.stringify(err));
}
});
dd.runtime.permission.requestAuthCode({
corpId: this.corpId, // 企业id
onSuccess: function (info) {
this.dingcode = info.code // 通过该免登授权码可以获取用户身份
console.log(code, 4444)
}});
dd.biz.ding.create({
users : this.confiredingarr,//用户列表,userid
corpId: this.corpId, //企业id
type: 2, //钉类型 1:image 2:link
alertType: 2,
alertDate: {"format":"yyyy-MM-dd HH:mm","value":"2015-05-09 08:00"},
attachment: {
title: '', //附件的标题
url: '', //附件点击后跳转url
image: '', //附件显示时的图片 【可选】
text: '', //附件显示时的消息体 【可选】
showInApp: false, // 跳转url在PC客户端上的打开方式,true:从PC容器内打开,false:跳转到浏览器打开 【可选】
},
text: '', //消息体
onSuccess : function() {
console.log('成功回调')
},
onFail : function() {
console.log('失败回调3333')
}
})
console.log(this.dingcode, 8888888888)
})
dd.error((error) => {
alert('error');
alert(`dd error: ${JSON.stringify(error)}`);
});
await this.getdingTokenconfig()
this.getlist()
}
}
......@@ -299,6 +221,7 @@ export default {
width: 100%;
background: url('../../static/logo.jpg') repeat;
background-size: 100% 100%;
font-family:"Microsoft Yahei"
}
.sourcematerial_title{
height: 40px;
......@@ -340,12 +263,9 @@ export default {
margin-right: 1%
}
.content_warp_remarks{
min-height:40px;
min-height:25px;
width: 100%;
height: 40px;
float: left;
line-height: 20px;
padding: 10px 0;
color: #848484;
}
.listorvaluespan {
......@@ -371,11 +291,13 @@ export default {
height: 100%;
width: 52%;
float: left;
cursor: pointer;
}
.imglist {
width: 100%;
height: 20px;
display: flex;
cursor: pointer;
}
.confirediv{
height: 100%;
......@@ -399,7 +321,8 @@ export default {
align-items:Center;
padding: 5px 5px;
border: 1px solid #a2825f;
border-radius: 2px
border-radius: 2px;
cursor: pointer;
}
.classtitle_add{
height: 40px;
......
......@@ -30,10 +30,10 @@
<div class="leftdiv_title_icon">
<div v-show="element.showtitlechlid">
<p>
<img src="../../static/bianji.png" title="编辑" @click="editchliidput(index, index1, element)">
<img src="../../static/bianji.png" title="编辑" @click="editchliidput(element)">
</p>
<p>
<img src="../../static/shanchu.png" title="删除" @click="delatechlidListleft(index, index1, element)">
<img src="../../static/shanchu.png" title="删除" @click="delatechlidListleft(element)">
</p>
</div>
</div>
......@@ -41,6 +41,7 @@
<Input v-model="element.title" style="width:99%" type="textarea" v-show="element.elementeditsta" @on-blur="saveeditchildput(element)"/>
<span v-show="element.elementeditput" class="valuespan" @click="toscordpage(element.title,element)" :class="{'colorlistvaluespan':element.showtitlechlid}">{{element.title}}</span>
</div>
<!-- <div class="leftdiv_title_div"></div> -->
</div>
</div>
</transition-group>
......@@ -53,20 +54,22 @@
</div>
</div>
<div class="center">
<div class="hosttitle" @mousemove="onmouseoverinput()" @mouseleave="movleave()">
<div class="hosttileinput">
<Input v-model="hosttitlespantitle" v-show="showinput" :readonly='hostreadonly' type="textarea" style="width: 100%;height:100%" @on-blur='blur' />
<span v-show="hosttitlespantitlevalue" class="hosttitlespan">{{hosttitlespantitle}}</span>
</div>
<div class="hosttitleedit" v-show="showedit">
<img src="../../static/bianji.png" alt="" class='img' @click="settitle" title="编辑">
<div class="center_content">
<div class="hosttitle" @mousemove="onmouseoverinput()" @mouseleave="movleave()">
<div class="hosttileinput">
<Input v-model="hosttitlespantitle" v-show="showinput" :readonly='hostreadonly' type="textarea" style="width: 100%;height:100%" @on-blur='blur' />
<span v-show="hosttitlespantitlevalue" class="hosttitlespan">{{hosttitlespantitle}}</span>
</div>
<div class="hosttitleedit" v-show="showedit">
<img src="../../static/bianji.png" alt="" class='img' @click="settitle" title="编辑">
</div>
</div>
</div>
<div class="hosttime">
<div class="hosttime">
<p>最后更新时间: {{updatetime}}</p>
</div>
<div class="sourcematerialdiv" @click="gotosourcematerialdivpage">
相关素材
<div class="sourcematerialdiv" @click="gotosourcematerialdivpage">
相关素材
</div>
</div>
</div>
<div class="right">
......@@ -95,10 +98,10 @@
<div class="leftdiv_title_icon">
<div v-show="element.showtitlechlid">
<p>
<img src="../../static/bianji.png" title="编辑" @click="editchliidput(index3, index4, element)">
<img src="../../static/bianji.png" title="编辑" @click="editchliidput(element)">
</p>
<p>
<img src="../../static/shanchu.png" title="删除" @click="delatechlidListright(index3, index4, element)">
<img src="../../static/shanchu.png" title="删除" @click="delatechlidListright(element)">
</p>
</div>
</div>
......@@ -147,7 +150,6 @@
</div>
</template>
<script>
// import Vue from 'vue'
import draggable from 'vuedraggable'
import {getSoulSoother, getlist, addtitlelist, delatetitlelist, savechildput, delatechildputchlid, savehostTitle, sortstrategy} from '../api/strategymange.serve'
export default {
......@@ -236,7 +238,6 @@ export default {
this.$Message.error(data.data.body.message)
this.getList()
}
console.log(data)
})
},
onmouseoverinput () {
......@@ -288,7 +289,6 @@ export default {
orderNo: ind
}
addtitlelist(params).then(data => {
// console.log(data, 99)
if (data.data.success === true) {
this.objectivesUid = data.data.body.uid
this.$Message.success('保存成功')
......@@ -347,7 +347,7 @@ export default {
})
}
},
editchliidput (index, index1, item) {
editchliidput (item) {
// 1
// Vue.set(this.leftarr[index]['keyResultsVOList'], index1, { ...item, elementeditput: false })
// 2
......@@ -364,11 +364,11 @@ export default {
item.showtitlechlid = !item.showtitlechlid
this.leftarr = [...this.leftarr]
},
delatechlidListleft (index, index1, element) {
delatechlidListleft (element) {
this.delateleftchildmodal = true
this.elementuid = element.uid
},
delatechlidListright (index, index1, element) {
delatechlidListright (element) {
this.delateleftchildmodal = true
this.elementuid = element.uid
},
......@@ -559,8 +559,9 @@ export default {
}
},
mounted () {
// this.getSoul()
this.getSoul()
this.getList()
setInterval(this.getSoul, 86400000)
},
created () {
}
......@@ -572,18 +573,20 @@ export default {
width: 100%;
background: url('../../static/logo.jpg') repeat;
background-size: 100% 100%;
font-family:"Microsoft Yahei"
}
.heart{
height: 60px;
height: 80px;
width: 100%;
line-height: 60px;
line-height: 80px;
text-align: center;
position: relative;
top:0
}
.strategymange-content{
width: 100%;
height: 90%
height: 90%;
float: left;
}
.left{
width: 35%;
......@@ -597,14 +600,17 @@ export default {
}
.leftdiv_title{
width: 100%;
min-height: 60px;
float: left;
border: 1px solid rgba(255,255,255,0);
}
.leftdiv_title_icon{
height: 100%;
width: 20px;
width: 5%;
border: 1px solid rgba(255,255,255,0);
float: left;
margin: 0 10px;
cursor: pointer;
}
.leftdiv_title_icon img{
height: 15px;
......@@ -612,13 +618,12 @@ export default {
vertical-align: middle;
}
.leftdiv_title_title{
height: 100%;
min-height: 50px;
width: 80%;
float: left;
text-align: center;
font-size: 16px;
margin-bottom: 20px;
background: white
background: white;
}
.center{
width: 30%;
......@@ -626,6 +631,11 @@ export default {
float: left;
display: flex;
}
.center_content{
min-height: 140px;
margin: auto;
width: 100%;
}
.right{
width:35%;
height: 100%;
......@@ -636,7 +646,6 @@ export default {
width: 90%;
min-height:60px;
margin:auto;
/* border: #666 1px solid */
}
.img{
height:20px;
......@@ -659,17 +668,16 @@ export default {
min-height: 60px;
width: 10%;
float: left;
cursor: pointer;
}
.hosttime{
height: 25px;
width: 20%;
width: 90%;
text-align: center;
line-height: 25px;
position: fixed;
bottom: 32%;
left: 46%;
font-size: 16px;
color: #848484
color: #848484;
margin: 20px 0
}
.hosttitlespan{
height: 100%;
......@@ -683,7 +691,8 @@ export default {
align-items:Center;
padding: 5px 5px;
color: #a2825f;
font-weight: 900
font-weight: 900;
cursor: pointer;
}
.valuespan{
height: 100%;
......@@ -697,7 +706,10 @@ export default {
align-items:Center;
padding: 5px 5px;
border: 1px solid #a2825f;
border-radius: 2px
border-radius: 2px;
cursor: pointer;
font-family:"Microsoft Yahei";
overflow-y: auto
}
.colorlistvaluespan{
height: 100%;
......@@ -711,7 +723,8 @@ export default {
padding: 5px 5px;
border-radius: 2px;
background: #e8e8e8;
border: 1px solid rgba(255,255,255,0)
border: 1px solid rgba(255,255,255,0);
overflow-y: auto
}
.divwarp{
min-height: 50px;
......@@ -731,6 +744,7 @@ export default {
width:20%;
height: 100%;
float: left;
cursor: pointer;
}
.classtitle_title{
width: 60%;
......@@ -743,7 +757,9 @@ export default {
height: 100%;
width: 100%;
display: inline-block;
font-size: 18px
font-size: 18px;
cursor: pointer;
font-family:"Microsoft Yahei"
}
.classtitle_icon img{
height: 15px;
......@@ -761,16 +777,18 @@ export default {
width: 15px
}
.sourcematerialdiv{
height: 25px;
width: 100px;
height: 35px;
width: 120px;
text-align: center;
line-height: 25px;
line-height: 35px;
border: 1px solid #a2825f;
position: fixed;
bottom: 60px;
left: 53%;
left: 51%;
border-radius: 5px;
color: #a2825f
color: #a2825f;
font-size: 20px;
cursor: pointer;
}
.textalign{
text-align: center
......@@ -832,19 +850,16 @@ export default {
vertical-align: middle;
resize: none;
background:rgba(255,255,255,0);
/* border-bottom: 1px solid #666 */
}
.aaa{
/* background: white; */
width: 100%;
margin-top:20px;
min-height: 50px;
border: 1px solid rgba(255,255,255,0);
}
.divhome{
min-height: 60px;
width: 100%;
height: 100%;
overflow: hidden;
border: 1px solid rgba(255,255,255,0);
}
</style>
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