|
@@ -44,362 +44,355 @@ class Details:
|
|
|
|
|
|
def detail_get(self, response, item):
|
|
|
|
|
|
- if response.status_code == 306:
|
|
|
- try:
|
|
|
- os.remove('./yyc_ck.json')
|
|
|
- except:
|
|
|
- pass
|
|
|
- raise ValueError("cookie失效!重新登录")
|
|
|
- else:
|
|
|
- if response.json().get('success') == None:
|
|
|
- if response.json().get('dataTables'):
|
|
|
- d_data = response.json().get('dataTables')
|
|
|
- detail_info = d_data.get('quotationInfoDataTable').get('rows')[0].get('data')
|
|
|
- goods_info_list = d_data.get('quotationDetailDataTable').get('rows')
|
|
|
-
|
|
|
- goods_list = ''
|
|
|
- for goods_info in goods_info_list:
|
|
|
- if goods_info.get('data').get('reqdate'):
|
|
|
- reqdate = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(
|
|
|
- int(str(goods_info.get('data').get('reqdate'))[:-3])))
|
|
|
- else:
|
|
|
- reqdate = ""
|
|
|
-
|
|
|
- temp = f'''
|
|
|
- <tr>
|
|
|
- <td>
|
|
|
- <span data-bind="text: row.ref('rowNo')">{goods_info.get('data').get('rowNo')}</span>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <div style="display: block" data-bind="text: row.ref('productName')">{goods_info.get('data').get('productName')}</div>
|
|
|
- <div style="" data-bind="text: row.ref('productDesc')">{goods_info.get('data').get('productDesc')}</div>
|
|
|
- <div style="display: none" data-bind="">
|
|
|
- <span style="color: #999;">规格型号:</span><span data-bind="text: row.ref('productType')">{goods_info.get('data').get('productType')}</span>
|
|
|
- </div>
|
|
|
- <div style="display: none" data-bind="">
|
|
|
- <span style="color: #999;">存货描述:</span><span data-bind="text: row.ref('productSpec')">{goods_info.get('data').get('productSpec')}</span>
|
|
|
- </div>
|
|
|
- <div class="hidden" style="display: block" data-bind="">
|
|
|
- <span style="color: #999;" data-bind=""></span>:
|
|
|
- <span data-bind="text: row.ref('field1')">{goods_info.get('data').get('field1')}</span>
|
|
|
- </div>
|
|
|
- <div class="hidden" style="display: block" data-bind="">
|
|
|
- <span style="color: #999;" data-bind=""></span>:
|
|
|
- <span data-bind="text: row.ref('field2')">{goods_info.get('data').get('field2')}</span>
|
|
|
- </div>
|
|
|
- <div class="hidden" style="display: block" data-bind="">
|
|
|
- <span style="color: #999;" data-bind=""></span>:
|
|
|
- <span data-bind="text: row.ref('field3')">{goods_info.get('data').get('field3')}</span>
|
|
|
- </div>
|
|
|
- <div class="hidden" style="display: block" data-bind="">
|
|
|
- <span style="color: #999;" data-bind=""></span>:
|
|
|
- <span data-bind="text: row.ref('field4')">{goods_info.get('data').get('field4')}</span>
|
|
|
- </div>
|
|
|
- <div class="hidden" style="display: block" data-bind="">
|
|
|
- <span style="color: #999;" data-bind=""></span>:
|
|
|
- <span data-bind="text: row.ref('field14')">{goods_info.get('data').get('field14')}</span>
|
|
|
- </div>
|
|
|
- <div class="hidden" style="display: block" data-bind="">
|
|
|
- <span style="color: #999;" data-bind=""></span>:
|
|
|
- <span data-bind="text: row.ref('field15')">{goods_info.get('data').get('field15')}</span>
|
|
|
- </div>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <span data-bind="text: row.ref('productCode')">{goods_info.get('data').get('productCode')}</span>
|
|
|
- </td>
|
|
|
- <td style="width: 80px; min-width: 80px" class="text-right p-r-m">
|
|
|
- <span data-bind="text: row.ref('purchaseamount')">{goods_info.get('data').get('purchaseamount')}</span>
|
|
|
- <span data-bind="text: row.ref('unit')">{goods_info.get('data').get('unit')}</span>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <span data-bind="text: row.ref('reqErpRelatedInfo')">{goods_info.get('data').get('reqErpRelatedInfo')}</span>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <div data-bind="text:row.ref('reqOrgName')">{goods_info.get('data').get('reqOrgName')}</div>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <span data-bind="text: row.getValue('ERPProjectName')">{goods_info.get('data').get('ERPProjectName')}</span>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <div class="twolinesintable" data-bind="visible: row.getValue('receiveOrgName')">
|
|
|
- <div data-bind="text:row.ref('receiveOrgName')">{goods_info.get('data').get('receiveOrgName')}</div>
|
|
|
- </div>
|
|
|
- <div class="twolinesintable" data-bind="visible: row.getValue('receivePersonName')" style="display: none;">
|
|
|
- <span style="color: #999;">收货人:</span><span data-bind="text: row.getValue('receivePersonName')">{goods_info.get('data').get('receivePersonName')}</span><br>
|
|
|
- </div>
|
|
|
- <div class="twolinesintable" data-bind="visible: row.getValue('receivePersonTel')" style="display: none;">
|
|
|
- <span style="color: #999;">联系电话:</span>
|
|
|
- <span><canvas class="text2canvas" height="25" data-bind="" width="125" style="height: 20px; width: 100px;">{goods_info.get('data').get('receivePersonTel')}</canvas></span>
|
|
|
- <br>
|
|
|
- </div>
|
|
|
- <div class="twolinesintable" data-bind="visible: row.getValue('receiveAddress')" style="display: none;">
|
|
|
- <span style="color: #999;">收货地址:</span><span data-bind="text: row.getValue('receiveAddress')">{goods_info.get('data').get('receiveAddress')}</span><br>
|
|
|
- </div>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <div class="input-group date">
|
|
|
- <span data-bind="text: row.ref('reqdate')">{reqdate}</span>
|
|
|
- </div>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <span data-bind="text: row.ref('bmemo')">{goods_info.get('data').get('bmemo')}</span>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- '''
|
|
|
- goods_list += temp
|
|
|
-
|
|
|
- if detail_info.get('allowRisePrice'):
|
|
|
- allowRisePrice = "不限"
|
|
|
- else:
|
|
|
- allowRisePrice = "限制"
|
|
|
- if detail_info.get('supplierCertif') == "1":
|
|
|
- apply_require = "三证合一或传统五证"
|
|
|
- elif detail_info.get('quoteCertif') == "":
|
|
|
- apply_require = "已盖章的报价单"
|
|
|
- elif detail_info.get('supplierQualify'):
|
|
|
- apply_require = detail_info.get('supplierQualify')
|
|
|
+ if response.json().get('success') == None:
|
|
|
+ if response.json().get('dataTables'):
|
|
|
+ d_data = response.json().get('dataTables')
|
|
|
+ detail_info = d_data.get('quotationInfoDataTable').get('rows')[0].get('data')
|
|
|
+ goods_info_list = d_data.get('quotationDetailDataTable').get('rows')
|
|
|
+
|
|
|
+ goods_list = ''
|
|
|
+ for goods_info in goods_info_list:
|
|
|
+ if goods_info.get('data').get('reqdate'):
|
|
|
+ reqdate = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(
|
|
|
+ int(str(goods_info.get('data').get('reqdate'))[:-3])))
|
|
|
else:
|
|
|
- apply_require = "无"
|
|
|
+ reqdate = ""
|
|
|
+
|
|
|
+ temp = f'''
|
|
|
+ <tr>
|
|
|
+ <td>
|
|
|
+ <span data-bind="text: row.ref('rowNo')">{goods_info.get('data').get('rowNo')}</span>
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <div style="display: block" data-bind="text: row.ref('productName')">{goods_info.get('data').get('productName')}</div>
|
|
|
+ <div style="" data-bind="text: row.ref('productDesc')">{goods_info.get('data').get('productDesc')}</div>
|
|
|
+ <div style="display: none" data-bind="">
|
|
|
+ <span style="color: #999;">规格型号:</span><span data-bind="text: row.ref('productType')">{goods_info.get('data').get('productType')}</span>
|
|
|
+ </div>
|
|
|
+ <div style="display: none" data-bind="">
|
|
|
+ <span style="color: #999;">存货描述:</span><span data-bind="text: row.ref('productSpec')">{goods_info.get('data').get('productSpec')}</span>
|
|
|
+ </div>
|
|
|
+ <div class="hidden" style="display: block" data-bind="">
|
|
|
+ <span style="color: #999;" data-bind=""></span>:
|
|
|
+ <span data-bind="text: row.ref('field1')">{goods_info.get('data').get('field1')}</span>
|
|
|
+ </div>
|
|
|
+ <div class="hidden" style="display: block" data-bind="">
|
|
|
+ <span style="color: #999;" data-bind=""></span>:
|
|
|
+ <span data-bind="text: row.ref('field2')">{goods_info.get('data').get('field2')}</span>
|
|
|
+ </div>
|
|
|
+ <div class="hidden" style="display: block" data-bind="">
|
|
|
+ <span style="color: #999;" data-bind=""></span>:
|
|
|
+ <span data-bind="text: row.ref('field3')">{goods_info.get('data').get('field3')}</span>
|
|
|
+ </div>
|
|
|
+ <div class="hidden" style="display: block" data-bind="">
|
|
|
+ <span style="color: #999;" data-bind=""></span>:
|
|
|
+ <span data-bind="text: row.ref('field4')">{goods_info.get('data').get('field4')}</span>
|
|
|
+ </div>
|
|
|
+ <div class="hidden" style="display: block" data-bind="">
|
|
|
+ <span style="color: #999;" data-bind=""></span>:
|
|
|
+ <span data-bind="text: row.ref('field14')">{goods_info.get('data').get('field14')}</span>
|
|
|
+ </div>
|
|
|
+ <div class="hidden" style="display: block" data-bind="">
|
|
|
+ <span style="color: #999;" data-bind=""></span>:
|
|
|
+ <span data-bind="text: row.ref('field15')">{goods_info.get('data').get('field15')}</span>
|
|
|
+ </div>
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <span data-bind="text: row.ref('productCode')">{goods_info.get('data').get('productCode')}</span>
|
|
|
+ </td>
|
|
|
+ <td style="width: 80px; min-width: 80px" class="text-right p-r-m">
|
|
|
+ <span data-bind="text: row.ref('purchaseamount')">{goods_info.get('data').get('purchaseamount')}</span>
|
|
|
+ <span data-bind="text: row.ref('unit')">{goods_info.get('data').get('unit')}</span>
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <span data-bind="text: row.ref('reqErpRelatedInfo')">{goods_info.get('data').get('reqErpRelatedInfo')}</span>
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <div data-bind="text:row.ref('reqOrgName')">{goods_info.get('data').get('reqOrgName')}</div>
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <span data-bind="text: row.getValue('ERPProjectName')">{goods_info.get('data').get('ERPProjectName')}</span>
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <div class="twolinesintable" data-bind="visible: row.getValue('receiveOrgName')">
|
|
|
+ <div data-bind="text:row.ref('receiveOrgName')">{goods_info.get('data').get('receiveOrgName')}</div>
|
|
|
+ </div>
|
|
|
+ <div class="twolinesintable" data-bind="visible: row.getValue('receivePersonName')" style="display: none;">
|
|
|
+ <span style="color: #999;">收货人:</span><span data-bind="text: row.getValue('receivePersonName')">{goods_info.get('data').get('receivePersonName')}</span><br>
|
|
|
+ </div>
|
|
|
+ <div class="twolinesintable" data-bind="visible: row.getValue('receivePersonTel')" style="display: none;">
|
|
|
+ <span style="color: #999;">联系电话:</span>
|
|
|
+ <span><canvas class="text2canvas" height="25" data-bind="" width="125" style="height: 20px; width: 100px;">{goods_info.get('data').get('receivePersonTel')}</canvas></span>
|
|
|
+ <br>
|
|
|
+ </div>
|
|
|
+ <div class="twolinesintable" data-bind="visible: row.getValue('receiveAddress')" style="display: none;">
|
|
|
+ <span style="color: #999;">收货地址:</span><span data-bind="text: row.getValue('receiveAddress')">{goods_info.get('data').get('receiveAddress')}</span><br>
|
|
|
+ </div>
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <div class="input-group date">
|
|
|
+ <span data-bind="text: row.ref('reqdate')">{reqdate}</span>
|
|
|
+ </div>
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <span data-bind="text: row.ref('bmemo')">{goods_info.get('data').get('bmemo')}</span>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ '''
|
|
|
+ goods_list += temp
|
|
|
|
|
|
- if detail_info.get('canSeeQt'):
|
|
|
- canSeeQt = detail_info.get('canSeeQt')
|
|
|
- else:
|
|
|
- canSeeQt = "无"
|
|
|
+ if detail_info.get('allowRisePrice'):
|
|
|
+ allowRisePrice = "不限"
|
|
|
+ else:
|
|
|
+ allowRisePrice = "限制"
|
|
|
+ if detail_info.get('supplierCertif') == "1":
|
|
|
+ apply_require = "三证合一或传统五证"
|
|
|
+ elif detail_info.get('quoteCertif') == "":
|
|
|
+ apply_require = "已盖章的报价单"
|
|
|
+ elif detail_info.get('supplierQualify'):
|
|
|
+ apply_require = detail_info.get('supplierQualify')
|
|
|
+ else:
|
|
|
+ apply_require = "无"
|
|
|
+
|
|
|
+ if detail_info.get('canSeeQt'):
|
|
|
+ canSeeQt = detail_info.get('canSeeQt')
|
|
|
+ else:
|
|
|
+ canSeeQt = "无"
|
|
|
|
|
|
- buyofferType_dict = {"1": "框架协议", "2": "普通合同", "3": "直接下单", "4": "价格调整", }
|
|
|
- buyofferType = buyofferType_dict.get(detail_info.get('buyofferType'))
|
|
|
+ buyofferType_dict = {"1": "框架协议", "2": "普通合同", "3": "直接下单", "4": "价格调整", }
|
|
|
+ buyofferType = buyofferType_dict.get(detail_info.get('buyofferType'))
|
|
|
|
|
|
- onOfflineType_dict = {"0": "线上", "1": "混合", "2": "线下"}
|
|
|
- onOfflineType = onOfflineType_dict.get(detail_info.get('onOfflineType'))
|
|
|
+ onOfflineType_dict = {"0": "线上", "1": "混合", "2": "线下"}
|
|
|
+ onOfflineType = onOfflineType_dict.get(detail_info.get('onOfflineType'))
|
|
|
|
|
|
- if detail_info.get('qtexpiredate'):
|
|
|
- qtexpiredate = time.strftime("%Y-%m-%d %H:%M:%S",
|
|
|
- time.localtime(int(str(detail_info.get('qtexpiredate'))[:-3])))
|
|
|
- else:
|
|
|
- qtexpiredate = ""
|
|
|
+ if detail_info.get('qtexpiredate'):
|
|
|
+ qtexpiredate = time.strftime("%Y-%m-%d %H:%M:%S",
|
|
|
+ time.localtime(int(str(detail_info.get('qtexpiredate'))[:-3])))
|
|
|
+ else:
|
|
|
+ qtexpiredate = ""
|
|
|
|
|
|
- html = f'''
|
|
|
- <div class="ibox">
|
|
|
+ html = f'''
|
|
|
+ <div class="ibox">
|
|
|
|
|
|
- <div class="ibox-filter-title pull-left">
|
|
|
- <span data-bind="i18n: 'cali-infor'">询价单详情</span>
|
|
|
- <span class="vbillcodeCss" data-bind="visible: quotationInfoDataTable.ref('vBuyOfferBillCode')()" style="">(询价单号:</span>
|
|
|
- <span class="vbillcodeCss" data-bind="text: quotationInfoDataTable.ref('vBuyOfferBillCode')">{detail_info.get('vBuyOfferBillCode')}</span>
|
|
|
- <span class="vbillcodeCss" data-bind="visible: quotationInfoDataTable.ref('vBuyOfferBillCode')()" style="">)</span>
|
|
|
- </div>
|
|
|
+ <div class="ibox-filter-title pull-left">
|
|
|
+ <span data-bind="i18n: 'cali-infor'">询价单详情</span>
|
|
|
+ <span class="vbillcodeCss" data-bind="visible: quotationInfoDataTable.ref('vBuyOfferBillCode')()" style="">(询价单号:</span>
|
|
|
+ <span class="vbillcodeCss" data-bind="text: quotationInfoDataTable.ref('vBuyOfferBillCode')">{detail_info.get('vBuyOfferBillCode')}</span>
|
|
|
+ <span class="vbillcodeCss" data-bind="visible: quotationInfoDataTable.ref('vBuyOfferBillCode')()" style="">)</span>
|
|
|
+ </div>
|
|
|
|
|
|
- <div class="ibox-content">
|
|
|
- <div class="row">
|
|
|
- <div class="col-md-8">
|
|
|
- <h4 class="iform-sub-title">
|
|
|
- <span class="order-title" data-bind="text: quotationInfoDataTable.ref('subject')">{detail_info.get('subject')}</span>
|
|
|
- <span class="label label-danger" data-bind="text: quotationInfoDataTable.ref('statusName')">{detail_info.get('statusName')}</span>
|
|
|
- </h4>
|
|
|
- </div>
|
|
|
+ <div class="ibox-content">
|
|
|
+ <div class="row">
|
|
|
+ <div class="col-md-8">
|
|
|
+ <h4 class="iform-sub-title">
|
|
|
+ <span class="order-title" data-bind="text: quotationInfoDataTable.ref('subject')">{detail_info.get('subject')}</span>
|
|
|
+ <span class="label label-danger" data-bind="text: quotationInfoDataTable.ref('statusName')">{detail_info.get('statusName')}</span>
|
|
|
+ </h4>
|
|
|
</div>
|
|
|
+ </div>
|
|
|
|
|
|
- <div class="row">
|
|
|
- <div class="col-md-12">
|
|
|
- <h4 class="i-form-title-nomal">物资信息<span>(</span><span data-bind="text:quotationDetailDataTable.rows().length">{len(goods_info_list)}</span><span>项)</span></h4>
|
|
|
- </div>
|
|
|
+ <div class="row">
|
|
|
+ <div class="col-md-12">
|
|
|
+ <h4 class="i-form-title-nomal">物资信息<span>(</span><span data-bind="text:quotationDetailDataTable.rows().length">{len(goods_info_list)}</span><span>项)</span></h4>
|
|
|
</div>
|
|
|
- <div class="row">
|
|
|
- <div class="col-md-12">
|
|
|
- <div id="myTabContent" class="tab-content">
|
|
|
- <table class="yc-table ml-table" style="table-layout:fixed;">
|
|
|
- <thead>
|
|
|
- <tr>
|
|
|
- <td width="5%" data-bind="click: orderByNum" style="cursor: pointer;padding-left: 5px;">行号</td>
|
|
|
- <td width="20%" data-bind="click: orderByName" style="cursor: pointer;">
|
|
|
- <span data-bind="i18n: 'cali-shopname'">物料名称</span> /
|
|
|
- <span data-bind="i18n: 'inquiry-drscrt'">物料需求描述</span>
|
|
|
- </td>
|
|
|
- <td width="10%">物料编码</td>
|
|
|
- <td width="10%" align="right" class="p-r-m" data-bind="i18n: 'cali-shopnumber'">采购数量</td>
|
|
|
- <td width="10%">ERP相关信息</td>
|
|
|
- <td width="15%">
|
|
|
- <div data-bind="i18n: 'inquiry-org'">需求组织</div>
|
|
|
- </td>
|
|
|
- <td width="10%">
|
|
|
- 项目名称
|
|
|
- </td>
|
|
|
- <td width="15%">
|
|
|
- <div>收货组织</div>-
|
|
|
- <div>收货信息</div>
|
|
|
- </td>
|
|
|
- <td width="12%" data-bind="i18n: 'inquiry-time'">需求时间</td>
|
|
|
- <td width="13%">备注</td>
|
|
|
- </tr>
|
|
|
- </thead>
|
|
|
- <tbody data-bind="">
|
|
|
- {goods_list}
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div class="row">
|
|
|
+ <div class="col-md-12">
|
|
|
+ <div id="myTabContent" class="tab-content">
|
|
|
+ <table class="yc-table ml-table" style="table-layout:fixed;">
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <td width="5%" data-bind="click: orderByNum" style="cursor: pointer;padding-left: 5px;">行号</td>
|
|
|
+ <td width="20%" data-bind="click: orderByName" style="cursor: pointer;">
|
|
|
+ <span data-bind="i18n: 'cali-shopname'">物料名称</span> /
|
|
|
+ <span data-bind="i18n: 'inquiry-drscrt'">物料需求描述</span>
|
|
|
+ </td>
|
|
|
+ <td width="10%">物料编码</td>
|
|
|
+ <td width="10%" align="right" class="p-r-m" data-bind="i18n: 'cali-shopnumber'">采购数量</td>
|
|
|
+ <td width="10%">ERP相关信息</td>
|
|
|
+ <td width="15%">
|
|
|
+ <div data-bind="i18n: 'inquiry-org'">需求组织</div>
|
|
|
+ </td>
|
|
|
+ <td width="10%">
|
|
|
+ 项目名称
|
|
|
+ </td>
|
|
|
+ <td width="15%">
|
|
|
+ <div>收货组织</div>-
|
|
|
+ <div>收货信息</div>
|
|
|
+ </td>
|
|
|
+ <td width="12%" data-bind="i18n: 'inquiry-time'">需求时间</td>
|
|
|
+ <td width="13%">备注</td>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody data-bind="">
|
|
|
+ {goods_list}
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="sub-form-warp pull-left">
|
|
|
- <div class="row">
|
|
|
- <div class="col-md-12">
|
|
|
- <h4 class="i-form-title" data-bind="i18n: 'inquiry-prorequire'">采购要求</h4>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div class="sub-form-warp pull-left">
|
|
|
+ <div class="row">
|
|
|
+ <div class="col-md-12">
|
|
|
+ <h4 class="i-form-title" data-bind="i18n: 'inquiry-prorequire'">采购要求</h4>
|
|
|
</div>
|
|
|
- <div class="row">
|
|
|
- <div class="col-md-12">
|
|
|
- <div class="grid simple">
|
|
|
- <div class="grid-body no-border">
|
|
|
- <form class="form-horizontal" role="form">
|
|
|
- <div class="form-group">
|
|
|
- <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'useredit-purAgent'">采购员</span>:</label>
|
|
|
- <div class="col-sm-4 col-md-8 line-height-34">
|
|
|
- <div data-bind="text:quotationInfoDataTable.ref('corpSubAccountName')">{detail_info.get('corpSubAccountName')}</div>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div class="row">
|
|
|
+ <div class="col-md-12">
|
|
|
+ <div class="grid simple">
|
|
|
+ <div class="grid-body no-border">
|
|
|
+ <form class="form-horizontal" role="form">
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'useredit-purAgent'">采购员</span>:</label>
|
|
|
+ <div class="col-sm-4 col-md-8 line-height-34">
|
|
|
+ <div data-bind="text:quotationInfoDataTable.ref('corpSubAccountName')">{detail_info.get('corpSubAccountName')}</div>
|
|
|
</div>
|
|
|
- <div class="form-group">
|
|
|
- <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'inquiry-offerendtime'">报价截止时间</span>:</label>
|
|
|
- <div class="col-sm-12 col-md-8 line-height-34">
|
|
|
- <span data-bind="text: quotationInfoDataTable.ref('qtexpiredate')">{qtexpiredate}</span>
|
|
|
- <label u-meta="" title="2022-08-07 15:37:40"></label>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'inquiry-offerendtime'">报价截止时间</span>:</label>
|
|
|
+ <div class="col-sm-12 col-md-8 line-height-34">
|
|
|
+ <span data-bind="text: quotationInfoDataTable.ref('qtexpiredate')">{qtexpiredate}</span>
|
|
|
+ <label u-meta="" title="2022-08-07 15:37:40"></label>
|
|
|
</div>
|
|
|
- <div class="form-group">
|
|
|
- <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'inquiry-recadress'">收货地址</span>:</label>
|
|
|
- <div class="col-sm-4 col-md-8 line-height-34">
|
|
|
- <span data-bind="text: quotationInfoDataTable.ref('addressName')">{detail_info.get('addressName')}</span>
|
|
|
- <span data-bind="text: quotationInfoDataTable.ref('receiveAddress')">{detail_info.get('receiveAddress')}</span>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'inquiry-recadress'">收货地址</span>:</label>
|
|
|
+ <div class="col-sm-4 col-md-8 line-height-34">
|
|
|
+ <span data-bind="text: quotationInfoDataTable.ref('addressName')">{detail_info.get('addressName')}</span>
|
|
|
+ <span data-bind="text: quotationInfoDataTable.ref('receiveAddress')">{detail_info.get('receiveAddress')}</span>
|
|
|
</div>
|
|
|
- <div class="form-group ">
|
|
|
- <label class="col-sm-12 col-md-3 control-label font-nomal">报价类型:</label>
|
|
|
- <div class="col-sm-12 col-md-8 line-height-34">
|
|
|
- <span data-bind="text: $root.renderOnOfflineType($root.quotationInfoDataTable.ref('onOfflineType')())">{onOfflineType}</span>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group ">
|
|
|
+ <label class="col-sm-12 col-md-3 control-label font-nomal">报价类型:</label>
|
|
|
+ <div class="col-sm-12 col-md-8 line-height-34">
|
|
|
+ <span data-bind="text: $root.renderOnOfflineType($root.quotationInfoDataTable.ref('onOfflineType')())">{onOfflineType}</span>
|
|
|
</div>
|
|
|
- <div class="form-group">
|
|
|
- <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'quotations.quo-request'">报价要求</span>:</label>
|
|
|
- <div class="col-sm-12 col-md-8 line-height-34">
|
|
|
- <span data-bind="if: quotationInfoDataTable.ref('canSeeQt')()">{canSeeQt}</span>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'quotations.quo-request'">报价要求</span>:</label>
|
|
|
+ <div class="col-sm-12 col-md-8 line-height-34">
|
|
|
+ <span data-bind="if: quotationInfoDataTable.ref('canSeeQt')()">{canSeeQt}</span>
|
|
|
</div>
|
|
|
- <div class="form-group">
|
|
|
- <label class="col-sm-12 col-md-3 control-label font-nomal">询价币种:</label>
|
|
|
- <div class="col-sm-12 col-md-8 line-height-34">
|
|
|
- <span data-bind="text:quotationInfoDataTable.ref('currency_name')()">{detail_info.get('currency_name')}</span>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-12 col-md-3 control-label font-nomal">询价币种:</label>
|
|
|
+ <div class="col-sm-12 col-md-8 line-height-34">
|
|
|
+ <span data-bind="text:quotationInfoDataTable.ref('currency_name')()">{detail_info.get('currency_name')}</span>
|
|
|
</div>
|
|
|
- <div class="form-group">
|
|
|
- <label class="col-sm-12 col-md-3 control-label font-nomal">询价类型:</label>
|
|
|
- <div class="col-sm-12 col-md-8 line-height-34">
|
|
|
- <span data-bind="text: $root.renderBuyofferType($root.quotationInfoDataTable.ref('buyofferType')())">{buyofferType}</span>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-12 col-md-3 control-label font-nomal">询价类型:</label>
|
|
|
+ <div class="col-sm-12 col-md-8 line-height-34">
|
|
|
+ <span data-bind="text: $root.renderBuyofferType($root.quotationInfoDataTable.ref('buyofferType')())">{buyofferType}</span>
|
|
|
</div>
|
|
|
- <div class="form-group" data-bind="" style="">
|
|
|
- <label class="col-sm-12 col-md-3 control-label font-nomal">是否限制报价涨价:</label>
|
|
|
- <div class="col-sm-12 col-md-8 line-height-34">
|
|
|
- <span data-bind="text: $root.renderAllowRisePrice($root.quotationInfoDataTable.ref('allowRisePrice')())">{allowRisePrice}</span>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group" data-bind="" style="">
|
|
|
+ <label class="col-sm-12 col-md-3 control-label font-nomal">是否限制报价涨价:</label>
|
|
|
+ <div class="col-sm-12 col-md-8 line-height-34">
|
|
|
+ <span data-bind="text: $root.renderAllowRisePrice($root.quotationInfoDataTable.ref('allowRisePrice')())">{allowRisePrice}</span>
|
|
|
</div>
|
|
|
- <div class="form-group">
|
|
|
- <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'inquiry-paymethod'">付款方式</span>:</label>
|
|
|
- <div class="col-sm-12 col-md-9" style="margin-top: 6px;">
|
|
|
- <span class="label-text label-context ">
|
|
|
- <y-showdetail params="text:quotationInfoDataTable.ref('payMethod')"><div class="y-relative">
|
|
|
- <div data-bind="" class="y-showdetail-single">{detail_info.get('payMethod')}</div>
|
|
|
- </div>
|
|
|
- </y-showdetail>
|
|
|
- </span>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'inquiry-paymethod'">付款方式</span>:</label>
|
|
|
+ <div class="col-sm-12 col-md-9" style="margin-top: 6px;">
|
|
|
+ <span class="label-text label-context ">
|
|
|
+ <y-showdetail params="text:quotationInfoDataTable.ref('payMethod')"><div class="y-relative">
|
|
|
+ <div data-bind="" class="y-showdetail-single">{detail_info.get('payMethod')}</div>
|
|
|
</div>
|
|
|
+ </y-showdetail>
|
|
|
+ </span>
|
|
|
</div>
|
|
|
- <div class="form-group">
|
|
|
- <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'inquiry-delterm'">交货条件</span>:</label>
|
|
|
- <div class="col-sm-12 col-md-8" style="margin-top: 6px;">
|
|
|
- <span class="label-text label-context ">
|
|
|
- <y-showdetail params="text:quotationInfoDataTable.ref('deliveryMethod')"><div class="y-relative">
|
|
|
- <div data-bind="" class="y-showdetail-single">{detail_info.get('deliveryMethod')}</div>
|
|
|
- <div class="y-text-link y-showdetail-singlemore" data-bind="" style="display: none;">
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </y-showdetail>
|
|
|
- </span>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'inquiry-delterm'">交货条件</span>:</label>
|
|
|
+ <div class="col-sm-12 col-md-8" style="margin-top: 6px;">
|
|
|
+ <span class="label-text label-context ">
|
|
|
+ <y-showdetail params="text:quotationInfoDataTable.ref('deliveryMethod')"><div class="y-relative">
|
|
|
+ <div data-bind="" class="y-showdetail-single">{detail_info.get('deliveryMethod')}</div>
|
|
|
+ <div class="y-text-link y-showdetail-singlemore" data-bind="" style="display: none;">
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div class="form-group hidden" data-bind="customfeature: customHeadField2Visible">
|
|
|
- <label class="col-sm-6 col-md-3 control-label font-nomal">
|
|
|
- <span data-bind="customfeature: customHeadField2Label">自定义项2</span>:</label>
|
|
|
- <div class="col-sm-12 col-md-8" style="margin-top: 7px;">
|
|
|
- <span data-bind="text: quotationInfoDataTable.ref('field2')">{detail_info.get('field2')}</span>
|
|
|
</div>
|
|
|
+ </y-showdetail>
|
|
|
+ </span>
|
|
|
</div>
|
|
|
- <div class="form-group">
|
|
|
- <label class="col-sm-6 col-md-3 control-label font-nomal p-l-zero"><span data-bind="i18n: 'inquiry-suprequire'">对供应商要求</span>:</label>
|
|
|
- <div class="col-md-8 col-sm-8 line-height-34">
|
|
|
- <span class="m-r-sm" data-bind="">{apply_require}</span>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group hidden" data-bind="customfeature: customHeadField2Visible">
|
|
|
+ <label class="col-sm-6 col-md-3 control-label font-nomal">
|
|
|
+ <span data-bind="customfeature: customHeadField2Label">自定义项2</span>:</label>
|
|
|
+ <div class="col-sm-12 col-md-8" style="margin-top: 7px;">
|
|
|
+ <span data-bind="text: quotationInfoDataTable.ref('field2')">{detail_info.get('field2')}</span>
|
|
|
</div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-6 col-md-3 control-label font-nomal p-l-zero"><span data-bind="i18n: 'inquiry-suprequire'">对供应商要求</span>:</label>
|
|
|
+ <div class="col-md-8 col-sm-8 line-height-34">
|
|
|
+ <span class="m-r-sm" data-bind="">{apply_require}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
|
|
|
- <div class="form-group">
|
|
|
- <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'supfile-Remarks'">备注</span>:</label>
|
|
|
- <div class="col-sm-12 col-md-8" style="margin-top: 6px;">
|
|
|
- <span class="label-text label-context "><y-showdetail params="text:quotationInfoDataTable.ref('memo')"><div class="y-relative">
|
|
|
- <div data-bind="" class="y-showdetail-single">{detail_info.get('memo')}</div>
|
|
|
- </div>
|
|
|
- </y-showdetail></span>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'supfile-Remarks'">备注</span>:</label>
|
|
|
+ <div class="col-sm-12 col-md-8" style="margin-top: 6px;">
|
|
|
+ <span class="label-text label-context "><y-showdetail params="text:quotationInfoDataTable.ref('memo')"><div class="y-relative">
|
|
|
+ <div data-bind="" class="y-showdetail-single">{detail_info.get('memo')}</div>
|
|
|
</div>
|
|
|
+ </y-showdetail></span>
|
|
|
</div>
|
|
|
- </form>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="sub-form-warp pull-right">
|
|
|
- <div class="row">
|
|
|
- <div class="col-md-12">
|
|
|
- <h4 class="i-form-title" data-bind="i18n: 'inquiry-contactinfor'">联系方式</h4>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div class="sub-form-warp pull-right">
|
|
|
+ <div class="row">
|
|
|
+ <div class="col-md-12">
|
|
|
+ <h4 class="i-form-title" data-bind="i18n: 'inquiry-contactinfor'">联系方式</h4>
|
|
|
</div>
|
|
|
- <div class="row">
|
|
|
- <div class="col-md-12">
|
|
|
- <div class="grid simple">
|
|
|
- <div class="grid-body no-border">
|
|
|
- <form class="form-horizontal" role="form">
|
|
|
- <div class="form-group">
|
|
|
- <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'inquiry-contact'">联系人</span>:</label>
|
|
|
- <div class="col-sm-6 col-md-8 line-height-34" data-bind="visible: contactInformationShow" style="">
|
|
|
- <div data-bind="text: quotationInfoDataTable.ref('contact')">{detail_info.get('contact')}</div>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div class="row">
|
|
|
+ <div class="col-md-12">
|
|
|
+ <div class="grid simple">
|
|
|
+ <div class="grid-body no-border">
|
|
|
+ <form class="form-horizontal" role="form">
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'inquiry-contact'">联系人</span>:</label>
|
|
|
+ <div class="col-sm-6 col-md-8 line-height-34" data-bind="visible: contactInformationShow" style="">
|
|
|
+ <div data-bind="text: quotationInfoDataTable.ref('contact')">{detail_info.get('contact')}</div>
|
|
|
</div>
|
|
|
- <div class="form-group">
|
|
|
- <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'inquiry-phone'">联系电话</span>:</label>
|
|
|
- <div class="col-sm-6 col-md-8 line-height-34" data-bind="visible: contactInformationShow" style="">
|
|
|
- <div data-bind="text: quotationInfoDataTable.ref('phone')">{detail_info.get('phone')}</div>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'inquiry-phone'">联系电话</span>:</label>
|
|
|
+ <div class="col-sm-6 col-md-8 line-height-34" data-bind="visible: contactInformationShow" style="">
|
|
|
+ <div data-bind="text: quotationInfoDataTable.ref('phone')">{detail_info.get('phone')}</div>
|
|
|
</div>
|
|
|
- <div class="form-group">
|
|
|
- <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'inquiry-email'">邮件地址</span>:</label>
|
|
|
- <div class="col-sm-4 col-md-8 line-height-34" data-bind="visible: contactInformationShow" style="">
|
|
|
- <span data-bind="text: quotationInfoDataTable.ref('email')">{detail_info.get('email')}</span>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-6 col-md-3 control-label font-nomal"><span data-bind="i18n: 'inquiry-email'">邮件地址</span>:</label>
|
|
|
+ <div class="col-sm-4 col-md-8 line-height-34" data-bind="visible: contactInformationShow" style="">
|
|
|
+ <span data-bind="text: quotationInfoDataTable.ref('email')">{detail_info.get('email')}</span>
|
|
|
</div>
|
|
|
- </form>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- '''
|
|
|
+ </div>
|
|
|
+ '''
|
|
|
|
|
|
- item["contenthtml"] = html.replace('None', '').replace('null', '')
|
|
|
+ item["contenthtml"] = html.replace('None', '').replace('null', '')
|
|
|
|
|
|
- item = format_fileds(item)
|
|
|
+ item = format_fileds(item)
|
|
|
|
|
|
- try:
|
|
|
- self.zt_details.insert_one(item)
|
|
|
- logger.info(f"[采集成功]{item['title']}-{item['publishtime']}")
|
|
|
- except DuplicateKeyError:
|
|
|
- logger.warning(f"[重复采集]{item['title']}-{item['publishtime']}")
|
|
|
+ try:
|
|
|
+ self.zt_details.insert_one(item)
|
|
|
+ logger.info(f"[采集成功]{item['title']}-{item['publishtime']}")
|
|
|
+ except DuplicateKeyError:
|
|
|
+ logger.warning(f"[重复采集]{item['title']}-{item['publishtime']}")
|
|
|
|
|
|
def fetch_request(self, item):
|
|
|
cookies = self.get_cookies()
|
|
@@ -440,6 +433,12 @@ class Details:
|
|
|
if response and res_code == 200:
|
|
|
self.detail_get(response, item=item)
|
|
|
return True
|
|
|
+ elif res_code == 306:
|
|
|
+ try:
|
|
|
+ os.remove('./yyc_ck.json')
|
|
|
+ except:
|
|
|
+ pass
|
|
|
+ raise ValueError("cookie失效!重新登录")
|
|
|
else:
|
|
|
time.sleep(3)
|
|
|
except Exception as e:
|
|
@@ -452,8 +451,7 @@ class Details:
|
|
|
def start(self, limit=1):
|
|
|
logger.debug("********** 详情页采集开始 **********")
|
|
|
|
|
|
- with self.db_name.find({"parser_name": "ztpc_yyc_cgxj", "is_crawl": False, "failed": False},
|
|
|
- sort=[('publishtime', -1)]).limit(limit) as cursor:
|
|
|
+ with self.db_name.find({"parser_name": "ztpc_yyc_cgxj", "is_crawl": False, "failed": False}).limit(limit) as cursor:
|
|
|
data_lsit = [dd for dd in cursor]
|
|
|
for item in data_lsit:
|
|
|
# logger.debug(item)
|