瀏覽代碼

工序报验url相关

MaiXinRong 3 年之前
父節點
當前提交
2368c21ff8

+ 2 - 2
app/lib/bills_pos_convert.js

@@ -69,7 +69,7 @@ class BillsPosConvert {
 
     _convertXmj(data) {
         const xmj = this.resultTree.addData(data, ['ledger_id', 'ledger_pid', 'order', 'level', 'tender_id', 'full_path',
-            'code', 'name', 'unit', 'dgn_qty1', 'dgn_qty2', 'drawing_code', 'postil', 'memo', 'gxby_status', 'dagl_status', 'dagl_url',
+            'code', 'name', 'unit', 'dgn_qty1', 'dgn_qty2', 'drawing_code', 'postil', 'memo', 'gxby_status', 'dagl_status', 'gxby_url', 'dagl_url',
             'ex_memo1', 'ex_memo2', 'ex_memo3']);
         return xmj;
     }
@@ -126,7 +126,7 @@ class BillsPosConvert {
             for (const p of pos) {
                 const posUnit = xmj.unitTree.addNode({pos_name: p.name,
                     b_code: null, name: '', unit: null, unit_price: null,
-                    gxby_status: p.gxby_status, dagl_status: p.dagl_status, dagl_url: p.dagl_url});
+                    gxby_status: p.gxby_status, dagl_status: p.dagl_status, gxby_url: p.gxby_url, dagl_url: p.dagl_url});
                 if (p.drawing_code && posUnit.drawing_code.indexOf(p.drawing_code) < 0)
                     posUnit.drawing_code.push(p.drawing_code);
                 if (p.memo) posUnit.memo.push(p.memo);

+ 14 - 1
app/public/js/shares/sjs_setting.js

@@ -67,5 +67,18 @@ const sjsSettingObj = (function () {
             if (col) col[prop] = value;
         }
     };
-    return {setFxTreeStyle, FxTreeStyle, setGridSelectStyle, setTpThousandthFormat, setThousandthFormat, setTpColsThousandthFormat, setPropValue};
+    const set3FCols = function (cols, rela) {
+        for (const r of rela) {
+            const col = _.find(cols, {field: r.field});
+            if (col) {
+                col.getValue = r.getValue;
+                col.cellType = 'activeImageBtn';
+                col.normalImg = '#rela-file-icon';
+                col.indent = 5;
+                col.imgAlign = 2;
+                col.showImage = function (data) { return data && data[r.url_field]; }
+            }
+        }
+    };
+    return {setFxTreeStyle, FxTreeStyle, setGridSelectStyle, setTpThousandthFormat, setThousandthFormat, setTpColsThousandthFormat, setPropValue, set3FCols};
 })();

+ 10 - 22
app/public/js/sr_detail.js

@@ -207,6 +207,7 @@ $(document).ready(() => {
     ledgerSpreadSetting.imageClick = function (data, hitinfo) {
         const col = hitinfo.sheet.zh_setting.cols[hitinfo.col];
         if (col.field === 'dagl') data.dagl_url && window.open(data.dagl_url);
+        if (col.field === 'gxby') data.gxby_url && window.open(data.gxby_url);
     };
     ledgerSpreadSetting.dgnUpFields = ['deal_dgn_qty1', 'deal_dgn_qty2', 'c_dgn_qty1', 'c_dgn_qty2'];
     ledgerSpreadSetting.getColor = function (sheet, data, row, col, defaultColor) {
@@ -229,17 +230,10 @@ $(document).ready(() => {
         }
     };
     sjsSettingObj.setFxTreeStyle(ledgerSpreadSetting, sjsSettingObj.FxTreeStyle.jz);
-    sjsSettingObj.setPropValue(ledgerSpreadSetting, ['gxby'], 'getValue', getGxbyText);
-    sjsSettingObj.setPropValue(ledgerSpreadSetting, ['dagl'], 'getValue', getDaglText);
-    const lDaglCol = _.find(ledgerSpreadSetting.cols, {field: 'dagl'});
-    if (lDaglCol) {
-        lDaglCol.getValue = getDaglText;
-        lDaglCol.cellType = 'activeImageBtn';
-        lDaglCol.normalImg = '#rela-file-icon';
-        lDaglCol.indent = 5;
-        lDaglCol.imgAlign = 2;
-        lDaglCol.showImage = function (data) { return data && data.dagl_url; }
-    }
+    sjsSettingObj.set3FCols(ledgerSpreadSetting.cols, [
+        {field: 'gxby', getValue: getGxbyText, url_field: 'gxby_url'},
+        {field: 'dagl', getValue: getDaglText, url_field: 'dagl_url'},
+    ]);
     if (thousandth) sjsSettingObj.setTpThousandthFormat(ledgerSpreadSetting);
     ledgerSpreadSetting.headColWidth = [50];
     ledgerSpreadSetting.rowHeader = [
@@ -290,6 +284,7 @@ $(document).ready(() => {
     posSpreadSetting.imageClick = function (data, hitinfo) {
         const col = hitinfo.sheet.zh_setting.cols[hitinfo.col];
         if (col.field === 'dagl') data.dagl_url && window.open(data.dagl_url);
+        if (col.field === 'gxby') data.gxby_url && window.open(data.gxby_url);
     };
     posSpreadSetting.getColor = function (sheet, data, row, col, defaultColor) {
         if (data) {
@@ -311,17 +306,10 @@ $(document).ready(() => {
     };
     sjsSettingObj.setGridSelectStyle(posSpreadSetting);
     if (thousandth) sjsSettingObj.setTpThousandthFormat(posSpreadSetting);
-    sjsSettingObj.setPropValue(posSpreadSetting, ['gxby'], 'getValue', getGxbyText);
-    sjsSettingObj.setPropValue(posSpreadSetting, ['dagl'], 'getValue', getDaglText);
-    const pDaglCol = _.find(posSpreadSetting.cols, {field: 'dagl'});
-    if (pDaglCol) {
-        pDaglCol.getValue = getDaglText;
-        pDaglCol.cellType = 'activeImageBtn';
-        pDaglCol.normalImg = '#rela-file-icon';
-        pDaglCol.indent = 5;
-        pDaglCol.imgAlign = 2;
-        pDaglCol.showImage = function (data) { return data && data.dagl_url; }
-    }
+    sjsSettingObj.set3FCols(posSpreadSetting.cols, [
+        {field: 'gxby', getValue: getGxbyText, url_field: 'gxby_url'},
+        {field: 'dagl', getValue: getDaglText, url_field: 'dagl_url'},
+    ]);
     SpreadJsObj.initSheet(spSpread.getActiveSheet(), posSpreadSetting);
 
     const billsTag = $.billsTag({

+ 27 - 37
app/public/js/stage.js

@@ -650,15 +650,16 @@ $(document).ready(() => {
     ratioCol.field = tenderInfo.display.stage.correct ? 'end_correct_percent' : 'end_gather_percent';
     ledgerSpreadSetting.imageClick = function (data, hitinfo) {
         const col = hitinfo.sheet.zh_setting.cols[hitinfo.col];
-        if (col.field === 'dagl') {
-            data.dagl_url && window.open(data.dagl_url);
-        } else if (col.field === 'qc_qty') {
-            if (data.children && data.children.length > 0 || data.lock) return;
-
-            const nodePos = stagePos.getLedgerPos(data.id);
-            if (nodePos && nodePos.length > 0) return;
-
-            changesObj.loadChanges({bills: data});
+        switch (col.field) {
+            case 'dagl': data.dagl_url && window.open(data.dagl_url); break;
+            case 'gxby': data.gxby_url && window.open(data.gxby_url); break;
+            case 'qc_qty':
+                if (data.children && data.children.length > 0 || data.lock) return;
+                const nodePos = stagePos.getLedgerPos(data.id);
+                if (nodePos && nodePos.length > 0) return;
+                changesObj.loadChanges({bills: data});
+                break;
+            default: return;
         }
     };
     ledgerSpreadSetting.dgnUpFields = ['deal_dgn_qty1', 'deal_dgn_qty2', 'c_dgn_qty1', 'c_dgn_qty2'];
@@ -682,17 +683,10 @@ $(document).ready(() => {
         }
     };
     sjsSettingObj.setFxTreeStyle(ledgerSpreadSetting, sjsSettingObj.FxTreeStyle.jz);
-    sjsSettingObj.setPropValue(ledgerSpreadSetting, ['gxby'], 'getValue', getGxbyText);
-    sjsSettingObj.setPropValue(ledgerSpreadSetting, ['dagl'], 'getValue', getDaglText);
-    const lDaglCol = _.find(ledgerSpreadSetting.cols, {field: 'dagl'});
-    if (lDaglCol) {
-        lDaglCol.getValue = getDaglText;
-        lDaglCol.cellType = 'activeImageBtn';
-        lDaglCol.normalImg = '#rela-file-icon';
-        lDaglCol.indent = 5;
-        lDaglCol.imgAlign = 2;
-        lDaglCol.showImage = function (data) { return data && data.dagl_url; }
-    }
+    sjsSettingObj.set3FCols(ledgerSpreadSetting.cols, [
+        {field: 'gxby', getValue: getGxbyText, url_field: 'gxby_url'},
+        {field: 'dagl', getValue: getDaglText, url_field: 'dagl_url'},
+    ]);
     if (thousandth) sjsSettingObj.setTpThousandthFormat(ledgerSpreadSetting);
     ledgerSpreadSetting.headColWidth = [50];
     ledgerSpreadSetting.rowHeader = [
@@ -747,12 +741,15 @@ $(document).ready(() => {
     };
     posSpreadSetting.imageClick = function (data, hitinfo) {
         const col = hitinfo.sheet.zh_setting.cols[hitinfo.col];
-        if (col.field === 'dagl') {
-            data.dagl_url && window.open(data.dagl_url);
-        } else if (col.field === 'qc_qty') {
-            const node = SpreadJsObj.getSelectObject(slSpread.getActiveSheet());
-            if (node.lock) return;
-            changesObj.loadChanges({bills: node, pos: data});
+        switch (col.field) {
+            case 'gxby': data.gxby_url && window.open(data.gxby_url); break;
+            case 'dagl': data.dagl_url && window.open(data.dagl_url); break;
+            case 'qc_qty':
+                const node = SpreadJsObj.getSelectObject(slSpread.getActiveSheet());
+                if (node.lock) return;
+                changesObj.loadChanges({bills: node, pos: data});
+                break;
+            default: return;
         }
     };
     posSpreadSetting.getColor = function (sheet, data, row, col, defaultColor) {
@@ -775,17 +772,10 @@ $(document).ready(() => {
     };
     sjsSettingObj.setGridSelectStyle(posSpreadSetting);
     if (thousandth) sjsSettingObj.setTpThousandthFormat(posSpreadSetting);
-    sjsSettingObj.setPropValue(posSpreadSetting, ['gxby'], 'getValue', getGxbyText);
-    sjsSettingObj.setPropValue(posSpreadSetting, ['dagl'], 'getValue', getDaglText);
-    const pDaglCol = _.find(posSpreadSetting.cols, {field: 'dagl'});
-    if (pDaglCol) {
-        pDaglCol.getValue = getDaglText;
-        pDaglCol.cellType = 'activeImageBtn';
-        pDaglCol.normalImg = '#rela-file-icon';
-        pDaglCol.indent = 5;
-        pDaglCol.imgAlign = 2;
-        pDaglCol.showImage = function (data) { return data && data.dagl_url; }
-    }
+    sjsSettingObj.set3FCols(posSpreadSetting.cols, [
+        {field: 'gxby', getValue: getGxbyText, url_field: 'gxby_url'},
+        {field: 'dagl', getValue: getDaglText, url_field: 'dagl_url'},
+    ]);
     SpreadJsObj.initSheet(spSpread.getActiveSheet(), posSpreadSetting);
 
     const billsTag = $.billsTag({

+ 17 - 20
app/service/deal_bills.js

@@ -159,24 +159,23 @@ module.exports = app => {
                     }
                 } else {
                     const code = this.ctx.helper.replaceReturn(this.ctx.helper._.trim(row[iCode]));
-                    //if (this.ctx.helper.validBillsCode(code)) {
-                    if (code) {
-                        const data = {
-                            id: this.uuid.v4(),
-                            order: bills.length + 1,
-                            tender_id: tenderId,
-                            code: code,
-                            name: this.ctx.helper.replaceReturn(row[iName]),
-                            unit: this.ctx.helper.replaceReturn(row[iUnit]),
-                            unit_price: (row[iUp] === undefined || row[iUp] === null) ? 0 : this._.toNumber(row[iUp]),
-                            quantity: (row[iQty] === undefined || row[iQty] === null) ? 0 : this._.toNumber(row[iQty]),
-                            total_price: (row[iTp] === undefined || row[iTp] === null) ? 0 : this._.toNumber(row[iTp]),
-                        };
-                        if (this._.isNaN(data.unit_price) || this._.isNaN(data.quantity) || this._.isNaN(data.total_price)) {
-                            throw '导入的Excel的数据类型有误,请检查第' + (iRow + 1) + '行';
-                        }
-                        bills.push(data);
+                    if (!code) continue;
+                    // if (!this.ctx.helper.validBillsCode(code)) continue;
+                    const data = {
+                        id: this.uuid.v4(),
+                        order: bills.length + 1,
+                        tender_id: tenderId,
+                        code: code,
+                        name: this.ctx.helper.replaceReturn(row[iName]),
+                        unit: this.ctx.helper.replaceReturn(row[iUnit]),
+                        unit_price: (row[iUp] === undefined || row[iUp] === null) ? 0 : this._.toNumber(row[iUp]),
+                        quantity: (row[iQty] === undefined || row[iQty] === null) ? 0 : this._.toNumber(row[iQty]),
+                        total_price: (row[iTp] === undefined || row[iTp] === null) ? 0 : this._.toNumber(row[iTp]),
+                    };
+                    if (this._.isNaN(data.unit_price) || this._.isNaN(data.quantity) || this._.isNaN(data.total_price)) {
+                        throw '导入的Excel的数据类型有误,请检查第' + (iRow + 1) + '行';
                     }
+                    bills.push(data);
                 }
             }
             if (!bCheckCol) {
@@ -188,9 +187,7 @@ module.exports = app => {
                 if (bills.length > 0) {
                     await transaction.delete(this.tableName, {tender_id: tenderId});
                     const billsResult = await transaction.insert(this.tableName, bills);
-                    if (billsResult.affectedRows !== bills.length) {
-                        throw '导入签约清单数据出错';
-                    }
+                    if (billsResult.affectedRows !== bills.length) throw '导入签约清单数据出错';
                 } else {
                     throw 'Excel文件中无签约清单数据';
                 }

+ 4 - 4
app/service/ledger_revise.js

@@ -100,12 +100,12 @@ module.exports = app => {
                 '     quantity, total_price, unit_price, drawing_code, memo, dgn_qty1, dgn_qty2, deal_qty, deal_tp,' +
                 '     sgfh_qty, sgfh_tp, sjcl_qty, sjcl_tp, qtcl_qty, qtcl_tp, node_type, crid, tender_id, is_tp,' +
                 '     sgfh_expr, sjcl_expr, qtcl_expr, check_calc,' +
-                '     gxby_status, dagl_status, dagl_url, gxby_limit, dagl_limit, ex_memo1, ex_memo2, ex_memo3)' +
+                '     gxby_status, dagl_status, gxby_url, dagl_url, gxby_limit, dagl_limit, ex_memo1, ex_memo2, ex_memo3)' +
                 '  Select id, code, b_code, name, unit, source, remark, ledger_id, ledger_pid, level, `order`, full_path, is_leaf,' +
                 '      quantity, total_price, unit_price, drawing_code, memo, dgn_qty1, dgn_qty2, deal_qty, deal_tp,' +
                 '      sgfh_qty, sgfh_tp, sjcl_qty, sjcl_tp, qtcl_qty, qtcl_tp, node_type, crid, tender_id, is_tp,' +
                 '      sgfh_expr, sjcl_expr, qtcl_expr, 0,' +
-                '      gxby_status, dagl_status, dagl_url, gxby_limit, dagl_limit, ex_memo1, ex_memo2, ex_memo3' +
+                '      gxby_status, dagl_status, gxby_url, dagl_url, gxby_limit, dagl_limit, ex_memo1, ex_memo2, ex_memo3' +
                 '  From ' + this.ctx.service.ledger.tableName +
                 '  Where `tender_id` = ?';
             const sqlParam = [tid];
@@ -117,11 +117,11 @@ module.exports = app => {
                 '  (id, tid, lid, name, drawing_code, quantity, add_stage, add_times, add_user,' +
                 '     sgfh_qty, sjcl_qty, qtcl_qty, crid, in_time, porder, position,' +
                 '     sgfh_expr, sjcl_expr, qtcl_expr, real_qty,' +
-                '     gxby_status, dagl_status, dagl_url, gxby_limit, dagl_limit, ex_memo1, ex_memo2, ex_memo3)' +
+                '     gxby_status, dagl_status, gxby_url, dagl_url, gxby_limit, dagl_limit, ex_memo1, ex_memo2, ex_memo3)' +
                 '  Select id, tid, lid, name, drawing_code, quantity, add_stage, add_times, add_user,' +
                 '     sgfh_qty, sjcl_qty, qtcl_qty, crid, in_time, porder, position,' +
                 '     sgfh_expr, sjcl_expr, qtcl_expr, real_qty,' +
-                '     gxby_status, dagl_status, dagl_url, gxby_limit, dagl_limit, ex_memo1, ex_memo2, ex_memo3' +
+                '     gxby_status, dagl_status, gxby_url, dagl_url, gxby_limit, dagl_limit, ex_memo1, ex_memo2, ex_memo3' +
                 '  From ' + this.ctx.service.pos.tableName +
                 '  Where `tid` = ?';
             const sqlParam = [tid];

+ 3 - 3
app/service/pos.js

@@ -29,7 +29,7 @@ module.exports = app => {
                 where: condition,
                 columns: ['id', 'tid', 'lid', 'name', 'quantity', 'position', 'drawing_code', 'sgfh_qty', 'sjcl_qty',
                     'qtcl_qty', 'in_time', 'porder', 'add_stage', 'sgfh_expr', 'sjcl_expr', 'qtcl_expr', 'real_qty',
-                    'dagl_status', 'dagl_url', 'gxby_status', 'gxby_limit', 'dagl_limit', 'dagl_status',
+                    'dagl_status', 'dagl_url', 'gxby_status', 'gxby_url', 'gxby_limit', 'dagl_limit',
                     'ex_memo1', 'ex_memo2', 'ex_memo3'],
                 order: [['porder', 'ASC']],
             });
@@ -39,7 +39,7 @@ module.exports = app => {
             if (!condition.tid) throw '查询计量单元缺少必要信息';
             const sql = 'SELECT p.id, p.tid, p.lid, p.name, p.quantity, p.position, p.drawing_code,' +
                 '    p.sgfh_qty, p.sjcl_qty, p.qtcl_qty, p.porder, p.add_stage, p.add_times, p.add_user, s.order As add_stage_order,' +
-                '    p.sgfh_expr, p.sjcl_expr, p.qtcl_expr, p.real_qty, p.gxby_status, p.dagl_status, p.dagl_url,' +
+                '    p.sgfh_expr, p.sjcl_expr, p.qtcl_expr, p.real_qty, p.gxby_status, p.gxby_url, p.dagl_status, p.dagl_url,' +
                 '    p.gxby_limit, p.dagl_limit, p.ex_memo1, p.ex_memo2, p.ex_memo3' +
                 '  FROM ' + this.departTableName(condition.tid) + ' p ' +
                 '  LEFT JOIN ' + this.ctx.service.stage.tableName + ' s' +
@@ -52,7 +52,7 @@ module.exports = app => {
             if (ids instanceof Array && ids.length > 0) {
                 const sql = 'SELECT id, tid, lid, name, quantity, position, drawing_code,' +
                     '    sgfh_qty, sjcl_qty, qtcl_qty, add_stage, add_times, add_user, sgfh_expr, sjcl_expr, qtcl_expr, real_qty,' +
-                    '    dagl_status, dagl_url, gxby_status, gxby_limit, dagl_limit, ex_memo1, ex_memo2, ex_memo3' +
+                    '    dagl_status, dagl_url, gxby_status, gxby_url, gxby_limit, dagl_limit, ex_memo1, ex_memo2, ex_memo3' +
                     '  FROM ' + this.departTableName(tid) +
                     '  WHERE id in (' + this.ctx.helper.getInArrStrSqlFilter(ids) + ')';
                 return await this.db.query(sql, []);

+ 4 - 4
app/service/revise_audit.js

@@ -306,13 +306,13 @@ module.exports = app => {
                 '     quantity, total_price, unit_price, drawing_code, memo, dgn_qty1, dgn_qty2, deal_qty, deal_tp,' +
                 '     sgfh_qty, sgfh_tp, sjcl_qty, sjcl_tp, qtcl_qty, qtcl_tp, node_type, crid, tender_id, is_tp,' +
                 '     sgfh_expr, sjcl_expr, qtcl_expr, check_calc,' +
-                '     gxby_status, dagl_status, dagl_url, gxby_limit,  dagl_limit,' +
+                '     gxby_status, dagl_status, gxby_url, dagl_url, gxby_limit,  dagl_limit,' +
                 '     ex_memo1, ex_memo2, ex_memo3)' +
                 '  Select id, code, b_code, name, unit, source, remark, ledger_id, ledger_pid, level, `order`, full_path, is_leaf,' +
                 '      quantity, total_price, unit_price, drawing_code, memo, dgn_qty1, dgn_qty2, deal_qty, deal_tp,' +
                 '      sgfh_qty, sgfh_tp, sjcl_qty, sjcl_tp, qtcl_qty, qtcl_tp, node_type, crid, tender_id, is_tp, ' +
                 '      sgfh_expr, sjcl_expr, qtcl_expr, check_calc,' +
-                '      gxby_status, dagl_status, dagl_url, gxby_limit,  dagl_limit,' +
+                '      gxby_status, dagl_status, gxby_url, dagl_url, gxby_limit,  dagl_limit,' +
                 '      ex_memo1, ex_memo2, ex_memo3' +
                 '  From ' +
                 this.ctx.service.reviseBills.tableName +
@@ -325,12 +325,12 @@ module.exports = app => {
                 '  (id, tid, lid, name, drawing_code, quantity, add_stage, add_times, add_user,' +
                 '     sgfh_qty, sjcl_qty, qtcl_qty, crid, porder, position, ' +
                 '     sgfh_expr, sjcl_expr, qtcl_expr, real_qty,' +
-                '     gxby_status, dagl_status, dagl_url, gxby_limit,  dagl_limit,' +
+                '     gxby_status, dagl_status, gxby_url, dagl_url, gxby_limit,  dagl_limit,' +
                 '     ex_memo1, ex_memo2, ex_memo3)' +
                 '  Select id, tid, lid, name, drawing_code, quantity, add_stage, add_times, add_user,' +
                 '     sgfh_qty, sjcl_qty, qtcl_qty, crid, porder, position,' +
                 '     sgfh_expr, sjcl_expr, qtcl_expr, real_qty,' +
-                '     gxby_status, dagl_status, dagl_url, gxby_limit,  dagl_limit,' +
+                '     gxby_status, dagl_status, gxby_url, dagl_url, gxby_limit,  dagl_limit,' +
                 '     ex_memo1, ex_memo2, ex_memo3' +
                 '  From ' +
                 this.ctx.service.revisePos.tableName +

+ 17 - 4
app/view/stage/bwtz.ejs

@@ -137,7 +137,12 @@
         return defaultColor;
     }
     function imageClick (data, hitinfo) {
-        data && data.dagl_url && window.open(data.dagl_url);
+        if (!data) return;
+        const col = hitinfo.sheet.zh_setting.cols[hitinfo.col];
+        switch (col.field) {
+            case 'dagl': data.dagl_url && window.open(data.dagl_url); break;
+            case 'gxby': data.gxby_url && window.open(data.gxby_url); break;
+        }
     }
     const xmjSpreadSetting = {
         cols: [
@@ -174,7 +179,11 @@
             {title: '<%- ex_memo3.alias || ex_memo3.name %>', colSpan: '1', rowSpan: '2', field: 'ex_memo3', hAlign: 0, width: 100, formatter: '@', cellType: 'ellipsisAutoTip'},
             <% } %>
             <% if (ctx.session.sessionProject.gxby) { %>
-            {title: '工序报验', colSpan: '1', rowSpan: '2', field: 'gxby', hAlign: 1, width: 80, formatter: '@', readOnly: true, getValue: getGxbyText},
+            {
+                title: '工序报验', colSpan: '1', rowSpan: '2', field: 'gxby', hAlign: 1, width: 80, formatter: '@',
+                readOnly: true, getValue: getGxbyText, cellType: 'activeImageBtn', normalImg: '#rela-file-icon', indent: 5,
+                imgAlign: 2, showImage: function (data) { return data && data.gxby_url }
+            },
             <% } %>
             <% if (ctx.session.sessionProject.dagl) { %>
             {
@@ -245,13 +254,17 @@
             {title: '<%- ex_memo3.alias || ex_memo3.name %>', colSpan: '1', rowSpan: '2', field: 'ex_memo3_merge', hAlign: 0, width: 100, formatter: '@', cellType: 'ellipsisAutoTip'},
             <% } %>
             <% if (ctx.session.sessionProject.gxby) { %>
-            {title: '工序报验', colSpan: '1', rowSpan: '2', field: 'gxby', hAlign: 1, width: 80, formatter: '@', readOnly: true, getValue: getGxbyText},
+            {
+                title: '工序报验', colSpan: '1', rowSpan: '2', field: 'gxby', hAlign: 1, width: 80, formatter: '@',
+                readOnly: true, getValue: getGxbyText, cellType: 'activeImageBtn', normalImg: '#rela-file-icon', indent: 5,
+                imgAlign: 2, showImage: function (data) { return data && data.gxby_url },
+            },
             <% } %>
             <% if (ctx.session.sessionProject.dagl) { %>
             {
                 title: '档案管理', colSpan: '1', rowSpan: '2', field: 'dagl', hAlign: 1, width: 80, formatter: '@',
                 readOnly: true, getValue: getDaglText, cellType: 'activeImageBtn', normalImg: '#rela-file-icon', indent: 5,
-                imgAlign: 2, showImage: function (data) { return data && data.dagl_url }
+                imgAlign: 2, showImage: function (data) { return data && data.dagl_url },
             },
             <% } %>
         ],