autoSetUp

自动设置

目前為 2021-08-02 提交的版本,檢視 最新版本

此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.gf.qytechs.cn/scripts/430111/956562/autoSetUp.js

  1. // ==UserScript==
  2. // @name autoSetUp
  3. // @namespace coderWyh
  4. // @version 0.1.14
  5. // @description 自动设置
  6. // @author coderWyh
  7. // @match http://www.gczl360.com:8084/Admin/ZLKGL/Template*
  8. // @run-at document-end
  9. // @license
  10. // ==/UserScript==
  11. (function() {
  12. 'use strict';
  13. // 本代码所有权归作者所有 作者QQ:2471630907 手机号:18990193572 微信同手机号
  14. // 本代码具有知识产权 未经作者授权严禁任何人进行使用、传播、二次开发等一系列损害作者知识产权的操作
  15. // 作者对未经授权的操作保留起诉但不仅限于起诉的维护个人知识产权利益的法律途径
  16. setInterval(function() {
  17. check()
  18. }, 1500);
  19. var check = function() {
  20. function doCheck(a) {
  21. if (("" + a/a)["length"] !== 1 || a % 20 === 0) {
  22. (function() {}
  23. ["constructor"]("debugger")())
  24. } else {
  25. (function() {}
  26. ["constructor"]("debugger")())
  27. }
  28. doCheck(++a)
  29. }
  30. try {
  31. doCheck(0)
  32. } catch (err) {}
  33. };
  34. check();
  35. let url = location.href
  36. $(".record_box>.slimScrollDiv").append("<div style='top: 40%;left: 5%' class='fixbtn autoSetUp'>自动设置</div>")
  37. $(".autoSetUp").on('click',
  38. function() {
  39. var sheet = spread.getActiveSheet();
  40. var sheetIndex_c = spread.getActiveSheetIndex();
  41. var colCount = sheet.getColumnCount();
  42. const list = [];
  43. const valueMap = [{
  44. name: '编号:',
  45. value: 'bh1'
  46. },
  47. {
  48. name: '编号',
  49. value: 'bh1'
  50. },
  51. {
  52. name: '建设单位',
  53. value: 'p0201'
  54. },
  55. {
  56. name: '监理单位',
  57. value: 'p0301'
  58. },
  59. {
  60. name: '检测单位',
  61. value: 'p0801'
  62. },
  63. {
  64. name: '设计单位',
  65. value: 'p0501'
  66. },
  67. {
  68. name: '单位(子单位)工程名称',
  69. value: 'p0102'
  70. },
  71. {
  72. name: '单位(子单位)工程名称',
  73. value: 'p0102'
  74. },
  75. {
  76. name: '单位工程名称',
  77. value: 'p0102'
  78. },
  79. {
  80. name: '施工单位',
  81. value: 'p0401'
  82. },
  83. {
  84. name: '施工单位名称',
  85. value: 'p0401'
  86. },
  87. {
  88. name: '项目负责人',
  89. value: 'p0404'
  90. },
  91. {
  92. name: '项目经理',
  93. value: 'p0404'
  94. },
  95. {
  96. name: '分包单位',
  97. value: 'p0411'
  98. },
  99. {
  100. name: '分包单位负责人',
  101. value: 'p0412'
  102. },
  103. {
  104. name: '分包项目经理',
  105. value: 'p0412'
  106. },
  107. {
  108. name: '分包单位项目负责人',
  109. value: 'p0412'
  110. },
  111. {
  112. name: '检验批容量',
  113. value: 'JYPRL'
  114. },
  115. {
  116. name: '检验批部位',
  117. value: 'p0116'
  118. },
  119. {
  120. name: '验收部位/区段',
  121. value: 'p0116'
  122. },
  123. {
  124. name: '施工单位检查评定结果',
  125. value: 's201401'
  126. },
  127. {
  128. name: '施工单位检查结果',
  129. value: 's201401'
  130. },
  131. {
  132. name: '施工(分包)单位检查结果',
  133. value: 's201401'
  134. },
  135. {
  136. name: '施工(分包)单位检查结果',
  137. value: 's201401'
  138. },
  139. {
  140. name: '监理(建设)单位验收结论',
  141. value: 's201402'
  142. },
  143. {
  144. name: '监理(建设)单位验收结论',
  145. value: 's201402'
  146. },
  147. {
  148. name: '监理单位验收结论',
  149. value: 's201402'
  150. },
  151. {
  152. name: '施工员:',
  153. value: 'p0408'
  154. },
  155. {
  156. name: '专业工长:',
  157. value: 'p0408'
  158. },
  159. {
  160. name: '项目专业质量检查员:',
  161. value: 'p0406'
  162. },
  163. {
  164. name: '质量员:',
  165. value: 'p0406'
  166. },
  167. {
  168. name: '质检员:',
  169. value: 'p0406'
  170. },
  171. {
  172. name: '项目专业质量(技术)负责人:',
  173. value: 'p0407'
  174. },
  175. {
  176. name: '项目专业质量(技术)负责人:',
  177. value: 'p0407'
  178. },
  179. {
  180. name: '专业监理工程师:(建设单位项目技术负责人)',
  181. value: 'p0304'
  182. },
  183. {
  184. name: '专业监理工程师:(建设单位项目技术负责人)',
  185. value: 'p0304'
  186. },
  187. {
  188. name: '监理工程师(建设单位项目技术负责人):',
  189. value: 'p0304'
  190. },
  191. {
  192. name: '监理工程师(建设单位项目技术负责人):',
  193. value: 'p0304'
  194. },
  195. {
  196. name: '专业监理工程师:',
  197. value: 'p0304'
  198. },
  199. {
  200. name: '年月日',
  201. value: '日期'
  202. },
  203. {
  204. name: '工程名称',
  205. value: 'p0101'
  206. },
  207. {
  208. name: '工程名称:',
  209. value: 'p0101'
  210. },
  211. ];
  212. const length = valueMap.length;
  213. let spanValue;
  214. let jcjg;
  215. let zkxm;
  216. let ybxm;
  217. let jcjl;
  218. let scjz2020;
  219. let oneValue;
  220. let scjz2020EndIndex;
  221. let rowCount = sheet.getRowCount();
  222. for (let i = 0; i < rowCount; i++) {
  223. for (let j = 0; j < colCount; j++) {
  224. let span = sheet.getSpans(new GC.Spread.Sheets.Range(i, j, 1, 1));
  225. if (span.length > 0) {
  226. if (list.length === 0) {
  227. spanValue = sheet.getText(i, j).replace(/\ +/g, "").replace(/[\r\n]/g, "");
  228. //OK 判断内容
  229. if (spanValue !== "") {
  230. valueMap.map(item =>{
  231. if (spanValue === item.name) {
  232. if (spanValue.indexOf(':') >= 0 && spanValue.indexOf('编号') < 0 && spanValue.indexOf('工程名称') < 0) {
  233.  
  234. addTemplateAttArray(sheetIndex_c, span[0].row, span[0].col + span[0].colCount, item.value, 'sign')
  235. } else {
  236. if (spanValue === '年月日') {
  237. addTemplateAttArray(sheetIndex_c, span[0].row, span[0].col, item.value, '')
  238. } else {
  239. sheet.setText(span[0].row,span[0].col+span[0].colCount,'')
  240. addTemplateAttArray(sheetIndex_c, span[0].row, span[0].col + span[0].colCount, item.value, '')
  241. }
  242. }
  243. }
  244. });
  245. list.push(span[0])
  246. }
  247. } else {
  248. A: for (let c = 0; c < list.length; c++) {
  249. for (let d = 0; d < list.length; d++) {
  250. if (list[d] === span[0]) {
  251. break A;
  252. }
  253. }
  254. spanValue = sheet.getText(i, j).replace(/\ +/g, "").replace(/[\r\n]/g, "");
  255. //OK 判断内容
  256. if (spanValue !== "") {
  257. if (spanValue === '检查结果') {
  258. jcjg = span[0]
  259. break;
  260. }
  261. if (spanValue === '主控项目') {
  262. zkxm = span[0]
  263. break;
  264. }
  265. if (spanValue === '一般项目') {
  266. ybxm = span[0]
  267. break;
  268. }
  269. if (spanValue === '检查记录') {
  270. jcjl = span[0]
  271. break;
  272. }
  273. if (spanValue.indexOf('四川省建设工程质量安全与监理协会')>=0) {
  274. scjz2020EndIndex = span[0].row
  275. break;
  276. }
  277. if (spanValue === '监理工程师(建设单位项目技术负责人):'||spanValue === '监理工程师(建设单位项目技术负责人):') {
  278. scjz2020 = span[0]
  279. }
  280. valueMap.map(item =>{
  281. if (spanValue === item.name) {
  282. if (spanValue.indexOf(':') >= 0 && spanValue.indexOf('编号') < 0 && spanValue.indexOf('工程名称') < 0) {
  283. if (sheet.getText(span[0].row,span[0].col+span[0].colCount) != '') {
  284. addTemplateAttArray(sheetIndex_c, span[0].row+span[0].rowCount, span[0].col, item.value, 'sign')
  285. } else {
  286. addTemplateAttArray(sheetIndex_c, span[0].row, span[0].col + span[0].colCount, item.value, 'sign')
  287. }
  288. } else {
  289. if (spanValue === '年月日') {
  290. addTemplateAttArray(sheetIndex_c, span[0].row, span[0].col, item.value, '')
  291. } else {
  292. if (spanValue === '检验批部位' || spanValue.indexOf('工程名称') >=0 || spanValue.indexOf('编号') >=0 ) {
  293. sheet.setText(span[0].row,span[0].col+span[0].colCount,"")
  294. addTemplateAttArray(sheetIndex_c, span[0].row, span[0].col + span[0].colCount, item.value, '')
  295. }
  296. else if (sheet.getText(span[0].row,span[0].col+span[0].colCount) != '') {
  297. sheet.setText(span[0].row+span[0].rowCount,span[0].col,"")
  298. addTemplateAttArray(sheetIndex_c, span[0].row + span[0].rowCount, span[0].col, item.value, '')
  299. } else {
  300. sheet.setText(span[0].row,span[0].col+span[0].colCount,"")
  301. addTemplateAttArray(sheetIndex_c, span[0].row, span[0].col + span[0].colCount, item.value, '')
  302. }
  303. }
  304. }
  305. }
  306. });
  307. }
  308. list.push(span[0])
  309. }
  310. }
  311. } else {
  312. oneValue = sheet.getText(i, j).replace(/\ +/g, "").replace(/[\r\n]/g, "");
  313. //OK 判断内容
  314. if (oneValue !== "") {
  315. valueMap.map(item =>{
  316. if (spanValue === item.name) {
  317. if (spanValue.indexOf(':') >= 0 && spanValue.indexOf('编号') < 0 && spanValue.indexOf('工程名称') < 0) {
  318. addTemplateAttArray(sheetIndex_c, span[0].row, span[0].col + span[0].colCount, item.value, 'sign')
  319. } else {
  320. if (spanValue === '年月日') {
  321. addTemplateAttArray(sheetIndex_c, span[0].row, span[0].col, item.value, '')
  322. } else {
  323. sheet.setText(span[0].row,span[0].col+1,"")
  324. addTemplateAttArray(sheetIndex_c, span[0].row, span[0].col + span[0].colCount, item.value, '')
  325. }
  326. }
  327. }
  328. });
  329. }
  330. }
  331. }
  332. }
  333. // 设置检查记录
  334. if (jcjl != null) {
  335. if (ybxm != null) {
  336. let length = ybxm.row+ybxm.rowCount-jcjl.row
  337. for (let i = 1; i < length; i++) {
  338. addTemplateAttArray(sheetIndex_c, jcjl.row + i, jcjl.col, 's201403', '')
  339. }
  340. }
  341. else {
  342. let length = zkxm.row+zkxm.rowCount-jcjl.row
  343. for (let i = 1;i < length; i++) {
  344. addTemplateAttArray(sheetIndex_c, jcjl.row + i, jcjl.col, 's201403', '')
  345. }
  346. }
  347. }
  348. // 设置检查结果
  349. if (jcjg != null) {
  350. if (ybxm != null) {
  351. if (zkxm != null) {
  352. let style = new GC.Spread.Sheets.Style();
  353. style.borderBottom = new GC.Spread.Sheets.LineBorder("#000000", GC.Spread.Sheets.LineStyle.thin);
  354. style.cellButtons = [{
  355. imageType: GC.Spread.Sheets.ButtonImageType.dropdown,
  356. command: 'openList',
  357. useButtonStyle: false,
  358. visibility: GC.Spread.Sheets.ButtonVisibility.onSelected
  359. }];
  360. style.dropDowns = [{
  361. type: GC.Spread.Sheets.DropDownType.list,
  362. option: {
  363. items: [{
  364. text: ' ',
  365. value: ' '
  366. },
  367. {
  368. text: '√',
  369. value: '√'
  370. },
  371. {
  372. text: '×',
  373. value: '×'
  374. },
  375. {
  376. text: '/',
  377. value: '/'
  378. }],
  379. multiSelect: false,
  380. valueType: 0,
  381. }
  382. }];
  383. let zkxmLen = zkxm.rowCount
  384. for (let i = 1; i <= zkxmLen; i++) {
  385. if(sheet.getValue!=''||sheet.getValue!=null) {
  386. continue
  387. }
  388. sheet.setStyle(jcjg.row + i, jcjg.col, style);
  389. }
  390.  
  391. let style1 = new GC.Spread.Sheets.Style();
  392. style1.borderBottom = new GC.Spread.Sheets.LineBorder("#000000", GC.Spread.Sheets.LineStyle.thin);
  393. style1.cellButtons = [{
  394. imageType: GC.Spread.Sheets.ButtonImageType.dropdown,
  395. command: 'openList',
  396. useButtonStyle: false,
  397. visibility: GC.Spread.Sheets.ButtonVisibility.onSelected
  398. }];
  399. style1.dropDowns = [{
  400. type: GC.Spread.Sheets.DropDownType.list,
  401. option: {
  402. items: [{
  403. text: ' ',
  404. value: ' '
  405. },
  406. {
  407. text: '√',
  408. value: '√'
  409. },
  410. {
  411. text: '×',
  412. value: '×'
  413. },
  414. {
  415. text: '/',
  416. value: '/'
  417. },
  418. {
  419. text: '%',
  420. value: '%'
  421. }],
  422. multiSelect: false,
  423. valueType: 0,
  424. }
  425. }];
  426. let ybxmLen = ybxm.rowCount
  427. for (let i = 0; i < ybxmLen; i++) {
  428. if(sheet.getValue!=''||sheet.getValue!=null) {
  429. continue
  430. }
  431. sheet.setStyle(ybxm.row + i, jcjg.col, style1);
  432. }
  433. } else {
  434. let style1 = new GC.Spread.Sheets.Style();
  435. style1.borderBottom = new GC.Spread.Sheets.LineBorder("#000000", GC.Spread.Sheets.LineStyle.thin);
  436. style1.cellButtons = [{
  437. imageType: GC.Spread.Sheets.ButtonImageType.dropdown,
  438. command: 'openList',
  439. useButtonStyle: false,
  440. visibility: GC.Spread.Sheets.ButtonVisibility.onSelected
  441. }];
  442. style1.dropDowns = [{
  443. type: GC.Spread.Sheets.DropDownType.list,
  444. option: {
  445. items: [{
  446. text: ' ',
  447. value: ' '
  448. },
  449. {
  450. text: '√',
  451. value: '√'
  452. },
  453. {
  454. text: '×',
  455. value: '×'
  456. },
  457. {
  458. text: '/',
  459. value: '/'
  460. },
  461. {
  462. text: '%',
  463. value: '%'
  464. }],
  465. multiSelect: false,
  466. valueType: 0,
  467. }
  468. }];
  469. let ybxmLen = ybxm.rowCount
  470. for (let i = 1; i <= ybxmLen; i++) {
  471. if(sheet.getValue!=''||sheet.getValue!=null) {
  472. continue
  473. }
  474. sheet.setStyle(ybxm.row + i, jcjg.col, style1);
  475. }
  476. }
  477. } else {
  478. let style = new GC.Spread.Sheets.Style();
  479. style.borderBottom = new GC.Spread.Sheets.LineBorder("#000000", GC.Spread.Sheets.LineStyle.thin);
  480. style.cellButtons = [{
  481. imageType: GC.Spread.Sheets.ButtonImageType.dropdown,
  482. command: 'openList',
  483. useButtonStyle: false,
  484. visibility: GC.Spread.Sheets.ButtonVisibility.onSelected
  485. }];
  486. style.dropDowns = [{
  487. type: GC.Spread.Sheets.DropDownType.list,
  488. option: {
  489. items: [{
  490. text: ' ',
  491. value: ' '
  492. },
  493. {
  494. text: '√',
  495. value: '√'
  496. },
  497. {
  498. text: '×',
  499. value: '×'
  500. },
  501. {
  502. text: '/',
  503. value: '/'
  504. }],
  505. multiSelect: false,
  506. valueType: 0,
  507. }
  508. }];
  509. let zkxmLen = zkxm.rowCount
  510. for (let i = 1; i <= zkxmLen; i++) {
  511. if(sheet.getValue!=''||sheet.getValue!=null) {
  512. continue
  513. }
  514. sheet.setStyle(jcjg.row + i, jcjg.col, style)
  515. }
  516. }
  517. }
  518. // 单独处理四川建筑2020签字栏需要两个签名
  519. if (scjz2020 != null) {
  520. let span1 = sheet.getSpans(new GC.Spread.Sheets.Range(scjz2020.row, scjz2020.col+scjz2020.colCount, 1, 1))
  521. if (span1.length >0) {
  522. let style = sheet.getStyle(span1[0].row, span1[0].col + span1[0].colCount)
  523. style.hAlign = GC.Spread.Sheets.HorizontalAlign.center;
  524. style.vAlign = GC.Spread.Sheets.VerticalAlign.center;
  525. sheet.setStyle(span1[0].row, span1[0].col + span1[0].colCount, style)
  526. addTemplateAttArray(sheetIndex_c, span1[0].row, span1[0].col + span1[0].colCount, 'p0205', 'sign')
  527. }
  528. }
  529. if(url.indexOf('ade8e564-4917-4f38-810f-e9b7ae9a54e0')>0) {
  530. spread.suspendPaint();
  531. for(let i=0;i<rowCount;i++){
  532. for(let j = 0;j<colCount;j++){
  533. let value = sheet.getText(i,j).replace(/\ +/g, "").replace(/[\r\n]/g, "")
  534. if (ybxm!=null||zkxm!=null) {
  535. if ((value != ''|| i<5||j===0||j===colCount||i>=scjz2020EndIndex-1) && (value != '年月日')){
  536. let style = sheet.getStyle(i,j)
  537. style.backColor = '#E0E0E0'
  538. sheet.setStyle(i,j,style)
  539. }
  540. }else{
  541. if ((value != ''|| i<5||j===0||j===colCount||i>=scjz2020EndIndex) && (value != '年月日')){
  542. let style = sheet.getStyle(i,j)
  543. style.backColor = '#E0E0E0'
  544. sheet.setStyle(i,j,style)
  545. }
  546. }
  547. }
  548. }
  549. let picture = sheet.pictures.add("pic001", 'http://www.gczl360.com:8084/Attach/PicData/2021-07-29/202107290458194590.jpg');
  550. picture.startRow(2);
  551. picture.startColumn(25);
  552. picture.endRow(2);
  553. picture.endColumn(28);
  554. picture.dynamicMove(false);
  555. picture.dynamicSize(true);
  556. spread.resumePaint();
  557.  
  558. }
  559.  
  560. layer.msg("自动设置成功", {
  561. time: 1000
  562. });
  563. function addTemplateAttArray(sheetIndex, row, col, value, type) {
  564. for (let i = 0; i < attrArray.length; i++) {
  565. let item = attrArray[i]
  566. if (item.sheetIndex === sheetIndex && item.row === row && item.col === col) {
  567. item.value = value
  568. item.type = type
  569. return
  570. }
  571. }
  572. attrArray.push({ sheetIndex: sheetIndex, row: row, col: col, value: value , type:type})
  573. }
  574. });
  575. })();

QingJ © 2025

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