// ==UserScript==
// @name 政务设计系统脚本
// @version 2.5
// @description 政务设计系统同步OA需求脚本
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandmanagezw/demandbasicinfo_detail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandmanagezw/demandbasicinfonew_detail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandmanagezw/demandbasicinfo_splitdetail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandmanagejy/demandbasicinfo_detail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandmanagejy/demandbasicinfonew_detail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandmanagejy/demandbasicinfo_splitdetail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandchangeinfo/demandchangeinfo_detail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandchangeinfo/demandbasicinfonew_detail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandchangeinfo/demandbasicinfo_splitdetail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandmanagejs/demandbasicinfo_detail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandmanagejs/demandbasicinfonew_detail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandmanagejs/demandbasicinfo_splitdetail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandmanage/demandbasicinfo_detail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandmanage/demandbasicinfonew_detail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandmanage/demandbasicinfo_splitdetail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandmanageznsb/demandbasicinfo_detail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandmanageznsb/demandbasicinfonew_detail?*
// @match https://oa.epoint.com.cn/productrelease/cpzt/demandmanageznsb/demandbasicinfo_splitdetail?*
// @grant none
// @namespace https://greasyfork.org/users/1047091
// ==/UserScript==
(function () {
'use strict';
//#region 基础方法
var mini = window.mini,
$ = window.$,
epoint = window.epoint,
SrcBoot = window.SrcBoot,
document = window.document,
Util = window.Util,
s_Html = window.s_Html,
JSON = window.JSON,
window_url = window.location.href,
website_host = window.location.host;
//服务器路径
const SERVER_URL = "https://192.168.207.136:8199/workplatform_update";
//通用调用方法
const request = {
post: function (path, data, success, sync) {
let settings = {
"async": sync ? false : true,
"url": SERVER_URL + '/rest' + path,
// "url": 'http://192.168.161.12:8092/ga-se/rest' + path,
"method": "POST",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer " + getCookie("access_token")
},
"data": data,
dataType: "json"
}
$.ajax(settings).done(success);
}
}
function getCookie(name) {
var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
if (arr = document.cookie.match(reg)) {
return unescape(arr[2]);
} else {
return null;
}
}
function createBtn(name, f) {
var btn = new mini.Button();
btn.addCls('mini-btn-primary');
btn.set({
disableMultiClick: false,
text: name
});
btn.on('click', f);
return btn;
}
// 获取需求信息
var demandInfo = {};
/**
* 读取需求的基本信息
*/
function loadDemandInfo() {
var $output = $('.mini-outputtext');
$output.each(function () {
var id = $(this).attr('id');
if (id) {
var miniOutputText = new mini.get(id);
demandInfo[correctId(id)] = miniOutputText.getValue();
}
});
var $buttonedit = $('.mini-buttonedit');
$buttonedit.each(function () {
var id = $(this).attr('id');
if (id) {
var miniButtonEdit = new mini.get(id);
demandInfo[correctId(id + "text")] = miniButtonEdit.getText();
}
});
function correctId(id) {
if (id.endsWith('guidtext')) {
return correctId(id.substr(0, id.length - 8) + "name")
}
if (id.endsWith('text')) {
return correctId(id.substr(0, id.length - 4));
}
if (id.endsWith('read')) {
return correctId(id.substr(0, id.length - 4));
}
if (id.endsWith('write')) {
return correctId(id.substr(0, id.length - 5));
}
return id;
}
var demandGuid = window.rowguid;
demandInfo.rowguid = demandGuid;
demandInfo.demandurl = window_url
demandInfo.projectguid = $('#projectguid\\$value').val()
demandInfo.demandname = $('#demandname').html()
//demandInfo.djdate=$('.form-control.span1[label="登记日期"]').children().html()
demandInfo.demandno = $('.form-control.span1[label="需求编号"]').children().html()
if (window_url.indexOf('demandchangeinfo') != -1) {
demandInfo.rowguid = demandGuid + '-change'
demandInfo.projectguid = mini.get('projectguid').getValue()
demandInfo.demandname = $('.form-control[label="需求名称"]').children().html()
demandInfo.productname = $('.form-control.span1[label="产品选择"]').children().html()
if ($('#productguid').length) {
demandInfo.productguid = $('#productguid').getValue()
} else {
demandInfo.productguid = 'productguid is null'
}
demandInfo.hopefinishdate = $('.form-control.span1[label="期望完成时间"]').children().html()
demandInfo.isurgent = '否'
demandInfo.projectname = $('.form-control[label="项目名称"]').children().children().html()
demandInfo.isteamcustomview = $("#isteamcustomview").text();
}
}
var domToRender = $('#fkxx').find(".btn-group")[0];
var domToolBar = $('.fui-toolbar').children().get(0);
function getDemandInfo() {
var rowguidInfo = {};
var demandGuid = window.rowguid;
rowguidInfo.rowguid = demandGuid;
console.log(rowguidInfo)
request.post("/getdemanddatarest/getDemandInfo", JSON.stringify({params: rowguidInfo}), function (data) {
if (data.custom.code == "1") {
if (mini.get('djprompt')) {
mini.get('djprompt').setValue(mini.get('djprompt').getValue() + " " + data.custom.text)
} else {
$('.fui-toolbar').children().get(1).append(data.custom.text)
}
}
})
}
setTimeout(function () {
getDemandInfo();
}, 3000)
//渲染同步按钮
var signBtn = createBtn("同步需求信息", function () {
epoint.confirm('是否确认同步该需求到设计任务管理系统?', '', function () {
request.post("/getdemanddatarest/getUserInfo", JSON.stringify({params: demandInfo}), function (data) {
if (data.custom.code == "1") {
var username = data.custom.username
console.log("username", username)
loadDemandInfo()
console.log("demandInfo", demandInfo)
if ($('#transactionhistory1_workitemlist').find(".mini-grid-cell-inner").length == 0) {
epoint.alert("请待页面加载完成后重试!");
return;
}
var sjdate = getSjDate(username)
if (!sjdate) {
epoint.alert("请先将需求分配给当前人员!");
return;
}
demandInfo.sjdate = sjdate
var xqsqdate = $('#transactionhistory1_workitemlist').find(".mini-grid-cell-inner")[5].innerHTML
demandInfo.xqsqdate = xqsqdate
console.log("demandInfo", demandInfo)
request.post("/getdemanddatarest/getdemanddata", JSON.stringify({params: demandInfo}), function (data1) {
console.log("data1", data1)
if (data1.custom.code == "1" || data1.custom.code == "3") {
epoint.alert(data1.custom.text);
} else if (data1.custom.code == "2") {
mini.MessageBox.show({
title: "需求确认",
iconCls: "mini-messagebox-question",
message: data1.custom.text,
buttons: ["PC端", "移动端", "关闭"],
callback: function (action) {
if (action == '关闭' || action == 'close') {
mini.MessageBox.hide()
} else {
demandInfo.demandname = demandInfo.demandname + "-" + action
demandInfo.rowguid = demandInfo.rowguid + "-1"
request.post("/getdemanddatarest/getdemanddata", JSON.stringify({params: demandInfo}), function (data2) {
if (data2.custom.code == "1") {
epoint.alert(data2.custom.text);
} else if (data2.custom.code == "-9") {
window.open("https://greasyfork.org/zh-CN/scripts/492913-%E6%94%BF%E5%8A%A1%E8%AE%BE%E8%AE%A1%E7%B3%BB%E7%BB%9F%E8%84%9A%E6%9C%AC");
epoint.alert(data2.custom.text);
} else {
epoint.alert("同步失败!");
}
})
}
}
});
} else if (data1.custom.code == "-9") {
window.open("https://greasyfork.org/zh-CN/scripts/492913-%E6%94%BF%E5%8A%A1%E8%AE%BE%E8%AE%A1%E7%B3%BB%E7%BB%9F%E8%84%9A%E6%9C%AC");
epoint.alert(data1.custom.text);
} else {
epoint.alert("同步失败!");
}
})
} else {
epoint.alert("人员信息查询失败!");
}
})
})
});
signBtn.render(domToolBar);
function getSjDate(name) {
var flag = 0
var sjdate = "";
$('#transactionhistory1_workitemlist').find(".mini-grid-cell-inner").each(function () {
var s = $(this).children("span").text()
if (s == "") {
s = $(this).text()
}
if (flag > 0) {
flag++;
}
if (s == name || s.indexOf(name) != -1) {
if (flag != 0) {
flag = 0
}
flag++;
}
if (flag == 3) {
if (s.indexOf("-") != -1) {
sjdate = s
}
//return ;
}
})
return sjdate;
}
})();