Просмотр исходного кода

Merge branch 'hotfix/v4.10.0.4' of https://jygit.jydev.jianyu360.cn/qmx/jy into hotfix/v4.10.0.4

wangshan 5 месяцев назад
Родитель
Сommit
9b9e963c18

+ 35 - 7
src/jfw/modules/subscribepay/src/service/invoice.go

@@ -524,9 +524,12 @@ func (this *Invoice) NewInvoiceShow() {
 	stype := this.GetString("stype")
 	code := this.GetString("code")
 	data := make(map[string]interface{})
+	var sData map[string]interface{}
 	switch stype {
 	case "1": //订单回显金额
-		data["pay_money"] = ResidueMoney(code)
+		payMoney, phone := ResidueMoney(code)
+		data["pay_money"] = payMoney
+		sData = ShowData(phone)
 	case "2": //发票信息回显
 		invoice := util.Mysql.FindOne("invoice", map[string]interface{}{"id": encrypt.SE.Decode4Hex(code)}, "id,only_Identifying,order_code,invoice_order_code,invoice_money,remark,invoice_type,invoice_content,invoice_variety,company_name,phone,mail,taxpayer_identnum,invoice_money,invoice_order_money,company_address,bank_name,recipient,delivery_address,bank_account,company_phone", "")
 		if invoice != nil {
@@ -538,6 +541,7 @@ func (this *Invoice) NewInvoiceShow() {
 		}
 		data["invoice"] = invoice
 	}
+	data["showData"] = sData
 	this.ServeJson(map[string]interface{}{
 		"data": data,
 	})
@@ -1522,6 +1526,10 @@ func (this *Invoice) InvoiceSubmit() {
 		this.ServeJson(NewResult("", errors.New("发票抬头有误")))
 		return
 	}
+	if len([]rune(this.GetString("company_address"))) > 55 {
+		this.ServeJson(NewResult("", errors.New("单位地址过长")))
+		return
+	}
 	now := time.Now()
 	again, _ := this.GetInteger("again")                                                //是否是失败重新开票 0 首次提交  1 再此提交
 	oldOnlyIdentifying := encrypt.SE.DecodeString(this.GetString("oldOnlyIdentifying")) //最后一次失败的发票信息唯一标识
@@ -1680,7 +1688,8 @@ func AdminOpenInvoice(onlyIdentifying, invoiceMoney, operator string, data map[s
 	}
 	//提交时订单金额再做一次校验
 	for orderCode, money := range orderMap {
-		if ResidueMoney(orderCode) < qutil.Int64All(money) {
+		payMoney, _ := ResidueMoney(orderCode)
+		if payMoney < qutil.Int64All(money) {
 			return errors.New("该订单发票信息已经提交过申请")
 		}
 	}
@@ -1776,13 +1785,23 @@ func (this *Invoice) InvoiceQuery() {
 		orderArr = append(orderArr, invoiceMoneyArr[0])
 		money += qutil.Int64All(invoiceMoneyArr[1])
 	}
+	var sData map[string]interface{}
 	invoiceOne := util.Mysql.FindOne("invoice", map[string]interface{}{
 		"only_Identifying": onlyIdentifying,
 	}, "id,invoice_changed,order_code, invoice_order_code,bank_account,invoice_code, create_time,invoice_number,company_phone,company_name, phone, mail,company_phone, invoice_type, invoice_content, url, invoice_status, invoice_serialnum, taxpayer_identnum,operator, operable_time, invoicing_entity, remark, invoice_variety, logistics_code, company_address, bank_name, recipient, delivery_address,only_Identifying", " create_time   DESC")
 	companyName := ""
 	if invoiceOne == nil {
 		//查询公司名称
-		querySQL := fmt.Sprintf("select company_name  from   dataexport_order  where order_code  in  (%s)   and  company_name!=''   ORDER BY  create_time   DESC LIMIT 1", fmt.Sprintf("\"%s\"", strings.Join(orderArr, "\",\"")))
+		if len(orderArr) > 0 {
+			//回显内容
+			orderMap := util.Mysql.FindOne("dataexport_order", map[string]interface{}{
+				"order_code": orderArr[0],
+			}, "user_phone", "")
+			if orderMap != nil && len(*orderMap) > 0 {
+				sData = ShowData(qutil.ObjToString((*orderMap)["user_phone"]))
+			}
+		}
+		querySQL := fmt.Sprintf("select company_name,user_phone  from   dataexport_order  where order_code  in  (%s)   and  company_name!=''   ORDER BY  create_time   DESC LIMIT 1", fmt.Sprintf("\"%s\"", strings.Join(orderArr, "\",\"")))
 		orderArr := util.Mysql.SelectBySql(querySQL)
 		if orderArr != nil && len(*orderArr) > 0 {
 			companyName = qutil.ObjToString((*orderArr)[0]["company_name"])
@@ -1818,10 +1837,19 @@ func (this *Invoice) InvoiceQuery() {
 		"invoice":      &invoiceOne,
 		"operator":     operator,
 		"company_name": companyName,
+		"showData":     sData, //回显近期信息
 		"isFollowWx":   1,
 	}, nil))
 }
 
+func ShowData(phone string) map[string]interface{} {
+	data := util.Mysql.SelectBySql(fmt.Sprintf(`SELECT company_name,phone,company_phone,mail,invoice_variety,invoice_content,invoice_type,company_address,bank_name,bank_account,remark,taxpayer_identnum FROM invoice WHERE phone = '%s' ORDER BY create_time desc LIMIT 1`, phone))
+	if data != nil && len(*data) > 0 {
+		return (*data)[0]
+	}
+	return nil
+}
+
 // GetUserId 获取用户id从订单中
 func GetUserId(orderCode string) (userId string) {
 	rs := util.Mysql.SelectBySql(fmt.Sprintf("select user_id from %s where order_code=?", "dataexport_order"), orderCode)
@@ -1928,14 +1956,14 @@ func InvoicePrice(orderData map[string]interface{}) int64 {
 }
 
 // 订单剩余金额查询
-func ResidueMoney(orderCode string) int64 {
+func ResidueMoney(orderCode string) (int64, string) {
 	residueMoney := int64(0)
 	//订单信息查询
-	orderData := util.Mysql.SelectBySql("select  pay_money,applybill_status from  dataexport_order  where  order_code =?", orderCode)
+	orderData := util.Mysql.SelectBySql("select  pay_money,applybill_status,user_phone from  dataexport_order  where  order_code =?", orderCode)
 	if len(*orderData) == 0 || orderData == nil {
-		return residueMoney
+		return residueMoney, ""
 	}
-	return InvoicePrice((*orderData)[0])
+	return InvoicePrice((*orderData)[0]), qutil.InterfaceToStr((*orderData)[0]["user_phone"])
 
 	//发票信息查询
 	//invoiceData := util.Mysql.SelectBySql("select invoice_status,sum(invoice_order_money) as  money  from  invoice where  order_code=?  and  invoice_status>=0  GROUP BY  invoice_status", orderCode)

+ 11 - 3
src/web/staticres/common-module/pc-dialog/js/leave-info-dialog.js

@@ -510,7 +510,13 @@ var vm = new Vue({
           subtitle: '请留下您的需求指引,以便我们能为您提供更好的服务',
           desc: '咨询服务落地页-获取更多专属服务',
           oneRow: true
-        }
+        },
+        'pc_DataExportFilter_IndustryFields': {
+          headerUrl: '/common-module/pc-dialog/image/title/custom-data-title-text.png',
+          subtitle: '请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+          desc: '数据自助导出-条件筛选-数据规格-申请数据定制行业字段-pc',
+          oneRow: true
+        },
       }
     }
   },
@@ -566,6 +572,7 @@ var vm = new Vue({
         case 'pc_supermarket_details_buy': {
           return '已收到您提交的购买申请,我们的数据经理会尽快联系您~'
         }
+        case 'pc_DataExportFilter_IndustryFields':
         case 'pc_DataSupermarket_IndustryFields':
         case 'pc_supermarket_details_IndustryFields':
         case 'pc_data_custom_data':
@@ -636,7 +643,8 @@ var vm = new Vue({
         case 'pc_supermarket_details_AnalysisCase':
         case 'pc_market_ApplicationScenario': 
         case 'pc_supermarket_details_IndustryFields':
-        case 'pc_DataSupermarket_IndustryFields': {
+        case 'pc_DataSupermarket_IndustryFields':
+        case'pc_DataExportFilter_IndustryFields': {
           this.hideModule(['mail', 'companyType', 'job'])
           break;
         }
@@ -918,7 +926,7 @@ var vm = new Vue({
       this.form.job = ''
       this.form.otherJob = ''
       this.form.code = ''
-      var needExportSource = ['structedData', 'pc_data_custom_export']
+      var needExportSource = ['structedData', 'pc_data_custom_export','pc_data_custom_data']
       if (needExportSource.indexOf(this.source) > -1) {
         this.showForm = false
         this.showExport = true

+ 73 - 3
src/web/staticres/common-module/perfect-info/js/perfect-info.js

@@ -82,6 +82,16 @@ var titleMap = {
   app_supermarket_details_AnalysisCase:'免费下载行业案例',
   wx_supermarket_details_AnalysisCase:'免费下载行业案例',
   h5_supermarket_details_AnalysisCase:'免费下载行业案例',
+    // 字段包说明申请数据定制
+  app_DataExportFilter_IndustryFields:'量身定制专属的数据解决方案',
+  wx_DataExportFilter_IndustryFields:'量身定制专属的数据解决方案',
+  h5_DataExportFilter_IndustryFields:'量身定制专属的数据解决方案',
+  app_DataExportPayment_IndustryFields:'量身定制专属的数据解决方案',
+  wx_DataExportPayment_IndustryFields:'量身定制专属的数据解决方案',
+  h5_DataExportPayment_IndustryFields:'量身定制专属的数据解决方案',
+  app_dataPack_IndustryFields:'量身定制专属的数据解决方案',
+  wx_dataPack_IndustryFields:'量身定制专属的数据解决方案',
+  h5_dataPack_IndustryFields:'量身定制专属的数据解决方案',
   // 标书制作
   bid_document_Introduction_page: '完善信息',
   // 标书制作-详情页
@@ -338,6 +348,16 @@ var tipMap = {
   app_supermarket_details_IndustryFields:'请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
   wx_supermarket_details_IndustryFields:'请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
   h5_supermarket_details_IndustryFields:'请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  // 字段包申请数据定制
+  app_DataExportFilter_IndustryFields:'请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  wx_DataExportFilter_IndustryFields:'请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  h5_DataExportFilter_IndustryFields:'请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  app_DataExportPayment_IndustryFields:'请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  wx_DataExportPayment_IndustryFields:'请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  h5_DataExportPayment_IndustryFields:'请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  app_dataPack_IndustryFields:'请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  wx_dataPack_IndustryFields:'请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  h5_dataPack_IndustryFields:'请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
   //
   app_supermarket_details_AnalysisCase:'请留下您的联系方式,免费获取领域客户应用案例。如有其他业务需求请联系客服:<a onclick="appcallPhone()" class="tips_tel">400-108-6670</a>',
   wx_supermarket_details_AnalysisCase:'请留下您的联系方式,免费获取领域客户应用案例。如有其他业务需求请联系客服:<a href="tel:400-108-6670" class="tips_tel">400-108-6670</a>',
@@ -492,6 +512,16 @@ var sourceDescMap = {
   app_supermarket_details_customization: '数据超市详情-申请数据定制',
   wx_supermarket_details_customization: '数据超市详情-申请数据定制',
   h5_supermarket_details_customization:'数据超市详情-申请数据定制',
+  // 字段包申请数据定制
+  app_DataExportFilter_IndustryFields:'数据自助导出-条件筛选-字段包说明-申请数据定制行业字段-app',
+  wx_DataExportFilter_IndustryFields:'数据自助导出-条件筛选-字段包说明-申请数据定制行业字段-wx',
+  h5_DataExportFilter_IndustryFields:'数据自助导出-条件筛选-字段包说明-申请数据定制行业字段-h5',
+  app_DataExportPayment_IndustryFields:'数据自助导出-支付订单-字段包说明-申请数据定制行业字段-app',
+  wx_DataExportPayment_IndustryFields:'数据自助导出-支付订单-字段包说明-申请数据定制行业字段-wx',
+  h5_DataExportPayment_IndustryFields:'数据自助导出-支付订单-字段包说明-申请数据定制行业字段-h5',
+  app_dataPack_IndustryFields:'充值数据流量包-字段包说明-申请数据定制行业字段-app',
+  wx_dataPack_IndustryFields:'充值数据流量包-字段包说明-申请数据定制行业字段-wx',
+  h5_dataPack_IndustryFields:'充值数据流量包-字段包说明-申请数据定制行业字段-h5',
   // 标讯详情查看原文
   app_article_original_one:article_original_one_sourceDesc,
   h5_article_original_one:article_original_one_sourceDesc,
@@ -1000,7 +1030,17 @@ var vNode = {
           }
           this.moduleShow.position = true
           // 咨询服务落地页
-          let data_requirement_name_desc_change = ['app_consult_report','wx_consult_report','h5_consult_report','app_consult_exclusiv_more','wx_consult_exclusiv_more','h5_consult_exclusiv_more']
+          let data_requirement_name_desc_change = ['app_consult_report','wx_consult_report','h5_consult_report','app_consult_exclusiv_more','wx_consult_exclusiv_more','h5_consult_exclusiv_more',
+            //字段报数据定制展示数据需求输入框
+            'app_DataExportFilter_IndustryFields',
+            'wx_DataExportFilter_IndustryFields',  
+            'h5_DataExportFilter_IndustryFields',
+            'app_DataExportPayment_IndustryFields',
+            'wx_DataExportPayment_IndustryFields',
+            'h5_DataExportPayment_IndustryFields',
+            'app_dataPack_IndustryFields',
+            'wx_dataPack_IndustryFields',
+            'h5_dataPack_IndustryFields']
           if(source?.toLowerCase().indexOf('supermarket') > -1 || source?.toLowerCase().indexOf('dataself') > -1 || data_requirement_name_desc_change.includes(source)){
             this.moduleShow.data_requirement = true
             this.moduleShow.email = true
@@ -1112,6 +1152,16 @@ var vNode = {
         case 'app_Dataself_entmore_customization':
         case 'wx_Dataself_entmore_customization':
         case 'h5_Dataself_entmore_customization':
+          // 字段包数据定制
+        case 'app_DataExportFilter_IndustryFields':
+        case 'wx_DataExportFilter_IndustryFields':
+        case 'h5_DataExportFilter_IndustryFields':
+        case 'app_DataExportPayment_IndustryFields':
+        case 'wx_DataExportPayment_IndustryFields':
+        case 'h5_DataExportPayment_IndustryFields':
+        case 'app_dataPack_IndustryFields':
+        case 'wx_dataPack_IndustryFields':
+        case 'h5_dataPack_IndustryFields':
         {
           this.hideLabel(['email'])
           break
@@ -1793,7 +1843,17 @@ var vNode = {
                 case 'h5_Dataself_buyermore_customization':
                 case 'app_Dataself_entmore_customization':
                 case 'wx_Dataself_entmore_customization':
-                case 'h5_Dataself_entmore_customization':{
+                case 'h5_Dataself_entmore_customization':
+                // 字段包数据定制
+                case 'app_DataExportFilter_IndustryFields':
+                case 'wx_DataExportFilter_IndustryFields':
+                case 'h5_DataExportFilter_IndustryFields':
+                case 'app_DataExportPayment_IndustryFields':
+                case 'wx_DataExportPayment_IndustryFields':
+                case 'h5_DataExportPayment_IndustryFields':
+                case 'app_dataPack_IndustryFields':
+                case 'wx_dataPack_IndustryFields':
+                case 'h5_dataPack_IndustryFields':  {
                   _this.showMessage('已收到您提交的数据定制申请,我们的数据经理会尽快联系您~', '我知道了', function () {
                     history.back()
                   },'提交成功')
@@ -2140,7 +2200,17 @@ var vNode = {
       'h5_consult_report',
       'app_consult_exclusiv_more',
       'wx_consult_exclusiv_more',
-      'h5_consult_exclusiv_more'
+      'h5_consult_exclusiv_more',
+        // 字段包数据定制
+      'app_DataExportFilter_IndustryFields',
+      'wx_DataExportFilter_IndustryFields',  
+      'h5_DataExportFilter_IndustryFields',
+      'app_DataExportPayment_IndustryFields',
+      'wx_DataExportPayment_IndustryFields',
+      'h5_DataExportPayment_IndustryFields',
+      'app_dataPack_IndustryFields',
+      'wx_dataPack_IndustryFields',
+      'h5_dataPack_IndustryFields'
       ]
       if(notit_group_list.includes(source)){
         this.notit_group = true

+ 41 - 1
src/web/staticres/dataExport/css/conditions.css

@@ -933,7 +933,7 @@ input.sm {
 }
 .el-tooltip__popper.filed-tooltip {
   padding: 8px 10px;
-  width: 418px;
+  width: 432px;
   background: rgba(0, 0, 0, 0.75);
   border-radius: 4px;
   font-size: 12px;
@@ -1436,3 +1436,43 @@ body .loading_ p span {
 .new-box .sm {
   width: 328px;
 }
+.export-tips{
+   min-width: 412px;
+   box-sizing: border-box;
+   background: #FF9F401A;
+   border-radius: 6px;
+   display: flex;
+   margin-bottom: 10px;
+   padding: 9px 22px;
+   align-items: center;
+   border: 1px solid #FF9F40;
+}
+.export-tips .waring-icon{
+  background-image: url(/dataExport/image/export_icon.png);
+  background-position: center;
+  margin-right: 8px;
+  width: 20px;
+  height: 20px;
+  min-width: 20px; /* 防止过度缩小 */
+  min-height: 20px;
+  flex-shrink: 0; 
+  background-size: contain;
+}
+
+
+.export-tips .export-tips-text{
+  font-size: 14px;
+  color: #FF9F40;
+  line-height: 22px;
+}
+.export-tips .export-tips-text .urlbtn{
+  color: #2CB7CA;
+  cursor: pointer;
+
+}
+#collectUserInfoDialog>.mask {
+  z-index: 9999!important;
+}
+#collectUserInfoDialog>.dialog-container{
+  z-index: 10000!important;
+}

BIN
src/web/staticres/dataExport/image/export_icon.png


+ 12 - 0
src/web/templates/pc/dataExport_sieve.html

@@ -1092,10 +1092,16 @@
           <div class="data_specs">数据规格
             <el-tooltip popper-class="filed-tooltip" class="item" effect="dark" placement="top">
               <template #content>
+                <div class="export-tips">
+                  <div class="waring-icon"></div>
+                  <div class="export-tips-text">以下数据示例仅为部分字段,如需更多行业字段,如资金来源、报价方式、企业资质、人员资质、业绩资格、企业信用、建设规模等字段,您可<span class="urlbtn" onclick="needSubmitHandle('pc_DataExportFilter_IndustryFields')">申请数据定制></span></div>
+                </div>
+                <div>
                 标准字段包:<br/>
                 匹配关键词、省份、城市、公告标题、剑鱼标讯地址、公告类别、发布时间、采购单位、中标单位、中标金额、项目名称、公告内容<br/>
                 高级字段包:<br/>
                 匹配关键词、省份、城市、区县、公告标题、公告类别、公告内容、发布时间、公告地址、剑鱼标讯地址、项目名称、行业、项目范围、预算金额、中标金额、报名截止日期、开标日期、投标截止日期、合同签订时间、采购单位信息(采购单位名称、采购单位类型、采购单位联系人、采购单位联系电话、采购单位地址)、招标代理机构、中标单位信息(中标单位名称、中标单位联系人、中标单位联系电话)(来源:招标公告网站)、中标单位信息(中标单位联系人、中标单位联系电话、电子邮箱)(来源:国家企业公示网站)
+              </div>
               </template>
               <img class="data_help_img" src='{{Msg "seo" "cdn"}}/images/help.png' />
             </el-tooltip>
@@ -1121,10 +1127,16 @@
           <div class="data_specs">数据规格
             <el-tooltip popper-class="filed-tooltip" class="item" effect="dark" placement="top">
               <template #content>
+                <div class="export-tips">
+                  <div class="waring-icon"></div>
+                  <div class="export-tips-text">以下数据示例仅为部分字段,如需更多行业字段,如资金来源、报价方式、企业资质、人员资质、业绩资格、企业信用、建设规模等字段,您可<span class="urlbtn" onclick="needSubmitHandle('pc_DataExportFilter_IndustryFields')">申请数据定制></span></div>
+                </div>
+                <div>
                 标准字段包:<br/>
                 匹配关键词、省份、城市、公告标题、剑鱼标讯地址、公告类别、发布时间、采购单位、中标单位、中标金额、项目名称、公告内容<br/>
                 高级字段包:<br/>
                 匹配关键词、省份、城市、区县、公告标题、公告类别、公告内容、发布时间、公告地址、剑鱼标讯地址、项目名称、行业、项目范围、预算金额、中标金额、报名截止日期、开标日期、投标截止日期、合同签订时间、采购单位信息(采购单位名称、采购单位类型、采购单位联系人、采购单位联系电话、采购单位地址)、招标代理机构、中标单位信息(中标单位名称、中标单位联系人、中标单位联系电话)(来源:招标公告网站)、中标单位信息(中标单位联系人、中标单位联系电话、电子邮箱)(来源:国家企业公示网站)
+                </div>
               </template>
               <img class="data_help_img" src='{{Msg "seo" "cdn"}}/images/help.png' />
             </el-tooltip>

+ 60 - 26
src/web/templates/pc/invoice.html

@@ -108,16 +108,16 @@
                     <el-form-item label="单位税号:" prop="taxpayer_identnum">
                       <el-input placeholder="请输入单位税号" v-model="ruleForm.taxpayer_identnum"></el-input>
                     </el-form-item>
-                    <el-form-item style="min-height: 36px;height: auto;" label="单位地址:" :rules="[{ required: ruleForm.invoice_variety == '电子专用发票', message: '请输入单位地址', trigger: 'blur' }]" prop="company_address">
+                    <el-form-item style="min-height: 36px;height: auto;" label="单位地址:" :rules="[{ required: false, message: '请输入单位地址', trigger: 'blur' }]" prop="company_address">
                       <el-input ref="company_address" :style="{height: addressHeight + 'px'}" type="textarea" :rows="1" placeholder="请输入单位地址" v-model="ruleForm.company_address"></el-input>
                     </el-form-item>
-                    <el-form-item label="电话号码:" prop="company_phone" :rules="[{ required: ruleForm.invoice_variety == '电子专用发票', message: '请输入电话号码', trigger: 'blur' }, { validator: validateTelPhone, trigger: 'blur' }]">
+                    <el-form-item label="电话号码:" prop="company_phone" :rules="[{ required: false, message: '请输入电话号码', trigger: 'blur' }, { validator: validateTelPhone, trigger: 'blur' }]">
                       <el-input placeholder="请输入电话号码" v-model="ruleForm.company_phone"></el-input>
                     </el-form-item>
-                    <el-form-item label="开户银行:" prop="bank_name" :rules="[{ required: ruleForm.invoice_variety == '电子专用发票', message: '请输入开户银行', trigger: 'blur' }]">
+                    <el-form-item label="开户银行:" prop="bank_name" :rules="[{ required: false, message: '请输入开户银行', trigger: 'blur' }]">
                       <el-input placeholder="请输入开户银行" v-model="ruleForm.bank_name"></el-input>
                     </el-form-item>
-                    <el-form-item label="银行账号:" prop="bank_account" :rules="[{ required: ruleForm.invoice_variety == '电子专用发票', message: '请输入银行账号', trigger: 'blur' }, { validator: validateBankAccount, trigger: 'blur' }]">
+                    <el-form-item label="银行账号:" prop="bank_account" :rules="[{ required: false, message: '请输入银行账号', trigger: 'blur' }, { validator: validateBankAccount, trigger: 'blur' }]">
                       <el-input placeholder="请输入银行账号" v-model="ruleForm.bank_account"></el-input>
                     </el-form-item>
                     <el-form-item style="min-height: 36px;height: auto;" class="invoice_desc" label="开票备注:">
@@ -348,15 +348,29 @@
             // 发票信息回显
             invouceInfoEcho () {
               const url = '/jypay/invoice/newShow'
-              const params = {
+              if(this.urlParams.type === 'again' || this.urlParams.type === 'replace'){ // 换开重开 回显
+                const params = {
                 stype: 2,
                 code: this.urlParams.invoiceid
               }
               this.ajaxComponent(url, params).then((res) => {
-                if(res) {
+                if(res.data && res.data.invoice) {
                   this.echoFun(res.data.invoice)
                 }
               })
+                
+              } else { // 开发票初始回显上一次填过的内容
+                const params = {
+                stype: 1,
+                code: this.ruleForm.order_code
+              }
+              this.ajaxComponent(url, params).then((res) => {
+                if(res.data && res.data.showData) {
+                  this.echoFun(res.data.showData)
+                }
+              })
+                
+              }
             },
             echoFun(data) {
               const { only_Identifying, invoice_type, invoice_variety, invoice_content, mail, phone, remark, company_name, taxpayer_identnum, company_address, company_phone, bank_name, bank_account } = data
@@ -402,15 +416,26 @@
             validateTelPhone: (rule, value, callback) => {
               // const regPhone = /^1[3-9]\d{9}$/; // 手机号正则
               // const regTel = /^0\d{2,3}-?\d{7,8}$/ // 座机号码正则
-              if(invoiceNode.ruleForm.invoice_variety === '电子专用发票') {
-                if (regExpPhone.test(value)) {
-                  return callback()
-                } else {
-                  return callback(new Error('电话号码格式不正确'))
-                }
-              } else {
-                // 电子普通发票,电话号码非必填,不输入不校验,输入需校验
-                if(!value) {
+              // if(invoiceNode.ruleForm.invoice_variety === '电子专用发票') { 专用发票也调整为为非必填
+              //   if (regExpPhone.test(value)) {
+              //     return callback()
+              //   } else {
+              //     return callback(new Error('电话号码格式不正确'))
+              //   }
+              // } else {
+              //   // 电子普通发票,电话号码非必填,不输入不校验,输入需校验
+              //   if(!value) {
+              //     return callback()
+              //   } else {
+              //     if(regExpPhone.test(value)) {
+              //       return callback()
+              //     } else {
+              //       return callback(new Error('电话号码格式不正确'))
+              //     }
+              //   }
+              // }
+              //不输入不校验,输入需校验
+               if(!value) {
                   return callback()
                 } else {
                   if(regExpPhone.test(value)) {
@@ -419,19 +444,29 @@
                     return callback(new Error('电话号码格式不正确'))
                   }
                 }
-              }
             },
             validateBankAccount: (rule, value, callback) => {
               const regAccount = /^\d+$/;
-              if(invoiceNode.ruleForm.invoice_variety === '电子专用发票') {
-                if (regAccount.test(value)) {
-                  return callback()
-                } else {
-                  return callback(new Error('请输入正确的银行账号'))
-                }
-              } else {
-                // 电子普通发票,银行账号非必填,不输入不校验,输入需校验
-                if(!value) {
+              // if(invoiceNode.ruleForm.invoice_variety === '电子专用发票') { 专用发票也调整为为非必填
+              //   if (regAccount.test(value)) {
+              //     return callback()
+              //   } else {
+              //     return callback(new Error('请输入正确的银行账号'))
+              //   }
+              // } else {
+              //   // 电子普通发票,银行账号非必填,不输入不校验,输入需校验
+              //   if(!value) {
+              //     return callback()
+              //   } else {
+              //     if (regAccount.test(value)) {
+              //       return callback()
+              //     } else {
+              //       return callback(new Error('请输入正确的银行账号'))
+              //     }
+              //   }
+              // }
+              // 不输入不校验,输入需校验
+              if(!value) {
                   return callback()
                 } else {
                   if (regAccount.test(value)) {
@@ -440,7 +475,6 @@
                     return callback(new Error('请输入正确的银行账号'))
                   }
                 }
-              }
             },
             validateMail: (rule, value, callback) => {
               const regEmail = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/