Browse Source

针对客户显示的已转报价的公共询价单信息

hejq 8 years ago
parent
commit
eb2e41b1f9

+ 4 - 0
src/main/webapp/resources/tpl/index/purc/left.html

@@ -17,6 +17,10 @@
 		<ul class="list-unstyled">
 		<li ui-sref-active="active"><a ui-sref="purc.inquiry"><em class="new-dot" ng-if="unread.purcInquiry > 0"></em>采购询价</a></li>
 	</ul>
+	</ul>
+	<ul class="list-unstyled">
+		<li ui-sref-active="active"><a ui-sref="purc.pubInquiry"><em class="new-dot" ng-if="unread.purcInquiry > 0"></em>公共询价</a></li>
+	</ul>
 	<ul class="list-unstyled">
 		<li ui-sref-active="active"><a ui-sref="purc.order"><em class="new-dot" ng-if="unread.purcOrder > 0"></em>采购订单</a></li>
 	</ul>

+ 705 - 0
src/main/webapp/resources/tpl/index/purc/pubInquiry.html

@@ -0,0 +1,705 @@
+<style>
+	/*增加样式*/
+.view-slide-in {
+	/*margin-top: 20px;*/
+}
+.view-slide-in .block {
+	background: #fff;
+}
+.view-slide-in .group-container {
+	background: #fff;
+	margin-bottom: 10px;
+}
+.view-slide-in .group-container .btn-group {
+	width: 160px;
+	border: none;
+	height: 45px;
+}
+.view-slide-in .group-container .btn-group .btn {
+	color: #000;
+}
+.view-slide-in .group-container .btn-group .btn-info {
+	color: #d32526;
+	background: #fff;
+	border: none;
+}
+.view-slide-in .group-container .btn-group .btn {
+	border: none;
+	font-size: 16px;
+	font-family: "Microsoft YaHei", "微软雅黑";
+}
+.view-slide-in .group-container .btn-group .btn em {
+	color: #d32526;
+	font-style: inherit;
+}
+.view-slide-in .group-container .btn-group .btn:hover {
+	background: #fff;
+	color: #d32526;
+}
+.view-slide-in .group-container {
+	padding: 0;
+}
+/*.view-slide-in .search-bg {
+	margin-top: 15px;
+	margin-bottom: 15px;
+}*/
+#topSearch {
+	font-size: 18px;
+}
+.view-slide-in #topSearch .search-bg i {
+	color: #999;
+	margin-left: 10px;
+}
+.form-group-sm .form-control-feedback {
+	width: 85px;
+	height: 36px;
+	line-height: 36px;
+	color: #fff;
+	background: #327ebe;
+	text-align: center;
+	font-size: 14px;
+	cursor: pointer;
+}
+#topSearch .input-sm, .form-group-sm .form-control {
+	height: 36px;
+	line-height: 36px;
+	border: #327ebe 1px solid;
+	border-radius: 0px;
+	font-size: 14px;
+}
+.search-bg .col-xs-6,.search-bg .row {
+	padding-right: 0;
+}
+.order-table .company-list,.order-table .order-hd:first-child {
+	font-size: 16px;
+	height: 40px;
+	line-height: 40px;
+	border-bottom: #ddd 1px solid;
+}
+.order-table .company-list {
+	width:100%;
+	height: 190px;
+	border-bottom: 20px solid #f5f5f5;
+}
+.order-table .order-hd span.margin-left20 {
+	margin-left: 20px;
+}
+.order-table .product {
+	line-height: 25px;
+	font-size: 14px;
+}
+.order-table .product span {
+	margin-right: 10px;
+}
+.grey01 {
+	color: #969595;
+	font-size: 14px;
+	text-align: center;
+}
+.order-table .btn {
+	border-radius: 0;
+	width: 94px;
+	height: 36px;
+	color: #fff;
+}
+.order-table .btn01 {
+	color: #327ebe;
+	background: #fff;
+	border: none;
+	font-size: 16px;
+}
+.order-table .order-hd td.first {
+	line-height: 25px;
+	font-size: 14px;
+}
+.search-bg .input-group-addon{
+	width: 85px;
+	height: 36px;
+	display: inline-block;
+	background: #327ebe;
+	font-size: 16px;
+	text-align: center;
+	line-height: 36px;
+	color: #fff;
+	padding: 0;
+	border: none;
+	border-radius: 0;
+	position: absolute;
+	top: 0;
+	right: 0;
+}
+.search-bg .form-group{
+	position: relative;
+}
+
+.order-table .header>th {
+	height: 38px;
+	text-align: center;
+	background: #f5f5f5;
+	border-top: 1px solid #e8e8e8;
+	border-bottom: 1px solid #e8e8e8;
+}
+
+.order-table .sep-row {
+	height: 10px;
+}
+
+.order-table .selector {
+	vertical-align: middle;
+	margin: 0 0 2px 0;
+}
+
+.toolbar label {
+	margin-right: 10px;
+	margin-bottom: 0;
+}
+
+.toolbar .select_all {
+	margin: 0 6px 0 10px;
+	line-height: 20px;
+}
+
+.toolbar .btn {
+	-moz-border-radius: 2px;
+	margin-right: 5px;
+	border: 1px solid #dcdcdc;
+	border-radius: 2px;
+	-webkit-border-radius: 2px;
+}
+
+.order-table .order-hd {
+	background: #f5f5f5;
+	height: 40px;
+	line-height: 40px;
+}
+
+.order-table .order-hd td.first {
+	padding-left: 20px;
+}
+
+.order-table .order-hd .order-main span {
+	margin-right: 8px;
+}
+
+.order-table .order-hd .order-code {
+	font-style: normal;
+	font-family: verdana;
+}
+
+.order-table .order-hd .order-sum {
+	padding: 0 5px;
+}
+
+.order-table>tbody {
+	border: 1px solid transparent;
+}
+
+.order-table>tbody:hover {
+	border-color: #d32526;
+	border-width: 2px;
+}
+
+.order-table .operates {
+	display: none;
+}
+
+.order-table>tbody:hover .operates {
+	display: block;
+}
+
+.order-table .order-bd {
+	border-bottom: 1px solid #e6e6e6;
+}
+
+.order-table .order-bd>td {
+	padding: 10px 5px;
+	vertical-align: top;
+	position: relative;
+}
+
+.order-table .order-bd .product {
+	padding-left: 20px;
+}
+
+.input-xs,.input-group-xs>.form-control,.input-group-xs>.input-group-addon,.input-group-xs>.input-group-btn>.btn
+{
+	height: 26px;
+	padding: 0 5px;
+	font-size: 12px;
+	line-height: 1.5;
+	border-radius: 3px;
+}
+
+.input-group-xs .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn {
+	border-top-left-radius: 0;
+	border-bottom-left-radius: 0;
+}
+
+@media ( min-width : 768px) {
+	.form-horizontal .form-group-xs .control-label {
+		padding-top: 5px;
+	}
+}
+
+.info-container .info:hover {
+	color: #CC3333;
+}
+.input-error{
+	background-color: #fff8ee;
+	border-color: #CC0033;
+}
+input.input-error:focus {
+	background-color: #fff8ee;
+	border-color: #CC0033;
+}
+.block{
+	/*background: #f5f5f5;*/
+}
+.order-table{
+	background: #fff;
+}
+.inquiry-todo {
+font-size: 14px;
+padding: 0;
+margin-left: 55px;
+}
+
+.inquiry-todo a{
+	float: left;
+	margin-left: 15px;
+	font-size: 16px;
+    font-family: "Microsoft YaHei", "微软雅黑";
+}
+.inquiry-cz{
+	font-size: 14px;
+	padding: 0;
+	margin-left: 55px;
+}
+.inquiry-cz a{
+	color: #5078cb;
+	float: left;
+	margin-left: 15px;
+}
+.inquiry-cz a img{
+	margin-right: 3px;
+}#public .menu .btn-group{
+	height: inherit !important;
+}
+	.menu .new-dot{
+		width: 20px;
+		height: 20px;
+		line-height: 20px;
+		font-size: 12px;
+		color: #fff;
+		font-weight: inherit;
+		top: -2px;
+	}
+</style>
+<link rel="stylesheet" href="static/css/public.css">
+<div class="block" id="public">
+	<div class="loading in" ng-class="{'in': loading}">
+		<i></i>
+	</div>
+	<div class="pub-com_head">
+		<span>公共询价</span>
+		<div class="p-right">
+			<a ui-sref="purc.inquiry_unapply" title="待提交"><img src="static/img/icon/wait.png"/>待发布</a>
+			<a ui-sref="purc.inquiry_new" title="新增询价单"><img src="static/img/icon/add.png"/>新增</a>
+			<a href="#" ng-click="exportXls()" target="_self" class="text-simple" title="导出Excel表格"><i class="fa fa-file-excel-o fa-fw"></i>导出</a>
+		</div>
+	</div>
+	<div class="menu condition block">
+		<div class="row">
+			<div class="col-xs-9">
+				<div class="btn-group btn-group-sm btn-group-justified">
+					<div class="btn-group btn-group-sm">
+						<button type="button" class="btn btn-default btn-line"
+								ng-class="{'btn-info':active=='all'}" ng-click="setActive('all')">全部
+							<b class="new-dot" ng-if="unread.replied>0">{{unread.replied>99?'99+':unread.replied}}</b>
+						</button>
+					</div>
+					<div class="btn-group btn-group-sm">
+						<button type="button" class="btn btn-default btn-line"
+								ng-class="{'btn-info':active=='done'}" ng-click="setActive('done')">已报价
+							<b class="new-dot" ng-if="unread.replied>0">{{unread.replied>99?'99+':unread.replied}}</b>
+						</button>
+					</div>
+					<div class="btn-group btn-group-sm">
+						<button type="button" class="btn btn-default btn-line"
+								ng-class="{'btn-info':active=='todo'}" ng-click="setActive('todo')">待报价</button>
+					</div>
+					<div class="btn-group btn-group-sm">
+						<button type="button" class="btn btn-default btn-line"
+								ng-class="{'btn-info':active=='agreed'}" ng-click="setActive('agreed')">已采纳</button>
+					</div>
+					<div class="btn-group btn-group-sm">
+						<button type="button" class="btn btn-default btn-line"
+								ng-class="{'btn-info':active=='refused'}" ng-click="setActive('refused')">未采纳</button>
+					</div>
+					<div class="btn-group btn-group-sm">
+						<button type="button" class="btn btn-default btn-line"
+								ng-class="{'btn-info':active=='end'}" ng-click="setActive('end')">已失效</button>
+					</div>
+				</div>
+			</div>
+			<div class="inquiry-cz col-xs-2">
+
+			</div>
+		</div>
+	</div>
+	<div class="condition block">
+		<div class="search-bg condition block">
+			<div class="row">
+				<div id="topSearch" style="float: left">
+					<a ng-click="changeDateZone(1);condition.$open=false" title="最近一个月" ng-class="{'active':condition.dateZone=='1'}">最近一个月</a>
+					<a ng-click="changeDateZone(3);condition.$open=false" title="最近三个月" ng-class="{'active':condition.dateZone=='3'}">最近三个月</a>
+					<a ng-click="changeDateZone(6);condition.$open=false" title="最近六个月" ng-class="{'active':condition.dateZone=='6'}">最近六个月</a>
+					<a ng-click="condition.$open=!condition.$open;changeDateZone(-1)" title="自定义" ng-class="{'active':condition.dateZone=='-1'}" >自定义</a>
+				</div>
+				<div class="col-xs-6" style="float: right;">
+					<div class="search">
+						<div class="form-group form-group-sm has-feedback" dropdown auto-close="outsideClick"
+							 on-toggle="searchAdvance=open">
+							<input type="search" class="form-control input-sm" ng-model="keyword"
+								   ng-search="onSearch(keyword)" placeholder="输入单据编号、客户名称、物料名称搜索" style="width: 100%"/>
+							<a class="btn input-group-addon" ng-click="onSearch(keyword)">搜索</a>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="more-list more" ng-class="{'open': condition.$open}">
+				<form class="form-inline">
+					<div class="form-group ">
+						<label>日期:</label>
+						<div class="btn-group btn-menu" dropdown is-open="condition.$dateZoneOpen">
+							<ul class="dropdown-menu">
+								<li><a ng-click="changeDateZone(1)">一个月内</a></li>
+								<li><a ng-click="changeDateZone(6)">半年内</a></li>
+								<li><a ng-click="changeDateZone()">半年前</a></li>
+							</ul>
+						</div>
+						<div class="form-group input-group input-group-xs input-trigger">
+							<input type="text" ng-model="condition.dateFrom"
+								   class="form-control" placeholder="从"
+								   datepicker-popup="yyyy-MM-dd" is-open="condition.$fromOpened"
+								   ng-required="true" max-date = "condition.dateTo"
+								   current-text="今天" clear-text="清除" close-text="关闭"
+								   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+								   ng-focus="openFilterDatePicker($event, condition, '$fromOpened')">
+							<span class="input-group-btn">
+							<button type="button" class="btn btn-default"
+									ng-click="openFilterDatePicker($event, condition, '$fromOpened')">
+								<i class="fa fa-calendar"></i>
+							</button>
+						</span>
+						</div>
+						<div class="form-group input-group input-group-xs input-trigger">
+							<input type="text" ng-model="condition.dateTo"
+								   class="form-control" placeholder="到"
+								   datepicker-popup="yyyy-MM-dd" is-open="condition.$toOpened"
+								   ng-required="true" min-date = "condition.dateFrom"
+								   current-text="今天" clear-text="清除" close-text="关闭"
+								   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+								   ng-focus="openFilterDatePicker($event, condition, '$toOpened')">
+							<span class="input-group-btn">
+							<button type="button" class="btn btn-default"
+									ng-click="openFilterDatePicker($event, condition, '$toOpened')">
+								<i class="fa fa-calendar"></i>
+							</button>
+						</span>
+						</div>
+					</div>
+				</form>
+			</div>
+		</div>
+	</div>
+	<table class="order-table block" ng-table="tableParams">
+		<thead>
+		<tr class="header">
+			<th>物料</th>
+			<th width="60">单位</th>
+			<th width="90"><span class="text-default">≥</span>分段数</th>
+			<th width="90">价格</th>
+			<th width="80">最小订购</th>
+			<th width="80">最小包装</th>
+			<th width="120">有效期</th>
+			<th width="75">操作</th>
+		</tr>
+		<tr class="sep-row">
+			<td colspan="7"></td>
+		</tr>
+		</thead>
+		<tbody ng-if="tableParams.total() == 0">
+		<tr>
+			<td colspan="7">
+				<div class="row text-muted info-container" style="padding: 50px 10px;">
+					<div class="col-md-4 text-center">
+						<br>
+						<br>
+						<div><img src="static/img/all/info.png" width="130px" height="90px"></div>
+						<div class="f16">当前没有对应的客户询价单!</div>
+					</div>
+					<div class="col-md-8 br-l">
+						<div class="f16">
+							<p>为什么我没有接收到客户的询价单?</p>
+						</div>
+						<div class="f14">
+							<div class="info">
+								<p>1、您的客户还没有提交审核询价单<br>
+									解决:与您的客户沟通确认单据是否已经审核(只有客户ERP中已经审核的单据才能接收到)</p>
+							</div>
+							<div class="info">
+								<p>2、客户ERP中供应商信息有误<br>
+									解决:与您的客户沟通确认您的信息在客户的供应商资料中是否维护正确,尤其是企业UU号</p>
+							</div>
+							<div class="info">
+								<p>3、您的客户正在使用旧版本的UAS商务平台<br>
+									解决:我们仍有部分用户在使用旧版本UAS商务平台系统,你可以用您的企业UU号和管理员个人UU号 <a href="http://www.usoftchina.com" class="text-bold text-link" title="http://www.usoftchina.com" target="_blank">登陆旧版本UAS商务平台</a></p>
+							</div>
+						</div>
+						<br>
+						<br>
+					</div>
+				</div>
+			</td>
+		</tr>
+		</tbody>
+		<tbody ng-repeat="inquiryItem in $data track by inquiryItem.id">
+		<tr class="order-hd">
+			<td class="first" colspan="4">
+				<div class="order-main">
+					<a href="javascript:void(0)" ng-if="!isUnread(inquiryItem.id)">
+						<i class="fa fa-circle-thin"></i>
+					</a>
+					<a href="javascript:void(0)" ng-if="isUnread(inquiryItem.id)">
+						<i class="fa fa-circle" style="color: #f40;"></i>
+					</a>&nbsp;&nbsp;
+						<!--<span> <input type="checkbox" class="selector"
+									  ng-model="inquiryItem.$selected">
+						</span> -->
+					<span class="text-num text-bold"
+									  title="{{inquiryItem.inquiry.date}}"
+									  ng-bind="::inquiryItem.inquiry.date | date:'yyyy-MM-dd'"></span>
+					<span g-bind="::inquiryItem.enterprise.enName"></span>
+					<span>流水号:<a title="查看详情" class="text-num order-detail" ng-bind="::inquiryItem.inquiry.code" target="_self"
+								 href="#/purc/publicInquiry/{{::inquiryItem.inquiry.id}}" ng-click="setOrdersRead(inquiryItem.id)"></a></span>
+				</div>
+			</td>
+			<td>
+				币别:<span ng-bind="::inquiryItem.currency"></span>
+			</td>
+			<td>
+				税率:<span ng-bind="::inquiryItem.taxrate || 0"></span>%
+			</td>
+			<td class="text-right" colspan="1" class="order-sum">
+				<div ng-if="inquiryItem.replyable">
+					<span class="text-inverse text-bold" ng-bind="::inquiryItem.inquiry.endDate | date:'yyyy-MM-dd'"></span>
+				</div>
+			</td>
+			<td class="text-center">
+				<div class="operates">
+					<!-- <a ng-click="print(inquiryItem)" class="text-muted" title="打印"><i
+                        class="fa fa-print fa-lg"></i></a> -->
+				</div>
+			</td>
+		</tr>
+		<tr class="order-bd">
+			<td class="product">
+				<div class="text-num text-bold" ng-bind="::inquiryItem.product.code"></div>
+				<div ng-bind="::inquiryItem.product.title"></div>
+				<div class="text-muted" ng-bind="::inquiryItem.product.spec"></div>
+				<div ng-if="inquiryItem.inquiry.attachs.length" class="text-muted">
+					<i class="fa fa-paperclip fa-fw" style="color: #ffa340; font-size: 18px;"></i>附件:<a class="file" ng-repeat="attach in inquiryItem.inquiry.attachs" href="file/{{attach.id}}">{{::attach.name}}</a>
+				</div>
+				<div ng-if="::inquiryItem.brand && !inquiryItem.$editing" class="text-muted">
+					品牌:<spans ng-bind="::inquiryItem.brand"></spans>
+				</div>
+				<div ng-if="::inquiryItem.vendorprodcode && !inquiryItem.$editing" class="text-muted">
+					物料编号:<spans ng-bind="::inquiryItem.vendorprodcode"></spans>
+				</div>
+				<div class="form-group" ng-if="inquiryItem.$editing" style="width: 180px;">
+					<input type="text" class="form-control input-xs"
+						   ng-model="inquiryItem.brand" placeholder="物料品牌">
+				</div>
+				<div class="form-group" ng-if="inquiryItem.$editing" style="width: 180px;">
+					<input type="text" class="form-control input-xs"
+						   ng-model="inquiryItem.vendorprodcode" placeholder="供应商物料编号">
+				</div>
+				<div class="form-group" ng-if="inquiryItem.$editing" style="width: 220px;">
+					<input type="number" class="form-control input-xs" ng-change="verify(inquiryItem.leadtime,'leadtime')"
+						   ng-model="inquiryItem.leadtime" placeholder="交货周期(确切天数)" style="display: inline-block;width: 180px;">
+					<span ng-if="!inquiryItem.leadtime" class="text-inverse"> 必填*</span>
+					<div style="margin-left: 50px;"class="text-bold text-inverse" ng-show="!leadtimeVerify">请填数字!</div>
+				</div>
+			</td>
+			<td class="text-center">
+				<div ng-bind="inquiryItem.product.unit"></div>
+			</td>
+			<td class="text-center">
+				<div ng-show="!inquiryItem.$editing">
+					<div ng-repeat="reply in inquiryItem.replies">
+						<span ng-bind="reply.lapQty"></span>
+					</div>
+				</div>
+				<div style="margin: 0 auto;" ng-if="inquiryItem.$editing">
+					<div ng-repeat="reply in inquiryItem.replies">
+						<div class="form-group input-group input-group-xs">
+							<input type="text" class="form-control input-xs" ng-change="verifylapQty(reply.lapQty,$index)"
+								   ng-model="reply.lapQty" min="{{reply.lapQty == 0 ? 0 : 1}}"
+								   ng-Readonly="$index == 0"
+								   placeholder="数量" /> <span class="input-group-btn" ng-show="$index != 0">
+									<button class="btn btn-default" type="button"
+											ng-click="removeStep(inquiryItem, $index)">
+										<i class="fa fa-trash-o"></i>
+									</button>
+								</span>
+						</div>
+						<div class="text-bold text-inverse" style="margin-top:-15px" ng-show="!replylapQtys[$index]">请填数字!</div>
+					</div>
+					<a ng-click="addStep(inquiryItem)" class="btn btn-default btn-xs"
+					   ng-show="!inquiryItem.custLap">添加分段</a>
+				</div>
+			</td>
+			<td class="text-center br-l">
+				<div>
+					<div ng-repeat="reply in inquiryItem.replies">
+						<span ng-if="!isUser" ng-bind="reply.price | number:6"></span> <span
+							ng-show="reply.price == null || isUser" class="text-muted">-</span>
+					</div>
+					<!-- <div class="dropdown">
+						<a href="javascript:void(0);" class="dropdown-toggle text-default"
+						   ng-mouseover="getHistory(inquiryItem)">报价信息<i
+								class="fa fa-fw fa-angle-down"></i></a>
+						<div class="dropdown-menu pane" style="width: 270px;">
+							<div class="pane-body">
+								<ul class="list-unstyled list-menu">
+									<li ng-repeat="reply in inquiryItem.replies">
+										<div ng-class="{'text-inverse': $index==0}">
+											<div class="row row-sm"
+												 ng-repeat="reply in inquiryItem.replies">
+												<div class="col-xs-5">≥{{reply.lapQty}}</div>
+												<div class="col-xs-5">价格{{reply.price | number:6}}</div>
+											</div>
+										</div>
+										<div class="text-muted">{{reply.inquiry.date |
+											date:'yyyy-MM-dd'}}{{reply.inquiry.enterprise.enName}}
+										</div>
+									</li>
+								</ul>
+								<div ng-show="!inquiryItem.replies || inquiryItem.replies.length == 0"
+										class="text-center text-muted">暂无报价信息</div>
+							</div>
+						</div>
+					</div> -->
+				</div>
+				<div style="margin: 0 auto;" ng-if="inquiryItem.$editing">
+					<div ng-repeat="reply in inquiryItem.replies">
+						<div class="form-group">
+							<input type="text" class="form-control input-xs " ng-class="{'input-error': !replyPrices[$index]}" ng-model="reply.price"
+								   ng-change="verify(reply.price,$index)" placeholder="单价(必填)"  />
+							<div class="text-bold text-inverse" style="margin-bottom:-15px" ng-show="!replyPrices[$index]">请填数字!</div>
+						</div>
+					</div>
+				</div>
+			</td>
+			<td class="text-center br-l">
+				<div ng-show="!inquiryItem.$editing">
+					<span ng-bind="inquiryItem.minOrderQty"></span> <span
+						ng-show="inquiryItem.minOrderQty == null" class="text-muted">-</span>
+				</div>
+				<div ng-if="inquiryItem.$editing">
+					<input type="text" class="form-control input-xs" ng-change="verify(inquiryItem.minOrderQty,'minOrderQty')"
+						   ng-class="{'input-error': !minOrderQtyVerify}" ng-model="inquiryItem.minOrderQty" placeholder="最小订购" >
+					<div class="text-bold text-inverse" ng-show="!minOrderQtyVerify">请填数字!</div>
+				</div>
+			</td>
+			<td class="text-center br-l">
+				<div ng-show="!inquiryItem.$editing">
+					<span ng-bind="inquiryItem.minPackQty"></span> <span
+						ng-show="inquiryItem.minPackQty == null" class="text-muted">-</span>
+				</div>
+				<div ng-if="inquiryItem.$editing">
+					<input type="text" class="form-control input-xs"
+						   ng-model="inquiryItem.minPackQty" placeholder="最小包装"
+						   ng-change="verify(inquiryItem.minPackQty,'minPackQty')" ng-class="{'input-error': !minPackQtyVerify}" >
+					<div class="text-bold text-inverse" ng-show="!minPackQtyVerify">请填数字!</div>
+				</div>
+			</td>
+			<td class="text-center br-l">
+				<div ng-show="!inquiryItem.$editing"
+					 ng-init="parseDate(inquiryItem)">
+					<div ng-show="inquiryItem.vendFromDate">
+						<span class="text-muted">从 </span><span
+							ng-bind="inquiryItem.vendFromDate | date:'yyyy-MM-dd'"></span> <span
+							class="text-muted">到 </span><span
+							ng-bind="inquiryItem.vendToDate | date:'yyyy-MM-dd'"></span>
+					</div>
+					<div ng-show="!inquiryItem.vendFromDate">
+						<span class="text-muted">-</span>
+					</div>
+				</div>
+				<div ng-if="inquiryItem.$editing">
+					<div class="form-group input-group input-group-xs input-trigger">
+						<input type="text" ng-model="inquiryItem.vendFromDate"
+							   class="form-control" placeholder="开始日期"
+							   datepicker-popup="yyyy-MM-dd" is-open="inquiryItem.$fromOpened"
+							   min-date="getMinDate(inquiryItem)" ng-required="true"
+							   current-text="今天" clear-text="清除" close-text="关闭"
+							   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+							   ng-focus="openDatePicker($event, inquiryItem, '$fromOpened')">
+						<span class="input-group-btn">
+								<button type="button" class="btn btn-default"
+										ng-click="openDatePicker($event, inquiryItem, '$fromOpened')">
+									<i class="fa fa-calendar"></i>
+								</button>
+							</span>
+					</div>
+					<div class="form-group input-group input-group-xs input-trigger">
+						<input type="text" ng-model="inquiryItem.vendToDate"
+							   class="form-control" placeholder="结束日期"
+							   datepicker-popup="yyyy-MM-dd" is-open="inquiryItem.$toOpened"
+							   min-date="inquiryItem.vendFromDate" ng-required="true"
+							   current-text="今天" clear-text="清除" close-text="关闭"
+							   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+							   ng-focus="openDatePicker($event, inquiryItem, '$toOpened')">
+						<span class="input-group-btn">
+								<button type="button" class="btn btn-default"
+										ng-click="openDatePicker($event, inquiryItem, '$toOpened')">
+									<i class="fa fa-calendar"></i>
+								</button>
+							</span>
+					</div>
+					<div>
+						<span class="text-bold text-inverse">注意:</span>
+						<div><strong>交货周期</strong>和<strong>单价</strong>为必填项;<strong>分段</strong>是指按购买数量分成几个等级,然后在不同范围内报出对应的价格,一般量越大价格越低!</div>
+					</div>
+				</div>
+			</td>
+			<td class="text-center br-l">
+				<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == null && inquiryItem.invalid != 1" class="block">
+					<div ng-if="inquiryItem.replies.length > 0" class="text-muted" style="padding-top: 50px;">
+						<a ng-click="accept(inquiryItem.id);setOrdersRead(inquiryItem.id)">采纳</a>
+						<a ng-click="refuse(inquiryItem.id);setOrdersRead(inquiryItem.id)">拒绝</a></div>
+				</div>
+				<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == null && inquiryItem.invalid == 1" class="block">
+					<span class="text-trans text-light">已失效</span>
+				</div>
+				<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == 1" class="block">
+					<span class="text-trans success">已采纳</span>
+				</div>
+				<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == 0" class="block">
+					<span class="text-trans error">未采纳</span>
+				</div>
+				<div ng-if="inquiryItem.status == 200">
+					<div ng-if="inquiryItem.inquiry.overdue != 1">
+						<span class="text-trans half">未报价</span>
+					</div>
+					<div ng-if="inquiryItem.inquiry.overdue == 1" class="block">
+						<span class="text-trans error">已过期</span>
+					</div>
+				</div>
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</div>

+ 569 - 0
src/main/webapp/resources/tpl/index/purc/pubInquiry_detail.html

@@ -0,0 +1,569 @@
+<!-- 报价单  -->
+<style>
+
+/* 标题 */
+.bid-label {
+	height: 30px;
+	margin-left: 10px;
+	margin-right: 10px;
+	background-color: #e8e8e8;
+	box-shadow: 0 0 5px #6f6f6f;
+	border-top-right-radius: 20px;
+}
+
+/* 主体 */
+.purc-bid {
+	line-height: 2;
+	font-size: 14px;
+}
+
+.purc-bid .row {
+	margin-left: 0px;
+	margin-right: 0px;
+	padding-left: 15px;
+	padding-right: 15px;
+}
+
+.bid-content {
+	background-color: #fff;
+}
+
+.bid-content>div>div {
+	margin-top: 3px;
+	margin-bottom: 3px;
+}
+
+/* 读取显示无法修改的数据 */
+.unchanged-info {
+	color: #969595;
+	overflow: hidden;
+}
+
+/* 二级标题栏 */
+.title-div {
+	font-size: 14px;
+	font-weight: 600;
+	padding-left: 30px;
+	height: 50px;
+	padding-top: 11px;
+}
+
+/* 输入框前描述 */
+.bid-desc {
+	width: 100px;
+	float: left;
+}
+
+/* 输入框 */
+.bid-input {
+	border: none;
+	border-bottom: 1px solid #323232;
+	text-align: center;
+}
+
+.bid-input:focus {
+	outline: none;
+	border-bottom: 1px solid #5078cb;
+}
+
+/* 基本信息 */
+.base-info {
+	padding-bottom: 30px;
+	padding-top: 20px;
+	margin-bottom: 0; /* 去除index中公共样式影响 */
+}
+
+/* 右下角按钮 */
+.bid-content>div {
+	background-color: #fff;
+}
+
+.bid-content>div>div>button {
+	width: 94px;
+	height: 36px;
+	font-size: 14px;
+	color: #fff;
+	border-radius: 0;
+}
+
+.bid-content>div>div.btn-bid>button {
+	background-color: #327EBE;
+}
+
+.bid-content>div>div.btn-bid>button:hover {
+	background: #3a89d1;
+	color: #fff;
+}
+/* 列表内容 */
+.tender-table {
+	padding: 0 20px;
+}
+
+.tender-table .header {
+	height: 50px;
+	background-color: #fff;
+	color: rgb(50, 50, 50);
+	border-bottom: 1px solid #327ebe;
+}
+
+.tender-table thead>tr>th:first-child, .tender-table tbody>tr>td:first-child
+	{
+	padding-left: 30px;
+}
+
+.tender-table tr {
+	height: 50px;
+	border-bottom: 1px dashed #969595;
+}
+
+.tender-table>tbody {
+	height: 100px;
+	font-size: 14px;
+	color: #323232;
+	border: 1px solid transparent;
+}
+
+.tender-table tbody tr td a {
+	color: #327ebe;
+	font-size: 12px;
+}
+
+.tender-table tbody tr td a:hover {
+	color: #D32526;
+	cursor: pointer;
+}
+
+/* 输入框 */
+.tender-input {
+	border: none;
+	width: 100px;
+}
+
+.tender-input:focus {
+	outline: none;
+}
+
+.com_head {
+	width: 100%;
+	height: 40px;
+	line-height: 42px;
+	background: url(static/img/comm_bg01.png) no-repeat center;
+	background-size: 100%;
+}
+
+.com_head span {
+	margin-left: 20px;
+	color: #000;
+	font-size: 14px;
+}
+
+.com_head a {
+	color: #327ebe;
+	float: right;
+	margin-right: 40px;
+	font-size: 14px;
+}
+
+.com_head a i {
+	margin-left: 5px;
+	line-height: 40px;
+}
+
+.com_head a:hover {
+	color: #d2272d;
+}
+
+.com_title {
+	width: 100%;
+	margin: 0px auto;
+	height: 40px;
+	line-height: 40px;
+	font-size: 14px;
+	color: #323232;
+	background: #f5f5f5;
+}
+
+.com_title font {
+	color: #327ebe;
+}
+
+.com_title01 {
+	height: 50px;
+	line-height: 50px;
+	width: 100%;
+	border-bottom: #3578ba 1px dotted;
+	border-top: #e8e8e8 1px solid;
+	margin-top: -4px;
+} /*  这里修改过 margin-top*/
+.com_title01 span {
+	margin-left: 20px;
+	font-size: 14px;
+	line-height: 50px;
+	color: #555;
+	font-weight: bold;
+}
+
+.comment-oder-list  a {
+	color: #5078cb;
+}
+
+.comment-oder-list  a:hover {
+	cursor: pointer;
+	color: #d2272d;
+}
+
+/*评标单*/
+.tender-list02 .comment-oder {
+	width: 100%;
+	margin: 0 auto;
+}
+
+.tender-list02 .comment-oder:hover {
+	border: #d32526 1px solid;
+}
+
+.tender-list02 .comment-oder-text {
+	border-bottom: #5078cb 1px solid;
+}
+
+.tender-list02 .comment-oder-text, .comment-oder-text ul {
+	width: 100%;
+	margin: 0 auto;
+	padding: 5px 0;
+	position: relative;
+}
+
+.tender-list02 .comment-oder-text i {
+	position: absolute;
+	top: -1px;
+	left: 35px;
+	width: 20px;
+	height: 20px;
+	line-height: 15px;
+	text-align: center;
+	background: #595959;
+	display: inline-block;
+	font-weight: 700;
+	font-size: 14px;
+	color: #fff;
+	border-radius: 0 0 50px 0;
+}
+
+.tender-list02 .comment-oder-text ul li {
+	width: 88%;
+	margin: 0 auto;
+	height: 30px;
+	line-height: 30px;
+}
+
+.tender-list02 .comment-oder-text ul li span {
+	width: 33.3333%;
+	float: left;
+}
+
+.tender-list02 .comment-oder-text ul li span em, .comment-oder-text ul li span b
+	{
+	font-size: 14px;
+}
+
+.tender-list02 .comment-oder-text ul li span em {
+	width: 70px;
+	display: inline-block;
+}
+
+.tender-list02 .comment-oder-text ul li span b {
+	color: #959595;
+	width: 190px;
+	display: inline-block;
+	float: right;
+	white-space: nowrap;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}
+
+.tender-list02 .comment-oder-list, .comment-oder-list dl {
+	width: 100%;
+	margin: 0 auto;
+}
+
+.tender-list02 .comment-oder-list dl dt, .comment-oder-list dl dd {
+	width: 100%;
+	margin: 0 auto;
+	border-bottom: #ccc 1px dashed;
+	min-height: 50px;
+	line-height: 50px;
+}
+
+.tender-list02 .comment-oder-list dl dt span.wid01 {
+	text-align: left;
+	padding-left: 30px;
+}
+
+.tender-list02 .comment-oder-list dl dd span.wid01 {
+	text-align: left;
+	padding-left: 30px;
+}
+
+.tender-list02 .comment-oder-list dl span {
+	font-size: 14px;
+	width: 9%;
+	float: left;
+	color: #323232 !important;
+	line-height: 50px;
+	position: relative;
+	/*overflow: hidden;*/
+}
+
+.tender-list02 .comment-oder-list dl span.wid01 {
+	width: 19%;
+}
+
+.tender-list02 .comment-oder-list dl span.wid02 {
+	width: 15%;
+}
+
+.tender-list02 .comment-oder-list dl dd span a {
+    margin-top: 15px;
+	margin-left: 15px;
+	font-size: 12px;
+    width: 104px;
+    height: 25px;
+    line-height: 25px;
+    float: left;
+
+}
+.dropdown:hover>.dropdown-menu{
+    margin-top: 51px;
+}
+.tender-list02 .comment-oder-list dl dd:hover {
+	border-bottom: #ccc 1px dotted;
+	border-top: none;
+	border-left: none;
+	border-right: none;
+}
+
+.tender-list02 .change01 {
+	width: 16px;
+	height: 14px;
+	display: inline-block;
+	float: right;
+	line-height: 7px;
+	position: absolute;
+	top: 13px;
+}
+
+.tender-list02 .change01 i {
+	width: 100%;
+	display: inline-block;
+	height: 7px;
+	color: #000;
+}
+
+.tender-list02 .change01:hover i {
+	color: #5078cb;
+}
+
+.tender-list02 .explain {
+	width: 90%;
+	height: 30px;
+	border: none;
+	text-align: center;
+	line-height: 30px;
+}
+
+.tender-list02 .save {
+	margin-top: 30px;
+}
+
+.tender-list02 .save a {
+	width: 94px;
+	height: 36px;
+	display: inline-block;
+	background: #3578ba;
+	text-align: center;
+	color: #fff;
+	font-size: 14px;
+	float: right;
+	line-height: 36px;
+	margin-right: 40px;
+}
+
+.tender-list02 .save a:hover {
+	background: #1f4fb2;
+}
+
+.tender-list02 .com_title01, .tender-list .com_title01 {
+	margin-top: 0;
+}
+
+i, em {
+	font-style: normal;
+}
+
+.prod-number { /* 数字居右 */
+	text-align: center;
+}
+
+.tender-list02 .comment-oder-list dl dt span {
+	text-align: center;
+}
+.tender-list02 .comment-oder-list dl span{
+    text-align: center;
+}
+.tender-list02 .comment-oder-list dl dd span:first-child{
+    line-height: 20px;
+    padding-top: 5px;
+}
+.tender-list02 .comment-oder-list dl span a.active {
+	text-decoration: none;
+	color: #D32526;
+}
+.tender-list02 .comment-oder-list dl span.text-trans{
+    line-height: 25px;
+     padding: 0;
+    top: 10px;
+    right: -15px;
+}
+.tender-list02 .comment-oder-list dl span.text-trans.error{
+    color: #d44950 !important;
+    border-color: #d44950;
+}
+.comment-oder-list dl dd:last-child{
+    border-bottom: none;
+}
+</style>
+
+<div class="ng-scope">
+    <form name="bidForm">
+        <div class="purc-bid">
+            <div class="com_head"><span>报价单</span></div>
+            <div class="bid-content ng-scope">
+                <div class="title-div" style="border-bottom: 1px dashed #327ebe;">
+                    <span>基本信息</span>
+                </div>
+                <div class="row base-info">
+                    <div class="col-xs-4">
+                        <div class="bid-desc">询价单号:</div>
+                        <div class="unchanged-info">{{inquiry.code}}</div>
+                    </div>
+                    <div class="col-xs-4">
+                        <div class="bid-desc">报价日期:</div>
+                        <div class="unchanged-info">{{inquiry.date| date: 'yyyy-MM-dd'}}</div>
+                    </div>
+                    <div class="col-xs-4">
+                        <div class="bid-desc">截止日期:</div>
+                        <div class="unchanged-info">{{inquiry.endDate| date: 'yyyy-MM-dd'}}</div>
+                    </div>
+                    <div class="col-xs-12">
+                        <div class="bid-desc">收货地址:</div>
+                        <div class="unchanged-info">{{inquiry.ship}}</div>
+                    </div>
+                    <div class="col-xs-12">
+                        <div class="bid-desc">发票类型:</div>
+                        <div class="unchanged-info" ng-if="inquiry.invoice == 2">增值税专用发票</div>
+                        <div class="unchanged-info" ng-if="inquiry.invoice == 1">增值税普通发票</div>
+                        <div class="unchanged-info" ng-if="inquiry.invoice == 0">不需要发票</div>
+                    </div>
+                    <div class="col-xs-12">
+                        <div class="bid-desc">备注:</div>
+                        <div class="unchanged-info">{{inquiry.remark || '无'}}</div>
+                    </div>
+                    <div class="col-xs-12">
+                        <div class="bid-desc">附件:</div>
+                        <div class="unchanged-info"><a class="file" ng-repeat="attach in inquiry.attachs" href="file/{{attach.id}}"><span ng-bind="attach.name != null ? attach.name : '无'"></span></a></div>
+                    </div>
+                </div>
+                <div class="tender-list02">
+                    <!--报价信息-->
+                    <div class="com_title01"><span>报价信息</span></div>
+                    <div class="comment-oder" ng-repeat="product in inquiry.products | orderBy : 'index'">
+                        <div class="comment-oder-text">
+                            <ul>
+                                <li class="list-unstyled">
+                                    <span><em style="width: 80px;">物料型号:</em><b title="{{product.code}}">{{product.code}}</b></span>
+                                    <span><em>物料名称:</em><b title="{{product.title}}">{{product.title}}</b></span>
+                                    <span><em>品牌:</em><b title="{{product.brand}}">{{product.brand}}</b></span>
+                                </li>
+                                <li class="list-unstyled">
+                                    <span style="width: 66.6%;"><em style="width: 80px;">规格:</em><b style="width:85%;">{{product.spec}}</b></span>
+                                    <span><em style="width: 80px;">单位:</em><b title="{{product.unit}}">{{product.unit}}</b></span>
+                                </li>
+                            </ul>
+                            <i>{{$index + 1}}</i>
+                        </div>
+                        <div class="comment-oder-list">
+                            <dl>
+                                <dt>
+                                    <span class="wid01">供应商</span>
+                                    <span>币别</span>
+                                    <span>税率(% )</span>
+                                    <span class="wid02">单价</span>
+                                    <span>交货周期</span>
+                                    <span>最小订购</span>
+                                    <span>最小包装</span>
+                                    <span>有效期</span>
+                                    <span>操作</span>
+                                </dt>
+                                <dd ng-repeat = "inquiryItem in product.publicInquiryItemInfos">
+                                    <span class="wid01">{{inquiryItem.enterprise.enName}}
+                                    </span>
+                                    <span class="prod-number">{{inquiryItem.currency}}</span>
+                                    <span class="prod-number">{{inquiryItem.taxrate || 0}}</span>
+                                    <span class="wid02">
+                                    	<div class="dropdown" ng-if="::inquiryItem.replies.length > 1">
+											<a href="javascript:void(0);"
+												class="dropdown-toggle text-default">报价信息<i class="fa fa-fw fa-angle-down"></i></a>
+											<div class="dropdown-menu pane" style="width: 270px;">
+												<div class="pane-body">
+													<ul class="list-unstyled list-menu">
+															<div ng-class="{'text-inverse': $index==0}">
+																<div class="row row-sm"
+																	ng-repeat="reply in ::inquiryItem.replies">
+																	<div class="col-xs-5">≥{{reply.lapQty}}</div>
+																	<div class="col-xs-5">价格{{isUser?'-':(reply.price | number:6)}}</div>
+																</div>
+															</div>
+													</ul>
+													<div ng-show="inquiryItem.replies.length == 0"
+														class="text-center text-muted">暂无报价信息</div>
+												</div>
+											</div>
+										</div>
+										<div  ng-if="::inquiryItem.replies.length == 1">
+											<div class="row row-sm"
+												ng-repeat="reply in ::inquiryItem.replies">
+												<div class="col-xs-5">≥{{reply.lapQty}}</div>
+												<div class="col-xs-5">{{isUser?'-':(reply.price | number:6)}}</div>
+											</div>
+										</div>
+										<div  ng-if="::inquiryItem.replies.length == 0">暂无报价信息</div>
+                                    </span>
+                                    <span class="prod-number">{{inquiryItem.leadtime|| '无'}}</span>
+                                    <span class="prod-number">{{inquiryItem.minOrderQty|| '无'}}</span>
+                                    <span class="prod-number">{{inquiryItem.minPackQty|| '无'}}</span>
+                                    <span style="line-height: 20px; padding-top: 5px;">
+                                        <em>{{inquiryItem.vendFromDate| date:'yyyy-MM-dd'}}</em><br/>
+                                        <em>{{inquiryItem.vendToDate|date: 'yyyy-MM-dd'}}</em>
+                                    </span>
+                                    <span ng-if="inquiryItem.status == 200" class="text-trans info">暂未报价</span>
+                                    <span ng-if="inquiryItem.status == 201 && inquiryItem.agreed == null"><a ng-click="accept(inquiryItem.id)">采纳</a><a ng-click="refuse(inquiryItem.id)">拒绝</a></span>
+									<span ng-if="inquiryItem.status == 201 && inquiryItem.agreed == 1" class="text-trans success">已采纳</span>
+									<span ng-if="inquiryItem.status == 201 && inquiryItem.agreed == 0" class="text-trans error">未采纳</span>
+									<span ng-if="inquiryItem.status == 201 && inquiryItem.agreed == null && inquiryItem.toDate < nowDate" class="text-trans text-light">已失效</span>
+                                </dd>
+                            </dl>
+                        </div>
+                    </div>
+                </div>
+               <!--  <div class="col-xs-12" style="padding: 30px 0 0 0;">
+                    <div class="col-xs-2 pull-right btn-bid">
+                        <button class="btn"
+                                ng-disabled="bidForm.$invalid || tender.overdue == 0 || tender.result == 1"
+                                ng-click="submit(tender)">确定
+                        </button>
+                    </div>
+                </div> -->
+            </div>
+        </div>
+    </form>
+</div>