uom

uom.

  1. // ==UserScript==
  2. // @name uom
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.10
  5. // @description uom.
  6. // @author You
  7. // @match https://uom.caac.gov.cn/
  8. // @include https://uom.caac.gov.cn/*
  9. // @require https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js
  10. // @resource LayuiCss https://unpkg.com/layui@2.9.7/dist/css/layui.css
  11. // @require https://cdn.bootcdn.net/ajax/libs/layui/2.8.4/layui.js
  12. // @grant unsafeWindow
  13. // @grant GM_addStyle
  14. // @grant GM_getResourceText
  15. // @grant GM_setValue
  16. // @grant GM_getValue
  17. // @grant GM_registerMenuCommand
  18. // @grant GM_unregisterMenuCommand
  19. // ==/UserScript==
  20.  
  21. (function() {
  22.  
  23. if (window.self !== window.top ) {
  24.  
  25. // 创建一个观察者对象
  26. const observer = new MutationObserver(function(mutationsList, observer) {
  27. // 若`div`内容变化,会进入这里
  28. for(let mutation of mutationsList) {
  29. if (mutation.type === 'childList') {
  30. console.log('节点内容变了')
  31. if( $('.mb8').text() == '无人驾驶航空器飞行活动申请' && $('.el-radio-group input').attr('disabled')=="disabled" ){
  32. index()
  33. }else if($('.el-form-item__label:eq(0)').text() == "申请日期"){
  34. var set$2 = setInterval(function(){
  35. if( $('div[data-v-3807274c]:not([data-v-03fd8336]) .el-table__body tr')[0]!=null){
  36. stopSet2()
  37. $('div[data-v-3807274c]:not([data-v-03fd8336]) .el-table__body tr').each(function(){
  38. if( $(this).find('td:eq(4)').find('span[data-v-298a5496]').text()!=='批准'){
  39. $(this).find('td:eq(4)').addClass('greenCell').removeClass('redCell').find('span[data-v-298a5496]').text('批准')
  40. $(this).find('td:last() button:eq(0)').after('<a href="javascript" class="link-type"><button type="button" class="el-button el-button--text el-button--mini"><!----><i class="el-icon-document"></i><span> 起飞确认 </span></button></a>')
  41. }
  42. })
  43. }
  44. },100);
  45. function stopSet2(){ clearInterval(set$2); };
  46. }else{
  47. $('#MyUomPi').css('display', 'none')
  48. }
  49. }
  50. }
  51. });
  52. var targetNode
  53. var set$ = setInterval(function(){
  54. // 选择目标节点
  55. targetNode = $('.app-main[data-v-3807274c]')[0];
  56. if($('.el-form-item__label:eq(0)').text() == "申请日期"){
  57.  
  58. var set$1 = setInterval(function(){
  59. if( $('div[data-v-3807274c]:not([data-v-03fd8336]) .el-table__body tr')[0]!=null){
  60. stopSet1()
  61. $('div[data-v-3807274c]:not([data-v-03fd8336]) .el-table__body tr').each(function(){
  62. if( $(this).find('td:eq(4)').find('span[data-v-298a5496]').text()!=='批准'){
  63. $(this).find('td:eq(4)').addClass('greenCell').removeClass('redCell').find('span[data-v-298a5496]').text('批准')
  64. $(this).find('td:last() button:eq(0)').after('<a href="javascript:void(0);" class="link-type"><button type="button" class="el-button el-button--text el-button--mini"><!----><i class="el-icon-document"></i><span> 起飞确认 </span></button></a>')
  65. }
  66. })
  67. }
  68. },100);
  69. function stopSet1(){ clearInterval(set$1); };
  70.  
  71.  
  72. }
  73. if( targetNode !=null){
  74. stopSet()
  75. //console.log(targetNode )
  76. // 观察者的配置(观察目标节点的子节点的变化)
  77. const config = { attributes: false, childList: true, subtree: false };
  78. // 传入目标节点和观察选项并开始观察
  79. observer.observe(targetNode, config);
  80. }
  81.  
  82. },100);
  83. function stopSet(){ clearInterval(set$); };
  84.  
  85. function index(){
  86. // console.log("当前页面位于iframe子页面");
  87. var message = true ; // 要传递的消息
  88. window.parent.postMessage(message, "*"); // *表示任意源都能收到消息
  89. if( $('#MyUomPi')[0]!=null ){
  90. $('#MyUomPi').css('display', 'block')
  91. }else{
  92. GM_addStyle( GM_getResourceText("LayuiCss").toString()
  93. .replace(/([^.@-]+{[^}]*}\s*)*/im , '')
  94. .replaceAll(/@font-face\s*\{\s*font-family:\s*layui-icon;[^}]*}/img,
  95. "@font-face { "+
  96. "font-family: layui-icon; "+
  97. "src: url(https://cdn.bootcdn.net/ajax/libs/layui/2.8.17/font/iconfont.eot); "+
  98. "src: url(https://cdn.bootcdn.net/ajax/libs/layui/2.8.17/font/iconfont.eot) format('embedded-opentype'),"+
  99. " url(https://cdn.bootcdn.net/ajax/libs/layui/2.8.17/font/iconfont.woff2) format('woff2'),"+
  100. " url(https://cdn.bootcdn.net/ajax/libs/layui/2.8.17/font/iconfont.woff) format('woff'),"+
  101. " url(https://cdn.bootcdn.net/ajax/libs/layui/2.8.17/font/iconfont.ttf) format('truetype'),"+
  102. " url(https://cdn.bootcdn.net/ajax/libs/layui/2.8.17/font/iconfont.svg) format('svg')}") );
  103. var active = false;
  104. var currentX ,currentY ;
  105. $("body").append(["<div id='MyUomPi' style='width: 30px;height: 30px;color: black;background-color:rgb(149, 228, 246);position: fixed;top:"+ GM_getValue("top",'1px') + ";left: "+ GM_getValue("left", '1px')+"right: "+ GM_getValue("right", 'auto')+";z-index: 1000009999999999999;font-size: 20px;line-height: 30px;text-align: center;cursor: pointer;border-radius: 30px;'>" +
  106. " <div style='-webkit-user-select: none!important; -moz-user-select: none!important; -ms-user-select: none!important; user-select: none!important; width: 30px!important;height: 30px!important;line-height: 30px!important;font-size: 20px !important;font-family: Helvetica!important;'>批</div>"+
  107. "</div>"][0])
  108. .append('<div id="NonePi" style=" display: none;position: fixed;align-items: center; justify-content: center;z-index: 214748364; height: 33%; width: 100%; top: 67%; background: linear-gradient(to top, #919191, #ffffff);text-align: center;">'+
  109. ' <div style=" height: 70px; width: 240px; background-color: #ec9f9f8f; color: red; border-radius: 4px;font-family: &quot;Times New Roman&quot;, Georgia, serif !important;font-size: 21px;">拖到此处隐藏图标<br>(刷新重置)</div>'+
  110. '</div>')
  111.  
  112. $('#MyUomPi').on('mousedown', function(e) {
  113. active = true;
  114. currentX= $(this).css('left')
  115. currentY= $(this).css('top')
  116. $('body :not(body)').css('user-select','none')
  117. }).on( 'touchstart',function (x) {
  118. active = true;
  119. currentX= $(this).css('left')
  120. currentY= $(this).css('top')
  121. $('body :not(body)').css('user-select','none')
  122. }).on('mouseup', function() {
  123. $('body :not(body)').css('user-select','auto')
  124. active = false;
  125. if( currentX== $(this).css('left')&& currentY== $(this).css('top') ){
  126. MyUomPi()
  127. }else{
  128. $(this).css('transform', 'scale(1)')
  129. // 页面的大小信息
  130. var docWidth = document.documentElement.scrollWidth;
  131. var docHeight = document.documentElement.scrollHeight
  132. // 隐藏块的位置信息
  133. var element = $('#NonePi div')[0];
  134. var rect = element.getBoundingClientRect();
  135. var left = $(this).css('left').replace("px",'')
  136. var top = $(this).css('top').replace("px",'')
  137. var right;
  138. left = parseInt(left);top = parseInt(top);
  139. if( (top+15 >= rect.top && top <= rect.bottom )&&( left+15 >= rect.left && left <= rect.right ) ){
  140. console.log('隐藏')
  141. $(this).css('display', 'none')
  142. }
  143. $('#NonePi').css('display','none')
  144. if( left < docWidth/2 ){
  145. left = '1px'; right = "auto"
  146. }else{
  147. left = 'auto'; right = '1px'
  148. }
  149. $(this).css('left', left).css('right',right)
  150. GM_setValue("top", top+'px');
  151. GM_setValue("left", left);
  152. GM_setValue("right",right);
  153. }
  154. }).on( 'touchend touchcancel',function (x) {
  155. $('body :not(body)').css('user-select','auto')
  156. active = false;
  157. if( currentX== $(this).css('left')&& currentY== $(this).css('top') ){
  158. MyUomPi()
  159. }else{
  160. $(this).css('transform', 'scale(1)')
  161. // 页面的大小信息
  162. var docWidth = document.documentElement.scrollWidth;
  163. var docHeight = document.documentElement.scrollHeight
  164. // 隐藏块的位置信息
  165. var element = $('#NonePi div')[0];
  166. var rect = element.getBoundingClientRect();
  167. var left = $(this).css('left').replace("px",'')
  168. var top = $(this).css('top').replace("px",'')
  169. var right;
  170. left = parseInt(left);top = parseInt(top);
  171. if( (top+15 >= rect.top && top <= rect.bottom )&&( left+15 >= rect.left && left <= rect.right ) ){
  172. console.log('隐藏')
  173. $(this).css('display', 'none')
  174. }
  175. $('#NonePi').css('display','none')
  176. if( left < docWidth/2 ){
  177. left = '1px'; right = "auto"
  178. }else{
  179. left = 'auto'; right = '1px'
  180. }
  181. $(this).css('left', left).css('right',right)
  182. GM_setValue("top", top+'px');
  183. GM_setValue("left", left);
  184. GM_setValue("right",right);
  185. }
  186. }).on( 'mouseleave',function (x) {
  187. var docWidth = document.documentElement.scrollWidth;
  188. var docHeight = document.documentElement.scrollHeight
  189. var left = $(this).css('left').replace("px",'')
  190. var top = $(this).css('top').replace("px",'')
  191. var right;
  192. left = parseInt(left);top = parseInt(top);
  193. if( left <10 || left > docWidth-70 || top <10 || top> docHeight-70 ){
  194. active = false;
  195. $('#NonePi').css('display','none')
  196. $(this).css('transform', 'scale(1)')
  197. $('#NonePi').css('display','none')
  198. if( left < docWidth/2 ){
  199. left = '1px'; right = "auto"
  200. }else{
  201. left = 'auto'; right = '1px'
  202. }
  203. $(this).css('left', left).css('right',right)
  204. GM_setValue("top", top+'px');
  205. GM_setValue("left", left);
  206. GM_setValue("right",right);
  207. }
  208. })
  209. $('body').on('mousemove', function(event) {
  210. var x = event.pageX, y = event.pageY
  211. if (active) {
  212. $('#NonePi').css('display','flex')
  213. x = x>30 ? x-30 :x;
  214. y = y>30 ? y-30 :y
  215. $('#MyUomPi').css('transform', 'scale(2)').css('left',x + 'px').css('top' , y + 'px').css('right','auto')
  216. }
  217. })[0].addEventListener( 'touchmove', function(event) {
  218. //console.log(event)
  219. //var x = event.originalEvent.touches[0].pageX, y = event.originalEvent.touches[0].pageY 用于.on 绑定事件
  220. var x = event.touches[0].pageX, y = event.touches[0].pageY
  221. //if (Math.abs(distanceX) > 10 || Math.abs(distanceY) > 10) {
  222. if (active) {
  223. // 阻止页面滚动
  224. event.preventDefault();
  225. $('#NonePi').css('display','flex')
  226. x = x>30 ? x-30 :x;
  227. y = y>30 ? y-30 :y
  228. $('#MyUomPi').css('transform', 'scale(2)').css('left',x + 'px').css('top' , y + 'px').css('right','auto')
  229. }
  230. //}
  231. },{ passive: false } )
  232. var MakeMenu =function(){
  233. var menu = GM_registerMenuCommand( '显示‘批’图标' , function() {
  234. $('#MyUomPi').css('display', 'block')
  235. GM_unregisterMenuCommand(menu);
  236. menu = GM_registerMenuCommand( '隐藏‘批’图标' , function() {
  237. $('#MyUomPi').css('display', 'none')
  238. GM_unregisterMenuCommand(menu);
  239. MakeMenu()
  240. })
  241. })
  242. return menu;
  243. }
  244. MakeMenu()
  245. var MyUomPi = function(){
  246. if( $('.mb8').text() == '无人驾驶航空器飞行活动申请' && $('.el-radio-group input').attr('disabled')=="disabled" ){
  247.  
  248. // console.log( $('.el-input.is-disabled .el-input__inner') )//.removeAttr('disabled').css({'cursor':'text','color': 'black', 'background-color':'white', })
  249. GM_addStyle( '#layer_id_1 .layui-form-label { width: 180px;!important;}')
  250. var form =
  251. '<div class="layui-form-item" id="ID-laydate-rangeLinked"> '+
  252. ' <div > '+
  253. ' <label class="layui-form-label">预计开始时间</label> '+
  254. ' <div class="layui-input-inline"> '+
  255. ' <input type="text" class="layui-input" id="ID-laydate-start-date-1" value="'+$('.ivu-date-picker-rel:eq(0) input').val()+'" placeholder="'+$('.ivu-date-picker-rel:eq(0) input').val()+'" > '+
  256. ' </div> '+
  257. ' </div> '+
  258. ' <div > '+
  259. ' <label class="layui-form-label"> 预计结束时间</label> '+
  260. ' <div class="layui-input-inline"> '+
  261. ' <input type="text" class="layui-input" id="ID-laydate-end-date-1" value="'+$('.ivu-date-picker-rel:eq(1) input').val()+'" placeholder="'+$('.ivu-date-picker-rel:eq(1) input').val()+'"> '+
  262. ' </div> '+
  263. ' </div> '+
  264. '</div> '+
  265. '<div class="layui-form-item"> '+
  266. ' <div class="layui-inline"> '+
  267. ' <label class="layui-form-label">最大飞行高度</label> '+
  268. ' <div class="layui-input-inline" style="width: 70px;"> '+
  269. ' <input type="number" name="price_min" id="ID-number-1" placeholder="'+$('.el-input.is-disabled .el-input__inner:last()').val()+'" value="'+$('.el-input.is-disabled .el-input__inner:last()').val()+'" autocomplete="off" class="layui-input" min="0" step="1" lay-affix="number"> '+
  270. ' </div> '+
  271. ' <label class="layui-form-label" style="width: 30px;">米</label> '+
  272. ' </div> '+
  273. '</div> '
  274.  
  275. var conf1 = {
  276. formType: 0,
  277. id: 'id_1',
  278. hideOnClose: true, //关闭隐藏
  279. title: "信息修改",
  280. shadeClose: true, //点击遮罩关闭
  281. fixed: true, //层固定,不随页面滚动
  282. maxmin: true, //最大小化
  283. resize: true, //拉伸
  284. move: '.layui-layer-title', // 是否允许拖动
  285. moveOut: false, //是否允许拖拽到窗口外
  286. offset: '100px', // 垂直位置
  287. btn: ['提交信息','修改其他信息'],
  288. area: 'auto',
  289. content: "<div id='layer_id_1' >"+form+ "</div>"
  290. ,success: function(layero, index){
  291. layui.use(function(){
  292. var laydate = layui.laydate;
  293. laydate.render({
  294. elem: '#ID-laydate-rangeLinked',
  295. type: 'datetime',
  296. range: ['#ID-laydate-start-date-1', '#ID-laydate-end-date-1'],
  297. rangeLinked: true, // 开启日期范围选择时的区间联动标注模式 --- 2.8+ 新增
  298. fullPanel: true, // 2.8+
  299. format: 'yyyy-MM-dd HH:mm',
  300. min: 0,
  301. max: 7
  302. });
  303. })
  304. }
  305. ,yes: function(index, layero){
  306. var time_start = $('#ID-laydate-start-date-1').val()
  307. var time_end = $('#ID-laydate-end-date-1').val()
  308. var height = $("#ID-number-1").val()
  309. layer.close(index)
  310. if($('.form_title[data-v-804ba952]:first()').text().trim()!="飞行申请审批信息"){
  311. $('.form_title[data-v-804ba952]:first()').before('<div data-v-804ba952=""><div data-v-804ba952="" class="el-row"><span data-v-804ba952="" class="form_title">飞行申请审批信息</span></div><div data-v-804ba952="" class="el-divider el-divider--horizontal"><!----></div><div data-v-804ba952="" class="fromDiv"><div data-v-804ba952="" class="el-form-item el-form-item--medium"><label class="el-form-item__label" style="width: 150px;">审批状态</label><div class="el-form-item__content" style="margin-left: 150px;"><div data-v-804ba952="" class="el-select el-select--medium"><!----><div class="el-input el-input--medium is-disabled el-input--suffix"><!----><input type="text" disabled="disabled" readonly="readonly" autocomplete="off" placeholder="请选择状态" class="el-input__inner"><!----><span class="el-input__suffix"><span class="el-input__suffix-inner"><i class="el-select__caret el-input__icon el-icon-arrow-up"></i><!----><!----><!----><!----><!----></span><!----></span><!----><!----></div><div class="el-select-dropdown el-popper" style="display: none; min-width: 343.837px;"><div class="el-scrollbar" style=""><div class="el-select-dropdown__wrap el-scrollbar__wrap" style="margin-bottom: -17px; margin-right: -17px;"><ul class="el-scrollbar__view el-select-dropdown__list"><!----><li data-v-804ba952="" class="el-select-dropdown__item"><span>审批中</span></li><li data-v-804ba952="" class="el-select-dropdown__item"><span>编辑</span></li><li data-v-804ba952="" class="el-select-dropdown__item"><span>不予受理</span></li><li data-v-804ba952="" class="el-select-dropdown__item"><span>批准</span></li><li data-v-804ba952="" class="el-select-dropdown__item selected"><span>不予批准</span></li></ul></div><div class="el-scrollbar__bar is-horizontal"><div class="el-scrollbar__thumb" style="transform: translateX(0%);"></div></div><div class="el-scrollbar__bar is-vertical"><div class="el-scrollbar__thumb" style="transform: translateY(0%);"></div></div></div><!----></div></div><!----></div></div><div data-v-804ba952="" class="el-form-item el-form-item--medium"><label class="el-form-item__label" style="width: 150px;">审批意见</label><div class="el-form-item__content" style="margin-left: 150px;"><div data-v-804ba952="" class="el-textarea el-input--medium is-disabled"><textarea disabled="disabled" autocomplete="off" class="el-textarea__inner" style="min-height: 33.2222px;"></textarea><!----></div><!----></div></div></div></div>')
  312. }
  313. $('.ivu-date-picker-rel:eq(0) input').val(time_start)
  314. $('.ivu-date-picker-rel:eq(1) input').val(time_end)
  315. $('.el-input.is-disabled .el-input__inner:last()').val(height)
  316. $('.el-input.is-disabled .el-input__inner:eq(0)').val('批准')
  317. $('.el-textarea.is-disabled .el-textarea__inner:eq(0)').val('')
  318. $('.el-textarea.is-disabled .el-textarea__inner').attr('disabled','disabled').css({'cursor':'not-allowed','color':'#c0c4cc', 'background-color':'#f5f7fa' })
  319. layer.msg("待截图")
  320.  
  321.  
  322. 'uom截图('+time_start+' - '+time_end+').png'
  323. }
  324. ,btn2: function(index, layero, that){
  325. $('.el-textarea.is-disabled .el-textarea__inner').removeAttr('disabled').css({'cursor':'text','color': 'black', 'background-color':'white', })
  326. layer.close(index)
  327. layer.msg("修改完成后使用刚才的菜单进行提交")
  328. }
  329. }
  330. layer.open(conf1)
  331. return
  332. }else{
  333. layer.msg("目前不是飞行申请审批信息页面")
  334. }
  335. }
  336. }
  337. }
  338.  
  339. }else{
  340. window.onmessage = function(event){
  341. var str = event.data
  342. if (window.self == window.top && (str==true||str=="true") ) {
  343. var w = document.documentElement.clientWidth
  344. var rect = $('#app').css('width').replace("px",'')
  345. //console.log(w,rect)
  346. //$('#app').css('transform', 'scale('+(w/rect - 0.005) +')').css('height', '2078px').css('overflow', 'auto;').find('.main-body').css('height', '2078px').css('overflow', 'auto;')
  347. //GM_addStyle( ' body, html, #app {height: 100%; overflow: auto;}')
  348. }
  349. }
  350. }
  351. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址