Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
assets
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
黄媛媛
assets
Commits
f8be751f
Commit
f8be751f
authored
Aug 26, 2020
by
Mac
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
736ca64f
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
1400 additions
and
0 deletions
+1400
-0
rukuDetails.vue
src/components/Materialman/rukuDetails.vue
+1145
-0
rukuExamine.vue
src/components/Materialman/rukuExamine.vue
+243
-0
config.js
src/router/config.js
+12
-0
No files found.
src/components/Materialman/rukuDetails.vue
0 → 100644
View file @
f8be751f
<
template
>
<div
class=
"rukuDetails padContent"
v-loading=
"pageLoad"
>
<div
style=
"border-bottom:1px solid #E2E4EB;padding-bottom:10px"
>
<span
class=
"pageTitle"
style=
"float:inherit"
>
详情
</span>
<span
@
click=
"backTo"
class=
"backTo"
style=
""
>
返回
</span>
</div>
<div
style=
"margin-top:30px;background:rgba(255,255,255,1);border-radius:10px;padding:20px;position:relative;"
>
<el-row
class=
"HeaderDiv"
style=
"border-bottom:1px solid #E2E4EB;padding-bottom:20px"
>
<span
class=
"underline"
></span>
<el-col
:span=
"12"
style=
"position:relative;padding-left:50px"
>
<span
class=
"titleSpan"
>
<span>
{{
GetDetail
.
FirstStr
}}
</span>
</span>
<p
class=
"c11 f14"
style=
"padding-top:12px"
>
{{
GetDetail
.
TemplateName
}}
</p>
</el-col>
<el-col
class=
"StateCol"
:span=
"12"
style=
"text-align:right;padding-top:15px"
>
<span
v-if=
"GetDetail.AuditStatus==1"
class=
"spz"
>
{{
GetDetail
.
StockInStateStr
}}
</span>
<span
v-if=
"GetDetail.AuditStatus==2 || GetDetail.AuditStatus==4"
class=
"ytg"
>
{{
GetDetail
.
StockInStateStr
}}
</span>
<span
v-if=
"GetDetail.AuditStatus==3 || GetDetail.AuditStatus==5"
class=
"wtg"
>
{{
GetDetail
.
StockInStateStr
}}
</span>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"18"
>
<el-row
class=
"zcInfo"
>
<el-col
:span=
"12"
>
<span>
编号 :
</span>
<span>
{{
GetDetail
.
StockInNum
}}
</span>
</el-col>
<el-col
:span=
"12"
>
<span>
仓库名称 :
</span>
<span>
{{
GetDetail
.
StockInNum
}}
</span>
</el-col>
<el-col
:span=
"12"
>
<span>
数量:
</span>
<span>
{{
GetDetail
.
StockInNum
}}
</span>
</el-col>
<el-col
:span=
"12"
>
<span>
金额:
</span>
<span>
{{
GetDetail
.
Money
}}
</span>
</el-col>
<el-col
:span=
"12"
v-if=
"GetDetail.FinanceId!=null&& GetDetail.FinanceId!=''"
>
<span>
采购单据:
</span>
<span>
{{
GetDetail
.
FinanceId
}}
</span>
</el-col>
<el-col
:span=
"12"
>
<span>
入库时间 :
</span>
<span>
{{
GetDetail
.
StockInDate
}}
</span>
</el-col>
</el-row>
</el-col>
<!--图片 -->
<el-col
v-if=
"GetDetail.ImageList && GetDetail.ImageList.length>0"
:span=
"6"
style=
"padding-top:20px"
>
<el-carousel
height=
"150px"
trigger=
"click"
:interval=
"20000"
>
<el-carousel-item
style=
"text-align:center;line-height:150px"
v-for=
"item in GetDetail.ImageList"
:key=
"item"
>
<img
@
click=
"showImg(GetDetail)"
style=
"max-width:100%;max-height:100%"
:src=
"item"
alt=
""
>
</el-carousel-item>
</el-carousel>
</el-col>
</el-row>
<p
class=
"f12 c11"
style=
"margin-top:25px"
>
物料清单
</p>
<table
style=
"margin-top:10px"
class=
"myTable noHoverTable"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
<thead>
<th>
物料编号
</th>
<th>
物料名称
</th>
<th>
品牌名称
</th>
<th>
分类名称
</th>
<th>
型号
</th>
</thead>
<tbody>
<tr
v-for=
"(item,index) in GetDetail.DetailList"
:key=
"index"
>
<td><span
@
click=
"getCheckDes(item)"
style=
"text-decoration: underline;cursor: pointer;"
>
{{
item
.
PropertyNum
}}
</span></td>
<td>
{{
item
.
PropertyName
}}
</td>
<td>
{{
item
.
BrandName
}}
</td>
<td>
{{
item
.
CategoryName
}}
</td>
<td>
{{
item
.
PropertyModel
}}
</td>
</tr>
<tr
v-show=
"GetDetail.DetailList.length==0"
>
<td
colspan=
"4"
align=
"center"
>
暂无数据
</td>
</tr>
</tbody>
</table>
</div>
<div
style=
"margin-top:30px;background:rgba(255,255,255,1);border-radius:10px;padding:20px;position:relative;"
>
<ul
class=
"allStep"
style=
"position:relative;"
>
<li
v-for=
"(item,index) in GetDetail.AuditSteps"
:key=
"index"
>
<div>
<span
v-if=
"index!=0"
class=
"line"
></span>
<span
class=
"circle"
>
<img
src=
"../../assets/img/step2.png"
alt=
""
>
</span>
<span
style=
"display:inline-block;position:relative;top:20px"
>
<div>
{{
item
.
AuditDescription
}}
</div>
<div
style=
"margin-top:10px;color:#089bab"
>
{{
item
.
AuditWayName
}}
</div>
</span>
</div>
</li>
<el-popover
popper-class=
"detailsIT_Journal"
width=
"250"
trigger=
"click"
>
<div
class=
"InfoChangeLog"
>
<div
class=
"changLog"
>
<p
class=
"_log_t"
>
流程日志
</p>
<ul
class=
"changLogList"
v-if=
"danjuList.length>0"
>
<li
class=
"changLogList_l"
v-for=
"(log,li) in danjuList"
>
<span
style=
"background-color: #47BF8C"
class=
"_radius_green"
></span>
<p>
<span
class=
"_color_blue"
>
{{
log
.
UpdateBy
}}
</span>
<span
style=
"float:right"
class=
"fr changLog_time"
>
{{
log
.
UpdateDate
}}
</span>
</p>
<p
class=
"_dtel"
>
{{
log
.
Content
}}
</p>
</li>
</ul>
<ul
v-else
>
<li>
暂无修改日志
</li>
</ul>
</div>
</div>
<span
slot=
"reference"
class=
"rizhi underline"
>
单据操作日志
</span>
</el-popover>
</ul>
<div
class=
"_process clearfix"
>
<div
class=
"_process_box"
>
<template
v-for=
"(item,index) in GetDetail.AuditSteps"
>
<div
class=
"_pb_son"
:class=
"
{_none_after:(item.NextStep==1||item.Status==4),_bohui_after:(GetDetail.Status==3
&&
!IsBoHui
&&
index===GetDetail.AuditSteps.length-1)}" v-if="item.Sort==0 || (item.Status==1
&&
item.NextStep==1) || (item.Status==2
&&
item.Sort!=0) || (item.Status==4)">
<div
class=
"_left_radius"
v-if=
"item.Sort==0"
>
发起
</div>
<div
class=
"_left_radius _left_radius_sus"
v-if=
"item.NextStep==1"
>
<span
v-if=
"item.SpecialNode==2"
>
待签
</span>
<span
v-else
>
待审
</span>
</div>
<div
class=
"_left_radius"
v-if=
"item.Sort!=0 && item.Status==2"
>
<span
v-if=
"item.SpecialNode==2"
>
已签
</span>
<span
v-else
>
通过
</span>
</div>
<div
class=
"_left_radius _left_radius_err"
v-else-if=
"item.Status==4"
>
驳回
</div>
<div
class=
"_right_content"
v-if=
"item.AuditWay==2 || item.AuditWay==3"
>
<p
class=
"_name"
>
<span
class=
"_n"
>
{{
item
.
AuditDescription
}}
<span
class=
"_sm"
>
(
{{
item
.
AuditWay
==
2
?
'会签'
:
'或签'
}}
)
</span></span>
</p>
<div
class=
"_more _mgt_15"
v-for=
"(son,sindex) in item.AuditRecordList"
v-if=
"son.AuditStatus==2"
>
<div
class=
"_right_content"
>
<p
class=
"_name"
>
<span
class=
"_n PingFangSC"
>
{{
son
.
AuditName
}}
</span>
<span
class=
"_sn"
v-if=
"son.AuditStatus==2"
>
<span
v-if=
"item.SpecialNode==2"
>
已签
</span>
<span
v-else
>
通过
</span>
</span>
<span
class=
"_time _time_n"
>
{{
son
.
AduitDate
}}
</span>
</p>
<template
v-if=
"son.CareOfRemarks"
>
<div
class=
"_zhuan_msg"
v-for=
"(z,zIndex) in JSON.parse(son.CareOfRemarks)"
>
<p><span>
由
</span>
{{
z
.
BeFrom
}}
<span><i
class=
"_color_green"
>
转交
</i>
给
</span>
{{
z
.
Target
}}
</p>
<p
class=
"_pp_info"
>
转交备注:
{{
z
.
Remarks
?
z
.
Remarks
:
'无'
}}
</p>
</div>
</
template
>
<div
class=
"_pp_info"
v-if=
"son.AuditStatus!=1 && item.SpecialNode!=2"
>
<p>
{{!son.Remark || son.Remark==''?'无' : son.Remark}}
</p>
<div
class=
"_info_img"
v-if=
"son.ImageList!=null&&son.AuditStatus==2"
>
<ul
class=
"clearfix"
v-if=
"son.ImageList.length&&son.ImageList.length>=1"
>
<li
v-for=
"(img,imgI) in son.ImageList"
>
<img
v-if=
"!img"
src=
"../../assets/img/Travelslider.png"
alt=
""
>
<img
v-else
:src=
"img"
alt=
""
>
<div
class=
"_see_img"
@
click=
"showImg(son,2)"
>
<i
class=
"iconfont icon-sousuo"
></i>
</div>
</li>
</ul>
</div>
</div>
<div
v-if=
"son.SignImage!=''"
>
<img
style=
"height: 82px;width: 143px;margin-top:10px;border: 1px solid #eee"
:src=
"son.SignImage"
>
</div>
</div>
</div>
<div
class=
"_more _mgt_15"
v-for=
"(son,sindex) in item.AuditRecordList"
v-if=
"son.AuditStatus!=2"
>
<div
class=
"_right_content"
v-if=
"item.AuditWay==2&&son.AuditStatus!=2"
>
<p
class=
"_name"
>
<span
class=
"_n PingFangSC"
>
{{son.AuditName}}
</span>
<span
class=
"_sn"
v-if=
"son.AuditStatus==2"
>
<span
v-if=
"item.SpecialNode==2"
>
已签
</span>
<span
v-else
>
通过
</span>
</span>
<span
class=
"_m"
v-else-if=
"son.AuditStatus==4"
>
驳回
</span>
<span
class=
"_sm"
v-else-if=
"son.AuditStatus==1"
>
<span
v-if=
"item.SpecialNode==2"
>
待签
</span>
<span
v-else
>
待审
</span>
</span>
<span
class=
"_time _time_n"
v-if=
"item.Status!=1"
>
{{son.AduitDate}}
</span>
</p>
<
template
v-if=
"son.CareOfRemarks"
>
<div
class=
"_zhuan_msg"
v-for=
"(z,zIndex) in JSON.parse(son.CareOfRemarks)"
>
<p><span>
由
</span>
{{
z
.
BeFrom
}}
<span><i
class=
"_color_green"
>
转交
</i>
给
</span>
{{
z
.
Target
}}
</p>
<p
class=
"_pp_info"
>
转交备注:
{{
z
.
Remarks
?
z
.
Remarks
:
'无'
}}
</p>
</div>
</
template
>
<div
class=
"_pp_info"
v-if=
"item.Status!=1"
>
<p>
{{!son.Remark || son.Remark==''?'无' : son.Remark}}
</p>
<div
class=
"_info_img"
v-if=
"son.ImageList!=null&&item.Status!=1"
>
<ul
class=
"clearfix"
v-if=
"son.ImageList.length&&son.ImageList.length>=1"
>
<li
v-for=
"(img,imgI) in son.ImageList"
>
<img
v-if=
"!img"
src=
"../../assets/img/Travelslider.png"
alt=
""
>
<img
v-else
:src=
"img"
alt=
""
>
<div
class=
"_see_img"
@
click=
"showImg(son,2)"
>
<i
class=
"iconfont icon-sousuo"
></i>
</div>
</li>
</ul>
</div>
</div>
<div
v-if=
"son.SignImage!=''"
>
<img
style=
"height: 82px;width: 143px;margin-top:10px;border: 1px solid #eee"
:src=
"son.SignImage"
>
</div>
</div>
<div
class=
"_right_content"
v-else-if=
"item.AuditWay==3 && son.AuditStatus==1"
>
<p
class=
"_name"
>
<span
class=
"_n PingFangSC"
>
{{son.AuditName}}
</span>
<span
class=
"_sm"
v-if=
"item.Status==2 && item.Sort!=0"
>
通过
</span>
<span
class=
"_m"
v-else-if=
"item.Status==4"
>
驳回
</span>
<span
class=
"_sm _left_radius_sus"
v-else-if=
"son.AuditStatus==1"
>
待审
</span>
<span
class=
"_time _time_n"
v-if=
"item.Status!=1"
>
{{son.AduitDate}}
</span>
</p>
<
template
v-if=
"son.CareOfRemarks"
>
<div
class=
"_zhuan_msg"
v-for=
"(z,zIndex) in JSON.parse(son.CareOfRemarks)"
>
<p><span>
由
</span>
{{
z
.
BeFrom
}}
<span><i
class=
"_color_green"
>
转交
</i>
给
</span>
{{
z
.
Target
}}
</p>
<p
class=
"_pp_info"
>
转交备注:
{{
z
.
Remarks
?
z
.
Remarks
:
'无'
}}
</p>
</div>
</
template
>
<div
class=
"_pp_info"
v-if=
"item.Status!=1"
>
<p>
{{!son.Remark || son.Remark==''?'无' : son.Remark}}
</p>
<div
class=
"_info_img"
v-if=
"son.ImageList!=null&&item.Status!=1"
>
<ul
class=
"clearfix"
v-if=
"son.ImageList.length&&son.ImageList.length>=1"
>
<li
v-for=
"(img,imgI) in son.ImageList"
>
<img
v-if=
"!img"
src=
"../../assets/img/Travelslider.png"
alt=
""
>
<img
v-else
:src=
"img"
alt=
""
>
<div
class=
"_see_img"
@
click=
"showImg(son)"
>
<i
class=
"iconfont icon-sousuo"
></i>
</div>
</li>
</ul>
</div>
</div>
</div>
<div
class=
"_right_content"
v-else-if=
"item.AuditWay==3 && son.AuditStatus==4"
>
<p
class=
"_name"
>
<span
class=
"_n PingFangSC"
>
{{son.AuditName}}
</span>
<span
class=
"_sm"
v-if=
"item.Status==2 && item.Sort!=0"
>
通过
</span>
<span
class=
"_m"
v-else-if=
"item.Status==4"
>
驳回
</span>
<span
class=
"_sm _left_radius_sus"
v-else-if=
"son.AuditStatus==1"
>
待审
</span>
<span
class=
"_time _time_n"
v-if=
"item.Status!=1"
>
{{son.AduitDate}}
</span>
</p>
<
template
v-if=
"son.CareOfRemarks"
>
<div
class=
"_zhuan_msg"
v-for=
"(z,zIndex) in JSON.parse(son.CareOfRemarks)"
>
<p><span>
由
</span>
{{
z
.
BeFrom
}}
<span><i
class=
"_color_green"
>
转交
</i>
给
</span>
{{
z
.
Target
}}
</p>
<p
class=
"_pp_info"
>
转交备注:
{{
z
.
Remarks
?
z
.
Remarks
:
'无'
}}
</p>
</div>
</
template
>
<div
class=
"_pp_info"
v-if=
"item.Status!=1"
>
<p>
{{son.Remark!=''?son.Remark:'无'}}
</p>
<div
class=
"_info_img"
v-if=
"son.ImageList!=null&&item.Status!=1"
>
<ul
class=
"clearfix"
v-if=
"son.ImageList.length&&son.ImageList.length>=1"
>
<li
v-for=
"(img,imgI) in son.ImageList"
>
<img
v-if=
"!img"
src=
"../../assets/img/Travelslider.png"
alt=
""
>
<img
v-else
:src=
"img"
alt=
""
>
<div
class=
"_see_img"
@
click=
"showImg(son)"
>
<i
class=
"iconfont icon-sousuo"
></i>
</div>
</li>
</ul>
</div>
</div>
<div
v-if=
"son.SignImage!=''"
>
<img
style=
"height: 82px;width: 143px;margin-top:10px;border: 1px solid #eee"
:src=
"son.SignImage"
>
</div>
</div>
</div>
</div>
<div
class=
"_right_content"
v-else
>
<div
class=
"_more"
v-for=
"(son,sindex) in item.AuditRecordList"
>
<p
class=
"_name"
>
<span
class=
"_n"
>
{{son.AuditName}}
<span
class=
"_sm"
>
{{item.AuditDescription}}
</span></span>
<span
class=
"_time _time_n"
v-if=
"item.NextStep!=1"
>
{{son.AduitDate}}
</span>
</p>
<div
class=
"_right_content"
>
<div
class=
"_pp_info"
v-if=
"item.NextStep!=1 && item.SpecialNode!=2"
>
<p>
{{son.Remark==''?'无':son.Remark}}
</p>
<div
class=
"_info_img"
v-if=
"son.ImageList!=null"
>
<ul
class=
"clearfix"
v-if=
"son.ImageList.length&&son.ImageList.length>=1"
>
<li
v-for=
"(img,imgI) in son.ImageList"
>
<img
v-if=
"!img"
src=
"../../assets/img/Travelslider.png"
alt=
""
>
<img
v-else
:src=
"img"
alt=
""
>
<div
class=
"_see_img"
@
click=
"showImg(son)"
>
<i
class=
"iconfont icon-sousuo"
></i>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<!-- beizhu -->
<textarea
v-if=
"item.NextStep==1 && compType=='shenpi' && item.SpecialNode!=2"
class=
"_textareaNew"
v-model=
"addMsg.AuditDescription"
placeholder=
"请输入..."
></textarea>
<!-- 签名(当前审核人是否需要签名) -->
<div
v-if=
"GetDetail.Is_CanAudit==1 && item.NextStep==1 && item.SpecialNode!=0 && compType=='shenpi'"
style=
"margin:10px 0;padding:10px 0 0 0"
>
<p>
<span
@
click=
"signState=true"
class=
"signSpan f12"
>
签名
</span>
</p>
<div
v-show=
"addMsg.SignImage!=''"
>
<img
style=
"height: 82px;width: 143px;margin-top:10px;border:1px solid rgb(238, 238, 238)"
:src=
"addMsg.SignImage"
>
</div>
</div>
</div>
</template>
<div
v-if=
"GetDetail.Is_CanAudit==1 && compType=='shenpi' && !needSign"
class=
"_upload_box"
style=
"margin-bottom:20px;padding-left:75px"
>
<ul
class=
"clearfix"
>
<li
v-for=
"(img,imgIndex) in uploadImgList"
:key=
"imgIndex"
>
<img
:src=
"img"
alt=
""
>
<div
class=
"_delete_img"
@
click=
"deleteImg(imgIndex)"
>
<i
style=
"color:#FFA475"
class=
"iconfont icon-shanchu"
></i>
</div>
</li>
<li
v-if=
"uploadImgList.length<10"
>
<el-upload
action=
""
class=
"avatar-uploader"
:http-request=
"uploadFileBtn"
:show-file-list=
"false"
:multiple=
"true"
:limit=
"10"
>
<i
class=
"el-icon-plus avatar-uploader-icon"
></i>
<span
class=
"_upload_tips f12"
>
最多可上传10张图片
</span>
</el-upload>
</li>
</ul>
</div>
<div
class=
"_pb_son"
:class=
"GetDetail.AuditStatus==1?'_none_after':''"
v-if=
"GetDetail.AuditStatus==1"
>
<div
class=
"_left_radius"
>
结束
</div>
<div
class=
"_right_content"
>
<p
class=
"_time"
>
累计耗时:{{endDate}}
</p>
</div>
</div>
<div
v-if=
"GetDetail.Is_CanAudit==1 && compType=='shenpi'"
class=
"button"
style=
"padding-left:15px;margin-top:20px"
>
<span
v-if=
"needSign"
@
click=
"approvalOrder(1)"
class=
"tongguo"
>
保存
</span>
<div
v-if=
"!needSign"
style=
"display:inline-block"
>
<span
@
click=
"approvalOrder(1)"
class=
"tongguo"
>
通过
</span>
<span
@
click=
"approvalOrder(2)"
class=
"bohui"
>
驳回
</span>
</div>
</div>
<!-- 申请人审批 -->
</div>
</div>
</div>
<!-- 签名 -->
<div
class=
"Sign"
:class=
"signState?'zindex':''"
>
<div
class=
"signature"
>
<p
class=
"f14"
style=
"padding:10px 10px 10px 0"
>
签名
<span
@
click=
"CloseSign"
style=
"float:right"
class=
"el-icon-close"
></span>
</p>
<div
class=
"signatureBox"
>
<div
class=
"canvasBox"
ref=
"canvasHW"
>
<canvas
ref=
"canvasF"
@
touchstart=
'touchStart'
@
touchmove=
'touchMove'
@
touchend=
'touchEnd'
@
mousedown=
"mouseDown"
@
mousemove=
"mouseMove"
@
mouseup=
"mouseUp"
></canvas>
<div
class=
"button"
style=
"text-align:center;margin-top:20px"
>
<span
@
click=
"commit"
class=
"bohui"
>
提交
</span>
<span
@
click=
"overwrite"
class=
"tongguo"
>
重写
</span>
</div>
</div>
</div>
</div>
</div>
<el-dialog
title=
"物料详情"
top=
"0"
:visible
.
sync=
"CheckDetailState"
width=
"1150px"
>
<CheckDetails
ref=
"mychild"
></CheckDetails>
</el-dialog>
<viewer
:images=
"images"
:options=
'imageOptions'
@
inited=
"inited"
class=
"viewer"
ref=
"viewer"
>
<img
v-for=
"src in images"
:src=
"src"
:key=
"src"
>
</viewer>
</div>
</template>
<
script
>
import
CheckDetails
from
"@/components/global/CheckDetails.vue"
;
export
default
{
name
:
'rukuDetails'
,
components
:
{
CheckDetails
},
data
(){
return
{
images
:[],
imageOptions
:{
navbar
:
false
,
title
:
false
},
pageLoad
:
false
,
danjuList
:[],
tableData
:[],
GetDetail
:{
AuditSteps
:[],
DetailList
:[],
},
IsBoHui
:
false
,
uploadImgList
:[],
addMsg
:{
AuditDescription
:
''
,
ImageList
:[],
UseReceiveId
:
''
,
AuditType
:
''
,
SignImage
:
''
,
},
compType
:
''
,
backto
:
''
,
showTable
:
''
,
danjuMsg
:{
pageIndex
:
1
,
pageSize
:
20
,
ResourceId
:
''
,
Type
:
1
,
},
imgSrc
:
''
,
stageInfo
:
''
,
imgUrl
:
''
,
client
:
{},
points
:
[],
canvasTxt
:
null
,
startX
:
0
,
startY
:
0
,
moveY
:
0
,
moveX
:
0
,
endY
:
0
,
endX
:
0
,
w
:
null
,
h
:
null
,
isDown
:
false
,
isViewAutograph
:
this
.
$route
.
query
.
isViews
>
0
,
contractSuccess
:
this
.
$route
.
query
.
contractSuccess
,
signState
:
false
,
needSign
:
false
,
endDate
:
''
,
PropertyId
:
''
,
CheckDetailState
:
false
,
}
},
created
(){
if
(
this
.
$route
.
query
.
compType
){
this
.
compType
=
this
.
$route
.
query
.
compType
;
}
this
.
backto
=
this
.
$route
.
query
.
backto
?
this
.
$route
.
query
.
backto
:
''
;
this
.
showTable
=
this
.
$route
.
query
.
showTable
?
this
.
$route
.
query
.
showTable
:
''
;
if
(
this
.
$route
.
query
.
Id
){
this
.
addMsg
.
UseReceiveId
=
this
.
$route
.
query
.
Id
;
this
.
danjuMsg
.
ResourceId
=
this
.
$route
.
query
.
Id
;
}
this
.
getDetail
();
this
.
getdanjuList
();
},
mounted
(){
let
canvas
=
this
.
$refs
.
canvasF
canvas
.
height
=
this
.
$refs
.
canvasHW
.
offsetHeight
-
100
canvas
.
width
=
this
.
$refs
.
canvasHW
.
offsetWidth
-
10
this
.
canvasTxt
=
canvas
.
getContext
(
'2d'
)
this
.
stageInfo
=
canvas
.
getBoundingClientRect
()
},
methods
:{
inited
(
viewer
){
this
.
$viewer
=
viewer
},
showImg
(
obj
,
type
){
this
.
images
=
[];
if
(
obj
.
ImageList
&&
obj
.
ImageList
.
length
>
0
){
this
.
images
=
obj
.
ImageList
;
}
this
.
$viewer
.
show
()
},
getCheckDes
(
item
){
this
.
PropertyId
=
item
.
PropertyId
;
this
.
CheckDetailState
=
true
;
setTimeout
(()
=>
{
this
.
$refs
.
mychild
.
InitData
(
this
.
PropertyId
);
},
10
)
},
CloseSign
(){
this
.
signState
=
false
;
},
// 签名
//重写
overwrite
()
{
this
.
canvasTxt
.
clearRect
(
0
,
0
,
this
.
$refs
.
canvasF
.
width
,
this
.
$refs
.
canvasF
.
height
)
this
.
points
=
[]
},
uuid
(
len
,
radix
)
{
var
chars
=
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
.
split
(
''
);
var
uuid
=
[],
i
;
radix
=
radix
||
chars
.
length
;
if
(
len
)
{
// Compact form
for
(
i
=
0
;
i
<
len
;
i
++
)
uuid
[
i
]
=
chars
[
0
|
Math
.
random
()
*
radix
];
}
else
{
var
r
;
uuid
[
8
]
=
uuid
[
13
]
=
uuid
[
18
]
=
uuid
[
23
]
=
'-'
;
uuid
[
14
]
=
'4'
;
for
(
i
=
0
;
i
<
36
;
i
++
)
{
if
(
!
uuid
[
i
])
{
r
=
0
|
Math
.
random
()
*
16
;
uuid
[
i
]
=
chars
[(
i
==
19
)
?
(
r
&
0x3
)
|
0x8
:
r
];
}
}
}
return
uuid
.
join
(
''
);
},
dataURLtoFile
(
dataurl
,
filename
)
{
//将base64转换为文件
var
arr
=
dataurl
.
split
(
','
),
mime
=
arr
[
0
].
match
(
/:
(
.*
?)
;/
)[
1
],
bstr
=
atob
(
arr
[
1
]),
n
=
bstr
.
length
,
u8arr
=
new
Uint8Array
(
n
);
while
(
n
--
){
u8arr
[
n
]
=
bstr
.
charCodeAt
(
n
);
}
return
new
File
([
u8arr
],
filename
,
{
type
:
mime
});
},
//提交签名
commit
()
{
let
that
=
this
;
let
imgUrl
=
this
.
$refs
.
canvasF
.
toDataURL
();
let
newArr
=
[];
var
fileName
=
`
${
that
.
uuid
(
10
,
10
)}
.png`
;
var
path
=
`/assets/sign/`
;
newArr
.
push
(
this
.
dataURLtoFile
(
imgUrl
,
fileName
))
this
.
UploadSelfFileT
(
path
,
newArr
,
x
=>
{
this
.
addMsg
.
SignImage
=
that
.
domainManager
().
ViittoFileUrl
+
x
.
data
.
FilePath
;
},
1
);
this
.
signState
=
false
;
},
mouseDown
(
ev
)
{
ev
=
ev
||
event
ev
.
preventDefault
()
if
(
1
)
{
let
obj
=
{
x
:
ev
.
offsetX
,
y
:
ev
.
offsetY
}
this
.
startX
=
obj
.
x
this
.
startY
=
obj
.
y
this
.
canvasTxt
.
beginPath
()
this
.
canvasTxt
.
moveTo
(
this
.
startX
,
this
.
startY
)
this
.
canvasTxt
.
lineTo
(
obj
.
x
,
obj
.
y
)
this
.
canvasTxt
.
stroke
()
this
.
canvasTxt
.
closePath
()
this
.
points
.
push
(
obj
)
this
.
isDown
=
true
}
},
mouseMove
(
ev
)
{
ev
=
ev
||
event
ev
.
preventDefault
()
if
(
this
.
isDown
)
{
let
obj
=
{
x
:
ev
.
offsetX
,
y
:
ev
.
offsetY
}
this
.
moveY
=
obj
.
y
this
.
moveX
=
obj
.
x
this
.
canvasTxt
.
beginPath
()
this
.
canvasTxt
.
moveTo
(
this
.
startX
,
this
.
startY
)
this
.
canvasTxt
.
lineTo
(
obj
.
x
,
obj
.
y
)
this
.
canvasTxt
.
stroke
()
this
.
canvasTxt
.
closePath
()
this
.
startY
=
obj
.
y
this
.
startX
=
obj
.
x
this
.
points
.
push
(
obj
)
}
},
mouseUp
(
ev
)
{
ev
=
ev
||
event
ev
.
preventDefault
()
if
(
1
)
{
let
obj
=
{
x
:
ev
.
offsetX
,
y
:
ev
.
offsetY
}
this
.
canvasTxt
.
beginPath
()
this
.
canvasTxt
.
moveTo
(
this
.
startX
,
this
.
startY
)
this
.
canvasTxt
.
lineTo
(
obj
.
x
,
obj
.
y
)
this
.
canvasTxt
.
stroke
()
this
.
canvasTxt
.
closePath
()
this
.
points
.
push
(
obj
)
this
.
points
.
push
({
x
:
-
1
,
y
:
-
1
})
this
.
isDown
=
false
}
},
//mobile
touchStart
(
ev
)
{
ev
=
ev
||
event
ev
.
preventDefault
()
if
(
ev
.
touches
.
length
==
1
)
{
let
obj
=
{
x
:
ev
.
targetTouches
[
0
].
clienX
,
y
:
ev
.
targetTouches
[
0
].
clientY
,
}
this
.
startX
=
obj
.
x
this
.
startY
=
obj
.
y
this
.
canvasTxt
.
beginPath
()
this
.
canvasTxt
.
moveTo
(
this
.
startX
,
this
.
startY
)
this
.
canvasTxt
.
lineTo
(
obj
.
x
,
obj
.
y
)
this
.
canvasTxt
.
stroke
()
this
.
canvasTxt
.
closePath
()
this
.
points
.
push
(
obj
)
}
},
touchMove
(
ev
)
{
ev
=
ev
||
event
ev
.
preventDefault
()
if
(
ev
.
touches
.
length
==
1
)
{
let
obj
=
{
x
:
ev
.
targetTouches
[
0
].
clientX
-
this
.
stageInfo
.
left
,
y
:
ev
.
targetTouches
[
0
].
clientY
-
this
.
stageInfo
.
top
}
this
.
moveY
=
obj
.
y
this
.
moveX
=
obj
.
x
this
.
canvasTxt
.
beginPath
()
this
.
canvasTxt
.
moveTo
(
this
.
startX
,
this
.
startY
)
this
.
canvasTxt
.
lineTo
(
obj
.
x
,
obj
.
y
)
this
.
canvasTxt
.
stroke
()
this
.
canvasTxt
.
closePath
()
this
.
startY
=
obj
.
y
this
.
startX
=
obj
.
x
this
.
points
.
push
(
obj
)
}
},
touchEnd
(
ev
)
{
ev
=
ev
||
event
ev
.
preventDefault
()
if
(
ev
.
touches
.
length
==
1
)
{
let
obj
=
{
x
:
ev
.
targetTouches
[
0
].
clientX
-
this
.
stageInfo
.
left
,
y
:
ev
.
targetTouches
[
0
].
clientY
-
this
.
stageInfo
.
top
}
this
.
canvasTxt
.
beginPath
()
this
.
canvasTxt
.
moveTo
(
this
.
startX
,
this
.
startY
)
this
.
canvasTxt
.
lineTo
(
obj
.
x
,
obj
.
y
)
this
.
canvasTxt
.
stroke
()
this
.
canvasTxt
.
closePath
()
this
.
points
.
push
(
obj
)
}
},
// 签名结束
backTo
(){
if
(
this
.
showTable
!=
''
){
this
.
$router
.
push
({
path
:
"/"
+
this
.
backto
,
query
:{
showTable
:
this
.
showTable
}
});
}
else
{
this
.
$router
.
push
({
path
:
"/"
+
this
.
backto
});
}
},
getdanjuList
(){
this
.
apiJavaPost
(
"/api/property/GetAuditChangeLogPageList"
,
this
.
danjuMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
===
1
)
{
let
data
=
res
.
data
.
data
.
pageData
;
data
.
forEach
(
x
=>
{
x
.
UpdateDate
=
this
.
$commonUtils
.
formatMsgTime
(
x
.
UpdateDate
)
})
this
.
danjuList
=
data
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
null
);
},
approvalOrder
(
num
){
if
(
this
.
GetDetail
.
Is_AuditSelf
==
1
){
this
.
Error
(
"制单人跟审核人不能相同哟,请转交!"
);
return
;
}
if
(
this
.
needSign
){
if
(
this
.
addMsg
.
SignImage
==
""
){
this
.
Error
(
"请签名!"
);
return
;
}
}
this
.
addMsg
.
AuditType
=
num
;
this
.
addMsg
.
ImageList
=
this
.
uploadImgList
;
this
.
apiJavaPost
(
"/api/property/AuditOrRefund"
,
this
.
addMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
===
1
)
{
this
.
getDetail
();
this
.
Success
(
res
.
data
.
message
);
this
.
addMsg
=
{
AuditDescription
:
''
,
ImageList
:[],
UseReceiveId
:
''
,
AuditType
:
''
,
SignImage
:
''
,
}
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
null
);
},
deleteImg
(
i
){
// 删除
this
.
uploadImgList
.
splice
(
i
,
1
)
},
uploadFileBtn
(
file
)
{
//上传
if
(
file
.
file
.
size
>
1024
*
1024
*
10
)
{
this
.
$message
.
warning
(
'文件大小不能超过10M!'
)
return
}
// 1 文档 2 数据 3 图片
let
typeArr
=
[
{
stringArr
:
'GIF|JPG|JPEG|PNG|BMP'
,
type
:
3
},
{
stringArr
:
'DOCX|DOC|XLSX|XLS|PPT|PPTX|PDF'
,
type
:
1
},
]
let
ft
=
file
.
file
.
name
.
substring
(
file
.
file
.
name
.
lastIndexOf
(
'.'
)
+
1
,
file
.
file
.
name
.
length
).
toUpperCase
();
let
fileTypeNumber
=
2
;
let
typeOk
=
false
;
typeArr
.
forEach
(
x
=>
{
if
(
x
.
stringArr
.
indexOf
(
ft
)
!=
'-1'
)
{
fileTypeNumber
=
x
.
type
;
typeOk
=
true
;
}
})
if
(
!
typeOk
)
return
this
.
$message
.
error
(
'请上传图片、word、excel类型的文件!'
);
let
newArr
=
[];
newArr
.
push
(
file
.
file
)
let
path
=
"/Upload/Temporary/"
this
.
$message
.
info
(
'上传中...'
)
this
.
UploadSelfFileT
(
path
,
newArr
,
x
=>
{
let
obj
=
this
.
domainManager
().
ViittoFileUrl
+
x
.
data
.
FilePath
this
.
uploadImgList
.
push
(
obj
)
this
.
$message
.
success
(
'上传成功'
)
},
1
);
},
getDetail
(){
this
.
pageLoad
=
true
;
this
.
apiJavaPost
(
"/api/Supplies/GetStockInAuditDetail"
,{
StockInId
:
this
.
addMsg
.
UseReceiveId
},
res
=>
{
this
.
pageLoad
=
false
;
if
(
res
.
data
.
resultCode
===
1
)
{
let
data
=
res
.
data
.
data
;
this
.
GetDetail
=
res
.
data
.
data
;
if
(
data
.
AuditStatus
==
1
){
let
len
=
data
.
AuditSteps
.
length
-
1
;
let
sLen
=
data
.
AuditSteps
[
len
].
AuditRecordList
[
data
.
AuditSteps
[
len
].
AuditRecordList
.
length
-
1
];
let
begTime
=
data
.
AuditSteps
[
0
].
AuditRecordList
[
0
].
AduitDate
;
let
enTime
=
sLen
&&
sLen
.
AduitDate
?
sLen
.
AduitDate
:
begTime
;
let
newTime
=
this
.
$commonUtils
.
formatMsgTime2
(
begTime
,
enTime
);
this
.
endDate
=
newTime
.
replace
(
"前"
,
""
);
}
let
list
=
[];
for
(
let
i
=
0
;
i
<
this
.
GetDetail
.
AuditSteps
.
length
;
i
++
){
list
.
push
(
this
.
GetDetail
.
AuditSteps
[
i
]);
if
(
this
.
GetDetail
.
AuditSteps
[
i
].
Status
==
4
){
this
.
IsBoHui
=
true
;
break
;
}
if
(
this
.
GetDetail
.
AuditSteps
[
i
].
NextStep
==
1
&&
this
.
GetDetail
.
AuditSteps
[
i
].
SpecialNode
==
2
){
this
.
needSign
=
true
;
break
;
}
}
this
.
GetDetail
.
FirstStr
=
this
.
GetDetail
.
TemplateName
.
slice
(
0
,
1
)
this
.
GetDetail
.
AuditSteps
=
list
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
null
);
},
},
}
</
script
>
<
style
>
.viewer
{
display
:
none
!important
;}
.rukuDetails
._pp_info
._info_img
li
:hover
._see_img
{
opacity
:
1
;
}
.rukuDetails
._pp_info
._see_img
.icon-sousuo
{
color
:
#fff
!important
;
}
.rukuDetails
._pp_info
._see_img
{
position
:
absolute
;
top
:
0
;
width
:
100%
;
height
:
100%
;
line-height
:
120px
;
text-align
:
center
;
background-color
:
rgba
(
2
,
2
,
2
,
0.4
);
display
:
inherit
;
opacity
:
0
;
left
:
0
;
-webkit-transition
:
all
linear
.4s
;
transition
:
all
linear
.4s
;
}
.rukuDetails
._pp_info
._info_img
li
img
{
width
:
100%
;
height
:
100%
;
}
.rukuDetails
._pp_info
._info_img
li
{
display
:
inline-block
;
width
:
120px
;
height
:
120px
;
overflow
:
hidden
;
position
:
relative
;
cursor
:
pointer
;
}
.rukuDetails
._pp_info
._info_img
{
margin-top
:
10px
;
}
.rukuDetails
._pb_son
:last-child::after
{
display
:
none
;
}
.rukuDetails
.signSpan
{
display
:
inline-block
;
width
:
100px
;
height
:
34px
;
line-height
:
34px
;
border-radius
:
22px
;
text-align
:
center
;
cursor
:
pointer
;
font-size
:
12px
;
font-family
:
"Microsoft YaHei"
;
background
:
#FFA475
;
color
:
#fff
;
}
.rukuDetails
{
position
:
relative
;
}
.rukuDetails
.zindex
{
z-index
:
9999
!important
;
opacity
:
1
!important
;
}
.rukuDetails
.signature
{
width
:
600px
;
background
:
#fff
;
padding
:
15px
;
border-radius
:
20px
;
cursor
:
pointer
;
}
.rukuDetails
.Sign
{
position
:
fixed
;
width
:
100%
;
height
:
100%
;
top
:
0
;
left
:
0
;
background
:
rgba
(
0
,
0
,
0
,
.4
);
z-index
:
-500
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
opacity
:
0
;
}
.rukuDetails
.Sign
.signatureBox
{
width
:
100%
;
height
:
300px
;
box-sizing
:
border-box
;
overflow
:
hidden
;
background
:
#fff
;
z-index
:
100
;
display
:
flex
;
flex-direction
:
column
;
margin-top
:
20px
;
padding
:
0
20px
;
box-sizing
:
border-box
;
}
.Sign
.canvasBox
{
box-sizing
:
border-box
;
flex
:
1
;
}
.rukuDetails
.Sign
canvas
{
border
:
1px
solid
#7d7d7d
;
}
.rukuDetails
.Sign
.btnBox
{
padding
:
10px
;
text-align
:
center
;
}
.rukuDetails
.Sign
.btnBox
button
:first-of-type
{
background
:
transparent
;
border-radius
:
4px
;
height
:
40px
;
width
:
80px
;
font-size
:
14px
;
}
.rukuDetails
.Sign
.btnBox
button
:last-of-type
{
background
:
#71b900
;
color
:
#fff
;
border-radius
:
4px
;
height
:
40px
;
width
:
80px
;
font-size
:
14px
;
}
.rukuDetails
._textareaNew
{
width
:
80%
;
height
:
50px
;
background-color
:
white
;
border-radius
:
4px
;
border
:
1px
solid
#E5E5E5
;
font-size
:
12px
;
color
:
#333333
;
padding
:
12px
14px
;
margin-top
:
13px
;
position
:
relative
;
}
.rukuDetails
._upload_tips
{
font-size
:
12px
;
position
:
absolute
;
top
:
71%
;
width
:
100%
;
left
:
0
;
text-align
:
center
;
color
:
#949494
;}
.rukuDetails
._pb_son._none_after
::after
{
content
:
''
;
display
:
none
}
.rukuDetails
.avatar-uploader-icon
{
font-size
:
28px
;
color
:
#8c939d
;
width
:
143px
;
height
:
82px
;
line-height
:
82px
;
text-align
:
center
;
}
.rukuDetails
.avatar-uploader
.el-upload
{
border
:
1px
dashed
#d9d9d9
;
border-radius
:
6px
;
cursor
:
pointer
;
position
:
relative
;
overflow
:
hidden
;
}
.rukuDetails
._delete_img
{
position
:
absolute
;
top
:
0px
;
height
:
82px
;
width
:
143px
;
line-height
:
34px
;
text-align
:
center
;
background-color
:
rgba
(
2
,
2
,
2
,
0.6
);
display
:
inherit
;
opacity
:
0
;
transition
:
all
linear
.5s
}
.rukuDetails
._delete_img
i
.iconfont
{
display
:
inline-block
;
width
:
32px
;
height
:
32px
;
border-radius
:
50%
;
color
:
#E95252
!important
;
background-color
:
rgba
(
251
,
251
,
251
,
0.9
);
margin-top
:
26px
;}
.rukuDetails
._upload_box
ul
li
{
float
:
left
;
height
:
82px
;
width
:
143px
;
padding
:
0px
20px
20px
0
;
text-align
:
center
;
position
:
relative
;
cursor
:
pointer
;
margin-right
:
10px
;}
.rukuDetails
._upload_box
ul
li
img
{
height
:
82px
;
width
:
143px
;}
.rukuDetails
._upload_box
ul
li
:hover
._delete_img
{
opacity
:
1
;}
.rukuDetails
.button
span
{
display
:
inline-block
;
width
:
120px
;
height
:
40px
;
line-height
:
40px
;
border-radius
:
22px
;
text-align
:
center
;
cursor
:
pointer
;
font-size
:
12px
;
font-family
:
"Microsoft YaHei"
;
margin-right
:
20px
;
}
.tongguo
{
background
:
rgba
(
0
,
210
,
214
,
1
);
color
:
#fff
;
}
.bohui
{
border
:
1px
solid
rgba
(
0
,
210
,
214
,
1
);
color
:
rgba
(
0
,
210
,
214
,
1
);
}
.rukuDetails
._zhuan_msg
{
font-size
:
12px
;
margin-top
:
10px
;
padding-bottom
:
10px
;
}
.rukuDetails
._zhuan_msg
span
{
display
:
inline-block
;
margin-right
:
5px
;
color
:
#696969
;
}
.rukuDetails
._zhuan_msg
span
:last-child
{
margin-left
:
5px
;
}
.rukuDetails
._zhuan_msg
p
:nth-child
(
2
)
{
color
:
#696969
;
}
.rukuDetails
._zhuan_msg
._color_green
{
color
:
#089bab
}
.rukuDetails
._right_content
._name
._n
{
font-size
:
14px
;
color
:
#333333
;
font-weight
:
bold
;}
.rukuDetails
._right_content
._name
._m
{
color
:
#FFFFFF
;
font-size
:
12px
;
display
:
inline-block
;
padding
:
2px
5px
;
background-color
:
#E95252
;
margin-left
:
5px
;
border-radius
:
4px
;}
.rukuDetails
._right_content
._name
._sm
{
color
:
#FFFFFF
;
font-size
:
12px
;
display
:
inline-block
;
padding
:
2px
5px
;
background-color
:
#FF9600
;
margin-left
:
5px
;
border-radius
:
4px
;
font-weight
:
100
;}
.rukuDetails
._right_content
._name
._sn
{
color
:
#FFFFFF
;
font-size
:
12px
;
display
:
inline-block
;
padding
:
2px
5px
;
background-color
:
#089bab
;
margin-left
:
5px
;
border-radius
:
4px
;}
.rukuDetails
._right_content
._time
,
.rukuDetails
._time
{
font-size
:
12px
;
color
:
#666666
;
padding-top
:
5px
;}
.rukuDetails
._right_content
._pp_info
,
.rukuDetails
._textarea
{
border-radius
:
10px
;
background
:
rgba
(
245
,
245
,
245
,
1
);
font-size
:
12px
;
color
:
#333333
;
padding
:
12px
14px
;
margin-top
:
13px
;
position
:
relative
;
width
:
80%
}
.rukuDetails
._right_content
._pp_info
:before
{
display
:
block
;
content
:
''
;
border-width
:
8px
8px
8px
8px
;
border-style
:
solid
;
border-color
:
transparent
transparent
rgba
(
245
,
245
,
245
,
1
)
transparent
;
position
:
absolute
;
left
:
10px
;
top
:
-16px
;}
.rukuDetails
._mgt_15
{
margin-top
:
15px
;}
.rukuDetails
._more
._right_content
.iconfont
{
color
:
#AAAAAA
}
.rukuDetails
._more
._right_content
._name
._n
{
font-size
:
14px
;
color
:
#333333
;
font-weight
:
bold
;
padding-left
:
3px
;}
.rukuDetails
._pb_son
{
position
:
relative
;
padding-left
:
75px
;
min-height
:
100px
;
padding-bottom
:
10px
}
.rukuDetails
._left_radius
{
z-index
:
1
;
width
:
40px
;
height
:
40px
;
border-radius
:
50%
;
text-align
:
center
;
line-height
:
40px
;
background-color
:
#089bab
;
color
:
white
;
font-size
:
12px
;
position
:
absolute
;
left
:
15px
;}
.rukuDetails
._left_radius_err
{
background-color
:
#E95252
!important
;}
.rukuDetails
._left_radius_sus
{
background-color
:
#FFA475
!important
;}
.rukuDetails
._pb_son
::after
{
content
:
''
;
width
:
4px
;
height
:
100%
;
background-color
:
#089bab
;
display
:
inline-block
;
position
:
absolute
;
clear
:
both
;
left
:
33px
;
top
:
0
;}
.rukuDetails
._pb_son._none_after
::after
{
content
:
''
;
display
:
none
}
.rukuDetails
._pb_son._bohui_after
::after
{
background-color
:
#E95252
!important
;
display
:
inline-block
}
.rukuDetails
._process_box
{
padding-top
:
30px
;
padding-bottom
:
40px
;}
.rukuDetails
._process
{
margin-top
:
20px
}
.rukuDetails
.rightDiv
.FirstName
{
width
:
40px
;
height
:
40px
;
line-height
:
40px
;
background
:
rgba
(
40
,
202
,
204
,
0.3
);
color
:
#089bab
;
border-radius
:
50%
;
text-align
:
center
;
display
:
inline-block
;
font-size
:
18px
;
}
.rukuDetails
.stepItem
.rightDiv
{
width
:
100%
;
background
:
rgba
(
255
,
255
,
255
,
1
);
box-shadow
:
0px
2px
5px
0px
rgba
(
176
,
176
,
176
,
0.1
);
border-radius
:
10px
;
}
.rukuDetails
.stepItem
._left_radius
{
width
:
16px
;
height
:
16px
;
border-radius
:
50%
;
text-align
:
center
;
position
:
absolute
;
left
:
0
;
z-index
:
2
;
}
.rukuDetails
.stepItem
{
position
:
relative
;
padding-left
:
75px
;
min-height
:
100px
;
padding-bottom
:
30px
;
}
.rukuDetails
.rizhi
{
font-size
:
12px
;
font-family
:
"Microsoft YaHei"
;
font-weight
:
400
;
text-decoration
:
underline
;
color
:
rgba
(
166
,
198
,
198
,
1
);
position
:
absolute
;
right
:
0
;
cursor
:
pointer
;
}
.rukuDetails
.allStep
li
.line
{
width
:
57px
;
display
:
inline-block
;
border-bottom
:
1px
dashed
#FFA475
;
margin
:
0
10px
;
position
:
relative
;
top
:
-7px
;
}
.rukuDetails
.allStep
li
{
display
:
inline-block
;
font-size
:
12px
;
font-family
:
"Microsoft YaHei"
;
}
.rukuDetails
.allStep
.circle
img
{
width
:
100%
;
height
:
100%
;
}
.rukuDetails
.allStep
.circle
.circleSpan
{
display
:
inline-block
;
width
:
16px
;
height
:
16px
;
background
:
rgba
(
232
,
232
,
232
,
1
);
border-radius
:
50%
;
}
.rukuDetails
.allStep
.circle
{
display
:
inline-block
;
width
:
16px
;
height
:
16px
;
border-radius
:
50%
;
}
.rukuDetails
.zcInfo
.el-col
{
font-size
:
12px
;
margin-top
:
20px
;
color
:
#111111
;
}
.rukuDetails
.zcInfo
.el-col
span
:nth-child
(
1
)
{
color
:
#999999
;
display
:
inline-block
;
width
:
85px
;
}
.rukuDetails
.HeaderDiv
.underline
{
display
:
block
;
width
:
135px
;
height
:
2px
;
position
:
absolute
;
bottom
:
0
;
background
:
#089bab
;
}
.rukuDetails
.titleSpan
{
position
:
absolute
;
left
:
0
;
}
.rukuDetails
.titleSpan
span
{
display
:
inline-block
;
width
:
44px
;
height
:
44px
;
line-height
:
44px
;
background
:
rgba
(
40
,
202
,
204
,
0.3
);
border-radius
:
50%
;
font-size
:
20px
;
color
:
#089bab
;
text-align
:
center
;
}
.rukuDetails
.StateCol
span
{
width
:
60px
;
height
:
26px
;
line-height
:
26px
;
border-radius
:
8px
;
display
:
inline-block
;
color
:
#fff
;
text-align
:
center
;
font-size
:
12px
;
font-family
:
"Microsoft YaHei"
;
}
.rukuDetails
.StateCol
.spz
{
background
:
rgba
(
114
,
184
,
255
,
1
);
}
.rukuDetails
.StateCol
.ytg
{
background
:
#089bab
;
}
.rukuDetails
.StateCol
.wtg
{
background
:
#FFA475
;
}
</
style
>
src/components/Materialman/rukuExamine.vue
0 → 100644
View file @
f8be751f
<
template
>
<div
class=
"rukuExamine"
>
<div
class=
"routerTitle"
>
<span
class=
"pageTitle"
>
审批管理
</span>
<span
class=
"ChangeTable"
>
<span
@
click=
"showTable=1,getList()"
:class=
"showTable==1?'spanActive':''"
>
待审核
</span>
<span
@
click=
"showTable=2,getList()"
:class=
"showTable==2?'spanActive':''"
>
已审核
</span>
</span>
<span
@
click=
"morequery=!morequery"
style=
"display:inline-flex;align-items:center;cursor: pointer;"
class=
"f12 cd6"
>
<span
style=
"margin-right:5px"
>
高级查询
</span>
<img
v-show=
"!morequery"
style=
"width:12px;height:12px"
src=
"../../assets/img/more.png"
alt=
""
>
<img
v-show=
"morequery"
class=
"roatImg"
style=
"width:12px;height:12px"
src=
"../../assets/img/more.png"
alt=
""
>
</span>
<span
@
click=
"getList"
style=
"margin-left:20px"
class=
"chaxunSpan"
>
查询
</span>
</div>
<div
class=
"padContent"
>
<ul
v-show=
"morequery"
class=
"queryul"
>
<li>
<el-input
class=
"w200"
size=
"small"
v-model=
"msg.StockInNum"
placeholder=
"编码"
@
keyup
.
enter
.
native=
"msg.pageIndex=1,getList()"
></el-input>
</li>
<li>
<el-input
class=
"w200"
size=
"small"
v-model=
"msg.SuppliesNum"
placeholder=
"耗材编码"
@
keyup
.
enter
.
native=
"msg.pageIndex=1,getList()"
></el-input>
</li>
<li>
<el-input
class=
"w200"
size=
"small"
v-model=
"msg.SuppliesName"
placeholder=
"耗材名称"
@
keyup
.
enter
.
native=
"msg.pageIndex=1,getList()"
></el-input>
</li>
<li>
<el-input
class=
"w200"
size=
"small"
v-model=
"msg.SupplierName"
placeholder=
"供应商"
@
keyup
.
enter
.
native=
"msg.pageIndex=1,getList()"
></el-input>
</li>
<li>
<el-input
class=
"w200"
size=
"small"
v-model=
"msg.FinanceId"
placeholder=
"财务单Id"
@
keyup
.
enter
.
native=
"msg.pageIndex=1,getList()"
></el-input>
</li>
<li>
<el-select
size=
"small"
filterable
clearable
v-model=
"msg.WarehouseId"
placeholder=
"仓库"
@
change=
"msg.pageIndex=1,getList()"
>
<el-option
v-for=
"item in getWareHouseList"
:key=
"item.Id"
:label=
"item.Name"
:value=
"item.Id"
>
</el-option>
</el-select>
</li>
<li>
<el-date-picker
@
change=
"msg.pageIndex=1,getList()"
v-model=
"dateList"
type=
"daterange"
range-separator=
"至"
value-format=
"yyyy-MM-dd"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
>
</el-date-picker>
</li>
</ul>
<div
class=
"overflowY"
>
<table
v-loading=
"loading"
style=
"margin-top:10px"
class=
"myTable noHoverTable"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
<thead>
<th
width=
"75"
>
入库状态
</th>
<th>
入库时间/编码
</th>
<th>
仓库/供应商名称
</th>
<th>
耗材编码
</th>
<th>
耗材名称
</th>
<th>
规格
</th>
<th>
分类名称
</th>
<th>
品牌名称
</th>
<th>
单价
</th>
<th>
金额
</th>
<th>
数量
</th>
<th>
采购单据
</th>
<th>
操作人/时间
</th>
<th>
操作
</th>
</thead>
<tbody>
<template
v-for=
"(item,index1) in tableData"
>
<tr
:class=
"index==0?'trNobottom':''"
v-for=
"(delist,index) in item.DetailList"
:key=
"delist.Id"
>
<td
:class=
"index1==tableData.length-1?'lastTdLeft':''"
:rowspan=
"item.DetailList.length"
v-if=
"index==0"
>
<!--
<span
class=
"commonStyle hoverSpan1"
></span>
-->
<span
class=
"ColorSpan huangSpan"
v-if=
"item.StockInState==2"
>
待
</span>
<span
class=
"ColorSpan greenSpan"
v-if=
"item.StockInState==1"
>
已
</span>
{{
item
.
StockInStateStr
}}
</td>
<td
:rowspan=
"item.DetailList.length"
v-if=
"index==0"
>
{{
item
.
StockInDate
}}
/
{{
item
.
StockInNum
}}
</td>
<td
:rowspan=
"item.DetailList.length"
v-if=
"index==0"
>
{{
item
.
WareHouseName
}}
/
{{
item
.
SupplierName
}}
</td>
<td>
{{
delist
.
SuppliesNum
}}
</td>
<td
style=
"width:300px"
>
{{
delist
.
SuppliesName
}}
</td>
<td>
<p
v-for=
"(x,y) in delist.GoodsSpecificationList"
:key=
"y"
>
{{
x
}}{{
y
+
1
==
delist
.
GoodsSpecificationList
.
length
?
''
:
','
}}
</p>
</td>
<td>
{{
delist
.
CategoryName
}}
</td>
<td>
{{
delist
.
BrandName
}}
</td>
<td>
{{
delist
.
UnitPrice
}}
</td>
<td>
{{
delist
.
Money
}}
</td>
<td>
{{
delist
.
Number
}}
</td>
<td
>
{{
item
.
FinanceId
}}
</td>
<td
:rowspan=
"item.DetailList.length"
v-if=
"index==0"
>
<p>
{{
item
.
UpdateBy
}}
</p>
<p>
{{
item
.
UpdateDate
}}
</p>
</td>
<td
:class=
"index1==tableData.length-1?'lastTdRight':''"
:rowspan=
"item.DetailList.length"
v-if=
"index==0"
>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"流程查看"
placement=
"top"
>
<img
@
click=
"See(item,'rukuDetails','rukuExamine','chakan')"
style=
"width:24px;height:24px"
src=
"../../assets/img/chakan.png"
alt=
""
>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"审批"
placement=
"top"
>
<img
v-show=
"showTable==1"
@
click=
"See(item,'rukuDetails','rukuExamine','shenpi')"
style=
"width:24px;height:24px"
src=
"../../assets/img/shenpi.png"
alt=
""
>
</el-tooltip>
</td>
</tr>
</
template
>
<tr
v-show=
"tableData.length==0"
>
<td
colspan=
"14"
align=
"center"
>
暂无数据
</td>
</tr>
</tbody>
</table>
</div>
<el-pagination
class=
"myPageBottom"
@
current-change=
"currentChange"
background
:page-size=
"msg.pageSize"
:current-page
.
sync=
"msg.pageIndex"
layout=
"prev, pager, next"
:total=
"total"
>
</el-pagination>
</div>
</div>
</template>
<
script
>
import
"@riophae/vue-treeselect/dist/vue-treeselect.css"
;
export
default
{
name
:
"rukuExamine"
,
data
(){
return
{
showTable
:
1
,
morequery
:
false
,
dateList
:[],
tableData
:
[],
loading
:
false
,
total
:
0
,
msg
:{
pageIndex
:
1
,
pageSize
:
10
,
StockInNum
:
''
,
SuppliesNum
:
''
,
SuppliesName
:
''
,
SupplierName
:
''
,
StartTime
:
''
,
EndTime
:
''
,
},
getWareHouseList
:[],
}
},
mounted
(){
this
.
getList
()
this
.
getWareHouse
()
},
methods
:{
getList
(){
if
(
this
.
dateList
&&
this
.
dateList
.
length
>
0
){
this
.
msg
.
StartTime
=
this
.
dateList
[
0
];
this
.
msg
.
EndTime
=
this
.
dateList
[
1
];
}
else
{
this
.
msg
.
StartTime
=
''
;
this
.
msg
.
EndTime
=
''
;
}
if
(
this
.
showTable
==
1
){
this
.
getDaishenpi
();
}
else
if
(
this
.
showTable
==
2
){
this
.
getYishenpi
();
}
},
getDaishenpi
(){
this
.
loading
=
true
;
this
.
apiJavaPost
(
"/api/Supplies/GetStockInWaitMyAuditPageList"
,
this
.
msg
,
res
=>
{
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
===
1
)
{
this
.
tableData
=
res
.
data
.
data
.
pageData
;
this
.
total
=
res
.
data
.
data
.
count
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
null
);
},
getYishenpi
(){
this
.
loading
=
true
;
this
.
apiJavaPost
(
"/api/Supplies/GetStockInMyAuditedPageList"
,
this
.
msg
,
res
=>
{
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
===
1
)
{
this
.
tableData
=
res
.
data
.
data
.
pageData
;
this
.
total
=
res
.
data
.
data
.
count
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
null
);
},
// 仓库列表
getWareHouse
(){
this
.
apiJavaPost
(
"/api/Supplies/GetWareHouseList"
,{
Name
:
''
},
res
=>
{
if
(
res
.
data
.
resultCode
===
1
)
{
this
.
getWareHouseList
=
res
.
data
.
data
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
null
);
},
See
(
item
,
path
,
backto
,
type
){
let
shenpistr
=
type
;
this
.
$router
.
push
({
path
:
"/"
+
path
,
query
:
{
Id
:
item
.
Id
,
backto
:
backto
,
showTable
:
this
.
showTable
,
compType
:
shenpistr
,
}
});
},
}
}
</
script
>
<
style
scoped
>
</
style
>
src/router/config.js
View file @
f8be751f
...
@@ -217,6 +217,18 @@ export default {
...
@@ -217,6 +217,18 @@ export default {
name
:
'rukudan'
,
name
:
'rukudan'
,
component
:
resolve
=>
require
([
'@/components/Materialman/rukudan'
],
resolve
),
component
:
resolve
=>
require
([
'@/components/Materialman/rukudan'
],
resolve
),
},
},
// 入库审核列表
{
path
:
'/rukuExamine'
,
name
:
'rukuExamine'
,
component
:
resolve
=>
require
([
'@/components/Materialman/rukuExamine'
],
resolve
),
},
// 入库单详情
{
path
:
'/rukuDetails'
,
name
:
'rukuDetails'
,
component
:
resolve
=>
require
([
'@/components/Materialman/rukuDetails'
],
resolve
),
},
// 出库单
// 出库单
{
{
path
:
'/chukudan'
,
path
:
'/chukudan'
,
...
...
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