Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
confucius
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
0
Merge Requests
0
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
罗超
confucius
Commits
dae124b3
Commit
dae124b3
authored
May 13, 2021
by
黄奎
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/confucius
parents
35e1faa7
75390670
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
811 additions
and
245 deletions
+811
-245
App.vue
src/App.vue
+1
-1
StockOutApplyFor.js
src/api/sale/StockOutApplyFor.js
+35
-0
contract.js
src/api/sale/contract.js
+14
-0
addSuppliesStockOut-from.vue
src/components/sale/addSuppliesStockOut-from.vue
+160
-33
orderlist.vue
src/components/sale/orderlist.vue
+86
-18
contractConfirm.vue
src/pages/contractConfirm.vue
+13
-110
contractPay.vue
src/pages/contractPay.vue
+55
-24
contractSign.vue
src/pages/contractSign.vue
+271
-0
contractView.vue
src/pages/contractView.vue
+1
-1
addFinancialDocuments.vue
...ages/financial/financalDocument/addFinancialDocuments.vue
+7
-0
addReceivablesDocuments.vue
...es/financial/financalDocument/addReceivablesDocuments.vue
+5
-0
SuppliesStockOutApplyForDetail.vue
src/pages/sale/SuppliesStockOutApplyForDetail.vue
+116
-36
SuppliesStockOutApplyForMan.vue
src/pages/sale/SuppliesStockOutApplyForMan.vue
+4
-1
studentList.vue
src/pages/sale/studentList.vue
+38
-21
routes.js
src/router/routes.js
+5
-0
No files found.
src/App.vue
View file @
dae124b3
...
@@ -12,7 +12,7 @@ export default {
...
@@ -12,7 +12,7 @@ export default {
<
style
>
<
style
>
@import
url('~assets/css/font.css')
;
@import
url('~assets/css/font.css')
;
@import
url('//at.alicdn.com/t/font_2077629_
a7sx3iejpat
.css')
;
@import
url('//at.alicdn.com/t/font_2077629_
d6aa14tmbq
.css')
;
html
,
html
,
body
,
body
,
...
...
src/api/sale/StockOutApplyFor.js
View file @
dae124b3
...
@@ -44,4 +44,39 @@ import request from '../../utils/request_zc'
...
@@ -44,4 +44,39 @@ import request from '../../utils/request_zc'
method
:
'post'
,
method
:
'post'
,
data
data
})
})
}
/**
* 出库申请 - 出库
*
*/
export
function
SuppliesStockOut
(
data
)
{
return
request
({
url
:
'/supplies/SetSuppliesApplyForStockOut'
,
method
:
'post'
,
data
})
}
/**
* 获取仓库
*
*/
export
function
GetWareHouse
(
data
)
{
return
request
({
url
:
'/Supplies/GetWareHouseList'
,
method
:
'post'
,
data
})
}
/**
* 设置出库申请状态
*
*/
export
function
SetSuppliesStockOutApplyForState
(
data
)
{
return
request
({
url
:
'/supplies/SetSuppliesStockOutApplyForState'
,
method
:
'post'
,
data
})
}
}
\ No newline at end of file
src/api/sale/contract.js
View file @
dae124b3
...
@@ -109,5 +109,19 @@ export function GetStudentInfo(data) {
...
@@ -109,5 +109,19 @@ export function GetStudentInfo(data) {
})
})
}
}
/**
* 获取付款码
*
*/
export
function
GenerateOrder
(
data
)
{
return
request
({
url
:
'/WeChatPay/GenerateOrder'
,
method
:
'post'
,
data
})
}
src/components/sale/addSuppliesStockOut-from.vue
View file @
dae124b3
This diff is collapsed.
Click to expand it.
src/components/sale/orderlist.vue
View file @
dae124b3
...
@@ -101,17 +101,51 @@
...
@@ -101,17 +101,51 @@
</
template
>
</
template
>
</td>
</td>
<td
style=
"border:none"
>
{{item.GuestNum}}人
</td>
<td
style=
"border:none"
>
{{item.GuestNum}}人
</td>
<td
style=
"border:none"
>
{{item.Class_Price.toFixed(2)}}
</td>
<td
style=
"border:none"
>
<
template
v-if=
"item.Class_Price"
>
{{
item
.
Class_Price
.
toFixed
(
2
)
}}
</
template
>
</td>
<td
:style=
"{color:item.Class_Price!=item.Unit_Price?'var(--q-color-negative)':'','border':'none'}"
>
<td
:style=
"{color:item.Class_Price!=item.Unit_Price?'var(--q-color-negative)':'','border':'none'}"
>
{{item.Unit_Price.toFixed(2)}}
<
template
v-if=
"item.Unit_Price"
>
{{
item
.
Unit_Price
.
toFixed
(
2
)
}}
</
template
>
</td>
<td
style=
"border:none"
>
<
template
v-if=
"item.PreferPrice"
>
{{
item
.
PreferPrice
.
toFixed
(
2
)
}}
</
template
>
</td>
<td
style=
"border:none"
>
<
template
v-if=
"item.Income"
>
{{
item
.
Income
.
toFixed
(
2
)
}}
</
template
>
</td>
<td
style=
"color:var(--q-color-negative);border:none"
>
<
template
v-if=
"item.DiscountMoney"
>
{{
item
.
DiscountMoney
.
toFixed
(
2
)
}}
</
template
>
</td>
<td
style=
"border:none"
>
<
template
v-if=
"item.LessPrice"
>
{{
item
.
LessPrice
.
toFixed
(
2
)
}}
</
template
>
</td>
<td
style=
"border:none"
>
<
template
v-if=
"item.Refund"
>
{{
item
.
Refund
.
toFixed
(
2
)
}}
</
template
>
</td>
<td
style=
"border:none"
>
<
template
v-if=
"item.PlatformTax"
>
{{
item
.
PlatformTax
.
toFixed
(
2
)
}}
</
template
>
</td>
<td
style=
"color:#2961FE;border:none"
>
<
template
v-if=
"item.DueInMoney"
>
{{
item
.
DueInMoney
.
toFixed
(
2
)
}}
</
template
>
</td>
</td>
<td
style=
"border:none"
>
{{item.PreferPrice.toFixed(2)}}
</td>
<td
style=
"border:none"
>
{{item.Income.toFixed(2)}}
</td>
<td
style=
"color:var(--q-color-negative);border:none"
>
{{item.DiscountMoney.toFixed(2)}}
</td>
<td
style=
"border:none"
>
{{item.LessPrice.toFixed(2)}}
</td>
<td
style=
"border:none"
>
{{item.Refund.toFixed(2)}}
</td>
<td
style=
"border:none"
>
{{item.PlatformTax.toFixed(2)}}
</td>
<td
style=
"color:#2961FE;border:none"
>
{{item.DueInMoney.toFixed(2)}}
</td>
<td
style=
"border:none"
>
<td
style=
"border:none"
>
<div
style=
"background: rgba(2, 196, 153, 0.2);width: 80px;border-radius: 2px;text-align: center"
>
<div
style=
"background: rgba(2, 196, 153, 0.2);width: 80px;border-radius: 2px;text-align: center"
>
<span
style=
"color: #02C499"
>
{{item.OrderStateName}}
</span>
<span
style=
"color: #02C499"
>
{{item.OrderStateName}}
</span>
...
@@ -457,17 +491,51 @@
...
@@ -457,17 +491,51 @@
<div
style=
"font-weight: bold;color:#2961FE;"
@
click=
"getClassInfo(item)"
>
{{item.ClassName}}
</div>
<div
style=
"font-weight: bold;color:#2961FE;"
@
click=
"getClassInfo(item)"
>
{{item.ClassName}}
</div>
</td>
</td>
<td
style=
"border:none"
>
{{item.GuestNum}}人
</td>
<td
style=
"border:none"
>
{{item.GuestNum}}人
</td>
<td
style=
"border:none"
>
{{item.Class_Price.toFixed(2)}}
</td>
<td
style=
"border:none"
>
<
template
v-if=
"item.Class_Price"
>
{{
item
.
Class_Price
.
toFixed
(
2
)
}}
</
template
>
</td>
<td
:style=
"{color:item.Class_Price!=item.Unit_Price?'var(--q-color-negative)':'','border':'none'}"
>
<td
:style=
"{color:item.Class_Price!=item.Unit_Price?'var(--q-color-negative)':'','border':'none'}"
>
{{item.Unit_Price.toFixed(2)}}
<
template
v-if=
"item.Unit_Price"
>
{{
item
.
Unit_Price
.
toFixed
(
2
)
}}
</
template
>
</td>
<td
style=
"border:none"
>
<
template
v-if=
"item.PreferPrice"
>
{{
item
.
PreferPrice
.
toFixed
(
2
)
}}
</
template
>
</td>
<td
style=
"border:none"
>
<
template
v-if=
"item.Income"
>
{{
item
.
Income
.
toFixed
(
2
)
}}
</
template
>
</td>
<td
style=
"color:var(--q-color-negative);border:none"
>
<
template
v-if=
"item.DiscountMoney"
>
{{
item
.
DiscountMoney
.
toFixed
(
2
)
}}
</
template
>
</td>
<td
style=
"border:none"
>
<
template
v-if=
"item.LessPrice"
>
{{
item
.
LessPrice
.
toFixed
(
2
)
}}
</
template
>
</td>
<td
style=
"border:none"
>
<
template
v-if=
"item.Refund"
>
{{
item
.
Refund
.
toFixed
(
2
)
}}
</
template
>
</td>
<td
style=
"border:none"
>
<
template
v-if=
"item.PlatformTax"
>
{{
item
.
PlatformTax
.
toFixed
(
2
)
}}
</
template
>
</td>
<td
style=
"color:#2961FE;border:none"
>
<
template
v-if=
"item.DueInMoney"
>
{{
item
.
DueInMoney
.
toFixed
(
2
)
}}
</
template
>
</td>
</td>
<td
style=
"border:none"
>
{{item.PreferPrice.toFixed(2)}}
</td>
<td
style=
"border:none"
>
{{item.Income.toFixed(2)}}
</td>
<td
style=
"color:var(--q-color-negative);border:none"
>
{{item.DiscountMoney.toFixed(2)}}
</td>
<td
style=
"border:none"
>
{{item.LessPrice.toFixed(2)}}
</td>
<td
style=
"border:none"
>
{{item.Refund.toFixed(2)}}
</td>
<td
style=
"border:none"
>
{{item.PlatformTax.toFixed(2)}}
</td>
<td
style=
"color:#2961FE;border:none"
>
{{item.DueInMoney.toFixed(2)}}
</td>
<td
style=
"border:none"
>
<td
style=
"border:none"
>
<div
style=
"background: rgba(2, 196, 153, 0.2);width: 80px;border-radius: 2px;text-align: center"
>
<div
style=
"background: rgba(2, 196, 153, 0.2);width: 80px;border-radius: 2px;text-align: center"
>
<span
style=
"color: #02C499"
>
{{item.OrderStateName}}
</span>
<span
style=
"color: #02C499"
>
{{item.OrderStateName}}
</span>
...
...
src/pages/contractConfirm.vue
View file @
dae124b3
...
@@ -188,16 +188,15 @@
...
@@ -188,16 +188,15 @@
padding
:
0
!important
;
padding
:
0
!important
;
height
:
20px
;
height
:
20px
;
}
}
</
style
>
</
style
>
<
template
>
<
template
>
<div
class=
"TcConfirmMain"
>
<div
class=
"TcConfirmMain"
>
<div
class=
"TCdiv_content"
:class=
"dialogVisible?'CisHideen':''"
>
<div
class=
"TCdiv_content"
>
<!-- 签字 -->
<!-- 签字 -->
<div
class=
"signSpan"
>
<div
class=
"signSpan"
>
<div
@
click=
"
isShowSignDiv=true,dialogVisible=true"
:class=
"dialogVisible?'CisHideen':''
"
class=
"sign"
>
<div
@
click=
"
goSign()
"
class=
"sign"
>
<span
style=
"padding:0;"
><i
style=
"font-size:1.2rem"
class=
"iconfont icon-qianming"
></i></span>
<span
style=
"padding:0;"
><i
style=
"font-size:1.2rem"
class=
"iconfont icon-qianming"
></i></span>
<span
style=
"font-size:1.2rem;margin-left:0.2rem;"
v-if=
"
msg.Sign==''||msg
.Sign==null"
>
签字
</span>
<span
style=
"font-size:1.2rem;margin-left:0.2rem;"
v-if=
"
dataList.Sign==''||dataList
.Sign==null"
>
签字
</span>
<span
style=
"font-size:1.2rem;margin-left:0.2rem;"
v-else
>
重新签字
</span>
<span
style=
"font-size:1.2rem;margin-left:0.2rem;"
v-else
>
重新签字
</span>
</div>
</div>
</div>
</div>
...
@@ -387,7 +386,7 @@
...
@@ -387,7 +386,7 @@
<span
style=
"width:50px;display:inline-block;text-align:center;"
class=
"comConInput"
>
{{
dataList
.
SealDateDay
}}
</span>
日
<span
style=
"width:50px;display:inline-block;text-align:center;"
class=
"comConInput"
>
{{
dataList
.
SealDateDay
}}
</span>
日
</p>
</p>
<div
style=
"margin-top:100px;position:relative;"
>
<div
style=
"margin-top:100px;position:relative;"
>
乙方签字(盖章):
<img
v-if=
"dataList.Sign"
:src=
"dataList.Sign"
style=
"width:
45px;position:absolute;top:-30
px;"
/>
乙方签字(盖章):
<img
v-if=
"dataList.Sign"
:src=
"dataList.Sign"
style=
"width:
80px;position:absolute;top:-15
px;"
/>
</div>
</div>
<p
style=
"margin:40px 0 30px 0;"
>
<p
style=
"margin:40px 0 30px 0;"
>
<span
style=
"width:50px;display:inline-block;text-align:center;"
class=
"comConInput"
>
{{
dataList
.
StuSignYear
}}
</span>
年
<span
style=
"width:50px;display:inline-block;text-align:center;"
class=
"comConInput"
>
{{
dataList
.
StuSignYear
}}
</span>
年
...
@@ -769,46 +768,13 @@
...
@@ -769,46 +768,13 @@
<div
class=
"comConInput"
style=
"width:50px;"
></div>
日
<div
class=
"comConInput"
style=
"width:50px;"
></div>
日
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"CliSignDiv"
:class=
"dialogVisible?'isShowSign':''"
@
touchmove
.
prevent
>
<div
class=
"CliSignDiv"
style=
"height:100%;background:#fff;z-index:100"
>
<div
class=
"CanvasDiv"
>
<div
class=
"dash"
>
<div
id=
"canvas"
style=
"position:relative;top:0;"
>
</div>
</div>
</div>
<div
class=
"bottom"
style=
"text-align:center;height:60px;line-height:60px"
>
<el-row>
<el-col
:span=
"12"
>
<div
style=
"width:100%;"
@
click=
"handelClearEl()"
>
<span
style=
"font-size:1.2rem;color:rgb(36, 173, 229)"
class=
"iconfont icon-zhongzhi"
></span>
<span
style=
"font-size:1.2rem"
>
重置签名
</span>
</div>
</el-col>
<el-col
:span=
"12"
>
<div
style=
"width:100%;"
@
click=
"handelSaveEl()"
>
<span
style=
"font-size:1.2rem;color:rgb(36, 173, 229)"
class=
"iconfont icon-dagou"
></span>
<span
style=
"font-size:1.2rem"
>
完成签名
</span>
</div>
</el-col>
</el-row>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
moment
from
'moment'
let
canvas
=
document
.
createElement
(
"canvas"
);
let
cxt
=
canvas
.
getContext
(
"2d"
);
import
{
import
{
SetEducationContractSign
,
GetEducationContractInfo
GetEducationContractInfo
}
from
'../api/sale/contract'
}
from
'../api/sale/contract'
...
@@ -817,13 +783,6 @@
...
@@ -817,13 +783,6 @@
return
{
return
{
dataList
:
[],
dataList
:
[],
dialogVisible
:
false
,
dialogVisible
:
false
,
linewidth
:
5
,
//线条粗细,选填
color
:
"black"
,
//线条颜色,选填
background
:
"#fff"
,
//线条背景,选填
msg
:
{
ContractId
:
0
,
Sign
:
''
},
gmsg
:
{
gmsg
:
{
ContractId
:
0
ContractId
:
0
},
},
...
@@ -836,7 +795,6 @@
...
@@ -836,7 +795,6 @@
this
.
gmsg
.
ContractId
=
this
.
$route
.
query
.
ContractId
;
this
.
gmsg
.
ContractId
=
this
.
$route
.
query
.
ContractId
;
this
.
getList
();
this
.
getList
();
}
}
},
},
methods
:
{
methods
:
{
//获取数据
//获取数据
...
@@ -850,73 +808,18 @@
...
@@ -850,73 +808,18 @@
ChangeTab
(
num
)
{
ChangeTab
(
num
)
{
this
.
ActiveTab
=
num
;
this
.
ActiveTab
=
num
;
},
},
getCanvas
()
{
//跳转至合同签名
let
el
=
document
.
getElementById
(
"canvas"
);
goSign
(){
el
.
appendChild
(
canvas
);
this
.
$router
.
push
({
canvas
.
width
=
el
.
clientWidth
;
path
:
'/contractSign'
,
canvas
.
height
=
el
.
clientHeight
;
query
:
{
//cxt.fillStyle = this.background; //填充绘图的背景颜色
ContractId
:
this
.
gmsg
.
ContractId
,
cxt
.
fillStyle
=
'rgba(255, 255, 255, 0)'
;
Money
:
this
.
dataList
.
Money
cxt
.
fillRect
(
0
,
0
,
canvas
.
width
,
canvas
.
height
);
//绘制“已填色”的矩形
}
cxt
.
strokeStyle
=
this
.
color
;
//笔触的颜色
});
cxt
.
lineCap
=
"round"
;
//线条末端线帽的样式
let
linewidth
=
this
.
linewidth
;
//开始绘制
canvas
.
addEventListener
(
"touchstart"
,
function
(
e
)
{
cxt
.
beginPath
();
cxt
.
lineWidth
=
linewidth
;
//当前线条的宽度,以像素计
cxt
.
moveTo
(
e
.
changedTouches
[
0
].
pageX
,
e
.
changedTouches
[
0
].
pageY
);
}.
bind
(
this
),
false
);
//绘制中
canvas
.
addEventListener
(
"touchmove"
,
function
(
e
)
{
cxt
.
lineTo
(
e
.
changedTouches
[
0
].
pageX
,
e
.
changedTouches
[
0
].
pageY
);
cxt
.
stroke
();
}.
bind
(
this
),
false
);
//结束绘制
canvas
.
addEventListener
(
"touchend"
,
function
()
{
cxt
.
closePath
();
}.
bind
(
this
),
false
);
},
handelClearEl
()
{
cxt
.
clearRect
(
0
,
0
,
canvas
.
width
,
canvas
.
height
);
},
handelSaveEl
()
{
let
imgBase64
=
canvas
.
toDataURL
();
this
.
msg
.
Sign
=
imgBase64
;
this
.
msg
.
ContractId
=
this
.
$route
.
query
.
ContractId
;
this
.
SaveMsg
();
},
//提交数据
SaveMsg
()
{
SetEducationContractSign
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'保存成功!'
,
position
:
'top'
})
this
.
dialogVisible
=
false
;
this
.
getList
();
}
})
}
}
},
},
mounted
()
{
mounted
()
{
this
.
getCanvas
();
}
}
};
};
...
...
src/pages/contractPay.vue
View file @
dae124b3
...
@@ -29,7 +29,7 @@
...
@@ -29,7 +29,7 @@
.Contract_TwoDiv
{
.Contract_TwoDiv
{
width
:
100%
;
width
:
100%
;
height
:
28rem
;
height
:
28rem
;
margin-top
:
50px
;
margin-top
:
50px
;
background-color
:
#F3F9FC
;
background-color
:
#F3F9FC
;
text-align
:
center
;
text-align
:
center
;
color
:
#111111
;
color
:
#111111
;
...
@@ -38,25 +38,27 @@
...
@@ -38,25 +38,27 @@
.contractTotal
{
.contractTotal
{
font-size
:
20px
;
font-size
:
20px
;
padding-top
:
50px
;
padding-top
:
50px
;
}
}
.contractMoney
{
.contractMoney
{
font-size
:
30px
;
font-size
:
30px
;
font-weight
:
bold
;
font-weight
:
bold
;
margin-top
:
10px
;
margin-top
:
10px
;
}
}
.contractTwoCode
{
width
:
180px
;
.contractTwoCode
{
height
:
180px
;
width
:
180px
;
border
:
1px
solid
#d1d1d1
;
height
:
180px
;
margin
:
20px
auto
;
margin
:
20px
auto
;
}
}
.TwoCodeRemind
{
color
:
#888888
;
.TwoCodeRemind
{
font-size
:
20px
;
color
:
#888888
;
margin-top
:
20px
;
font-size
:
18px
;
margin-top
:
20px
;
}
}
</
style
>
</
style
>
<
template
>
<
template
>
<div
class=
"ContractPay"
>
<div
class=
"ContractPay"
>
...
@@ -65,42 +67,71 @@
...
@@ -65,42 +67,71 @@
</div>
</div>
<div
class=
"Contract_TwoDiv"
>
<div
class=
"Contract_TwoDiv"
>
<div
class=
"contractTotal"
>
合同总价
</div>
<div
class=
"contractTotal"
>
合同总价
</div>
<div
class=
"contractMoney"
>
10000.00
</div>
<div
class=
"contractMoney"
>
{{
Money
}}
</div>
<div
class=
"contractTwoCode"
>
<div
class=
"contractTwoCode"
id=
"qrcode"
ref=
"qrcode"
>
</div>
</div>
<div
class=
"TwoCodeRemind"
>
长按识别上图收款码,完成支付
</div>
<div
class=
"TwoCodeRemind"
>
长按识别上图收款码,完成支付
</div>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
GenerateOrder
}
from
'../api/sale/contract'
import
QRCode
from
'qrcodejs2'
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
dataList
:
[],
msg
:
{
contractId
:
0
},
Money
:
0
,
dataList
:
{}
};
};
},
},
created
()
{
created
()
{
},
mounted
()
{
if
(
this
.
$route
.
query
.
contractId
)
{
this
.
msg
.
contractId
=
this
.
$route
.
query
.
contractId
;
this
.
getList
();
}
if
(
this
.
$route
.
query
.
Money
){
this
.
Money
=
this
.
$route
.
query
.
Money
;
}
},
},
methods
:
{
methods
:
{
//获取数据
//获取数据
getList
()
{
getList
()
{
// GetEducationContractInfo(this.gmsg).then(res => {
GenerateOrder
(
this
.
msg
).
then
(
res
=>
{
// if (res.Code == 1) {
if
(
res
.
Code
==
1
)
{
// this.dataList = res.Data;
this
.
dataList
=
res
.
Data
;
// }
this
.
qrcode
(
this
.
dataList
.
code_url
);
// })
}
}).
catch
((
e
)
=>
{
})
},
qrcode
(
code_url
)
{
let
qrcode
=
new
QRCode
(
'qrcode'
,
{
width
:
180
,
height
:
180
,
// 高度
text
:
code_url
// 二维码内容
})
},
},
//跳转至合同详情
//跳转至合同详情
goContractConfirm
(){
goContractConfirm
()
{
this
.
$router
.
push
({
this
.
$router
.
push
({
path
:
'contractConfirm'
,
path
:
'contractConfirm'
,
query
:
{}
query
:
{
ContractId
:
this
.
msg
.
contractId
}
});
});
}
}
},
},
mounted
()
{}
};
};
</
script
>
</
script
>
src/pages/contractSign.vue
0 → 100644
View file @
dae124b3
<
style
>
.loadingtext
{
transform
:
rotate
(
-90deg
);
color
:
red
;
}
.signature
.Sign_Item
{
-webkit-transform
:
rotate
(
-90deg
);
}
.signature
.Sign_Text
{
text-align
:
center
;
}
.signature
.boardBox
{
width
:
100vw
;
height
:
90vh
;
background
:
#f9f9f9
;
}
.signature
.sigfn_Bar
{
box-sizing
:
border-box
;
padding
:
0rem
1rem
;
display
:
flex
;
width
:
100vw
;
height
:
10vh
;
background-color
:
#ffffff
;
justify-content
:
space-around
;
align-items
:
center
;
}
.signature
.icoDicv
{
width
:
40px
;
height
:
40px
;
background
:
gray
;
border-radius
:
50%
;
color
:
#fff
;
text-align
:
center
;
line-height
:
40px
;
}
.signature
.icoDicv
i
{
font-size
:
25px
;
}
</
style
>
<
template
>
<div
class=
"signature"
@
touchmove
.
prevent
>
<div
class=
"boardBox"
ref=
"boardBox"
>
<canvas
ref=
"board"
id=
"canvas"
@
touchstart=
"mStart"
@
touchmove=
"mMove"
@
touchend=
"mEnd"
></canvas>
</div>
<div
class=
"sigfn_Bar"
>
<div
class=
"Sign_Item"
@
click=
"goback"
>
<div
class=
"icoDicv"
>
<i
class=
"iconfont icon-tuichu"
></i>
</div>
<div
class=
"Sign_Text"
>
退出
</div>
</div>
<div
class=
"Sign_Item"
@
click=
"clearcanvas"
>
<div
class=
"icoDicv"
>
<i
class=
"iconfont icon-zhongzhi"
></i>
</div>
<div
class=
"Sign_Text"
>
重绘
</div>
</div>
<div
class=
"Sign_Item"
@
click=
"getcanvas"
>
<div
class=
"icoDicv"
style=
"background:red;"
>
<i
class=
"iconfont icon-xiazai"
></i>
</div>
<div
class=
"Sign_Text"
>
保存
</div>
</div>
</div>
</div>
</
template
>
<
script
>
import
{
SetEducationContractSign
}
from
'../api/sale/contract'
export
default
{
data
()
{
return
{
familysignatureurl
:
""
,
basedata
:
""
,
ctx
:
null
,
point
:
{
x
:
0
,
y
:
0
,
},
moving
:
false
,
// 是否正在绘制中且移动
msg
:{
ContractId
:
0
,
Sign
:
''
},
Money
:
0
};
},
mounted
()
{
let
board
=
this
.
$refs
.
board
;
// 获取DOM
board
.
width
=
this
.
$refs
.
boardBox
.
offsetWidth
;
// 设置画布宽
board
.
height
=
this
.
$refs
.
boardBox
.
offsetHeight
;
// 设置画布高
this
.
ctx
=
board
.
getContext
(
"2d"
);
// 二维绘图
this
.
ctx
.
strokeStyle
=
"#000"
;
// 颜色
this
.
ctx
.
lineWidth
=
5
;
// 线条宽度
if
(
this
.
$route
.
query
.
ContractId
)
{
this
.
msg
.
ContractId
=
this
.
$route
.
query
.
ContractId
;
}
if
(
this
.
$route
.
query
.
Money
){
this
.
Money
=
this
.
$route
.
query
.
Money
;
}
},
methods
:
{
// 触摸(开始)
mStart
(
e
)
{
let
x
=
e
.
touches
[
0
].
clientX
-
e
.
target
.
offsetLeft
,
y
=
e
.
touches
[
0
].
clientY
-
e
.
target
.
offsetTop
;
// 获取触摸点在画板(canvas)的坐标
this
.
point
.
x
=
x
;
this
.
point
.
y
=
y
;
this
.
ctx
.
beginPath
();
this
.
moving
=
true
;
},
// 滑动中...
mMove
(
e
)
{
if
(
this
.
moving
)
{
let
x
=
e
.
touches
[
0
].
clientX
-
e
.
target
.
offsetLeft
,
y
=
e
.
touches
[
0
].
clientY
-
e
.
target
.
offsetTop
;
// 获取触摸点在画板(canvas)的坐标
this
.
ctx
.
moveTo
(
this
.
point
.
x
,
this
.
point
.
y
);
// 把路径移动到画布中的指定点,不创建线条(起始点)
this
.
ctx
.
lineTo
(
x
,
y
);
// 添加一个新点,然后创建从该点到画布中最后指定点的线条,不创建线条
this
.
ctx
.
stroke
();
// 绘制
(
this
.
point
.
x
=
x
),
(
this
.
point
.
y
=
y
);
// 重置点坐标为上一个坐标
}
},
// 滑动结束
mEnd
()
{
if
(
this
.
moving
)
{
this
.
ctx
.
closePath
();
// 停止绘制
this
.
moving
=
false
;
// 关闭绘制开关
}
},
getcanvas
()
{
//绘画转图片
document
.
getElementById
(
"canvas"
).
toDataURL
(
"image/png"
);
document
.
getElementById
(
"canvas"
).
toBlob
(
async
(
blobObj
)
=>
{
var
file1
=
new
File
([
blobObj
],
"pic.png"
,
{
type
:
blobObj
.
type
,
lastModified
:
Date
.
now
(),
});
this
.
convertImg
(
file1
);
});
},
//旋转图片
convertImg
(
file
)
{
let
_this
=
this
;
var
canvas1
=
document
.
createElement
(
"canvas"
);
var
context1
=
canvas1
.
getContext
(
"2d"
);
var
oReader
=
new
FileReader
();
oReader
.
readAsDataURL
(
file
);
oReader
.
onload
=
function
(
e
)
{
var
img
=
new
Image
();
img
.
src
=
e
.
target
.
result
;
img
.
onload
=
function
()
{
// 图片原始尺寸
var
originWidth
=
this
.
width
;
var
originHeight
=
this
.
height
;
// 最大尺寸限制
var
maxWidth
=
1080
,
maxHeight
=
1080
;
// 目标尺寸
var
targetWidth
=
originWidth
,
targetHeight
=
originHeight
;
// 图片尺寸超过300x300的限制
if
(
originWidth
>
maxWidth
||
originHeight
>
maxHeight
)
{
if
(
originWidth
/
originHeight
>
maxWidth
/
maxHeight
)
{
targetWidth
=
maxWidth
;
targetHeight
=
Math
.
round
(
maxWidth
*
(
originHeight
/
originWidth
)
);
}
else
{
targetHeight
=
maxHeight
;
targetWidth
=
Math
.
round
(
maxHeight
*
(
originWidth
/
originHeight
)
);
}
}
var
type
=
"image/jpeg"
;
// canvas对图片进行缩放
canvas1
.
width
=
targetHeight
;
canvas1
.
height
=
targetWidth
;
// 旋转90度
context1
.
translate
(
0
,
0
);
context1
.
rotate
(
Math
.
PI
/
2
);
// (0,-imgHeight) 从旋转原理图那里获得的起始点
// context.clearRect(0, -targetHeight, targetWidth, targetHeight);
context1
.
drawImage
(
img
,
0
,
-
targetHeight
,
targetWidth
,
targetHeight
);
// 将canvas的透明背景设置成白色
var
imageData
=
context1
.
getImageData
(
0
,
0
,
canvas1
.
width
,
canvas1
.
height
);
for
(
var
i
=
0
;
i
<
imageData
.
data
.
length
;
i
+=
4
)
{
// 当该像素是透明的,则设置成白色
if
(
imageData
.
data
[
i
+
3
]
==
0
)
{
imageData
.
data
[
i
]
=
255
;
imageData
.
data
[
i
+
1
]
=
255
;
imageData
.
data
[
i
+
2
]
=
255
;
imageData
.
data
[
i
+
3
]
=
255
;
}
}
context1
.
putImageData
(
imageData
,
0
,
0
);
var
dataurl
=
canvas1
.
toDataURL
(
type
);
// _this.basedata = dataurl;
_this
.
msg
.
Sign
=
canvas1
.
toDataURL
(
type
);
_this
.
SaveMsg
();
};
};
},
//提交数据
SaveMsg
()
{
SetEducationContractSign
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'保存成功!'
,
position
:
'top'
})
this
.
$router
.
push
({
path
:
'/contractPay'
,
query
:
{
contractId
:
this
.
msg
.
ContractId
,
Money
:
this
.
Money
}
});
}
})
},
//base64转Blob
base64ToBlob
(
base64Data
)
{
let
arr
=
base64Data
.
split
(
","
),
fileType
=
arr
[
0
].
match
(
/:
(
.*
?)
;/
)[
1
],
bstr
=
atob
(
arr
[
1
]),
l
=
bstr
.
length
,
u8Arr
=
new
Uint8Array
(
l
);
while
(
l
--
)
{
u8Arr
[
l
]
=
bstr
.
charCodeAt
(
l
);
}
return
new
Blob
([
u8Arr
],
{
type
:
fileType
,
});
},
//清除画布
clearcanvas
()
{
var
c
=
document
.
getElementById
(
"canvas"
);
var
cxt
=
c
.
getContext
(
"2d"
);
c
.
height
=
c
.
height
;
this
.
ctx
.
lineWidth
=
3
;
},
//返回上一级
goback
()
{
this
.
$router
.
push
({
path
:
'/contractConfirm'
,
query
:
{
ContractId
:
this
.
msg
.
ContractId
}
});
},
},
};
</
script
>
src/pages/contractView.vue
View file @
dae124b3
...
@@ -683,7 +683,7 @@
...
@@ -683,7 +683,7 @@
<div
class=
"contractInput"
style=
"width:50px;"
>
{{
dataList
.
SealDateDay
}}
</div>
日
<div
class=
"contractInput"
style=
"width:50px;"
>
{{
dataList
.
SealDateDay
}}
</div>
日
</div>
</div>
<div
class=
"contractContent"
style=
"margin-top:150px;position:relative;"
>
<div
class=
"contractContent"
style=
"margin-top:150px;position:relative;"
>
乙方签字(盖章):
<img
style=
"width:
50px;position:absolute;top:-40px
;"
:src=
"dataList.Sign"
/>
乙方签字(盖章):
<img
style=
"width:
80px;position:absolute
;"
:src=
"dataList.Sign"
/>
</div>
</div>
<div
class=
"contractContent"
style=
"text-align:right;margin-top:150px;"
>
<div
class=
"contractContent"
style=
"text-align:right;margin-top:150px;"
>
<div
class=
"contractInput"
style=
"width:50px;"
>
{{
dataList
.
StuSignYear
}}
</div>
年
<div
class=
"contractInput"
style=
"width:50px;"
>
{{
dataList
.
StuSignYear
}}
</div>
年
...
...
src/pages/financial/financalDocument/addFinancialDocuments.vue
View file @
dae124b3
...
@@ -1591,6 +1591,12 @@
...
@@ -1591,6 +1591,12 @@
this
.
msg
.
RB_Branch_Id
=
this
.
msg
.
RB_Branch_Id
==
0
?
this
.
getLocalStorage
().
School_Id
:
this
.
msg
this
.
msg
.
RB_Branch_Id
=
this
.
msg
.
RB_Branch_Id
==
0
?
this
.
getLocalStorage
().
School_Id
:
this
.
msg
.
RB_Branch_Id
;
.
RB_Branch_Id
;
}
}
let
userInfo
=
this
.
getLocalStorage
()
if
(
!
this
.
$route
.
query
.
companyID
&&
userInfo
.
Group_Id
==
100000
){
this
.
msg
.
RB_Branch_Id
=
4
}
if
(
this
.
orderObj
&&
this
.
orderObj
.
companyIDList
&&
this
.
orderObj
.
companyIDList
.
length
>
0
)
{
if
(
this
.
orderObj
&&
this
.
orderObj
.
companyIDList
&&
this
.
orderObj
.
companyIDList
.
length
>
0
)
{
this
.
msg
.
RB_Branch_Id
=
this
.
orderObj
.
companyIDList
[
0
];
this
.
msg
.
RB_Branch_Id
=
this
.
orderObj
.
companyIDList
[
0
];
}
else
if
(
this
.
$route
.
query
.
companyID
)
{
}
else
if
(
this
.
$route
.
query
.
companyID
)
{
...
@@ -1982,6 +1988,7 @@
...
@@ -1982,6 +1988,7 @@
let
second
=
myDate
.
getSeconds
()
<
10
?
"0"
+
myDate
.
getSeconds
()
:
myDate
.
getSeconds
();
let
second
=
myDate
.
getSeconds
()
<
10
?
"0"
+
myDate
.
getSeconds
()
:
myDate
.
getSeconds
();
this
.
timer
=
hour
+
':'
+
minute
+
':'
+
second
;
this
.
timer
=
hour
+
':'
+
minute
+
':'
+
second
;
// this.financeinfo_post_GetList(TCID);
// this.financeinfo_post_GetList(TCID);
if
(
this
.
$route
.
query
.
edit
)
{
if
(
this
.
$route
.
query
.
edit
)
{
// 编辑
// 编辑
this
.
msg
.
FrID
=
this
.
$route
.
query
.
FrID
;
this
.
msg
.
FrID
=
this
.
$route
.
query
.
FrID
;
...
...
src/pages/financial/financalDocument/addReceivablesDocuments.vue
View file @
dae124b3
...
@@ -1607,6 +1607,10 @@
...
@@ -1607,6 +1607,10 @@
this
.
msg
.
RB_Branch_Id
=
this
.
msg
.
RB_Branch_Id
==
0
||
this
.
msg
.
RB_Branch_Id
==
ParentCompanyId
?
this
this
.
msg
.
RB_Branch_Id
=
this
.
msg
.
RB_Branch_Id
==
0
||
this
.
msg
.
RB_Branch_Id
==
ParentCompanyId
?
this
.
getLocalStorage
().
School_Id
:
this
.
msg
.
RB_Branch_Id
;
.
getLocalStorage
().
School_Id
:
this
.
msg
.
RB_Branch_Id
;
if
(
!
this
.
$route
.
query
.
companyID
&&
userInfo
.
Group_Id
==
100000
){
this
.
msg
.
RB_Branch_Id
=
4
}
if
(
this
.
orderObj
&&
this
.
orderObj
.
companyIDList
&&
this
.
orderObj
.
companyIDList
.
length
>
0
)
{
if
(
this
.
orderObj
&&
this
.
orderObj
.
companyIDList
&&
this
.
orderObj
.
companyIDList
.
length
>
0
)
{
this
.
msg
.
RB_Branch_Id
=
this
.
orderObj
.
companyIDList
[
0
];
this
.
msg
.
RB_Branch_Id
=
this
.
orderObj
.
companyIDList
[
0
];
}
else
if
(
this
.
$route
.
query
.
companyID
)
{
}
else
if
(
this
.
$route
.
query
.
companyID
)
{
...
@@ -1841,6 +1845,7 @@
...
@@ -1841,6 +1845,7 @@
this
.
timer
=
hour
+
':'
+
minute
+
':'
+
second
;
this
.
timer
=
hour
+
':'
+
minute
+
':'
+
second
;
this
.
IsUploadPic
=
this
.
$route
.
query
.
IsUploadPic
;
this
.
IsUploadPic
=
this
.
$route
.
query
.
IsUploadPic
;
this
.
msg
.
Cmd
=
this
.
$route
.
query
.
Cmd
?
this
.
$route
.
query
.
Cmd
:
''
;
this
.
msg
.
Cmd
=
this
.
$route
.
query
.
Cmd
?
this
.
$route
.
query
.
Cmd
:
''
;
this
.
getCompany
();
this
.
getCompany
();
if
(
this
.
$route
.
query
.
edit
)
{
if
(
this
.
$route
.
query
.
edit
)
{
this
.
edit
=
this
.
$route
.
query
.
edit
;
this
.
edit
=
this
.
$route
.
query
.
edit
;
...
...
src/pages/sale/SuppliesStockOutApplyForDetail.vue
View file @
dae124b3
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<div
class=
"PropertyProcurementDetails padContent ck_detail"
v-loading=
"pageLoad"
>
<div
class=
"PropertyProcurementDetails padContent ck_detail"
v-loading=
"pageLoad"
>
<div
style=
"border-bottom: 1px solid #e2e4eb; padding-bottom: 10px;display:flex;align-items:center;height:50px"
>
<div
style=
"border-bottom: 1px solid #e2e4eb; padding-bottom: 10px;display:flex;align-items:center;height:50px"
>
<span
class=
"pageTitle"
style=
"float: inherit"
>
耗材出库详情
</span>
<span
class=
"pageTitle"
style=
"float: inherit"
>
耗材出库详情
</span>
<el-button
@
click=
"backTo"
round
style=
"background-color:#
089bab
;color:#fff;margin-left:15px"
>
返回
</el-button>
<el-button
@
click=
"backTo"
round
style=
"background-color:#
2961fe
;color:#fff;margin-left:15px"
>
返回
</el-button>
</div>
</div>
<div
<div
style=
"
style=
"
...
@@ -42,7 +42,8 @@
...
@@ -42,7 +42,8 @@
</p>
</p>
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-button
@
click=
"SetPropertyProcurementStockIn"
round
style=
"float: right;background-color:#089bab;color:#fff"
:disabled=
"GetDetail.StockOutStatus === 3"
>
出库
</el-button>
<el-button
@
click=
"setStockoutdig=true"
round
style=
"float: right;background-color:#2961fe;color:#fff;margin-left:10px"
v-if=
"isSelfCreate"
:disabled=
"GetDetail.AuditStatus == 2"
>
修改状态
</el-button>
<el-button
@
click=
"SetStockout"
round
style=
"float: right;background-color:#2961fe;color:#fff;"
:disabled=
"GetDetail.AuditStatus != 2||GetDetail.StockOutStatus === 3"
>
出库
</el-button>
</el-col>
</el-col>
</el-row>
</el-row>
<el-row>
<el-row>
...
@@ -72,11 +73,19 @@
...
@@ -72,11 +73,19 @@
<span>
总数量 :
</span>
<span>
总数量 :
</span>
<span>
{{
GetDetail
.
TotalNumber
}}
</span>
<span>
{{
GetDetail
.
TotalNumber
}}
</span>
</el-col>
</el-col>
<el-col
:span=
"12"
style=
"display:flex"
>
<span>
仓库 :
</span>
<div>
<q-select
filled
use-input
input-debounce=
"0"
option-value=
"Id"
option-label=
"Name"
v-model=
"GetDetail.WareHouseId"
:options=
"storeList"
dense
emit-value
map-options
>
</q-select>
</div>
</el-col>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<span>
备注 :
</span>
<span>
备注 :
</span>
<span>
{{
GetDetail
.
Audit
Remark
}}
</span>
<span>
{{
GetDetail
.
Remark
}}
</span>
</el-col>
</el-col>
</el-row>
</el-row>
</el-col>
</el-col>
...
@@ -119,7 +128,7 @@
...
@@ -119,7 +128,7 @@
<td>
{{
item
.
Number
}}
</td>
<td>
{{
item
.
Number
}}
</td>
<td>
{{
item
.
StockOutNum
}}
</td>
<td>
{{
item
.
StockOutNum
}}
</td>
<td>
<td>
<
el-input
v-model
.
number=
"item.WaitStockOutNum"
type=
"number"
@
input=
"inputval(item.WaitStockOutNum,item.Number,index)"
:min=
"0"
:max=
"item.Number"
:disabled=
"GetDetail.StockOutStatus === 3"
></el
-input>
<
q-input
v-model
.
number=
"item.WaitStockOutNum"
type=
"number"
@
input=
"inputval(item.WaitStockOutNum,item.Number,index)"
:min=
"0"
:max=
"item.Number"
:disable=
"GetDetail.AuditStatus != 2||GetDetail.StockOutStatus === 3"
></q
-input>
</td>
</td>
</tr>
</tr>
...
@@ -129,36 +138,97 @@
...
@@ -129,36 +138,97 @@
</tbody>
</tbody>
</table>
</table>
</div>
</div>
<q-dialog
v-model=
"setStockoutdig"
>
<q-card
class=
"q-px-md"
style=
"width:1000px;"
>
<q-card-section
class=
"row items-center q-pb-none"
>
<div
class=
"text-h6"
>
修改状态
</div>
<q-space
/>
<q-btn
icon=
"close"
flat
round
dense
v-close-popup
/>
</q-card-section>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-6 q-mt-lg"
>
<q-select
filled
use-input
input-debounce=
"0"
option-value=
"id"
label=
"类型"
option-label=
"name"
v-model=
"stateMsg.Type"
:options=
"stateOption"
emit-value
map-options
>
</q-select>
</div>
</div>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-12 q-mt-lg"
>
<q-input
v-model=
"stateMsg.Remark"
label=
"备注"
type=
"textarea"
filled
></q-input>
</div>
</div>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md q-mb-lg"
>
<div
class=
"col-12 q-mt-lg"
>
<q-btn
color=
"primary"
label=
"提交"
style=
"float:right"
class=
"q-ml-sm"
@
click=
"SetStockoutState"
></q-btn>
<q-btn
text-color=
"primary"
label=
"取消"
style=
"float:right"
@
click=
"setStockoutdig=false"
></q-btn>
</div>
</div>
</q-card>
</q-dialog>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
GetSuppliesStockOutApplyForDetail
}
from
'../../api/sale/StockOutApplyFor'
import
{
GetSuppliesStockOutApplyForDetail
,
SuppliesStockOut
,
GetWareHouse
,
SetSuppliesStockOutApplyForState
}
from
'../../api/sale/StockOutApplyFor'
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
ApplyForId
:
0
,
ApplyForId
:
0
,
isSelfCreate
:
false
,
//出库单是否是登录人创建
images
:
[],
images
:
[],
imageOptions
:
{
imageOptions
:
{
navbar
:
false
,
navbar
:
false
,
title
:
false
,
title
:
false
,
},
},
pageLoad
:
false
,
pageLoad
:
false
,
storeList
:[],
GetDetail
:
{
GetDetail
:
{
WareHouseId
:
0
,
DetailList
:
[
DetailList
:
[
],
],
},
},
uploadImgList
:
[],
uploadImgList
:
[],
setStockoutdig
:
false
,
stateMsg
:{
ApplyForId
:
0
,
Type
:
1
,
Remark
:
""
,
},
stateOption
:[
{
id
:
1
,
name
:
"取消"
},
{
id
:
2
,
name
:
"审核通过"
},
{
id
:
3
,
name
:
"审核驳回"
}
]
};
};
},
},
created
()
{
created
()
{
this
.
ApplyForId
=
this
.
$route
.
query
.
Id
;
this
.
ApplyForId
=
this
.
$route
.
query
.
Id
;
this
.
stateMsg
.
ApplyForId
=
this
.
$route
.
query
.
Id
;
this
.
getDetail
();
this
.
getDetail
();
this
.
getWareHouse
();
},
mounted
()
{
},
},
mounted
()
{},
methods
:
{
methods
:
{
getWareHouse
(){
GetWareHouse
({}).
then
(
res
=>
{
this
.
storeList
=
res
.
data
.
data
})
},
inputval
(
val
,
maxVal
,
index
){
inputval
(
val
,
maxVal
,
index
){
this
.
$forceUpdate
();
this
.
$forceUpdate
();
if
(
val
>
maxVal
){
if
(
val
>
maxVal
){
...
@@ -172,45 +242,55 @@ export default {
...
@@ -172,45 +242,55 @@ export default {
},
},
getDetail
()
{
getDetail
()
{
this
.
pageLoad
=
true
;
this
.
pageLoad
=
true
;
let
that
=
this
GetSuppliesStockOutApplyForDetail
({
ApplyForId
:
this
.
ApplyForId
}).
then
(
res
=>
{
GetSuppliesStockOutApplyForDetail
({
ApplyForId
:
this
.
ApplyForId
}).
then
(
res
=>
{
this
.
pageLoad
=
false
;
this
.
pageLoad
=
false
;
if
(
res
.
data
.
resultCode
===
1
){
if
(
res
.
data
.
resultCode
===
1
){
console
.
log
(
res
.
data
.
data
)
this
.
GetDetail
=
res
.
data
.
data
this
.
GetDetail
=
res
.
data
.
data
this
.
GetDetail
.
DetailList
.
forEach
(
item
=>
{
this
.
GetDetail
.
DetailList
.
forEach
(
item
=>
{
item
.
WaitStockOutNum
=
item
.
StockOutNum
item
.
WaitStockOutNum
=
item
.
StockOutNum
})
})
that
.
isSelf
();
}
}
})
})
},
},
//
采购单入
库
//
出
库
Set
PropertyProcurementStockIn
()
{
Set
Stockout
()
{
//
let msg = {
let
msg
=
{
// Procurement
Id: this.GetDetail.Id,
Id
:
this
.
GetDetail
.
Id
,
// StockInDate: this.GetDetail.BuyDate
,
WareHouseId
:
this
.
GetDetail
.
WareHouseId
,
//
DetailList: [],
DetailList
:
[],
//
};
};
//
this.GetDetail.DetailList.map((item) => {
this
.
GetDetail
.
DetailList
.
map
((
item
)
=>
{
//
let obj = {
let
obj
=
{
//
Id:item.Id,
Id
:
item
.
Id
,
// MaterialId: item.MaterialId,
WaitStockOutNum
:
item
.
WaitStockOutNum
// WaitStockInNum: item.WaitStockInNum,
};
// }
;
msg
.
DetailList
.
push
(
obj
)
;
// msg.DetailList.push(obj
);
}
);
// });
SuppliesStockOut
(
msg
).
then
(
res
=>
{
// this.apiJavaPost(
// "/api/supplies/SetSuppliesProcurementStockIn",
})
// msg,
// (res) => {
},
// if (res.data.resultCode === 1)
{
SetStockoutState
()
{
// this.Success(res.data.message)
SetSuppliesStockOutApplyForState
(
this
.
stateMsg
).
then
(
res
=>
{
// } else
{
if
(
res
.
data
.
resultCode
===
1
)
{
// this.Error(res.data.message);
this
.
Success
(
res
.
data
.
message
)
// }
}
else
{
// },
this
.
Error
(
res
.
data
.
message
);
// null
}
// );
})
},
},
//判断登录人是否是创建人
isSelf
(){
let
loginId
=
JSON
.
parse
(
localStorage
.
getItem
(
'loginUserInfo'
)).
data
.
Id
if
(
this
.
GetDetail
.
CreateBy
===
loginId
){
this
.
isSelfCreate
=
true
}
else
{
this
.
isSelfCreate
=
false
}
}
},
},
};
};
</
script
>
</
script
>
...
...
src/pages/sale/SuppliesStockOutApplyForMan.vue
View file @
dae124b3
...
@@ -163,7 +163,7 @@
...
@@ -163,7 +163,7 @@
<
template
v-slot:top=
"props"
>
<
template
v-slot:top=
"props"
>
<div
class=
"col-2 q-table__title"
>
出库管理
</div>
<div
class=
"col-2 q-table__title"
>
出库管理
</div>
<q-space
/>
<q-space
/>
<q-btn
color=
"
primary"
size=
"11px
"
@
click=
"showAdd"
>
新增出库单
</q-btn>
<q-btn
color=
"
accent"
size=
"11px"
icon=
"add
"
@
click=
"showAdd"
>
新增出库单
</q-btn>
</
template
>
</
template
>
<
template
v-slot:body-cell-StockOutStatus=
"props"
>
<
template
v-slot:body-cell-StockOutStatus=
"props"
>
<q-td
:props=
"props"
>
<q-td
:props=
"props"
>
...
@@ -422,6 +422,9 @@
...
@@ -422,6 +422,9 @@
// 显示新增出库单
// 显示新增出库单
showAdd
(){
showAdd
(){
this
.
showaddStockOut
=
true
this
.
showaddStockOut
=
true
},
closePop
(){
this
.
showaddStockOut
=
false
}
}
}
}
}
}
...
...
src/pages/sale/studentList.vue
View file @
dae124b3
...
@@ -40,12 +40,12 @@
...
@@ -40,12 +40,12 @@
<div
class=
"row wrap"
>
<div
class=
"row wrap"
>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.GuestName"
ref=
"GuestName"
label=
"姓名"
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.GuestName"
ref=
"GuestName"
label=
"姓名"
:rules=
"[val => !!val || '姓名']"
/>
:rules=
"[val => !!val || '姓名']"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
v-model=
"addMsg.Profession"
label=
"职业"
:rules=
"[val => !!val || '职业']"
/>
<div
class=
"col-6 q-pb-lg q-pr-lg"
>
<div
class=
"col-6 q-pb-lg q-pr-lg"
>
<q-radio
v-model=
"addMsg.Sex"
val=
"1"
label=
"男"
/>
<q-radio
v-model=
"addMsg.Sex"
val=
"1"
label=
"男"
/>
<q-radio
v-model=
"addMsg.Sex"
val=
"2"
label=
"女"
/>
<q-radio
v-model=
"addMsg.Sex"
val=
"2"
label=
"女"
/>
</div>
</div>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.Profession"
label=
"职业"
:rules=
"[val => !!val || '职业']"
/>
<q-input
filled
v-model=
"addMsg.BirthDate"
:rules=
"[val => !!val || '请选择出生日期']"
class=
"col-6 q-pb-lg"
ref=
"BirthDate"
mask=
"date"
label=
"出生日期"
>
<q-input
filled
v-model=
"addMsg.BirthDate"
:rules=
"[val => !!val || '请选择出生日期']"
class=
"col-6 q-pb-lg"
ref=
"BirthDate"
mask=
"date"
label=
"出生日期"
>
<
template
v-slot:append
>
<
template
v-slot:append
>
...
@@ -73,6 +73,13 @@
...
@@ -73,6 +73,13 @@
<q-select
class=
"col-6 q-pb-lg"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
<q-select
class=
"col-6 q-pb-lg"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
v-model=
"addMsg.GuestSource"
:options=
"OFList"
emit-value
map-options
label=
"客人来源"
/>
v-model=
"addMsg.GuestSource"
:options=
"OFList"
emit-value
map-options
label=
"客人来源"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.ContactAddress"
label=
"现居住地址"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.ContactAddress"
label=
"现居住地址"
/>
<div
class=
"col-6 q-pr-lg q-pb-lg"
>
<q-uploader
style=
"display: inline-block;height: 150px;max-width: 100%; background-repeat:no-repeat"
:style=
"{'background-image':'url(' + addMsg.StuIcon + ')'}"
max-files=
"1"
hide-upload-btn
@
rejected=
"onRejected"
label=
"教师头像"
:max-file-size=
"5*1024*1024"
accept=
".jpg, image/*"
auto-upload
:factory=
"uploadFile"
no-thumbnails
>
</q-uploader>
</div>
</div>
</div>
</q-card-section>
</q-card-section>
<q-card-section
class=
"q-pt-none"
v-if=
"msg.SourceId>0"
>
<q-card-section
class=
"q-pt-none"
v-if=
"msg.SourceId>0"
>
...
@@ -104,6 +111,13 @@
...
@@ -104,6 +111,13 @@
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
v-model=
"addMsg.VolunteerMajor"
label=
"志愿专业"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
v-model=
"addMsg.VolunteerMajor"
label=
"志愿专业"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.Price"
label=
"价格"
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.Price"
label=
"价格"
@
keyup
.
native=
"checkPrice(addMsg,'Price')"
/>
@
keyup
.
native=
"checkPrice(addMsg,'Price')"
/>
<div
class=
"col-6 q-pr-lg q-pb-lg"
>
<q-uploader
style=
"display: inline-block;height: 150px;max-width: 100%; background-repeat:no-repeat"
:style=
"{'background-image':'url(' + addMsg.StuIcon + ')'}"
max-files=
"1"
hide-upload-btn
@
rejected=
"onRejected"
label=
"教师头像"
:max-file-size=
"5*1024*1024"
accept=
".jpg, image/*"
auto-upload
:factory=
"uploadFile"
no-thumbnails
>
</q-uploader>
</div>
</div>
</div>
</q-card-section>
</q-card-section>
<div
class=
"text-caption q-mb-lg q-px-md text-grey-6"
v-if=
"msg.ClassId>0"
>
附加信息
</div>
<div
class=
"text-caption q-mb-lg q-px-md text-grey-6"
v-if=
"msg.ClassId>0"
>
附加信息
</div>
...
@@ -141,6 +155,10 @@
...
@@ -141,6 +155,10 @@
setOrderGuestInfo
,
//保存
setOrderGuestInfo
,
//保存
delOrderGuestInfo
,
//删除
delOrderGuestInfo
,
//删除
}
from
'../../api/sale/sale'
}
from
'../../api/sale/sale'
import
{
UploadSelfFile
,
}
from
'../../api/common/common'
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
...
@@ -280,6 +298,7 @@
...
@@ -280,6 +298,7 @@
StudyRemark
:
""
,
//留学就业备注
StudyRemark
:
""
,
//留学就业备注
BirthDate
:
""
,
//出生日期
BirthDate
:
""
,
//出生日期
TotalHours
:
0
,
//总课时
TotalHours
:
0
,
//总课时
StuIcon
:
''
//头像
},
},
GBList
:
[],
//日语基础列表
GBList
:
[],
//日语基础列表
GEList
:
[],
//学历列表
GEList
:
[],
//学历列表
...
@@ -428,24 +447,7 @@
...
@@ -428,24 +447,7 @@
}).
catch
(()
=>
{
}).
catch
(()
=>
{
this
.
saveLoading
=
false
this
.
saveLoading
=
false
})
})
}
}
// if (this.addMsg.GuestName == '') {
// this.$q.notify({
// type: 'negative',
// position: "top",
// message: `请输入客人姓名`
// })
// return;
// }
// if (this.addMsg.Basics == '') {
// this.$q.notify({
// type: 'negative',
// position: "top",
// message: `请选择语言基础`
// })
// return;
// }
},
},
//初始化数据
//初始化数据
initialize
()
{
initialize
()
{
...
@@ -506,6 +508,7 @@
...
@@ -506,6 +508,7 @@
this
.
addMsg
.
BirthDate
=
item
.
BirthDate
;
this
.
addMsg
.
BirthDate
=
item
.
BirthDate
;
this
.
addMsg
.
TotalHours
=
item
.
TotalHours
;
this
.
addMsg
.
TotalHours
=
item
.
TotalHours
;
this
.
addMsg
.
StuIcon
=
item
.
StuIcon
;
this
.
persistent
=
true
;
this
.
persistent
=
true
;
},
},
//删除学员
//删除学员
...
@@ -534,7 +537,21 @@
...
@@ -534,7 +537,21 @@
}
}
})
})
}).
onCancel
(()
=>
{});
}).
onCancel
(()
=>
{});
}
},
onRejected
(
rejectedEntries
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`文件验证失败,请重新上传`
})
},
uploadFile
(
files
)
{
UploadSelfFile
(
'studentIcon'
,
files
[
0
],
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
addMsg
.
StuIcon
=
res
.
FileUrl
;
}
})
},
}
}
}
}
...
...
src/router/routes.js
View file @
dae124b3
...
@@ -731,6 +731,11 @@ const routes = [{
...
@@ -731,6 +731,11 @@ const routes = [{
component
:
()
=>
component
:
()
=>
import
(
"pages/contractConfirm.vue"
)
import
(
"pages/contractConfirm.vue"
)
},
},
{
path
:
'/contractSign'
,
//合同签名页面
component
:
()
=>
import
(
"pages/contractSign.vue"
)
},
{
{
path
:
"/contractPay"
,
path
:
"/contractPay"
,
component
:
()
=>
component
:
()
=>
...
...
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