Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
rs-cloud-platform-ui
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
2
Merge Requests
2
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
周健威
rs-cloud-platform-ui
Commits
2b67b404
Commit
2b67b404
authored
Dec 24, 2020
by
lixy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
定制订单-选择数据
parent
badf6f8a
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
360 additions
and
27 deletions
+360
-27
index.js
src/api/website/order/index.js
+22
-0
index.vue
src/views/orderManagement/orderList/index.vue
+60
-22
orderSendDetail.vue
src/views/orderManagement/orderList/orderSendDetail.vue
+74
-1
selectDataDialog.vue
src/views/orderManagement/orderList/selectDataDialog.vue
+203
-0
send.vue
src/views/orderManagement/orderList/send.vue
+1
-4
No files found.
src/api/website/order/index.js
View file @
2b67b404
...
...
@@ -46,3 +46,25 @@ export function createOrder(obj) {
});
}
/**
* 添加定制数据
*/
export
function
setOrderItem
(
obj
)
{
return
fetch
({
url
:
'/api/website/orderInfo/setOrderItem'
,
method
:
'post'
,
data
:
obj
});
}
/**
* 选择定制数据
*/
export
function
getItemByType
(
obj
)
{
return
fetch
({
url
:
'/api/website/orderInfo/getItemByType'
,
method
:
'get'
,
params
:
obj
});
}
src/views/orderManagement/orderList/index.vue
View file @
2b67b404
...
...
@@ -75,8 +75,12 @@
</div>
<div
v-for=
"item in list"
:key=
"item.orderId"
>
<div
class=
"order-no-top"
>
<span
class=
"order-no"
>
订单号:
{{
item
.
orderNo
}}
<span
style=
"background: #f8ddbb;color: #F59A23;font-size: 12px;padding: 2px 10px;border-radius: 10px;margin-left:10px;"
v-if=
"item.invoiceStatus>=2"
>
已开票
</span><span
style=
"border:1px solid #eee;color: #1890FF;font-size: 12px;padding: 2px 10px;border-radius: 10px;margin-left:10px;"
v-else-if=
"item.invoiceId"
>
开发票
</span></span>
<span
class=
"order-time"
><span
style=
"background: #1890FF;color: #fff;font-size: 12px;padding: 2px 10px;border-radius: 4px;margin-right:10px;cursor: pointer;"
@
click=
"handleInvoice(item)"
v-if=
"item.invoiceId && item.invoiceStatus == 1"
>
开发票
</span>
下单时间:
{{
item
.
crtTime
}}
</span>
<span
class=
"order-no"
>
订单号:
{{
item
.
orderNo
}}
<span
class=
"tag-invoice"
v-if=
"item.invoiceStatus>=2"
>
已开票
</span>
<span
class=
"tag-no"
v-else-if=
"item.invoiceId"
>
开发票
</span>
<span
class=
"tag-no"
style=
"color: #d9001b;"
v-if=
"item.type == 2"
>
定制
</span>
</span>
<span
class=
"order-time"
><span
class=
"tag-invoice-no"
@
click=
"handleInvoice(item)"
v-if=
"item.invoiceId && item.invoiceStatus == 1"
>
开发票
</span>
下单时间:
{{
item
.
crtTime
}}
</span>
</div>
<table
class=
"order-table-1"
>
<tr>
...
...
@@ -84,6 +88,8 @@
<td
class=
"goods-phone"
>
{{
item
.
phone
}}
</td>
<td
class=
"goods-item"
v-if=
"item.type == 1"
>
<div
v-for=
"iitem in item.orderItemList"
:key=
"iitem.itemId"
class=
"flex-aic goods-ii"
>
<div
class=
"flex-aic-jcb"
style=
"width: 100%;"
>
<div
class=
"flex-aic"
>
<img
style=
"width: 84px;height: 62px;border-radius: 8px;object-fit: cover;"
:src=
"iitem.itemPic"
>
<span
v-if=
"iitem.type != 1"
>
{{
iitem
.
name
}}
</span>
<div
v-else
>
...
...
@@ -93,14 +99,22 @@
<p>
云量:
{{
iitem
.
detailJson
.
imageCloudage
}}
</p>
</div>
</div>
<p
style=
"padding-right: 10px;"
>
{{
iitem
.
type
==
1
?
'标准数据'
:
iitem
.
type
==
2
?
'行业应用'
:
iitem
.
type
==
3
?
'影像图库'
:
iitem
.
type
}}
</p>
</div>
</div>
</td>
<td
class=
"goods-item"
v-if=
"item.type == 2"
>
<div
class=
"flex-aic-jcb"
>
<div>
<p>
区域范围:
{{
item
.
customerJson
.
provinceName
+
item
.
customerJson
.
cityName
+
item
.
customerJson
.
areaName
}}
</p>
<p>
采集时间:
{{
item
.
customerJson
.
startTimeStr
}}
至
{{
item
.
customerJson
.
endTimeStr
}}
</p>
<p
v-if=
"item.customerJson.type == 1"
>
分辨率:
{{
item
.
customerJson
.
resolution
}}
</p>
<p
v-if=
"item.customerJson.type != 3"
>
获取类型:
{{
item
.
customerJson
.
gainType
==
101
?
'数据API'
:
item
.
customerJson
.
gainType
==
102
?
'实体数据'
:
item
.
customerJson
.
gainType
==
201
?
'报告'
:
item
.
customerJson
.
gainType
==
202
?
'web平台'
:
item
.
customerJson
.
gainType
==
203
?
'其他'
:
item
.
customerJson
.
gainType
}}
</p>
<p
v-if=
"item.customerJson.type==3"
>
定制类型:
{{
item
.
customerJson
.
dataType
}}
</p>
<p
v-if=
"item.customerJson.type==3"
>
数据格式:
{{
item
.
customerJson
.
dataFormat
}}
</p>
</div>
<p
style=
"padding-right: 10px;"
>
{{
item
.
customerJson
.
type
==
1
?
'编程需求'
:
item
.
customerJson
.
type
==
2
?
'专题应用需求'
:
item
.
customerJson
.
type
==
3
?
'影像图需求'
:
item
.
customerJson
.
type
}}
</p>
</div>
</td>
<td
class=
"goods-remark"
>
{{
item
.
remark
?
item
.
remark
:
item
.
customerJson
?
item
.
customerJson
.
descr
:
''
}}
</td>
<td
class=
"send-way-item"
>
{{
item
.
sendType
==
1
?
'线上'
:
item
.
sendType
==
2
?
'线下'
:
'线上'
}}
</td>
...
...
@@ -109,7 +123,8 @@
<td
class=
"order-status-item"
:style=
"item.status==4?'color:#f6b725;':item.status==5?'color:#0493fe;':item.status==6?'color:#2fd96f;':item.status==2?'color:#e83328;':''"
>
{{
item
.
status
==
2
?
'待付款'
:
item
.
status
==
4
?
'待发货'
:
item
.
status
==
5
?
'待收货'
:
item
.
status
==
6
?
'已完成'
:
item
.
status
==-
2
?
'已取消'
:
item
.
status
==-
1
?
'已删除'
:
item
.
status
}}
</td>
<td
style=
"padding: 20px;border-right: none;"
>
<span
class=
"normal-btn"
v-if=
"item.status==5 || item.status == 6"
@
click=
"handleSee(item)"
>
查看
</span>
<span
class=
"normal-btn"
v-if=
"item.status==4 && item.shippingStatus == 0"
@
click=
"handleSend(item)"
>
发货
</span>
<span
class=
"normal-btn"
v-if=
"item.status==4 && item.shippingStatus == 0 && item.type == 1"
@
click=
"handleSend(item)"
>
发货
</span>
<span
class=
"normal-btn"
v-if=
"item.status==4 && item.type == 2"
@
click=
"handleData(item)"
>
选择数据
</span>
</td>
</tr>
</table>
...
...
@@ -130,16 +145,19 @@
<order-send-detail
:oneRow=
"oneRow"
v-if=
"orderSendDetailVisible"
v-on:detailEvent=
"detailEvent"
></order-send-detail>
<!--发货弹窗-->
<send
v-if=
"sendVisible"
:one-row=
"oneRow"
v-on:sendEvent=
"sendEvent"
:title=
"title"
></send>
<!--定制数据-选择数据-->
<select-data-dialog
v-if=
"selectDataVisible"
:one-row=
"oneRow"
v-on:selectDataEvent=
"selectDataEvent"
></select-data-dialog>
</div>
</div>
</
template
>
<
script
type=
"javascript"
>
import
{
getOrderList
}
from
"api/website/order/index"
;
import
orderSendDetail
from
"./orderSendDetail"
;
import
selectDataDialog
from
'./selectDataDialog'
import
send
from
'./send'
import
{
timestamp2DateAuto
}
from
"../../../utils/dateUtils"
;
export
default
{
components
:{
orderSendDetail
,
send
},
components
:{
orderSendDetail
,
send
,
selectDataDialog
},
data
()
{
return
{
title
:
'订单发货'
,
...
...
@@ -172,7 +190,8 @@
total
:
0
,
orderSendDetailVisible
:
false
,
// 查看弹窗
sendVisible
:
false
,
// 发货弹窗
oneRow
:
{}
// 当前操作项
oneRow
:
{},
// 当前操作项
selectDataVisible
:
false
,
// 选择数据
};
},
created
()
{
...
...
@@ -197,6 +216,15 @@
detailEvent
(){
this
.
orderSendDetailVisible
=
false
},
/**
* 选择数据-关闭弹窗
*/
selectDataEvent
(
e
){
if
(
e
){
this
.
getList
()
}
this
.
selectDataVisible
=
false
},
/**
* 查看
*/
...
...
@@ -229,6 +257,13 @@
this
.
title
=
'订单发货'
this
.
sendVisible
=
true
},
/**
* 选择数据
*/
handleData
(
row
){
this
.
oneRow
=
row
this
.
selectDataVisible
=
true
},
/**
* 商品品牌列表
*/
...
...
@@ -321,7 +356,7 @@
text-align
:
center
;
}
.goods-item
{
width
:
2
0%
;
width
:
3
0%
;
height
:
100%
;
padding-left
:
10px
;
align-items
:
center
;
...
...
@@ -334,7 +369,7 @@
}
}
.pay-way-item
,
.send-way-item
{
width
:
10
%
;
width
:
8
%
;
height
:
100%
;
text-align
:
center
;
justify-content
:
center
;
...
...
@@ -348,14 +383,14 @@
align-items
:
center
;
}
.order-status-item
{
width
:
10
%
;
width
:
8
%
;
height
:
100%
;
text-align
:
center
;
justify-content
:
center
;
align-items
:
center
;
}
.option-item
{
width
:
10
%
;
width
:
8
%
;
height
:
100%
;
text-align
:
center
;
align-items
:
center
;
...
...
@@ -373,5 +408,8 @@
.order-no-top
{
background
:
#F5F6FA
;
border
:
1px
solid
#E6E6E6
;
padding
:
14px
16px
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
margin-top
:
16px
;
}
.tag-invoice
{
background
:
#f8ddbb
;
color
:
#F59A23
;
font-size
:
12px
;
padding
:
2px
10px
;
border-radius
:
10px
;
margin-left
:
10px
;}
.tag-invoice-no
{
background
:
#1890FF
;
color
:
#fff
;
font-size
:
12px
;
padding
:
2px
10px
;
border-radius
:
4px
;
margin-right
:
10px
;
cursor
:
pointer
;}
.tag-no
{
border
:
1px
solid
#eee
;
color
:
#1890FF
;
font-size
:
12px
;
padding
:
2px
10px
;
border-radius
:
10px
;
margin-left
:
10px
;}
}
</
style
>
src/views/orderManagement/orderList/orderSendDetail.vue
View file @
2b67b404
<
template
>
<el-dialog
title=
"订单详情"
:visible
.
sync=
"isVisible"
></el-dialog>
<el-dialog
title=
"发货详情"
:visible
.
sync=
"isVisible"
class=
"send-main"
>
<div
class=
"invoice-item"
v-if=
"oneRow.orderEInvoice && oneRow.invoiceStatus >= 3"
>
<div
class=
"flex-aic-jcb"
>
<div
class=
"invoice-item-text"
><label>
{{
oneRow
.
orderEInvoice
.
titleType
==
1
?
"公司名称"
:
"个人名称"
}}
:
{{
oneRow
.
orderEInvoice
.
titleName
}}
</label>
</div>
<div
style=
"
color: #0a84ff;
font-size: 12px;
background: #d9eafa;
border-radius: 2px;
padding: 2px 5px;
"
>
{{
oneRow
.
orderEInvoice
.
type
==
1
?
"普通发票"
:
"增值税专用发票"
}}
-
{{
oneRow
.
orderEInvoice
.
titleType
==
1
?
"企业"
:
"个人"
}}
</div>
</div>
<div
class=
"invoice-item-text"
v-if=
"oneRow.orderEInvoice.titleType == 1 && oneRow.orderEInvoice.type == 2"
><label>
地址:
{{
oneRow
.
orderEInvoice
.
province
}}{{
oneRow
.
orderEInvoice
.
city
}}{{
oneRow
.
orderEInvoice
.
town
}}{{
oneRow
.
orderEInvoice
.
address
}}
</label>
</div>
<div
class=
"invoice-item-text"
v-if=
"oneRow.orderEInvoice.titleType == 1 && oneRow.orderEInvoice.type == 2"
>
<label>
电话:
{{
oneRow
.
orderEInvoice
.
phone
}}
</label>
</div>
<div
class=
"invoice-item-text"
v-if=
"oneRow.orderEInvoice.titleType == 1 && oneRow.orderEInvoice.type == 2"
>
<label>
开户行:
{{
oneRow
.
orderEInvoice
.
openBank
}}
</label></div>
<div
class=
"invoice-item-text"
v-if=
"oneRow.orderEInvoice.titleType == 1 && oneRow.orderEInvoice.type == 2"
><label>
账号:
{{
oneRow
.
orderEInvoice
.
account
}}
</label></div>
<div
class=
"flex-aic-jcb"
>
<span
class=
"invoice-item-text"
v-if=
"oneRow.orderEInvoice.titleType == 1"
><label>
税号:
{{
oneRow
.
orderEInvoice
.
taxCode
}}
</label></span>
</div>
<el-form
label-width=
"80px"
style=
"margin-top: 20px;"
>
<el-row>
<el-form-item
label=
"快递公司"
>
<el-input
style=
"width:300px"
v-model=
"oneRow.orderEInvoice.trackingImg"
placeholder=
"请输入快递公司"
:maxlength=
"40"
disabled
></el-input>
</el-form-item>
</el-row>
<el-row>
<el-form-item
label=
"快递单号"
>
<el-input
style=
"width:300px"
v-model=
"oneRow.orderEInvoice.trackingNumber"
placeholder=
"请输入快递单号"
:maxlength=
"40"
disabled
></el-input>
</el-form-item>
</el-row>
</el-form>
</div>
<div
class=
"send-info"
v-if=
"oneRow.shippingStatus == 2"
>
<div
class=
"flex-aic-jcb"
>
<label>
联系人:
{{
oneRow
.
receiveName
}}
</label>
<label
style=
"border:1px solid #409EFF;color: #409EFF;font-size: 12px;padding: 2px 6px;border-radius:4px;"
>
个人信息
</label>
</div>
<div
style=
"margin: 10px 0;"
><label>
手机号:
{{
oneRow
.
receivePhone
}}
</label></div>
<div><label>
地址:
{{
oneRow
.
receiveAddress
}}
</label></div>
<el-form
label-width=
"80px"
style=
"margin-top: 20px;"
>
<el-row>
<el-form-item
label=
"快递公司"
>
<el-input
style=
"width:300px"
v-model=
"oneRow.trackingImg"
placeholder=
"请输入快递公司"
:maxlength=
"40"
disabled
></el-input>
</el-form-item>
</el-row>
<el-row>
<el-form-item
label=
"快递单号"
>
<el-input
style=
"width:300px"
v-model=
"oneRow.trackingNumber"
placeholder=
"请输入快递单号"
:maxlength=
"40"
disabled
></el-input>
</el-form-item>
</el-row>
</el-form>
</div>
</el-dialog>
</
template
>
<
script
type=
"javascript"
>
export
default
{
...
...
@@ -35,3 +91,20 @@
}
}
</
script
>
<
style
lang=
"scss"
>
.send-main
{
.send-info
{
border
:
1px
solid
#eee
;
padding
:
20px
;
margin-bottom
:
20px
;
margin-top
:
20px
;
}
.invoice-item
{
padding
:
20px
;
border
:
1px
solid
#eee
;
.invoice-item-text
{
margin-top
:
10px
;
}
}
}
</
style
>
src/views/orderManagement/orderList/selectDataDialog.vue
0 → 100644
View file @
2b67b404
<
template
>
<el-dialog
title=
"选择数据"
:visible
.
sync=
"isVisible"
width=
"600px"
class=
"data-main"
>
<!--
<el-button
type=
"primary"
@
click=
"jumpUrl()"
>
新 增
</el-button>
-->
<div
class=
"flex-aic"
v-for=
"(iitem, index) in list"
style=
"position:relative;margin-bottom: 10px;"
>
<el-input
v-model=
"iitem.name"
placeholder=
"请输入关键字"
style=
"width: 60%;margin-right:10px;"
></el-input>
<div
class=
"ab-main"
v-if=
"iitem.showTab"
>
<p
v-for=
"item in iitem.dataList"
@
click=
"chooseItem(iitem, item)"
>
{{
item
.
name
}}
</p>
<p
v-if=
"iitem.dataList.length
<
=
0
"
@
click=
"chooseItem(iitem)"
>
无匹配内容
</p>
</div>
<el-button
type=
"primary"
@
click=
"handleChoose(iitem)"
slot=
"reference"
>
搜索
</el-button>
<el-button
type=
"primary"
v-if=
"index == list.length - 1"
@
click=
"handleAdd()"
style=
"margin-left: 10px;"
>
+
</el-button>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
<el-button
type=
"primary"
v-if=
"!isClick"
@
click=
"okSend()"
>
提 交
</el-button>
<el-button
type=
"primary"
v-else
style=
"opacity: 0.6;"
disabled
>
提 交
</el-button>
</div>
</el-dialog>
</
template
>
<
script
type=
"javascript"
>
import
{
getItemByType
,
setOrderItem
}
from
'api/website/order/index'
export
default
{
props
:
[
'oneRow'
],
name
:
'selectDataDialog'
,
data
()
{
return
{
isClick
:
false
,
// 是否点击了发货
loading
:
false
,
list
:
[{
id
:
1
,
dataList
:
[],
name
:
''
}],
// 已选数组
isVisible
:
false
,
}
},
watch
:
{
isVisible
(
newValue
,
oldValue
)
{
if
(
!
newValue
)
{
this
.
$emit
(
'selectDataEvent'
,
false
)
}
}
},
mounted
()
{
this
.
isVisible
=
true
},
methods
:
{
/**
* 新增
*/
handleAdd
(){
this
.
list
.
push
({
id
:
this
.
list
.
length
+
1
,
dataList
:
[],
name
:
''
})
},
/**
* 选择数据
*/
chooseItem
(
iitem
,
item
){
if
(
item
){
iitem
.
checkedObj
=
item
iitem
.
name
=
item
.
name
}
else
{
iitem
.
checkedObj
=
undefined
iitem
.
name
=
''
}
iitem
.
showTab
=
false
this
.
$forceUpdate
()
},
/**
* 搜索
*/
handleChoose
(
row
){
this
.
list
.
map
(
function
(
item
){
item
.
showTab
=
false
;
})
this
.
getList
(
row
)
},
/**
* 弹框-取消
* */
cancel
()
{
this
.
$emit
(
'selectDataEvent'
,
false
)
},
/**
* 选择数据列表
*/
getList
(
row
)
{
let
_this
=
this
getItemByType
({
type
:
this
.
oneRow
.
type
,
name
:
row
.
name
}).
then
((
response
)
=>
{
if
(
response
.
status
==
200
){
row
.
dataList
=
response
.
data
row
.
showTab
=
true
_this
.
$forceUpdate
()
}
else
{
this
.
$notify
({
title
:
'失败'
,
message
:
response
.
message
,
type
:
'error'
,
duration
:
2000
})
}
});
},
/**
* 新增-跳转界面
*/
jumpUrl
(){
if
(
this
.
oneRow
.
type
==
1
){
// 标准数据新增
}
else
if
(
this
.
oneRow
.
type
==
2
){
// 行业应用
this
.
$router
.
push
({
path
:
'/industryApplication/applicationList'
})
}
else
if
(
this
.
oneRow
.
type
==
3
){
// 影像图库
this
.
$router
.
push
({
path
:
'/webSiteManagement/imageLibrary'
})
}
},
/**
* 确定
*/
okSend
()
{
let
_this
=
this
if
(
this
.
isClick
){
return
}
this
.
isClick
=
true
setTimeout
(
function
(){
_this
.
isClick
=
false
},
2000
)
let
itemInfoDtoList
=
[]
this
.
list
.
map
(
function
(
item
){
if
(
item
.
checkedObj
){
let
p
=
{
id
:
item
.
checkedObj
.
id
,
type
:
item
.
checkedObj
.
type
// 类型 1、标准数据,2、影像图库,3、行业应用信息,
}
itemInfoDtoList
.
push
(
p
)
}
})
if
(
itemInfoDtoList
.
length
<=
0
){
this
.
$message
.
warning
(
"请选择数据"
)
return
;
}
let
params
=
{
orderId
:
this
.
oneRow
.
orderId
,
itemInfoDtoList
:
itemInfoDtoList
}
setOrderItem
(
params
).
then
((
response
)
=>
{
if
(
response
.
status
==
200
){
this
.
$notify
({
title
:
"成功"
,
message
:
"操作成功"
,
type
:
"success"
,
duration
:
2000
});
this
.
$emit
(
'selectDataEvent'
,
true
)
}
else
{
this
.
$notify
({
title
:
'失败'
,
message
:
response
.
message
,
type
:
'error'
,
duration
:
2000
})
}
});
}
}
}
</
script
>
<
style
lang=
"scss"
>
.data-main
{
.el-dialog
{
height
:
calc
(
100vh
-
260px
);
min-height
:
300px
;
}
.el-dialog
.el-dialog__body
{
overflow
:
auto
;
height
:
calc
(
100vh
-
400px
);
min-height
:
150px
;
}
.ab-main
{
position
:
absolute
;
top
:
45px
;
padding
:
0
20px
;
border-radius
:
4px
;
width
:
60%
;
max-height
:
200px
;
overflow
:
auto
;
background
:
rgb
(
255
,
255
,
255
);
border
:
1px
solid
rgb
(
244
,
244
,
244
);
z-index
:
9
;
box-shadow
:
0
2px
12px
0
rgba
(
0
,
0
,
0
,.
1
);
p
{
cursor
:
pointer
;
padding-bottom
:
10px
;
border-bottom
:
1px
solid
#f4f4f4
;
}
p
:last-child
{
border-bottom
:
none
;
}
}
.
ab-main
:
:-
webkit-scrollbar
,
.
el-dialog__body
::-
webkit-scrollbar
{
width
:
0px
;}
}
</
style
>
src/views/orderManagement/orderList/send.vue
View file @
2b67b404
<
template
>
<el-dialog
:title=
"title"
:visible
.
sync=
"isVisible"
width=
"600px"
class=
"send-main"
>
<div
class=
"invoice-item"
>
<div
class=
"invoice-item"
v-if=
"oneRow.orderEInvoice && title=='发票发货'"
>
<div
class=
"flex-aic-jcb"
>
<div
class=
"invoice-item-text"
><label>
{{
oneRow
.
orderEInvoice
.
titleType
==
1
?
"公司名称"
:
"个人名称"
}}
:
{{
oneRow
.
orderEInvoice
.
titleName
}}
</label>
</div>
<div
...
...
@@ -162,9 +162,6 @@
.invoice-item-text
{
margin-top
:
10px
;
}
.invoice-item-text
:first-child
{
margin-top
:
0
;
}
}
}
</
style
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment