You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

280 lines
12 KiB

<!DOCTYPE html>
<html lang="zh-CN">
<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, user-scalable=no">
<title>插件模板</title>
<link rel="stylesheet" href="https://unpkg.com/tailwindcss@2.2.4/dist/tailwind.css">
<!-- <link rel="stylesheet" type="text/css" href="style.css" /> -->
<!-- <script type="text/javascript" src="plugin.js"></script> -->
</head>
<body>
<div class="">
<div class="h-10 w-full flex justify-center items-center border-b-2">项目名称</div>
<!-- 角色栏-->
<div class="w-full h-16 flex items-center border-b-2">
<div class="p-2 m-4">项目经理</div>
<div class="p-2 m-4 border-b-2 border-blue-500 text-blue-400">运维</div>
</div>
<div class="w-full p-4 bg-gray-100">
<!-- 日常任务面板-->
<div class="content p-3 h-46 bg-white rounded-lg">
<div class="h-6 mb-2 bg-gray-100"></div>
<div class="h-6 mb-2 bg-gray-100"></div>
<div class="h-6 mb-2 bg-gray-100"></div>
<div class="h-6 mb-2 bg-gray-100"></div>
<div class="h-6 bg-gray-100"></div>
</div>
</div>
<div class="task-bar h-96 w-full bg-gray-100 p-4">
<div class="flex mb-3">
<!-- <div class="flex flex-col items-center">
<div class="rounded-full h-8 w-8 mb-1 bg-gray-100 border-2 border-blue-500"></div>
<div class="w-8 flex-1 flex flex-col items-center">
<div class="w-0.5 flex-1 bg-gray-300"></div>
</div>
</div> -->
<div class="flex-1" style="height: 13rem;">
<div class="rounded-lg bg-white p-3" style="height: 100%;">
<button class="bg-blue-500 py-2 px-5 rounded text-white" onclick="alert('hello')">测试组建1</button>
<button class="bg-blue-500 py-2 px-5 rounded text-white" onclick="p100.show()">测试组建2</button>
<div data-tname="考勤" data-pid="1433332016270811136" data-uid="1217647686598135808" data-rid="rid333" data-tid="tid444" data-did="did555" style="height:50px;width:100%">
<div data-root="p1449927427387301888" style="height:100%;width:100%;">
<div class="train-plan">
<div class="title"></div>
<div class="flex justify-between">
<div class="text-sm">制定培训计划</div>
<div class="train-plan-status" style="display: none;">待审核</div>
<div class="train-plan-btn bg-blue-500 text-xs rounded-md py-1 px-3 text-white" onclick="p1449927427387301888.submit()">提交</div>
</div>
<div class="border-2 w-full mt-2.5 flex justify-between p-2 text-sm">
<p style="color: #999999;">红头文件模板</p>
<button>下载</button>
</div>
<div class="border-2 w-full mt-2.5 flex justify-between p-2 text-sm">
<!-- <p style="color: #999999;">文件上传</p>
<div onclick="p1432643387798069248.upload()">上传</div> -->
<input type="file" id="iptFile">
<input type="button" id="upload" value="点击上传"/>
</div>
</div>
</div>
</div>
<script>
var p1449927427387301888 = {
token: '',
projectId: '',
roleId: '',
dom: '',
file: '', // 上传文件路径
init() {
this.dom = document.querySelector("div[data-root=p1449927427387301888]");
var domBox = this.dom.parentNode;
var title = this.dom.querySelector('.title');
// 获取父元素携带的参数
var userId = domBox.getAttribute("data-uid");
this.projectId = domBox.getAttribute("data-pid");
this.roleId = domBox.getAttribute("data-rid");
// 初始化的时候 获取token
this.getTokenByUserId(userId);
},
// 获取token
getTokenByUserId(userId){
var that = this
fetch(`https://www.tall.wiki/gateway/tall/v1.0/users/userId?userId=${userId}`)
.then(function(response) {
return response.json();
})
.then(function(res) {
const { success, code, data, msg } = res;
if (success && code === 200) {
that.token = data.token;
// 查询培训计划
that.getTrainPlan()
} else {
console.log('msg: ', msg);
}
});
},
getTrainPlan(){
var that = this
fetch(`https://test.tall.wiki/gateway/sports/training/get`, {
headers: new Headers({
'Authorization': 'Bearer ' + that.token,
'Content-Type': 'application/json; charset=utf-8'
}),
method: 'POST',
body: JSON.stringify({
projectId: that.projectId
})
})
.then(function(response) {
return response.json();
})
.then(function(res) {
const { success, code, data, msg } = res;
if (success && code === 200) {
var trainPlan = that.dom.querySelector('.train-plan');
if (!data) {
trainPlan.style.display = 'block'
document.querySelector('#upload').on('click',function(){
var xhr = new XMLHttpRequest();
// xhr.open('post','../PHP/post_file.php',true);
xhr.onload = ()=>{
console.log('上传成功');
};
// 通过file表单的files属性拿到文件数据 通过formData将数据转换为二进制格式
var fileInfo = new FormData();
fileInfo.append( 'file',document.querySelector('#iptFile')[0].files[0] );
// 发送数据
xhr.send(fileInfo);
});
} else {
trainPlan.style.display = 'none'
}
} else {
console.log('msg: ', msg);
}
});
},
// 文件上传
upload(){
// console.log(1);
// var input = document.createElement("input");
// input.type = "file";
// input.click();
// input.onchange = function(){
// var file = input.files[0];
// var form = new FormData();
// form.append("file", file); //第一个参数是后台读取的请求key值
// form.append("fileName", file.name);
// form.append("other", "666666"); //实际业务的其他请求参数
// var xhr = new XMLHttpRequest();
// var action = "http://localhost:8080/upload.do"; //上传服务的接口地址
// xhr.open("POST", action);
// xhr.send(form); //发送表单数据
// xhr.onreadystatechange = function(){
// if(xhr.readyState==4 && xhr.status==200){
// var resultObj = JSON.parse(xhr.responseText);
// //处理返回的数据......
// }
// }
// }
},
submit() {
var that = this
if (!that.file) {
// 弹框提示请上传文件
that.statusChange();
} else {
that.statusChange();
// fetch(`https://test.tall.wiki/gateway/sports/training/save`, {
// headers: new Headers({
// 'Authorization': 'Bearer ' + that.token,
// 'Content-Type': 'application/json; charset=utf-8'
// }),
// method: 'POST',
// body: JSON.stringify({
// projectId: that.projectId,
// name: '',
// description: '',
// startTime: '',
// endTime: '',
// fileId: ''
// })
// })
// .then(function(response) {
// return response.json();
// })
// .then(function(res) {
// const { success, code, data, msg } = res;
// if (success && code === 200) {
// var submitBtn = that.dom.querySelector('.train-plan-btn')
// submitBtn.style.display = 'none'
// var trainStatus = that.dom.querySelector('.train-plan-status')
// trainStatus.style.display = 'block'
// } else {
// console.log('msg: ', msg);
// }
// });
}
},
// 按钮切换成状态值
statusChange() {
var that = this
var submitBtn = that.dom.querySelector('.train-plan-btn')
submitBtn.style.display = 'none'
var trainStatus = that.dom.querySelector('.train-plan-status')
trainStatus.style.display = 'block'
},
// 跳转详情
jumpDetails(that) {
const pId = this.dom.parentNode.getAttribute('data-pid');
const uId = this.dom.parentNode.getAttribute('data-uid');
const rId = this.dom.parentNode.getAttribute('data-rid');
location.href = `https://www.tall.wiki/checkwork/?pid=${pId}&uid=${uId}&rid=${rId}`;
}
}
p1449927427387301888.init()
</script>
</div>
</div>
</div>
<div class="flex mb-3">
<!-- 序号-->
<div class="flex flex-col items-center">
<div class="rounded-full h-8 w-8 mb-1 bg-gray-100 border-2 border-blue-500"></div>
<div class="w-8 flex-1 flex flex-col items-center">
<div class="w-0.5 flex-1 bg-gray-300"></div>
</div>
</div>
<div class="flex-1">
<!-- 定期任务面板-->
<div class="rounded-lg ml-4 bg-white p-3">
<!-- 示例插件1-->
<button class="bg-blue-500 py-2 px-5 rounded text-white" onclick="alert('hello')">测试组建1</button>
<!-- 示例插件2 id=100-->
<button class="bg-blue-500 py-2 px-5 rounded text-white" onclick="p100.show()">测试组建2</button>
<script>
const p100 = {
name: 'hello tall plugin',
show() {
alert(this.name)
}
}
</script>
</div>
</div>
</div>
</div>
</div>
</body>
<style>
.content, .task-bar{
overflow-y: scroll;
}
.content::-webkit-scrollbar, .task-bar::-webkit-scrollbar{
display: none;
}
</style>
</html>