Ext.Window 的常见属性

本文深入解析了Ext JS中的Panel和TabPanel组件的常见属性及其使用方法,包括窗口的基本属性如平滑边框、可调整大小、最大化、拖动、最小化、关闭行为等,以及如何通过配置参数实现自定义窗口外观和布局,如标题栏、工具栏、按钮、高度、宽度等。同时,文章详细展示了如何创建TabPanel并配置子面板,包括自定义标题、HTML内容、自动加载、滚动条、按钮位置等功能。通过实例代码,读者能够快速掌握Ext JS窗口组件的高级应用。
原文地址:Ext.Window 的常见属性 作者:sanshou1980

Ext.Window 的常见属性:
    plain:true,(默认不是)
    resizable:false,(是否可以改变大小,默认可以)
    maximizable:true,(是否增加最大化,默认没有)
    draggable:false,(是否可以拖动,默认可以)
    minimizable:true,(是否增加最小化,默认无)
    closable:false,(是否显示关闭,默认有关闭)

//几个前面没有介绍的参数
1.closeAction:枚举值为:close(默认值),当点击关闭后,关闭window窗口  hide,关闭后,只是hidden窗口
3.constrain:true则强制此window控制在viewport,默认为false
4.modal:true为模式窗口,后面的内容都不能操作,默认为false
5.plain://true则主体背景透明,false则主体有小差别的背景色,默认为false

而pannel 和window是差不多的,比如构造参数我都可以直接通用:

 


一些常见配置参数:

1.autoLoad:有效的url字符串,把那个url中的body中的数据加载显示,但是可能没有样式和js控制,只是html数据
2.autoScroll:设为true则内容溢出的时候产生滚动条,默认为false
3.autoShow:设为true显示设为"x-hidden"的元素,很有必要,默认为false

4.bbar:底部条,显示在主体内,//代码:bbar:[{text:'底部工具栏bottomToolbar'}],
5.tbar:顶部条,显示在主体内,//代码:tbar:[{text:'顶部工具栏topToolbar'}],
6.buttons:按钮集合,自动添加到footer中(footer参数,显示在主体外)//代码:buttons:[{text:"按钮位于footer"}]
7.buttonAlign:footer中按钮的位置,枚举值为:"left","right","center",默认为right

8.collapsible:设为true,显示右上角的收缩按钮,默认为false
9.draggable:true则可拖动,但需要你提供操作过程,默认为false

10.html:主体的内容
11.id:id值,通过id可以找到这个组件,建议一般加上这个id值
12.width:宽度
13.height:高度
13.title:标题

14.titleCollapse:设为true,则点击标题栏的任何地方都能收缩,默认为false.

15.applyTo:(id)呈现在哪个html元素里面
16.contentEl:(id)呈现在哪个html元素里面,把el内的内容呈现
17.renderTo:(id)呈现在哪个html元素里面
eg:
 Ext.onReady(function()
            {
                var panel = new Ext.Panel(
                {
                    title:"标题",
                    width:300,
                    height:200,
                    //frame:true,//圆角
                    plain:true,//方角 默认
                    collapsible:true,
                    tbar:[{text:"按钮1",handler:function(){Ext.MessageBox.alert("我是按钮1","我是通过按钮1激发出来的弹出框!")}},{text:"按钮2"}], //顶部工具栏
                                bbar:[{text:"按钮3"},{text:"按钮4"}],  //底部工具栏
                    html:'<h1>hello,my name is 274!</h1>',
                                        buttons:[{text:"按钮5"},{text:"按钮6"}], //footer部工具栏
                                        buttonAlign:"left"
                });           
                //win.show();
                panel.render("hello");
               
            });               

Tabpanel 使用:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css">
        <script type="text/javascript" src="ext/ext-base.js"></script>
        <script type="text/javascript" src="ext/ext-all.js"></script>
        <title>学习ExtJS之Panel</title>
        <script type="text/javascript">
        Ext.onReady(function()
        {
            var tabs = new Ext.TabPanel({
            renderTo: 'hello',
            width:450,
            //height:200,
            activeTab: 0,
            frame:true,
           
            defaults:{autoHeight: true},
            items:[
                {contentEl:'script', title: '子面板1'},
                {contentEl:'markup', title: '子面板2'}
            ]
           
            });
            var tabs2 = new Ext.TabPanel({
            renderTo: document.body,
            activeTab: 0,
            width:600,
            height:250,
            plain:true,
            defaults:{autoScroll: true},
            items:[{
                    title: 'Normal Tab',
                    html: "My content was added during construction."
                },{
                    title: 'Ajax Tab 1',
                    autoLoad:'ajax1.htm'
                },{
                    title: 'Ajax Tab 2',
                    autoLoad: {url: 'ajax2.htm', params: 'foo=bar&wtf=1'}
                },{
                    title: 'Event Tab',
                    listeners: {activate: handleActivate},
                    html: "I am tab 4's content. I also have an event listener attached."
                },{
                    title: 'Disabled Tab',
                    disabled:true,
                    html: "Can't see me cause I'm disabled"
                }
            ]
            });
       
            function handleActivate(tab)
            {
                alert(tab.title + ' was activated.');
            }
        });              
       </script>
    </head>
    <body style="padding:10px;">
        <div id="hello">
           
        </div>
        <div id="script" class="x-hide-display">
            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed metus nibh, sodales a, porta at, vulputate eget, dui. Pellentesque ut nisl. Maecenas tortor turpis, interdum non, sodales non, iaculis ac, lacus.<br/><br/> Vestibulum auctor, tortor quis iaculis malesuada, libero lectus bibendum purus, sit amet tincidunt quam turpis vel lacus. In pellentesque nisl non sem. Suspendisse nunc sem, pretium eget, cursus a, fringilla vel, urna.</p>
        </div>
        <div id="markup" class="x-hide-display">
            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed metus nibh, sodales a, porta at, vulputate eget, dui. Pellentesque ut nisl. Maecenas tortor turpis, interdum non, sodales non, iaculis ac, lacus. Vestibulum auctor, tortor quis iaculis malesuada, libero lectus bibendum purus, sit amet tincidunt quam turpis vel lacus. In pellentesque nisl non sem. Suspendisse nunc sem, pretium eget, cursus a, fringilla vel, urna.<br/><br/>Aliquam commodo ullamcorper erat. Nullam vel justo in neque porttitor laoreet. Aenean lacus dui, consequat eu, adipiscing eget, nonummy non, nisi. Morbi nunc est, dignissim non, ornare sed, luctus eu, massa. Vivamus eget quam. Vivamus tincidunt diam nec urna. Curabitur velit.</p>
        </div>
        <br>
    </body>
</html>

对应的显示效果:

注意上面代码中使用了items 属性,表示子面板组。内容可以用html 元素ID 。比如:
 items:[
             {contentEl:'script', title: 'Short Text'},
             {contentEl:'markup', title: 'Long Text'}
         ]
这样这两个子面板的内容将是ID为sript 和markup 的元素内容。
也可以,以html属性直接表示子面板的内容:
 items:[
             {html:'script', title: 'Short Text'},
             {html:'markup', title: 'Long Text'}
         ]
语句解释: defaults:{autoHeight: true}, 默认自适应高度。当然这里面还可以设置为: defaults:{autoScroll: true},如果设置为 defaults:{autoScroll: true},高度就最好指定了。

下面还有一个tab面板,其子面板更多了。

我们发现renderTo 不仅可以绑在div (id) 也可以绑定在:document.body。

而其中比较特别的有:
1.autoLoad: {url: 'ajax2.htm', params: 'foo=bar&wtf=1'}
指切换到这个页面,内容显示为动态加载的,比如这里用了一个ajax方式,url 发送目标,params是参数形式。

2.listeners: {activate: handleActivate},
当面板切换到这个页面将触发事件:handleActivate

3.disabled:true,
指这个页面不能点击。

对于: plain:true, frame:true,
前者是子面板标题处样式,前者并无背景,后者有背景(看起来像个框架),请参看上图二者效果差异。

而activeTab:0 是指,默认显示(访问)的是哪一个子面板。0是第一次,如果不指定该属性,默认不显示子面板内容,只有当用户点击子面板后才显示。

<meta http-equiv="expires" content="0"> <meta http-equiv="pragma" content="no-cache"> <%@ include file="booktop.jsp" %> <%@ include file="connect.jsp" %> <% String materialno; String plant; String stloc; String slotid; String compare; String yield; String pshipid; String pg_die_c; String i_customerid; String grade; String destination; float pyield; int showyield; String status; String show_status = ""; int n; n = 0; materialno=request.getParameter("materialno").toUpperCase(); plant=request.getParameter("plant").toUpperCase(); stloc=request.getParameter("stloc").toUpperCase(); slotid=request.getParameter("slotid").toUpperCase(); compare=request.getParameter("compare").toUpperCase(); yield=request.getParameter("yield"); i_customerid=request.getParameter("i_customerid").toUpperCase(); grade=request.getParameter("grade").toUpperCase(); destination=request.getParameter("destination").toUpperCase(); status=request.getParameter("status").toUpperCase(); if (status.equals("F")){ status = ""; show_status = "FREE"; } //-add by summer gao on 2005-9-20-- String temp1 = ""; String temp2 = ""; int temp_flag = 0; String d_year = ""; String d_month = ""; String d_day = ""; String temp3=new String(); String temp4=new String(); String rec_date = ""; String str = "0"; int over_flag; int length1; int today; int receive_date; int left; java.util.Date cur_today = new java.util.Date(); SimpleDateFormat formatter = new SimpleDateFormat ("yyyyMMdd"); String dateString = formatter.format(cur_today); //out.println(dateString); String subdate = dateString.substring(4,8); //out.println(subdate); %> <script language="javascript" src="tablesort.js"></script> <script language="javascript" src="openwin.js"></script> <script language="javascript" src="calendar_today.js"></script> <script> function clear_date(b){ eval("window.document.querylotid.invduedate"+b).value = "";} </script> <script> function check_date(num){ for(var i=1; i<num+1; i++ ){ if (eval("window.document.querylotid.invduedate"+i).value == "") {if (eval("window.document.querylotid.reason"+i).value != "") {alert( "Reason " +i+ " should be consistent with the blank Due Date."); return(false); } } else {if (eval("window.document.querylotid.reason"+i).value == "") {alert( "Reason " +i+ " should be consistent with the non-blank Due Date."); return(false); } } } } </script> <script> function sumvalue(v){ var wafer = new Number(0); var die = new Number(0); var len = document.querylotid.slotid.length; if(len > 1){ if (v.value != '-') { for(var i=0; i<len; i++ ){ if (document.querylotid.slotid[i].value == v.value) document.querylotid.slotid[i].checked = v.checked; } } for(var i=0;i<len;i++) { if (document.querylotid.slotid[i].checked) { document.querylotid.lotproduct[i].checked = true; wafer = wafer + new Number(document.querylotid.slotid1[i].value); die = die + new Number(document.querylotid.slotid2[i].value); }else{ document.querylotid.lotproduct[i].checked = false; } } } else{ if (document.querylotid.slotid.checked) { document.querylotid.lotproduct.checked = true; wafer = wafer + new Number(document.querylotid.slotid1.value); die = die + new Number(document.querylotid.slotid2.value); }else{ document.querylotid.lotproduct.checked = false; } } document.querylotid.sumwafer.value = wafer; document.querylotid.sumdie.value = die; } </script> <script> function doIt(v) { var len2= document.querylotid.slotid.length; if (len2>1) { for(var i=0;i<document.querylotid.slotid.length;i++) { document.querylotid.slotid[i].checked=eval(v); document.querylotid.lotproduct[i].checked=eval(v); } document.querylotid.c4.checked=false; document.querylotid.c3.checked=false; var wafer = new Number(0); var die = new Number(0); for(var i=0;i<document.querylotid.slotid1.length;i++) { if (document.querylotid.slotid[i].checked) { wafer = wafer + new Number(document.querylotid.slotid1[i].value); die = die + new Number(document.querylotid.slotid2[i].value); } } document.querylotid.sumwafer.value = wafer; document.querylotid.sumdie.value = die; }else{ document.querylotid.slotid.checked=eval(v); document.querylotid.lotproduct.checked=eval(v); document.querylotid.c4.checked=false; document.querylotid.c3.checked=false; var wafer = new Number(0); var die = new Number(0); if (document.querylotid.slotid.checked) { wafer = new Number(document.querylotid.slotid1.value); die = new Number(document.querylotid.slotid2.value); } document.querylotid.sumwafer.value = wafer; document.querylotid.sumdie.value = die; } } </script> <style> THEAD TD {BACKGROUND: #B9BECB; HEIGHT: 20px; PADDING-Right: 2px;CURSOR:s-resize;} THEAD .arrow {COLOR: black; FONT-FAMILY: webdings; FONT-SIZE: 12px; HEIGHT: 13px; MARGIN-BOTTOM: 2px; MARGIN-TOP: -3px; OVERFLOW: hidden; PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px; WIDTH: 10px} .header { background-color: #B9BECB;} </style> <tr><td bgcolor="#E0E4ED"><br> <% JCO.Client client = null; try { IFunctionTemplate ftemplate = repository.getFunctionTemplate("Z_LB_PIV_SEARCH_LOTS"); JCO.Function function = new JCO.Function(ftemplate); client = JCO.getClient(SID); JCO.ParameterList input = function.getImportParameterList(); input.setValue(materialno, "MATERIALNO"); input.setValue(plant, "PLANT"); input.setValue(stloc, "STLOC"); input.setValue(slotid, "SLOTID"); input.setValue(yield, "I_YIELD"); input.setValue(compare, "I_COMPARE"); input.setValue(i_customerid, "I_CUSTOMERID"); input.setValue(grade, "I_GRADE"); input.setValue(destination, "I_DESTINATION"); input.setValue(status, "I_STATUS"); //---Add by Summer Gao in 2004-03-11 for role check---------- input.setValue(session.getAttribute("role"), "I_ROLE"); //---End add by Summer /* input.setValue("Y", "INTEGRATE"); input.setValue("Y", "NO_EMPTY"); */ client.execute(function); JCO.Table e_lotinfo = function.getTableParameterList().getTable("RLOTINFO"); if (e_lotinfo.getNumRows() > 0) { %> <form name="querylotid" method="post" action="inventory_do_update.jsp" onSubmit="return check_date(<%=e_lotinfo.getNumRows()%>)"> <button type="button" name="c4" value="true" onclick="doIt(true)" style="font-family:verdana;background:#ffeeee">Select All</button>    <button type="button" name="c3" value="false" onclick="doIt(false)" style="font-family:verdana;background:#ffeeee">Unselect All</button>    <b>Sum Wafer Qty</b>   <input type=text name="sumwafer" size="8" style="font-family:verdana;font-weight:bold;background:#eeeeff;border-style:none"> <b>Sum Die Qty</b>   <input type=text name="sumdie" size="13" style="font-family:verdana;font-weight:bold;background:#eeeeff;border-style:none"> <%//Angela Zhang 20050221 begin%>    <a href="inventory_do_query_excel.jsp?materialno=<%=request.getParameter("materialno").toUpperCase()%>&plant=<%=request.getParameter("plant").toUpperCase()%>&stloc=<%=request.getParameter("stloc").toUpperCase()%>&slotid=<%=request.getParameter("slotid").toUpperCase()%>&compare=<%=request.getParameter("compare").toUpperCase()%>&yield=<%=request.getParameter("yield")%>&i_customerid=<%=request.getParameter("i_customerid").toUpperCase()%>&destination=<%=request.getParameter("destination").toUpperCase()%>&grade=<%=request.getParameter("grade").toUpperCase()%>&status=<%=request.getParameter("status").toUpperCase()%>&role=<%=session.getAttribute("role")%>" target="_blank">Download </a> <%//Angela Zhang 20050221 end%> <table bgcolor="white" id="oTable" onclick="sortColumn(event)" width="2600" align="center" bordercolorlight="#2D4285" bordercolordark="#ffffff" border="1" cellspacing="0" cellpadding="0"> <thead> <tr> <td><b>Select</b></td><td><b>Status</b></td> <td width=4><b>Book Mark</b></td> <td><b>ProductID</b></td> <td><b>LotID</b></td> <td width=4><b>Lot Type</b></td> <td ><b>Due Date</b>(yyyy-mm-dd)</td> <td ><b>Reason</b></td> <td ><b>Remark</b></td> <td><b>ReceiveDate</b></td> <td><b>TotalQty</b></td> <td><b>Grade</b></td> <td><b>Unit</b></td> <td><b>ShipCode</b></td> <td><b>Yield(%)</b></td> <td><b>G_Die_C</b></td> <td><b>Unrestr.QTY</b></td> <td><b>BatchID</b></td> <td><b>Wafer ID</b></td> <td><b>Destination</b></td><td><b>Wafer Start Date</b></td> <td><b>Customer Lot ID</b></td><td><b>CustomerID</b></td> <td><b>SMICCustomerLotID</b></td><td><b>Term Code</b></td><td><b>Ownership</b></td> <td><b>Plant</b></td><td><b>Storage</b></td><td><b>Reserve No</b></td> <td><b>ReceivePerson</b></td> <td width="60"><b>Customer Criteria</b></td> </tr> </TR> </thead> <% do { n = n + 1; if ((show_status.equals("FREE") && (e_lotinfo.getString("STATUS").equals(""))) || show_status.equals("")) { if (e_lotinfo.getString("SHIPID").equals("")) { pshipid="-"; }else{ pshipid=e_lotinfo.getString("SHIPID"); } if (e_lotinfo.getString("G_DIE_C").equals("")) { pg_die_c="0"; }else{ pg_die_c=e_lotinfo.getString("G_DIE_C"); } //--add by summer gao on 2005-9-20-- over_flag = 0; length1 = 0; temp_flag = 0; d_year = ""; d_month = ""; d_day = ""; temp3 = ""; temp4 = ""; today = 0; receive_date = 0; left = 0; rec_date = e_lotinfo.getString("RECEIVEDATE"); if (rec_date.equals("")) { temp_flag = 4; }else{ length1 = rec_date.length(); if (length1 == 8) { d_year = rec_date.substring(0,4); d_month = rec_date.substring(5,6); temp4=new String(str.concat(d_month.substring(0,1))); d_month = temp4; d_day = rec_date.substring(7,8); temp3=new String(str.concat(d_day.substring(0,1))); d_day = temp3; temp3=new String(d_year.concat(d_month)); temp4=new String(temp3.concat(d_day)); rec_date = temp4; }else{ if (length1 == 10) { d_year = rec_date.substring(0,4); d_month = rec_date.substring(5,7); d_day = rec_date.substring(8,10); temp3=new String(d_year.concat(d_month)); temp4=new String(temp3.concat(d_day)); rec_date = temp4; }else{ if (length1 == 9) { d_year = rec_date.substring(0,4); d_month = rec_date.substring(5,7); if (d_month.substring(1,2).equals("-")) { temp4=new String(str.concat(d_month.substring(0,1))); d_month = temp4; d_day = rec_date.substring(7,9); temp3=new String(d_year.concat(d_month)); temp4=new String(temp3.concat(d_day)); rec_date = temp4; }else{ d_day = rec_date.substring(7,9); temp3=new String(str.concat(d_day.substring(1,2))); d_day = temp3; temp3=new String(d_year.concat(d_month)); temp4=new String(temp3.concat(d_day)); rec_date = temp4; } } } } today = Integer.parseInt(dateString); receive_date= Integer.parseInt(rec_date); left = today - receive_date; if (left > 10000){ over_flag = 8; } } //-- %> <%if ((e_lotinfo.getString("USEQTY").equals("0"))&&( !e_lotinfo.getString("STATUS").equals("S"))) { %> <tr bgcolor=beige> <%}else if ( e_lotinfo.getString("NOT_MATCH").equals("Y")) {%> <tr bgcolor="#E893AF"> <%}else if ( e_lotinfo.getString("STATUS").equals("R")) {%> <tr bgcolor="#eeeeff"> <%}else if ( e_lotinfo.getString("STATUS").equals("S")) {%> <tr bgcolor="#ffeeee"> <%}else if ( e_lotinfo.getString("STATUS").equals("")) { %> <tr> <%}else if ( e_lotinfo.getString("STATUS").equals("B")) {%> <tr bgcolor="orange"> <%//}else if (over_flag == 8) { // out.println("DDDD"); %> <%}%> <td align=center> <!--Add by summer gao in 20040616 for new ship function--> <%if (e_lotinfo.getString("SHIPID").equals("")) { %> <input type="checkbox" name="slotid" onclick=sumvalue(this) value="<%=pshipid%>"> <%}else{ %> <input type="checkbox" name="slotid" onclick=sumvalue(this) value="<%=pshipid+"+"+e_lotinfo.getString("RECEIVEPERSON")%>"> <%}%> <input type="checkbox" name="lotproduct" value="<%=e_lotinfo.getString("PRODUCTID")+"+"+e_lotinfo.getString("PLANT")+"+"+e_lotinfo.getString("SMICLOTID")%>" style="display:none;"> <input type="hidden" name="slotid1" value="<%=e_lotinfo.getString("USEQTY")%>"> <input type="hidden" name="slotid2" value="<%=pg_die_c%>"> </td> <%if (e_lotinfo.getString("STATUS").equals("B")) { %> <td>Error</td> <%}else if ((e_lotinfo.getString("USEQTY").equals("0"))&&(!e_lotinfo.getString("STATUS").equals("S"))) {%> <td>X</td> <%}else if (e_lotinfo.getString("STATUS").equals("")) {%> <td> </td> <%}else{%> <td><%=e_lotinfo.getString("STATUS")%></td> <%}%> <%if (e_lotinfo.getString("MARK").equals("")) { %> <td> </td> <%}else{%> <td><%=e_lotinfo.getString("MARK")%></td> <%}%> <td><%=e_lotinfo.getString("PRODUCTID")%></td> <input type="hidden" name=<%="ProdID"+n%> value="<%=e_lotinfo.getString("PRODUCTID")%>"> <td><%=e_lotinfo.getString("SMICLOTID")%></td> <input type="hidden" name=<%="LotID"+n%> value="<%=e_lotinfo.getString("SMICLOTID")%>"> <%//Fly Long add Lot Type 20050905 if (e_lotinfo.getString("LOTTYPE").equals("")) { %> <td> </td> <%}else{%> <td><%=e_lotinfo.getString("LOTTYPE")%></td> <%}%> <td nowrap width=135> <%if (e_lotinfo.getString("INVDUEDATE").equals("")) { %> <input type="text" size="9" name=<%="invduedate"+n%> value="" onFocus="this.blur();openWindow('querylotid.invduedate'+<%=n%>,'s');"> <input type="button" name=<%="cleardate"+n%> onclick=clear_date(<%=n%>) value="Reset" size="3"> <%}else{%> <input type="text" size="9" name=<%="invduedate"+n%> value=<%=e_lotinfo.getString("INVDUEDATE")%> onFocus="this.blur();openWindow('querylotid.invduedate'+<%=n%>,'s');"> <input type="button" name=<%="cleardate"+n%> onclick=clear_date(<%=n%>) value="Reset" size="3"> <%}%> </td> <td width=130> <%if (e_lotinfo.getString("REASON").equals("")) { %> <select name=<%="reason"+n%> style="font-size:9pt"> <option value=""> </option> <option value="CUSTOMER PULL IN">Customer pull in</option> <option value="CUSTOMER PUSH OUT">Customer push out</option> <option value="ENG ISSUE">Eng Issue</option> <!-Angela 20061113--> <!--<option value="NO PO">No PO</option>--> <option value="BACKUP WAFER">Backup wafer</option> <option value="PULL AHEAD PO">Pull ahead PO</option> <option value="YIELD IMPROVEMENT">Yield improvement</option> <option value="CUSTOMER RETURN">Customer return</option> <option value="WAIT SCRAP">Wait scrap</option> <option value="OTHER">Other</option> </select> <%}else if (e_lotinfo.getString("REASON").equals("CUSTOMER PULL IN")) {%> <select name=<%="reason"+n%> style="font-size:9pt"> <option value="CUSTOMER PULL IN">Customer pull in</option> <option value="CUSTOMER PUSH OUT">Customer push out</option> <option value="ENG ISSUE">Eng Issue</option> <!-Angela 20061113--> <!--<option value="NO PO">No PO</option>--> <option value="BACKUP WAFER">Backup wafer</option> <option value="PULL AHEAD PO">Pull ahead PO</option> <option value="YIELD IMPROVEMENT">Yield improvement</option> <option value="CUSTOMER RETURN">Customer return</option> <option value="WAIT SCRAP">Wait scrap</option> <option value="OTHER">Other</option> <option value=""> </option> </select> <%}else if (e_lotinfo.getString("REASON").equals("CUSTOMER PUSH OUT")) {%> <select name=<%="reason"+n%> style="font-size:9pt"> <option value="CUSTOMER PUSH OUT">Customer push out</option> <option value="CUSTOMER PULL IN">Customer pull in</option> <option value="ENG ISSUE">Eng Issue</option> <!-Angela 20061113--> <!--<option value="NO PO">No PO</option>--> <option value="BACKUP WAFER">Backup wafer</option> <option value="PULL AHEAD PO">Pull ahead PO</option> <option value="YIELD IMPROVEMENT">Yield improvement</option> <option value="CUSTOMER RETURN">Customer return</option> <option value="WAIT SCRAP">Wait scrap</option> <option value="OTHER">Other</option> <option value=""> </option> </select> <%}else if (e_lotinfo.getString("REASON").equals("ENG ISSUE")) {%> <select name=<%="reason"+n%> style="font-size:9pt"> <option value="ENG ISSUE">Eng Issue</option> <option value="CUSTOMER PULL IN">Customer pull in</option> <option value="CUSTOMER PUSH OUT">Customer push out</option> <!-Angela 20061113--> <!--<option value="NO PO">No PO</option>--> <option value="BACKUP WAFER">Backup wafer</option> <option value="PULL AHEAD PO">Pull ahead PO</option> <option value="YIELD IMPROVEMENT">Yield improvement</option> <option value="CUSTOMER RETURN">Customer return</option> <option value="WAIT SCRAP">Wait scrap</option> <option value="OTHER">Other</option> <option value=""> </option> </select> <%}else if (e_lotinfo.getString("REASON").equals("OTHER")) {%> <select name=<%="reason"+n%> style="font-size:9pt"> <option value="OTHER">Other</option> <option value="CUSTOMER PULL IN">Customer pull in</option> <option value="CUSTOMER PUSH OUT">Customer push out</option> <option value="ENG ISSUE">Eng Issue</option> <!-Angela 20061113--> <!--<option value="NO PO">No PO</option>--> <option value="BACKUP WAFER">Backup wafer</option> <option value="PULL AHEAD PO">Pull ahead PO</option> <option value="YIELD IMPROVEMENT">Yield improvement</option> <option value="CUSTOMER RETURN">Customer return</option> <option value="WAIT SCRAP">Wait scrap</option> <option value=""> </option> </select> <%}else if (e_lotinfo.getString("REASON").equals("NO PO") || e_lotinfo.getString("REASON").equals("BACKUP WAFER")) {%> <select name=<%="reason"+n%> style="font-size:9pt"> <!-Angela 20061113--> <!--<option value="NO PO">No PO</option>--> <option value="BACKUP WAFER">Backup wafer</option> <option value="PULL AHEAD PO">Pull ahead PO</option> <option value="YIELD IMPROVEMENT">Yield improvement</option> <option value="CUSTOMER PULL IN">Customer pull in</option> <option value="CUSTOMER PUSH OUT">Customer push out</option> <option value="ENG ISSUE">Eng Issue</option> <option value="CUSTOMER RETURN">Customer return</option> <option value="WAIT SCRAP">Wait scrap</option> <option value="OTHER">Other</option> <option value=""> </option> </select> <%}else if (e_lotinfo.getString("REASON").equals("CUSTOMER RETURN")) {%> <select name=<%="reason"+n%> style="font-size:9pt"> <option value="CUSTOMER RETURN">Customer return</option> <option value="CUSTOMER PULL IN">Customer pull in</option> <option value="CUSTOMER PUSH OUT">Customer push out</option> <option value="ENG ISSUE">Eng Issue</option> <!-Angela 20061113--> <!--<option value="NO PO">No PO</option>--> <option value="BACKUP WAFER">Backup wafer</option> <option value="PULL AHEAD PO">Pull ahead PO</option> <option value="YIELD IMPROVEMENT">Yield improvement</option> <option value="WAIT SCRAP">Wait scrap</option> <option value="OTHER">Other</option> <option value=""> </option> </select> <%}else if (e_lotinfo.getString("REASON").equals("WAIT SCRAP")) {%> <select name=<%="reason"+n%> style="font-size:9pt"> <option value="WAIT SCRAP">Wait scrap</option> <option value="CUSTOMER PULL IN">Customer pull in</option> <option value="CUSTOMER PUSH OUT">Customer push out</option> <option value="ENG ISSUE">Eng Issue</option> <!-Angela 20061113--> <!--<option value="NO PO">No PO</option>--> <option value="BACKUP WAFER">Backup wafer</option> <option value="PULL AHEAD PO">Pull ahead PO</option> <option value="YIELD IMPROVEMENT">Yield improvement</option> <option value="CUSTOMER RETURN">Customer return</option> <option value="OTHER">Other</option> <option value=""> </option> </select> <%}else if (e_lotinfo.getString("REASON").equals("PULL AHEAD PO")) {%> <select name=<%="reason"+n%> style="font-size:9pt"> <option value="PULL AHEAD PO">Pull ahead PO</option> <option value="WAIT SCRAP">Wait scrap</option> <option value="CUSTOMER PULL IN">Customer pull in</option> <option value="CUSTOMER PUSH OUT">Customer push out</option> <option value="ENG ISSUE">Eng Issue</option> <!-Angela 20061113--> <!--<option value="NO PO">No PO</option>--> <option value="BACKUP WAFER">Backup wafer</option> <option value="YIELD IMPROVEMENT">Yield improvement</option> <option value="CUSTOMER RETURN">Customer return</option> <option value="OTHER">Other</option> <option value=""> </option> </select> <%}else if (e_lotinfo.getString("REASON").equals("YIELD IMPROVEMENT")) {%> <select name=<%="reason"+n%> style="font-size:9pt"> <option value="YIELD IMPROVEMENT">Yield improvement</option> <option value="WAIT SCRAP">Wait scrap</option> <option value="CUSTOMER PULL IN">Customer pull in</option> <option value="CUSTOMER PUSH OUT">Customer push out</option> <option value="ENG ISSUE">Eng Issue</option> <!-Angela 20061113--> <!--<option value="NO PO">No PO</option>--> <option value="BACKUP WAFER">Backup wafer</option> <option value="PULL AHEAD PO">Pull ahead PO</option> <option value="CUSTOMER RETURN">Customer return</option> <option value="OTHER">Other</option> <option value=""> </option> </select> <%}%> </td> <td width=100><input type="text" size="30" name=<%="reason_remark"+n%> value="<%=e_lotinfo.getString("REASON_REMARK")%>"> <%//--add by lily tian for BJ FG WH if (e_lotinfo.getString("RECEIVEDATE").equals("")) { %> <td> </td> <%}else{ //--add by summer gao if (over_flag == 8) { %> <td><font color="#FF0000"><b><%=e_lotinfo.getString("RECEIVEDATE")%></b></font></td> <%}else{%> <td><%=e_lotinfo.getString("RECEIVEDATE")%></td> <%} } %> <td><%=e_lotinfo.getString("TOTALSTOCKQTY")%></td> <%if (e_lotinfo.getString("ZGRADE").equals("")) { %> <td> </td> <%}else{%> <td><%=e_lotinfo.getString("ZGRADE")%></td> <%}%> <td><%=e_lotinfo.getString("MEINS")%></td> <td><%=e_lotinfo.getString("SHIPPROCESS")%></td> <%if (e_lotinfo.getString("YIELD").equals("")) { %> <td> </td> <%}else{%> <td> <% //=e_lotinfo.getString("YIELD") pyield = Float.parseFloat(e_lotinfo.getString("YIELD")); showyield = (new Float(pyield*100)).intValue(); out.print (showyield); %> </td> <%}%> <td> <%if (e_lotinfo.getString("PRODUCTID").indexOf("-") == -1) {%> <a href="update_gdc.jsp?productid=<%=e_lotinfo.getString("PRODUCTID")%>&plant=<%=e_lotinfo.getString("PLANT")%>&slotid=<%=e_lotinfo.getString("SMICLOTID")%>"> <%=pg_die_c%> </a> <%}else{%> <%=pg_die_c%> <%}%> </td> <td><%=e_lotinfo.getString("USEQTY")%></td> <td><%=pshipid%></td> <%if (e_lotinfo.getString("WAFERID").equals("")) { %> <td> </td> <%}else{%> <td> <%if (e_lotinfo.getString("PRODUCTID").indexOf("-") == -1) {%> <a href="javascript:openwin('wafer_detail.jsp?productid=<%=e_lotinfo.getString("PRODUCTID")%>&plant=<%=e_lotinfo.getString("PLANT")%>&slotid=<%=e_lotinfo.getString("SMICLOTID")%>','','250','800')"> <%=e_lotinfo.getString("WAFERID")%> </a> <%}else{%> <%=e_lotinfo.getString("WAFERID")%> <%}%> </td> <%}%> <%if (e_lotinfo.getString("DESTINATION").equals("")) { %> <td> </td> <%}else{%> <td><%=e_lotinfo.getString("DESTINATION")%></td> <%}%> <%if (e_lotinfo.getString("STARTDATE").equals("")) { %> <td> </td> <%}else{%> <td><%=e_lotinfo.getString("STARTDATE")%></td> <%}%> <%if (e_lotinfo.getString("CUSTOMERLOTID").equals("")) { %> <td> </td> <%}else{%> <td><%=e_lotinfo.getString("CUSTOMERLOTID")%></td> <%}%> <%if (e_lotinfo.getString("SMICCUSTID").equals("")) { %> <td> </td> <%}else{%> <td><%=e_lotinfo.getString("SMICCUSTID")%></td> <%}%> <%if (e_lotinfo.getString("SMICCUSTLOTID").equals("")) { %> <td> </td> <%}else{%> <td align=center><%=e_lotinfo.getString("SMICCUSTLOTID")%></td> <%}%> <%if (e_lotinfo.getString("SMICTERMCODE").equals("")) { %> <td> </td> <%}else{%> <td><%=e_lotinfo.getString("SMICTERMCODE")%></td> <%}%> <%if (e_lotinfo.getString("OWNERSHIP").equals("")) { %> <td> </td> <%}else{%> <td><%=e_lotinfo.getString("OWNERSHIP")%></td> <%}%> <td><%=e_lotinfo.getString("PLANT")%></td> <td><%=e_lotinfo.getString("SLOC")%></td> <%if (e_lotinfo.getString("RESERVENO").equals("")) { %> <td> </td> <%}else{%> <td><%=e_lotinfo.getString("RESERVENO")%></td> <%}%> <%//--add by summer gao for ship function if (e_lotinfo.getString("RECEIVEPERSON").equals("")) { %> <td> </td> <%}else{%> <td><%=e_lotinfo.getString("RECEIVEPERSON")%></td> <%}%> <%if (e_lotinfo.getString("CUSTOMERCRITERIA").equals("")) { %> <td> </td> <%}else{%> <td align=center><%=e_lotinfo.getString("CUSTOMERCRITERIA")%></td> <%}%> </tr> <% } } while(e_lotinfo.nextRow()); %> </table> <%if (!("VIEW_SH01".equals(session.getAttribute("role"))||"VIEW_BJ01".equals(session.getAttribute("role"))||"VIEW_TJ01".equals(session.getAttribute("role")) ||"VIEW_WH01".equals(session.getAttribute("role")) || "SA_SH01".equals(session.getAttribute("role"))||"SA_BJ01".equals(session.getAttribute("role"))||"SA_TJ01".equals(session.getAttribute("role"))||"SA_WH01".equals(session.getAttribute("role")))) {%> //update by maple <tr> <td colspan="2" align="left">                      <input type="submit" name="Submit" value="Submit" style="font-family:verdana;background:#B9BECB">            <input type="reset" name="Submit2" value="Reset" style="font-family:verdana;background:#B9BECB"> <input type="hidden" name="rown" value="<%=n%>"> </td> </tr> <%}%> </form> <% } else { out.println("<img src=pic/wrong.gif> <b> Sorry, system have no fixed Lots data.</b>"); }%> <%} catch (Exception ex) { System.out.println("Caught an exception: \n" + ex); } finally { JCO.releaseClient(client); JCO.removeClientPool(SID); } System.out.println("row n=" + n); %> </td></tr> <%@ include file="bookbottom.jsp" %> 代码转为controller Service ServiceImpl 去掉前端处理
最新发布
08-29
<template> <div class="app-container shop-order-index" style="position: relative; height: calc(100vh - 110px);"> <!-- style="height: calc(100% - 8px);" --> <div class="container" > <!--工具栏--> <div class="head-container work-order-head"> <!-- 搜索 --> <el-form :inline="true" :model="query" class="demo-form-inline" :show-message="false" label-width="90px" > <el-form-item label="客服工单号"> <el-input v-model="query.workOrderNum" clearable size="small" style="width:150px;font-size:12px" placeholder="请输入客服工单号" @keyup.enter.native="toQuery" /> </el-form-item> <el-form-item label="订单号"> <el-input v-model="query.orderId" clearable size="small" style="width:150px;font-size:12px" placeholder="请输入订单号" @keyup.enter.native="toQuery" /> </el-form-item> <el-form-item label="工单来源"> <el-select v-model="query.fromType" clearable size="small" style="width:150px;font-size:12px" placeholder="请选择工单来源" > <el-option v-for="(item, ind) in queryTypeOptions" :key="'laiyuan' + ind" :label="item.display_name" :value="item.key" /> </el-select> </el-form-item> <el-form-item label="订单来源"> <el-select v-model="query.orderSource" clearable size="small" style="width:150px;font-size:12px" placeholder="请选择订单来源" > <el-option label="福利商城" value="1"></el-option> <el-option label="陆海商城" value="0"></el-option> <el-option label="鲁西福礼" value="3"></el-option> <el-option label="浪潮商城" value="2"></el-option> </el-select> </el-form-item> <el-form-item label="提报人姓名"> <el-input v-model="query.linkUserName" clearable size="small" style="width:150px;font-size:12px" placeholder="请输入提报人姓名" @keyup.enter.native="toQuery" /> </el-form-item> <el-form-item label="提报人电话"> <el-input v-model="query.linkUserPhone" clearable size="small" style="width:150px;font-size:12px" placeholder="请输入提报人电话" @keyup.enter.native="toQuery" /> </el-form-item> <el-form-item label="工单添加人"> <el-input v-model="query.addUser" clearable size="small" style="width:150px;font-size:12px" placeholder="请输入工单添加人" @keyup.enter.native="toQuery" /> </el-form-item> <el-form-item label="状态"> <el-select v-model="query.isPass" clearable size="small" style="width:150px;font-size:12px" placeholder="请选择状态" > <el-option v-for="(item, ind) in isPassOptions" :key="'jiejue' + ind" :label="item.label" :value="item.value" /> </el-select> </el-form-item> <el-form-item label="商户" > <el-select v-model="query.merId" clearable filterable size="small" style="width:150px;font-size:12px" placeholder="请选择商户" > <el-option v-for="(item, ind) in queryMersOptions" :key="'sh' + ind" :label="item.merchantName" :value="item.id" /> </el-select> </el-form-item> <el-form-item label="问题分类"> <el-select v-model="query.problemType" clearable size="small" style="width:150px;font-size:12px" placeholder="请选择问题分类" > <el-option v-for="item in problemTypes" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> <el-form-item label="处理方式"> <el-select v-model="query.dealingType" clearable size="small" style="width:150px;font-size:12px" placeholder="请选择处理方式" > <el-option v-for="item in dealingTypes" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> <el-form-item label="售后类型"> <el-select v-model="query.saleType" clearable size="small" style="width:150px;font-size:12px" placeholder="请选择售后类型" > <el-option v-for="item in AftersalesStatus" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> <el-form-item label="创建时间"> <el-date-picker v-model="query.addTime" :default-time="['00:00:00', '23:59:59']" type="datetimerange" :unlink-panels="true" range-separator=":" size="small" class="date-item" style="width:307px;font-size:12px" value-format="yyyy-MM-dd HH:mm:ss" start-placeholder="请选择开始时间" end-placeholder="请选择结束时间" /> </el-form-item> <el-form-item> <el-button class="filter-item" size="small" type="primary" icon="el-icon-search" @click="toQuery">查 询</el-button> <el-button plain class="filter-item" size="small" icon="el-icon-close" @click="toQuerys">清 空</el-button> </el-form-item> </el-form> <!-- 新增 --> <div style="width: 100%;"> <el-button v-if="permission.add" class="filter-item" size="small" type="primary" icon="el-icon-plus" @click="addList">新增</el-button> <el-button class="filter-item" size="small" type="primary" icon="el-icon-check" @click="batchReview">批量复核</el-button> <el-button v-if="permission.delete" class="filter-item" size="small" type="primary" icon="el-icon-close" @click="delList">批量删除</el-button> <el-button class="filter-item" size="small" type="primary" icon="el-icon-check" @click="submitList">批量提交</el-button> <el-button class="filter-item" size="small" type="primary" icon="el-icon-download" @click="exportXlsx">导出工单</el-button> <el-button class="filter-item" size="small" type="primary" icon="el-icon-download" @click="exportXlsxStatistics">导出统计</el-button> </div> </div> <!--表单组件--> <work-form ref="workFormForm" :is-add="isAdd" /> <deliver-good ref="deliverGoodForm" :is-add="isAdd" /> <!--表格渲染--> <div > <el-table v-loading="loading" :data="data" size="small" style="width: 100%;" :height="tableHeight" @selection-change="handleSelectionChange" :row-class-name="tableRowClassName" > <el-table-column type="selection" width="55"> </el-table-column> <!--<el-table-column prop="id" label="ID"/>--> <el-table-column prop="workOrderNum" label="客服工单编号" align="center" width="128"/> <el-table-column prop="orderId" label="订单号" align="center" width="180"/> <el-table-column prop="orderTime" label="订单日期" align="center" width="140"/> <el-table-column prop="saleType" label="售后类型" width="80" align="center"> <template slot-scope="scope"> <div> <div v-if="scope.row.saleType == 1" :type="'success'">退款</div> <div v-if="scope.row.saleType == 2" :type="'success'">退货退款</div> <div v-if="scope.row.saleType == 3" :type="'success'">换货</div> <div v-if="scope.row.saleType == 4" :type="'success'">补寄</div> <div v-if="scope.row.saleType == 5" :type="'success'">待发货退款</div> </div> </template> </el-table-column> <el-table-column prop="isTemp" label="售后状态" width="150" align="center"> <template slot-scope="scope"> {{analysisOrderStatus(scope.row.afterSaleType)}} </template> </el-table-column> <el-table-column prop="isPass" label="解决状态" width="80" align="center"> <template slot-scope="scope"> <div> <!-- <span>{{ scope.row.isPass==0?'未解决':scope.row.isPass==1?'部分解决':scope.row.isPass==2?'全部解决':scope.row.isPass==3?'已复核':'' }}</span> --> <el-tag v-if="scope.row.isPass == 0" :type="'danger'">未解决</el-tag> <el-tag v-else-if="scope.row.isPass == 1" :type="'warning'" >部分解决</el-tag > <el-tag v-else-if="scope.row.isPass == 2" :type="''" >全部解决</el-tag> <el-tag v-else-if="scope.row.isPass == 3" :type="'success'" >已复核</el-tag> </div> </template> </el-table-column> <el-table-column prop="isTemp" label="工单状态" width="80" align="center"> <template slot-scope="scope"> <div> <el-tag v-if="scope.row.isTemp == 1" :type="'warning'">暂存</el-tag> <el-tag v-else :type="'success'">已提交</el-tag> </div> </template> </el-table-column> <el-table-column prop="fromType" label="工单来源" width="80"> <template slot-scope="scope"> <span>{{ scope.row.fromType==1?'小程序':scope.row.fromType==2?'电话':scope.row.fromType==3?'客服评价':'' }}</span> </template> </el-table-column> <el-table-column label="订单来源" align="center" prop="orderSource"> <template slot-scope="scope"> <span v-if="scope.row.orderSource === '0'">陆海商城</span> <span v-if="scope.row.orderSource === '1'">福利商城</span> <span v-if="scope.row.orderSource === '3'">鲁西福礼</span> <span v-if="scope.row.orderSource === '2'">浪潮商城</span> </template> </el-table-column> <el-table-column prop="merName" label="所属商户" width="150" show-overflow-tooltip /> <el-table-column prop="payPrice" label="商品信息" width="320px" > <template slot-scope="scope"> <el-row :gutter="10" v-for="(item,index) in scope.row.detailList" :key="index"> <el-col :span="4" style="height: 46px; padding: 0; overflow: hidden;" v-if="item.image"> <img :src="item.image" :width="45" :height="45" /> </el-col> <el-col :span="20"> <div> <el-tag v-if="item.isCombination == '1'" @click="queryProductCombinationOrderDetail(item.orderCartId)" size="mini" effect="dark"><span style="cursor: pointer;">组</span></el-tag> <span style="border-bottom: 1px dashed #409eff;color: #409eff;cursor: pointer;padding-bottom: 3px;" @click="lookDetail(item.productId)" v-if="item.productId" > {{ item.productName }} </span> <span style="color: #409eff;padding-bottom: 3px;" v-if="!item.productId" > {{ item.productName }} </span> | {{ item.productNum }} </div> <div v-if="item.problemTypeName">问题分类:{{ item.problemTypeName}}</div> <div v-if="item.dealingTypeName">处理方式:{{ item.dealingTypeName}}</div> <div v-if="item.problemDesc">问题描述:{{ item.problemDesc }}</div> </el-col> </el-row> </template> </el-table-column> <el-table-column prop="payPrice" label="图片记录" width="370px" > <template slot-scope="scope"> <div v-if="scope.row.problemPhotoUrlList.length > 0"> <div v-for="item in scope.row.problemPhotoUrlList" :key="item"> <el-image style="width:85px;height:85px;float:left;margin-right:2px;" :src="item" :preview-src-list="scope.row.problemPhotoUrlList" fit="contain" :z-index="999" /> </div> </div> <!-- <img :src="" :preview-src-list="dialogUrl" @click="handlepic(scope.row.problemPhotoUrlList)" :width="85" :height="85" /> --> </template> </el-table-column> <el-table-column prop="linkUserName" label="提报人姓名" width="90" /> <el-table-column prop="linkUserPhone" label="提报人电话" width="100" /> <el-table-column prop="addUser" label="工单添加人" width="80" /> <el-table-column prop="addTime" label="创建时间" width="150"> <template slot-scope="scope"> <span>{{ parseTime(scope.row.addTime) }}</span> </template> </el-table-column> <el-table-column prop="passUser" label="解决人" width="90" /> <el-table-column label="解决时间" width="140" > <template slot-scope="scope"> <span>{{ parseTime(scope.row.passTime) }}</span> </template> </el-table-column> <el-table-column prop="reviewUser" label="复核人" width="90" /> <el-table-column label="复核时间" width="140" > <template slot-scope="scope"> <span>{{ parseTime(scope.row.reviewTime) }}</span> </template> </el-table-column> <el-table-column min-width="280" label="操作" align="center" fixed="right" v-if="permission.coupon_edit||permission.coupon_delete"> <template slot-scope="scope"> <el-link type="info" icon="el-icon-info" @click="detail(scope.row.id,1)" v-if="permission.detail && scope.row.saleType == null">详情</el-link> <el-link type="info" icon="el-icon-info" @click="checkDetail(scope.row)" v-if="permission.detail && scope.row.saleType != null">详情</el-link> <el-link title="修改" type="warning" icon="el-icon-edit" style="margin-left:5px" v-if="scope.row.isTemp == 1 && permission.edit" @click="detail(scope.row.id,2)">修改</el-link> <el-link type="primary" icon="el-icon-truck" @click="deliverGood(scope.row, scope.$index)" :underline="false" v-show="scope.row.isTemp == 0 && scope.row.isPass<2 && scope.row.isDeliveryEnd!='2'" v-if="permission.redelivery && scope.row.saleType == null" style="margin-left:5px">补发快递</el-link> <el-popover :ref="'pass'+scope.row.id" placement="top" width="180"> <p>确定本条工单已处理完成吗?</p> <div style="text-align: right; margin: 0"> <el-button size="mini" type="text" @click="$refs['pass'+scope.row.id].doClose()" >取消 </el-button> <el-button :loading="delLoading" type="primary" size="mini" @click="getWorkOut(scope.row.id)" >确定 </el-button> </div> <el-link slot="reference" type="primary" icon="el-icon-document-checked" :underline="false" v-show="scope.row.isTemp == 0 && scope.row.isPass<2" v-if="permission.workOut && scope.row.saleType == null" style="margin-left:5px">解决</el-link> </el-popover> <el-popover :ref="'review'+scope.row.id" placement="top" width="180"> <p>确定本条工单复核完成吗?</p> <div style="text-align: right; margin: 0"> <el-button size="mini" type="text" @click="$refs['review'+scope.row.id].doClose()" >取消 </el-button> <el-button :loading="delLoading" type="primary" size="mini" @click="getRecordList(scope.row.id)" >确定 </el-button> </div> <!-- <el-link title="复核" icon="el-icon-edit" type="warning" v-if="permission.recheck" style="text-decoration:none;margin-left:5px;" v-show="scope.row.isPass==2">复核</el-link> --> <!-- <el-link slot="reference" type="warning" icon="el-icon-edit" :underline="false" v-if="scope.row.isPass==2" style="text-decoration:none;margin-left:5px;">复核</el-link> --> <el-link slot="reference" type="warning" icon="el-icon-check" :underline="false" v-if="scope.row.isTemp == 0 && scope.row.isPass==2 && permission.recheck" style="margin-left:5px">复核</el-link> </el-popover> <el-popover :ref="scope.row.id" placement="top" width="180"> <p>确定删除本条数据吗?</p> <div style="text-align: right; margin: 0"> <el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()" >取消 </el-button> <el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)" >确定 </el-button> </div> <el-link slot="reference" type="danger" icon="el-icon-delete" :underline="false" v-if="scope.row.isTemp==1 && permission.delete" style="margin-left:5px">删除</el-link> </el-popover> <!-- <el-link title="处理工单" type="warning" icon="el-icon-edit" style="margin-left:5px" v-show="scope.row.isPass!=2" @click="detail(scope.row.id,2)">处理工单</el-link> --> <el-link title="工单记录" type="warning" icon="el-icon-tickets" style="margin-left:5px" v-if="permission.orderRecord" @click="gdrecord(scope.row.id,2)">工单记录</el-link> <el-link type="primary" icon="el-icon-chat-line-round" @click="sendmessage(scope.row, scope.$index)" v-if="scope.row.isTemp == 1 && scope.row.isSendSms == 0 && scope.row.orderSource == 2" :underline="false" style="margin-left:5px">发送短信</el-link> </template> </el-table-column> </el-table> </div> </div> <el-footer class="footer-contains"> <!--分页组件--> <el-pagination :total="total" :current-page="page + 1" style="margin-top: 8px;" layout="total, prev, pager, next, sizes" @size-change="sizeChange" @current-change="pageChange" /> </el-footer> <!-- 新增 --> <el-dialog :append-to-body="true" :close-on-click-modal="false" :before-close="cancel" :visible.sync="addDialog" title="新增客服工单" width="400px" > <el-form ref="form" :model="form" size="small" label-width="90px" v-loading="loading"> <el-row > <el-col :span="24"> <el-form-item label="订单号:" prop="orderId" :rules=" [{ required: true, message: '请输入订单号', trigger: 'blur',}]"> <input type="text" clearable size="small" v-model=" form.orderId " style="width:80%;"/> </el-form-item> </el-col> </el-row> <div class="dialog-footer"> <el-button :disabled="loading" type="primary" @click="doSubmit">确定</el-button> <el-button plain @click="cancel">关闭</el-button> </div> </el-form> </el-dialog> <work-order ref="workOrderFrom" ></work-order> <order-Record ref="orderRecord" ></order-Record> <product-detail ref="productDetailComp" :pshow.sync="aa"></product-detail> <sendmessage ref="sendmessage" ></sendmessage> <!--组合商品详情组件--> <groupDetail ref="groupDetail"></groupDetail> <detail ref="detail"></detail> </div> </template> <script> import sendmessage from './sendmessage.vue' import checkPermission from '@/utils/permission' import initData from '@/mixins/crud' import { del,delList,submitList,getAllInfo,getWorkOut,getOrderAllInfoByOid,reviewByIds,reviewById,exportData,exportStatistics } from '@/api/store/yxStoreWorkOrder' import workForm from './workForm' import deliverGood from './toDeliverGood' import { parseTime } from '@/utils/index' import { mapGetters } from "vuex"; import workOrder from "./form"; import orderRecord from "./orderRecord"; import { da } from 'date-fns/locale' import productDetail from "../../stock/warning/productDetail"; import { getAllMerchants } from "@/api/store/yxStoreProduct"; import { queryProductCombinationOrderDetail } from "@/api/store/yxStoreOrder"; import groupDetail from '@/views/shop/order/groupDetail.vue' import detail from "./index_detail"; import { dataCustom_to_sheetFormat, exportFile, mergeCell } from "@/utils/processFile"; // import xlsx from "xlsx"; import * as xlsx from 'xlsx-js-style'; import { saveAs } from 'file-saver'; export default { components: { workForm, deliverGood, workOrder, orderRecord, sendmessage, "product-detail": productDetail, groupDetail, detail }, mixins: [initData], data() { return { addDialog:false, delLoading: false, cids:[], cnames:'', query:{ "orderId":undefined, "fromType":undefined, "linkUserName":undefined, "addUser":undefined, "linkUserPhone":undefined, "isPass":undefined, "workOrderNum":undefined, "merId":undefined, "problemType":undefined, "dealingType":undefined, "saleType":undefined, }, queryTypeOptions: [ { key: "1", display_name: "小程序" }, { key: "2", display_name: "电话" }, { key: "3", display_name: "客服评价" } ], problemTypes:[ {label: '漏发', value: 1}, {label: '破损', value: 2}, {label: '错发', value: 3}, {label: '无物流信息', value: 4}, {label: '物流信息错误', value: 5}, {label: '临期产品', value: 6}, {label: '退货', value: 7}, {label: '商品与图片不符', value: 8}, {label: '其他', value: 9}, {label: '质量问题', value: 10}, {label: '待确认', value: -1} ], dealingTypes:[ {label: '补发', value: 1}, {label: '换货', value: 2}, {label: '退货', value: 3}, {label: '退货退款', value: 4}, {label: '仅退款', value: 5}, {label: '等待商户答复', value: 6}, {label: '待确认', value: -1} ], AftersalesStatus:[{label: '退款', value: 1},{label: '退货退款', value: 2},{label: '换货', value: 3},{label: '补寄', value: 4},{label: '待发货退款', value: 5}], isPassOptions: [ { value: "0", label: "未解决" }, { value: "1", label: "部分解决" }, { value: "2", label: "全部解决" }, { value: "3", label: "已复核" }], isAdd:false, workdialog:false, form:{ orderId:'' }, queryMersOptions: [], qustionList:[{ id:1, label:'漏发' },{ id:2, label:'破损' },{ id:3, label:'错发' },{ id:4, label:'无物流信息' },{ id:5, label:'物流信息错误' },{ id:6, label:'临期产品' },{ id:7, label:'退货' },{ id:8, label:'商品与图片不符' },{ id:10, label:'质量问题' },{ id:9, label:'其他' },{ id:-1, label:'待确认' }], orderStatus: [ { key: 0, value: '无售后' }, { key: 1, value: '用户取消售后申请' }, { key: 2, value: '超时自动取消售后申请' }, { key: 3, value: '售后完成' }, { key: 4, value: '赔付E卡' }, { key: 5, value: '待上门取件' }, { key: 6, value: '返品质检不通过' }, { key: 7, value: '待返品质检' }, { key: 8, value: '待用户提交返品物流单号' }, { key: 11, value: '退款待审核' }, { key: 12, value: '退款审核通过' }, { key: 13, value: '退款审核不通过' }, { key: 14, value: '退款补发成功' }, { key: 15, value: '退款成功' }, { key: 21, value: '退货退款待审核' }, { key: 22, value: '退货退款审核不通过' }, { key: 23, value: '待退款' }, { key: 24, value: '退货退款成功' }, { key: 31, value: '换货待审核' }, { key: 32, value: '换货审核不通过' }, { key: 33, value: '待生成换货订单' }, { key: 34, value: '换货成功' }, { key: 41, value: '补寄待审核' }, { key: 42, value: '补寄审核不通过' }, { key: 43, value: '补寄成功' } ], exportLoading:false, tableHeight:document.body.clientHeight - 360, aa:false, dialogVisible:false, dialogUrl:[], } }, created() { this.$nextTick(() => { this.init() }) this.getAllMers() }, computed: { ...mapGetters(["permission"]) }, filters:{ filterType(val){ console.log('val++',val) this.qustionList.forEach(item=>{ if(item.id==val){ return item.label } }) } }, mounted() { this.setTableHeight(); window.addEventListener('resize', this.setTableHeight); }, beforeDestroy() { window.removeEventListener('resize', this.setTableHeight); }, methods: { analysisOrderStatus(val) { const status = this.orderStatus.find(item => item.key == val); return status ? status.value : '未知状态'; }, /** 导出 */ // exportXlsx() { // let addTimeStart // let addTimeEnd // if(this.query.addTime != undefined && this.query.addTime.length>0){ // addTimeStart=this.query.addTime[0] // addTimeEnd=this.query.addTime[1] // }else{ // addTimeStart=null // addTimeEnd=null // } // let params = { // orderId:this.query.orderId, // fromType:this.query.fromType, // linkUserName:this.query.linkUserName, // addUser:this.query.addUser, // linkUserPhone:this.query.linkUserPhone, // isPass:this.query.isPass, // problemType:this.query.problemType, // dealingType:this.query.dealingType, // saleType:this.query.saleType, // orderSource:this.query.orderSource, // workOrderNum:this.query.workOrderNum, // isDel: 0, // addTimeStart:addTimeStart, // addTimeEnd:addTimeEnd, // } // const loading = this.$loading({ // lock: true, // text: '数据正在导出中...', // spinner: 'el-icon-loading', // background: 'rgba(0, 0, 0, 0.7)' // }); // this.exportLoading = true; // exportData(params).then((res) => { // this.exportLoading = false; // if (res.data.success) { // loading.close(); // let flag = null; // let arr = []; // res.data.data.forEach((item, index) => { // if (flag != item.工单编号) { // flag = item.工单编号; // } else { // if (!arr.find((item1) => item1.name == item.工单编号)) { // let len = res.data.data.filter((item1) => item1.工单编号 == item.工单编号).length; // arr.push({ name: item.工单编号, index, len }); // } // } // }); // let header = {}; // header = { // 工单编号: "工单编号", // 订单号: "订单号", // 订单日期: "订单日期", // 状态: "状态", // 订单来源: "订单来源", // 领导工单: '领导工单', // 商户名称: "商户名称", // 商品名称: "商品名称", // 商品编码: "商品编码", // 问题类型: "问题类型", // 处理方式: "处理方式", // 问题描述: "问题描述", // 快递公司: "快递公司", // 快递单号: "快递单号", // 提报人: "提报人", // 提报人联系方式: "提报人联系方式", // 售后收货地址: "售后收货地址", // 创建时间: "创建时间", // 解决人:'解决人', // 图片链接:'图片链接', // }; // exportFile({ // titleStartRow: 0, // titleStartCol: 0, // startRow: 0, // data: res?.data?.data, // header, // fileName: "客服工单", // Func: (ws) => { // arr.forEach((item) => { // mergeCell( // ws, // `A${item.index + 1}`, // `A${item.index + item.len}` // ); // mergeCell( // ws, // `B${item.index + 1}`, // `B${item.index + item.len}` // ); // }); // return ws; // }, // }); // }else{ // loading.close(); // } // }) // .catch((err) => { // loading.close(); // this.exportLoading = false; // }); // }, exportXlsx() { let addTimeStart; let addTimeEnd; if (this.query.addTime && this.query.addTime.length > 0) { addTimeStart = this.query.addTime[0]; addTimeEnd = this.query.addTime[1]; } else { addTimeStart = null; addTimeEnd = null; } let params = { orderId: this.query.orderId, fromType: this.query.fromType, linkUserName: this.query.linkUserName, addUser: this.query.addUser, linkUserPhone: this.query.linkUserPhone, isPass: this.query.isPass, problemType: this.query.problemType, dealingType: this.query.dealingType, saleType: this.query.saleType, orderSource: this.query.orderSource, workOrderNum: this.query.workOrderNum, isDel: 0, addTimeStart, addTimeEnd, }; const loading = this.$loading({ lock: true, text: '数据正在导出中...', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.7)' }); this.exportLoading = true; exportData(params).then((res) => { this.exportLoading = false; if (res.data.success) { loading.close(); // 定义表头 let header = { 工单编号: "工单编号", 订单号: "订单号", 订单日期: "订单日期", 状态: "状态", 订单来源: "订单来源", 领导工单: "领导工单", 商户名称: "商户名称", 商品名称: "商品名称", 商品编码: "商品编码", 问题类型: "问题类型", 处理方式: "处理方式", 问题描述: "问题描述", 快递公司: "快递公司", 快递单号: "快递单号", 提报人: "提报人", 提报人联系方式: "提报人联系方式", 售后收货地址: "售后收货地址", 创建时间: "创建时间", 解决人: "解决人", 用户上传凭证: "用户上传凭证" }; // 使用 xlsx.utils 创建空工作表 const ws = {}; const wb = xlsx.utils.book_new(); // 表头行 const headerRow = Object.values(header); xlsx.utils.sheet_add_aoa(ws, [headerRow], { origin: "A1" }); // 图片插入准备 const imagePromises = []; const imageInfoList = []; // 每行数据 + 图片处理 res.data.data.forEach((item, rowIndex) => { const rowData = [ item.工单编号, item.订单号, item.订单日期, item.状态, item.订单来源, item.领导工单, item.商户名称, item.商品名称, item.商品编码, item.问题类型, item.处理方式, item.问题描述, item.快递公司, item.快递单号, item.提报人, item.提报人联系方式, item.售后收货地址, item.创建时间, item.解决人 ]; // 插入数据行 xlsx.utils.sheet_add_aoa(ws, [rowData], { origin: `A${rowIndex + 2}` }); // 图片插入 const imageUrl = item['用户上传凭证'][0]; console.log(imageUrl) if (imageUrl) { const imagePromise = fetch(imageUrl) .then(res => res.arrayBuffer()) .then(buffer => { const imageType = imageUrl.split('.').pop().toLowerCase(); const ext = imageType === 'jpg' || imageType === 'jpeg' ? 'jpeg' : imageType; const image = { image: buffer, extension: ext, }; imageInfoList.push({ image, position: `T${rowIndex + 2}`, // 插入到 T 列 }); }); imagePromises.push(imagePromise); } }); console.log(imagePromises) // 等待所有图片加载完成 Promise.all(imagePromises).then(() => { // 插入图片 xlsx.utils.sheet_add_img(ws, 0, imageInfoList); // 添加工作表到工作簿 xlsx.utils.book_append_sheet(wb, ws, "客服工单"); // 导出文件 xlsx.write(wb, { bookType: 'xlsx', type: 'binary', cellStyles: true }); // 使用 FileSaver.js 保存文件 xlsx.writeFile(wb, "客服工单.xlsx"); }); } else { loading.close(); this.$message.error(res.data.message || '导出失败'); } }).catch((err) => { loading.close(); this.exportLoading = false; this.$message.error('导出过程中发生错误'); console.error('导出错误:', err); }); }, checkDetail(row) { let _this = this.$refs.detail getAllInfo(row.id).then(res => { let data = res.data.data _this.form = data _this.form.merchantName = row.merchantName _this.form.merchantPhone = row.merchantPhone; let merchantAddressId = data.merchantAddressId if(merchantAddressId){ _this.queryMerAddressById({id:merchantAddressId}) } _this.dialog = true; }).catch(err => { }) }, queryProductCombinationOrderDetail(id){ queryProductCombinationOrderDetail(id).then((res)=>{ //主商品信息 let mainProduct = res.data.data.productInfo //子商品信息 let subProduct = res.data.data.combinationList this.$refs.groupDetail.form = mainProduct this.$refs.groupDetail.form.image = mainProduct.image.split(',') this.$refs.groupDetail.form.sliderImage = mainProduct.sliderImage.split(',') this.$refs.groupDetail.shopInfoData = subProduct this.$refs.groupDetail.dialog = true }) }, exportXlsxStatistics(){ let time = this.query.addTime let addTimeStart let addTimeEnd if(this.query.addTime != undefined && this.query.addTime.length>0){ addTimeStart=time[0] addTimeEnd=time[1] }else{ addTimeStart=null addTimeEnd=null } let params = { orderId:this.query.orderId, fromType:this.query.fromType, linkUserName:this.query.linkUserName, addUser:this.query.addUser, linkUserPhone:this.query.linkUserPhone, isPass:this.query.isPass, problemType:this.query.problemType, dealingType:this.query.dealingType, saleType:this.query.saleType, workOrderNum:this.query.workOrderNum, isDel: 0, addTimeStart:addTimeStart, addTimeEnd:addTimeEnd, } this.exportLoading = true; exportStatistics(params).then((res) => { this.exportLoading = false; if (res.data.success) { let flag = null; let arr = []; res.data.data.forEach((item, index) => { if (flag != item.id) { flag = item.id; } else { if (!arr.find((item1) => item1.name == item.id)) { let len = res.data.data.filter((item1) => item1.id == item.id).length; arr.push({ name: item.id, index, len }); } } }); let header = {}; header = { 商户名称: "商户名称", 质量问题: "质量问题", 商品与图片不符: "商品与图片不符", 无物流信息: "无物流信息", 物流信息错误: "物流信息错误", 临期产品: "临期产品", 漏发: "漏发", 破损: "破损", 退货: "退货", 错发: "错发", 其他: "其他", }; exportFile({ titleStartRow: 0, titleStartCol: 0, startRow: 0, data: res?.data?.data, header, fileName: "导出统计", Func: (ws) => { // arr.forEach((item) => { // mergeCell( // ws, // `A${item.index + 1}`, // `A${item.index + item.len}` // ); // }); return ws; }, }); } }) .catch((err) => { this.exportLoading = false; }); }, getAllMers() { getAllMerchants().then(({ data }) => { if (data && data.code === 200) { this.queryMersOptions = data.data; } else { this.$message({ message: data.msg, type: "error" }); this.queryMersOptions = []; } }); }, getRecordList(id){ this.delLoading = true reviewById(id).then(res => { console.log(res) // if(res.data.code==200){ // this.init() // this.$notify({ // title: res.data.msg, // type: 'success', // duration: 2500 // }) // } this.delLoading = false this.$refs['review'+id].doClose() this.dleChangePage() this.init() this.$notify({ title: '复核成功', type: 'success', duration: 2500 }) }).catch(err => { this.delLoading = false this.$refs['review'+id].doClose() console.log(err) }) }, lookDetail(id) { this.aa = true; let that=this this.$nextTick(() => { that.$refs.productDetailComp.getProductDetail(id); }) }, gdrecord(id){ let _this = this.$refs.orderRecord; _this.query.workOrderId=id this.$nextTick(() => { _this.init() }) _this.recordDialog=true; }, batchReview(){ if(this.cids.length<=0){ this.$notify({ title: '请至少选择一条数据!', type: 'warning', duration: 2500 }) return false } this.$confirm("确定所选工单复核通过吗?", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" }) .then(() => { reviewByIds(this.cids).then(res => { this.delLoading = false this.dleChangePage() this.init() this.$notify({ title: '复核成功', type: 'success', duration: 2500 }) }).catch(err => { this.delLoading = false console.log(err) }) }) .catch(() => {}); }, setTableHeight() { // console.log(window.innerWidth); // 1328 this.tableHeight = window.innerHeight - 120; // 假设顶部有其他内容占用100px }, cancel() { this.addDialog = false; }, addList(){ this.form.orderId=""; this.addDialog=true; }, doSubmit(){ let _thisAdd = this.$refs.workOrderFrom,orderObj; this.$refs['form'].validate(valid => { if (valid) { getOrderAllInfoByOid(this.form.orderId).then(res => { // console.log('res+++',res) if(res.data.code==200){ this.addDialog=false; orderObj=res.data.data const odeDetailList=JSON.parse(JSON.stringify(orderObj.detailList)) // odeDetailList.map(item => { // item.orderCartId=item.id // }) _thisAdd.goodsList = odeDetailList.map(item => { item.orderCartId=item.id item.maxProductNum = item.productNum; item.previewSrcList = []; return item; }); // console.log(odeDetailList) _thisAdd.form = { id: orderObj.id, //工单ID oid: orderObj.id, //工单ID orderId: orderObj.orderId, //订单编号 fromType:"", rmk:"", linkUserName:orderObj.linkUserName, addUser:orderObj.addUser, linkUserPhone:orderObj.linkUserPhone, linkUserAddress:orderObj.linkUserAddress, detailList:[], }; _thisAdd.workdialog = true; } }) } }) }, deliverGood(row){ const _this = this.$refs.deliverGoodForm; _this.resetForm(); _this.listId=row.id; _this.getMore(); _this.goodDialog = true; _this.loading = false; }, sendmessage(row){ this.$refs.sendmessage.form.linkUserPhone = row.linkUserPhone; this.$refs.sendmessage.form.id = row.id; this.$refs.sendmessage.sendDialog = true; }, //解决 getWorkOut(id){ this.delLoading = true getWorkOut(id).then(res => { this.delLoading = false this.$refs['pass'+id].doClose() this.dleChangePage() this.init() this.$notify({ title: '解决成功', type: 'success', duration: 2500 }) }).catch(err => { this.delLoading = false this.$refs['pass'+id].doClose() console.log(err) }) }, //批量删除 delList(){ if(this.cids.length<=0){ this.$notify({ title: '请至少选择一条数据', type: 'warning', duration: 2500 }) return false } this.$confirm("确定删除所选工单吗?", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" }) .then(() => { delList(this.cids).then(res => { this.delLoading = false // this.$refs[id].doClose() this.dleChangePage() this.init() this.$notify({ title: '删除成功', type: 'success', duration: 2500 }) }).catch(err => { this.delLoading = false console.log(err) }) }) .catch(() => {}); }, //批量提交 submitList(){ if(this.cids.length<=0){ this.$notify({ title: '请至少选择一条数据', type: 'warning', duration: 2500 }) return false } this.$confirm("确定提交所选工单吗?", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" }).then(() => { submitList(this.cids).then(res => { this.delLoading = false // this.$refs[id].doClose() this.dleChangePage() this.init() this.$notify({ title: '提交成功', type: 'success', duration: 2500 }) }).catch(err => { this.delLoading = false console.log(err) }) }) .catch(() => {}); }, parseTime, checkPermission, handleSelectionChange(val){ let delIds = []; // this.cnames = '' val.forEach(x=>{ delIds.push(x.id) this.cnames += x.title + ',' }) console.log(delIds) this.cids=delIds; console.log(this.cids) // console.log(this.cnames) }, beforeInit() { this.url = 'api/lh-yshop-system/yxWorkOrder/list' const sort = 'id,desc' // console.log(this.query.addTime) // let time = this.query.addTime // let addTimeStart = '' // let addTimeEnd = '' // if(this.query.addTime != undefined && this.query.addTime.length>0){ // addTimeStart=time[0] // addTimeEnd=time[1] // }else{ // addTimeStart="" // addTimeEnd="" // } this.params = { addTime: this.query.addTime, current: this.page + 1, orderId:this.query.orderId, fromType:this.query.fromType, linkUserName:this.query.linkUserName, addUser:this.query.addUser, linkUserPhone:this.query.linkUserPhone, isPass:this.query.isPass, problemType:this.query.problemType, dealingType:this.query.dealingType, saleType:this.query.saleType, workOrderNum:this.query.workOrderNum, size: this.size, isDel: 0, } return true }, toQuerys() { delete this.query.fromType; delete this.query.isPass; (this.query.workOrderNum = ""), (this.query.orderId = ""), (this.query.linkUserName = ""), (this.query.addUser = ""), (this.query.linkUserPhone = ""), (this.query.merId = ""), (this.query.problemType = ""), (this.query.dealingType = ""), (this.query.addTime = []), (this.query.saleType = ""), this.$nextTick(() => { this.init(); }); }, subDelete(id) { this.delLoading = true del(id).then(res => { this.delLoading = false this.$refs[id].doClose() this.dleChangePage() this.init() this.$notify({ title: '删除成功', type: 'success', duration: 2500 }) }).catch(err => { this.delLoading = false this.$refs[id].doClose() console.log(err.response.data.message) }) }, detail(rowId,val) { this.isAdd = true const _this = this.$refs.workFormForm,that=this _this.listId=rowId; if(val==1){ _this.formFlag=true }else if(val==2){ _this.formFlag=false } getAllInfo(rowId).then(res => { let data=res.data.data const detailList = JSON.parse(JSON.stringify(data.detailList)); let formDetailList = detailList.map((item,ind)=>{ item.dealingType=Number(item.dealingType); item.problemType=Number(item.problemType); item.isPass=Number(item.isPass) console.log('dizhi +++',item.problemPhotoUrl) if(item.problemPhotoUrl!=''){ let ary = item.problemPhotoUrl.split(',') let previewSrcList = []; // _this.form.detailList[ind].problemPhotoUrl=ary // that.$set('_this.previewSrcList[ind]','srcList','') // _this.previewSrcList.push({srcList:[]}) ary.forEach((image,k)=>{ // _this.previewSrcList[ind].srcList.push({'url':item}) if(image) { previewSrcList.push({'url':image}) } }) item.previewSrcList = previewSrcList }else{ item.previewSrcList=[] // _this.previewSrcList.push({srcList:[]}) // _this.previewSrcList[ind].srcList.push('[]') } // console.log(' _this.previewSrcList', _this.previewSrcList) return item; }) _this.previewSrcList=[] _this.form={ id:data.id, merId:data.merId, orderId:data.orderId, orderSource: data.orderSource, workOrderNum:data.workOrderNum, linkUserName:data.linkUserName, addUser:data.addUser, linkUserPhone:data.linkUserPhone, linkUserAddress:data.linkUserAddress, orderAddTime:data.orderAddTime, orderPayTime:data.orderPayTime, isMultAdress:Number(data.isMultAdress), isDeliveryEnd:Number(data.isDeliveryEnd), isPass:Number(data.isPass), dealingType:Number(data.dealingType), problemType:Number(data.problemType), isTemp: data.isTemp, rmk:data.rmk, addTime:data.addTime, detailList:formDetailList } _this.workdialog = true _this.handelChage() }).catch(err => { // console.log(err.response.data.message) }) }, edit(data) { this.isAdd = false const _this = this.$refs.workFormForm _this.form = { id: data.id, title: data.title, integral: data.integral, couponPrice: data.couponPrice, useMinPrice: data.useMinPrice, couponTime: data.couponTime, sort: data.sort, isTemp: data.isTemp, addTime: data.addTime, isDel: data.isDel } _this.dialog = true }, /** 设置行的样式 */ tableRowClassName({ row, rowIndex }) { if (row.isLeader === "1" && (row.isPass == 0 || row.isPass == 1)) { return "leader-row"; } return ""; }, } } </script> <style lang="scss" scoped> // ::v-deep .el-input { // position: relative; // font-size: 12px; // line-height: normal; // } // ::v-deep .el-range-editor--small .el-range-input { // font-size: 12px; // } // .el-col input{border:#C0C4CC solid 1px !important; border-radius:3px !important;height:32px !important;width:100%;} // ::v-deep .el-form-item__label{font-size:12px !important; font-weight:500 !important;} // .dialog-footer { display: flex; justify-content:flex-end;} ::v-deep .el-form-item{ margin-bottom: 0px; } .el-table ::v-deep .leader-row { background: #e6a23c; } .app-container .app-container { padding: 0; } ::v-deep .app-container { padding-top: 10px; } ::v-deep .el-select { .el-input { .el-icon-circle-close { line-height: 30px !important; } } } .el-table ::v-deep .leader-row { background: #e6a23c; } .el-col ::v-deep { margin-bottom: 0; } ::v-deep .el-button--mini{ padding: 7px 8px; } </style>
07-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值