Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mes-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
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
周远喜
mes-ui
Commits
b0f47e09
Commit
b0f47e09
authored
May 22, 2020
by
周远喜
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'product' of
http://git.mes123.com/zhouyx/mes-ui
into product
parents
2c88e795
f98ce9c7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
40 changed files
with
2327 additions
and
162 deletions
+2327
-162
base.less
assets/css/base.less
+9
-1
noPic_product.png
assets/imgicon/noPic_product.png
+0
-0
files.vue
components/page/files.vue
+97
-8
productSelect1.vue
components/page/productSelect1.vue
+159
-0
zh-CN.js
i18n/locale/zh-CN.js
+26
-2
api.js
pages/aps/aps/api.js
+4
-0
index.vue
pages/aps/aps/index.vue
+59
-17
index.vue
pages/aps/complete/index.vue
+1
-1
set.vue
pages/aps/stream/set.vue
+1
-1
index.vue
pages/crm/customer/index.vue
+2
-2
split.vue
pages/mesPlan/split.vue
+7
-2
processview.vue
pages/processDesign/Process/processview.vue
+2
-2
processview.vue
pages/processManage/Process/processview.vue
+2
-2
api.js
pages/produce/api.js
+8
-0
functional.vue
pages/produce/execute/components/functional.vue
+24
-2
orderlist.vue
pages/produce/execute/components/orderlist.vue
+0
-30
execute.less
pages/produce/execute/execute.less
+74
-11
index.vue
pages/produce/execute/judgment/index.vue
+212
-40
orderlist.vue
pages/produce/orderlist.vue
+348
-18
detail.vue
pages/technology/details/detail.vue
+1
-1
detail.vue
pages/technology/details/routingStep/detail.vue
+1
-1
detail.vue
pages/technology/details/routinghcorder/detail.vue
+2
-2
processview.vue
pages/technology/processview.vue
+3
-2
index.vue
pages/technology/productMix/index.vue
+78
-0
add.vue
pages/technology/productMix/product/add.vue
+193
-0
api.js
pages/technology/productMix/product/api.js
+22
-0
detail.vue
pages/technology/productMix/product/detail.vue
+61
-0
edit.vue
pages/technology/productMix/product/edit.vue
+103
-0
index.vue
pages/technology/productMix/product/index.vue
+225
-0
search.vue
pages/technology/productMix/product/search.vue
+69
-0
add.vue
pages/technology/productMix/productTree/add.vue
+84
-0
api.js
pages/technology/productMix/productTree/api.js
+22
-0
detail.vue
pages/technology/productMix/productTree/detail.vue
+55
-0
edit.vue
pages/technology/productMix/productTree/edit.vue
+79
-0
index.vue
pages/technology/productMix/productTree/index.vue
+140
-0
search.vue
pages/technology/productMix/productTree/search.vue
+48
-0
iview.js
plugins/iview.js
+2
-0
base.css
src/assets/css/base.css
+101
-17
noPic_product.png
static/imgicon/noPic_product.png
+0
-0
base.css
static/static/base.css
+3
-0
No files found.
assets/css/base.less
View file @
b0f47e09
...
...
@@ -54,6 +54,9 @@ div::-webkit-scrollbar{
.fc-a{
justify-content: space-around;
}
.fc-ev{
justify-content: space-evenly;
}
.fd{
flex-direction: column;
}
...
...
@@ -868,6 +871,7 @@ textarea::-webkit-input-placeholder {
background: #F6F8FB;
}
}
.tableCommon tr td {
line-height: 25px;
font-size: 14px;
...
...
@@ -1345,4 +1349,8 @@ html [type=button] {
.ivu-input-number{
width: 100%;
}
}
\ No newline at end of file
}
//显示富文本框时的图片
.tohtml img{
max-width: 95%;
}
\ No newline at end of file
assets/imgicon/noPic_product.png
0 → 100644
View file @
b0f47e09
6.52 KB
components/page/files.vue
View file @
b0f47e09
...
...
@@ -20,10 +20,14 @@
<p>
将文件拖到此处,或点击上传
</p>
</div>
<Button
icon=
"ios-cloud-upload-outline"
v-if=
"!cloudIco"
>
上传文件
</Button>
<span
style=
"font-size:10px;color:#aaa"
v-if=
"fileFormat"
>
文件格式:
{{
JSON
.
stringify
(
formatList
).
replace
(
'['
,
''
).
replace
(
']'
,
''
).
replace
(
/
\"
/g
,
''
)
}}
;文件最大:
{{
maxSize
}}
k
</span>
<span
style=
"font-size:10px;color:#aaa"
v-if=
"fileFormat"
>
文件格式:
{{
JSON
.
stringify
(
formatList
).
replace
(
'['
,
''
).
replace
(
']'
,
''
).
replace
(
/
\"
/g
,
''
)
}}
;文件最大:
{{
maxSize
}}
k
</span>
</Upload>
<Progress
:percent=
"per"
:stroke-width=
"5"
v-show=
"vshowPro"
/>
<Tag
v-if=
"Photo"
v-for=
"(item,index) in nameList"
:key=
"index"
:name=
"item.id"
...
...
@@ -33,10 +37,28 @@
>
<a
:href=
"fileUrlPath"
@
click=
"downFile(item.filePath)"
target=
"_blank"
>
{{
item
.
fileName
}}
</a>
</Tag>
<div
class=
"upload-body"
v-else
>
<div
class=
"demo-upload-list"
v-for=
"(item,index) in nameList"
:key=
"index"
:closable=
"!unClosable"
@
click=
"listData(item,index)"
:class=
"isactive == index ? 'addclass' : '' "
>
<template>
<img
:src=
"downUrl+item.filePath"
/>
</
template
>
<div
class=
"demo-upload-list-cover"
>
<Icon
type=
"ios-eye"
@
click
.
native=
"seeFile(item.filePath)"
></Icon>
<Icon
type=
"ios-trash-outline"
@
click
.
native=
"handleClose2($event,item.id)"
></Icon>
</div>
</div>
</div>
</div>
</template>
<
script
>
import
util
from
'@/libs/util'
;
import
util
from
"@/libs/util"
;
export
default
{
name
:
"files"
,
model
:
{
...
...
@@ -49,12 +71,14 @@ export default {
fileUrlPath
:
""
,
nameList
:
[],
hbaseFileListNew
:
[],
formatList
:
[
"jpg"
,
"gif"
,
"png"
],
formatList
:
[
"jpg"
,
"gif"
,
"png"
],
multiple
:
true
,
postUrl
:
""
,
style
:
""
,
per
:
0
,
vshowPro
:
false
vshowPro
:
false
,
Photo
:
true
,
isactive
:
0
};
},
created
()
{},
...
...
@@ -64,7 +88,8 @@ export default {
type
:
Boolean
,
default
:
false
},
singleFile
:
{
//上传单文件
singleFile
:
{
//上传单文件
type
:
Boolean
,
default
:
false
},
...
...
@@ -84,12 +109,21 @@ export default {
type
:
Boolean
,
default
:
false
},
fileFormat
:{
fileFormat
:
{
type
:
Boolean
,
default
:
false
},
Photos
:
{
type
:
Boolean
,
default
:
false
}
},
methods
:
{
listData
(
li
,
index
)
{
this
.
$emit
(
"clickItem"
,
this
.
downUrl
+
li
.
filePath
);
this
.
isactive
=
index
;
},
onProgress
(
event
,
file
,
fileList
)
{
this
.
per
=
0
;
this
.
vshowPro
=
true
;
...
...
@@ -99,6 +133,11 @@ export default {
// },
//上传成功文件
uploadSuccess
(
response
,
file
,
fileList
)
{
if
(
this
.
Photos
)
{
this
.
Photo
=
false
;
}
else
{
this
.
Photo
=
true
;
}
this
.
per
=
60
;
this
.
vshowPro
=
true
;
const
hbaseFileList
=
[];
...
...
@@ -113,6 +152,7 @@ export default {
objImag
.
id
=
file
.
response
.
data
.
id
;
filesList
.
push
(
objImag
);
this
.
nameList
=
this
.
nameList
.
concat
(
filesList
);
console
.
log
(
this
.
nameList
);
this
.
per
=
100
;
setTimeout
(()
=>
{
this
.
per
=
0
;
...
...
@@ -158,6 +198,10 @@ export default {
downFile
(
path
)
{
this
.
fileUrlPath
=
this
.
downUrl
+
path
;
},
seeFile
(
path
)
{
this
.
fileUrlPath
=
this
.
downUrl
+
path
;
window
.
open
(
this
.
fileUrlPath
,
"_blank"
);
},
formatL
()
{
if
(
this
.
files
)
{
this
.
formatList
=
[
...
...
@@ -169,7 +213,7 @@ export default {
"doc"
,
"xls"
,
"xlsx"
,
"txt"
,
"txt"
];
}
return
this
.
formatList
;
...
...
@@ -186,7 +230,7 @@ export default {
this
.
postUrl
=
fileUrl
+
"/upload/?token=Bearer "
+
util
.
cookies
.
get
(
'token'
)
+
util
.
cookies
.
get
(
"token"
)
+
"&"
+
this
.
convertObj
(
this
.
parms
);
//是否显示上传按钮
...
...
@@ -279,4 +323,49 @@ export default {
};
</
script
>
<
style
lang=
"less"
>
.upload-body {
width: 100%;
border: 1px solid #eee;
margin-top: 10px;
.demo-upload-list {
display: inline-block;
width: 60px;
height: 60px;
text-align: center;
line-height: 60px;
border: 1px solid transparent;
border-radius: 4px;
overflow: hidden;
background: #fff;
position: relative;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
margin: 10px 10px 0 10px;
cursor: pointer;
}
.demo-upload-list img {
width: 100%;
height: 100%;
}
.demo-upload-list-cover {
display: none;
position: absolute;
top: -20px;
right: 0;
// background: rgba(0, 0, 0, 0.6);
}
.demo-upload-list:hover .demo-upload-list-cover {
display: block;
// border: 1px solid #eee;
}
.demo-upload-list-cover i {
color: #000;
font-size: 20px;
cursor: pointer;
margin: 0 2px;
}
.addclass {
border: 1px solid #2680eb;
}
}
</
style
>
\ No newline at end of file
components/page/productSelect1.vue
0 → 100644
View file @
b0f47e09
<
template
>
<Select
v-model=
"dep"
:placeholder=
"placeholdeinfo"
clearable
@
on-clear=
"onClear"
>
<Option
v-for=
"(item,index) in list"
:key=
"index"
:value=
"item.value"
style=
"display:none"
:label=
"item.label"
></Option>
<Tree
key=
"mytree"
:data=
"data1"
ref=
"mytree"
:render=
"renderContent"
></Tree>
</Select>
</
template
>
<
script
>
import
Api
from
"../../pages/technology/productMix/productTree/api"
;
export
default
{
name
:
"Add"
,
model
:
{
prop
:
"value"
,
event
:
"on-change"
},
data
()
{
return
{
dep
:
""
,
list
:
[],
data1
:
[],
selectdata
:
[],
placeholdeinfo
:
"请选择"
,
orderSearchForm
:
{
productId
:
null
,
//层级id
productName
:
""
//层级名称
}
};
},
props
:
{
value
:
[
String
,
Number
,
Array
],
placeholder
:
{
type
:
String
,
default
:
"请选择部门"
},
multiple
:
{
type
:
Boolean
,
default
:
false
},
disabled
:
{
type
:
Boolean
,
default
:
false
}
},
mounted
()
{},
created
()
{
this
.
dep
=
this
.
value
|
""
;
this
.
loadTree
();
},
methods
:
{
renderContent
(
h
,
{
root
,
node
,
data
})
{
//渲染树的样式
return
h
(
"span"
,
{
// style: {
// color: data.isProduct != "1" ? "#249E91" : "#333", //根据选中状态设置样式
// cursor: "pointer"
// },
on
:
{
click
:
()
=>
{
let
arrTree
=
[];
arrTree
.
push
(
data
);
this
.
handleSelect
(
arrTree
);
//手动选择树节点
}
}
},
data
.
name
);
},
handleSelect
(
data
)
{
console
.
log
(
data
);
if
(
data
.
length
>
0
)
{
this
.
list
=
[];
this
.
list
.
push
({
label
:
data
[
0
].
name
,
value
:
data
[
0
].
id
});
this
.
orderSearchForm
.
productName
=
data
[
0
].
name
;
this
.
orderSearchForm
.
productId
=
data
[
0
].
id
;
let
listData
=
this
.
$u
.
clone
(
this
.
data1
);
let
result
=
[];
var
nodeId
=
data
.
id
;
// //传入参数:需要遍历的json,需要匹配的id
function
findPnodeId
(
listData
,
nodeId
)
{
//设置结果
if
(
!
listData
)
{
return
;
//如果data传空,直接返回
}
for
(
var
i
=
0
;
i
<
listData
.
children
.
length
;
i
++
)
{
let
item
=
listData
.
children
[
i
];
if
(
item
.
id
==
nodeId
)
{
result
.
unshift
(
data
.
name
);
//找到id相等的则返回父id
return
result
;
}
else
if
(
!!
item
.
children
)
{
findPnodeId
(
item
.
children
,
nodeId
);
}
}
//如果执行循环中都没有return,则在此return
return
result
;
}
console
.
log
(
result
);
this
.
$emit
(
"on-change"
,
this
.
orderSearchForm
);
}
},
loadTree
()
{
//打开新增订单窗口加载产品
var
sumData
=
[];
Api
.
getleveltree
().
then
(
r
=>
{
if
(
r
.
result
)
{
this
.
data1
=
r
.
result
;
}
else
{
this
.
$Message
.
error
(
"加载产品树失败!"
);
}
});
},
onClear
()
{
this
.
list
=
[];
this
.
placeholdeinfo
=
"请选择"
;
this
.
$emit
(
"on-change"
,
this
.
orderSearchForm
);
}
},
watch
:
{
value
:
{
handler
(
v
,
o
)
{
this
.
dep
=
v
|
""
;
Api
.
getleveltree
().
then
(
res
=>
{
if
(
res
.
result
)
{
let
temData
=
this
.
$u
.
clone
(
this
.
data1
);
this
.
list
=
[];
if
(
v
!=
""
&&
v
!=
null
)
{
let
dataTemp
=
this
.
$u
.
treeToList
(
temData
);
dataTemp
.
forEach
(
data
=>
{
if
(
data
.
id
==
this
.
dep
)
{
this
.
list
.
push
({
label
:
data
.
name
,
value
:
data
.
id
});
}
});
}
}
else
{
this
.
$Message
.
error
(
"加载产品树失败!"
);
}
});
},
deep
:
true
}
}
};
</
script
>
i18n/locale/zh-CN.js
View file @
b0f47e09
...
...
@@ -1092,13 +1092,13 @@ export default {
put_into_qty
:
'投产数量'
,
plan_start
:
'计划排产开始'
,
plan_finish
:
'计划排产结束'
,
setup_time
:
'
准备
工时'
,
setup_time
:
'
排产准结
工时'
,
run_time
:
'单件工时'
,
transport_time
:
'转运时间'
,
check_time
:
'检验时间'
,
efficiency_value
:
'效率系数'
,
singleout
:
'单件产出'
,
first_equip
:
'
设备编号
'
,
first_equip
:
'
首选资源
'
,
equip_type
:
'设备类型'
,
cal_id
:
'连班策略'
,
machine_rule
:
'设备优先规则'
,
...
...
@@ -1425,5 +1425,29 @@ export default {
check_person
:
'校对人'
,
executive_branch
:
'执行部门'
,
},
product_info
:{
mmcode
:
'物料编号'
,
drawingNo
:
'图号'
,
name
:
'名称'
,
productCode
:
'产品编号'
,
status
:
''
,
remark
:
'备注'
,
madeCompany
:
'主承制单位'
,
extend
:
''
,
productUrl
:
'产品图像url'
,
productUrlList
:
'产品图象列表'
,
},
order_list
:{
mesCode
:
'订单编号'
,
status
:
'工单状态'
,
productName
:
'产品名称'
,
drawnNumber
:
'图号'
,
quantity
:
'生产数量'
,
beginTime
:
'开始时间'
,
endTime
:
'结束时间'
,
planEndTime
:
'计划结束时间'
,
action
:
'操作'
}
}
pages/aps/aps/api.js
View file @
b0f47e09
...
...
@@ -40,6 +40,10 @@ export default {
return
Api
.
post
(
`
${
apsUrl
}
/apspoolappservices/recoveryoptasksimluate`
,
params
);
},
//移出排产池前判断
beforeshiftoutapspool
(
params
)
{
return
Api
.
post
(
`
${
apsUrl
}
/apspoolappservices/beforeshiftoutapspool`
,
params
);
},
//移出排产池
shiftoutapspool
(
params
)
{
return
Api
.
post
(
`
${
apsUrl
}
/apspoolappservices/shiftoutapspool`
,
params
);
...
...
pages/aps/aps/index.vue
View file @
b0f47e09
...
...
@@ -60,7 +60,7 @@
<Modal
v-model=
"addModalTemp"
title=
"自定义排序模板"
footer-hide
width=
"1000"
class=
"tempModal"
>
<Temp
:data=
"listTemp"
ref=
"tempRef"
></Temp>
</Modal>
<Modal
v-model=
"modalDuration"
title=
"外协任务"
footer-hide
width=
"1000"
>
<Modal
v-model=
"modalDuration"
title=
"外协任务"
footer-hide
width=
"1000"
>
<Duration
ref=
"durationRef"
></Duration>
</Modal>
<Modal
v-model=
"addModal"
title=
"工序参数设置"
footer-hide
width=
"1000"
>
...
...
@@ -76,6 +76,9 @@
<Modal
v-model=
"apsModal"
title=
"确定APS排产"
@
on-ok=
"apsOk"
@
on-cancel=
"cancel"
>
<p>
确定进行APS排产?
</p>
</Modal>
<Modal
v-model=
"apsCheckModal"
title=
"确定APS排产"
@
on-ok=
"apsCheckOk"
@
on-cancel=
"cancel"
>
<p>
已有排产方案,是否移出排产池?
</p>
</Modal>
<Modal
v-model=
"circleModal"
title
footer-hide
:mask-closable=
"false"
>
<div
slot=
"close"
></div>
<Row>
...
...
@@ -123,6 +126,8 @@ export default {
addModalTemp
:
false
,
modalDuration
:
false
,
insertlModal1
:
false
,
apsCheckModal
:
false
,
tempParams
:
null
,
insertTItle1
:
"插单"
,
rowIndex1
:
null
,
list
:
[],
...
...
@@ -197,7 +202,8 @@ export default {
color
:
params
.
row
.
insert_flag
==
1
?
"#2680EB"
:
"#aaa"
},
on
:
{
click
:
()
=>
this
.
changeFlag1
(
params
.
row
.
part_task_pk
,
params
.
index
)
click
:
()
=>
this
.
changeFlag1
(
params
.
row
.
part_task_pk
,
params
.
index
)
}
})
]
...
...
@@ -431,6 +437,7 @@ export default {
},
remove
(
partPkId
)
{
//移出排产池
this
.
tempParams
=
null
;
let
paramsArry
=
[];
if
(
partPkId
.
constructor
==
Array
)
{
paramsArry
=
partPkId
;
...
...
@@ -440,17 +447,45 @@ export default {
let
params
=
{
partPks
:
paramsArry
};
Api
.
shiftoutapspool
(
params
).
then
(
r
=>
{
if
(
r
.
success
)
{
this
.
$Message
.
success
(
"移出排产池操作成功"
);
this
.
loadList
();
//移出排产后将aps对应的store数量去掉
this
.
$store
.
commit
(
"setCountAps"
,
this
.
$store
.
state
.
countAps
-
paramsArry
.
length
);
}
});
Api
.
beforeshiftoutapspool
(
params
)
.
then
(
res
=>
{
if
(
res
.
success
)
{
if
(
res
.
result
)
{
this
.
checkapspool
(
params
);
}
else
{
this
.
tempParams
=
null
;
this
.
tempParams
=
params
;
this
.
apsCheckModal
=
true
;
}
}
else
{
this
.
$Message
.
error
(
"校验失败"
);
}
})
.
catch
(
err
=>
{
this
.
$Message
.
error
(
"连接错误1"
);
});
},
apsCheckOk
()
{
this
.
checkapspool
(
this
.
tempParams
);
},
checkapspool
(
params
)
{
Api
.
shiftoutapspool
(
params
)
.
then
(
r
=>
{
if
(
r
.
success
)
{
this
.
$Message
.
success
(
"移出排产池操作成功"
);
this
.
loadList
();
//移出排产后将aps对应的store数量去掉
this
.
$store
.
commit
(
"setCountAps"
,
this
.
$store
.
state
.
countAps
-
params
.
partPks
.
length
);
}
else
{
this
.
$Message
.
error
(
"移出排产池操作失败"
);
}
})
.
catch
(
err
=>
{
this
.
$Message
.
error
(
"连接失败2"
);
});
},
onSelect
(
a
,
b
)
{
//批量选择
...
...
@@ -474,6 +509,7 @@ export default {
this
.
editModal
=
false
;
this
.
deletedlModal
=
false
;
this
.
apsModal
=
false
;
this
.
apsCheckModal
=
false
;
},
onDragDrop
(
a
,
b
)
{
//拖拽排序
...
...
@@ -650,7 +686,7 @@ export default {
},
//外协工期修改end
//插单start
//插单事件start----
//插单事件start----
changeFlag1
(
id
,
index
)
{
this
.
rowIndex1
=
index
;
if
(
this
.
list
[
this
.
rowIndex1
].
insert_flag
==
1
)
{
...
...
@@ -663,7 +699,10 @@ export default {
insertOk1
()
{
if
(
this
.
list
[
this
.
rowIndex1
].
insert_flag
==
1
)
{
//根据插单数据状态进行插单或取消插单操作
let
params1
=
{
partTaskPks
:
[
this
.
list
[
this
.
rowIndex1
].
part_task_pk
],
opTaskPks
:
[]
};
let
params1
=
{
partTaskPks
:
[
this
.
list
[
this
.
rowIndex1
].
part_task_pk
],
opTaskPks
:
[]
};
Api
.
cancelinsertorder
(
params1
)
.
then
(
res
=>
{
if
(
res
.
success
)
{
...
...
@@ -677,7 +716,10 @@ export default {
this
.
$Message
.
error
(
"数据异常!"
);
});
}
else
{
let
params
=
{
partTaskPks
:
[
this
.
list
[
this
.
rowIndex1
].
part_task_pk
],
opTaskPks
:
[]
};
let
params
=
{
partTaskPks
:
[
this
.
list
[
this
.
rowIndex1
].
part_task_pk
],
opTaskPks
:
[]
};
Api
.
saveinsertorder
(
params
)
.
then
(
res
=>
{
if
(
res
.
success
)
{
...
...
@@ -692,7 +734,7 @@ export default {
});
}
this
.
insertlModal1
=
false
;
}
,
}
//插单end
}
};
...
...
pages/aps/complete/index.vue
View file @
b0f47e09
...
...
@@ -59,7 +59,7 @@
</RadioGroup>
</FormItem>
<FormItem
v-if=
"formItem.radio==0"
>
<UserSelect
v-model=
"user"
:multiple=
"true"
theme=
"list"
/>
<UserSelect
v-model=
"user"
:multiple=
"true"
/>
</FormItem>
<FormItem
label=
"班组"
v-if=
"formItem.radio==1"
>
<Select
v-model=
"formItem.shopId"
placeholder=
"请选择"
style=
"width:300px"
>
...
...
pages/aps/stream/set.vue
View file @
b0f47e09
...
...
@@ -24,7 +24,7 @@
style=
"width:300px"
:multiple=
"true"
/>
-->
<UserSelect
v-model=
"formItem.userIds"
:multiple=
"true"
theme=
"list"
/>
<UserSelect
v-model=
"formItem.userIds"
:multiple=
"true"
/>
</FormItem>
<FormItem
label=
"班组"
v-if=
"mode==2"
prop=
"shopId"
>
<Select
v-model=
"formItem.shopId"
placeholder=
"请选择"
style=
"width:300px"
>
...
...
pages/crm/customer/index.vue
View file @
b0f47e09
...
...
@@ -5,7 +5,7 @@
<Form
ref=
"formInline"
:model=
"easySearch"
inline
>
<FormItem
prop=
"keys"
>
<Input
placeholder=
"请输入关键字客户名称/
客户简称/邮政地址/负责人/办公电话/手机/客户类型/客户区域/备注/客户编码/行业
"
placeholder=
"请输入关键字客户名称/
办公电话
"
v-model=
"easySearch.keys.value"
search
enter-button
...
...
@@ -55,7 +55,7 @@ export default {
easySearch
:
{
keys
:
{
op
:
'name,
abbre,address,principal,telephone,mobile,type,area,notes,code,trad
e'
,
'name,
telephon
e'
,
value
:
null
}
},
...
...
pages/mesPlan/split.vue
View file @
b0f47e09
...
...
@@ -39,7 +39,7 @@
</Col>
<Col
span=
"12"
>
<FormItem
label=
"分解数量"
style=
"width:100%"
prop=
"splitQuantity"
>
<InputNumber
:min=
"
1"
v-model=
"orderForm.splitQuantity"
:step=
"1
"
style=
"width:180px"
></InputNumber>
<InputNumber
:min=
"
0"
v-model=
"orderForm.splitQuantity
"
style=
"width:180px"
></InputNumber>
<Button
type=
"primary"
@
click=
"addSplitOrder"
>
确定
</Button>
</FormItem>
</Col>
...
...
@@ -177,6 +177,11 @@ export default {
},
//确定增加数量
addSplitOrder
()
{
if
(
this
.
orderForm
.
splitQuantity
<
2
||
this
.
orderForm
.
splitQuantity
==
undefined
)
{
this
.
dataList
=
[];
return
;
}
if
(
this
.
orderForm
.
quantity
>=
this
.
orderForm
.
splitQuantity
)
{
this
.
dataListRetrun
.
items
=
[];
this
.
$refs
[
"formValidate"
].
validate
(
valid
=>
{
...
...
@@ -267,7 +272,7 @@ export default {
this
.
orderForm
=
this
.
$u
.
clone
(
this
.
row
);
this
.
orderForm
.
planStartTime
=
this
.
orderForm
.
demandStartDate
;
this
.
orderForm
.
planEndTime
=
this
.
orderForm
.
demandFinishDate
;
this
.
orderForm
.
splitQuantity
=
2
;
//
this.orderForm.splitQuantity = 2;
this
.
dataListRetrun
.
id
=
this
.
orderForm
.
id
;
this
.
dataListRetrun
.
quantity
=
this
.
orderForm
.
quantity
;
this
.
dataListRetrun
.
mesCode
=
this
.
orderForm
.
mesCode
;
...
...
pages/processDesign/Process/processview.vue
View file @
b0f47e09
...
...
@@ -299,7 +299,7 @@
<td
class=
"tl"
>
{{
item5
.
taskseq
}}
</td>
<td
class=
"tl"
>
{{
item5
.
name
}}
</td>
<td
class=
"tl"
>
<div
v-html=
"item5.task_content"
></div>
<div
v-html=
"item5.task_content"
class=
"tohtml"
></div>
</td>
<td
class=
"tl"
>
{{
item5
.
operator
}}
</td>
<td
class=
"tl"
>
{{
item5
.
proofreader
}}
</td>
...
...
@@ -308,7 +308,7 @@
<td
class=
"tl"
>
{{
item6
.
taskseq
}}
</td>
<td
class=
"tl"
>
{{
item6
.
name
}}
</td>
<td
class=
"tl"
>
<div
v-html=
"item6.task_content"
></div>
<div
v-html=
"item6.task_content"
class=
"tohtml"
></div>
</td>
<td
class=
"tl"
>
{{
item6
.
operator
}}
</td>
<td
class=
"tl"
>
{{
item6
.
proofreader
}}
</td>
...
...
pages/processManage/Process/processview.vue
View file @
b0f47e09
...
...
@@ -292,7 +292,7 @@
<td
class=
"tl"
>
{{
item5
.
taskseq
}}
</td>
<td
class=
"tl"
>
{{
item5
.
name
}}
</td>
<td
class=
"tl"
>
<div
v-html=
"item5.task_content"
></div>
<div
v-html=
"item5.task_content"
class=
"tohtml"
></div>
</td>
<td
class=
"tl"
>
{{
item5
.
operator
}}
</td>
<td
class=
"tl"
>
{{
item5
.
proofreader
}}
</td>
...
...
@@ -301,7 +301,7 @@
<td
class=
"tl"
>
{{
item6
.
taskseq
}}
</td>
<td
class=
"tl"
>
{{
item6
.
name
}}
</td>
<td
class=
"tl"
>
<div
v-html=
"item6.task_content"
></div>
<div
v-html=
"item6.task_content"
class=
"tohtml"
></div>
</td>
<td
class=
"tl"
>
{{
item6
.
operator
}}
</td>
<td
class=
"tl"
>
{{
item6
.
proofreader
}}
</td>
...
...
pages/produce/api.js
0 → 100644
View file @
b0f47e09
import
Api
from
'@/plugins/request'
export
default
{
index
:
`
${
PlanUrl
}
/orderexecutenew/paged_img`
,
paged
(
params
)
{
return
Api
.
post
(
`
${
PlanUrl
}
/orderexecutenew/paged_img`
,
params
);
},
}
pages/produce/execute/components/functional.vue
View file @
b0f47e09
...
...
@@ -2,7 +2,7 @@
<
template
>
<div
class=
"addd"
>
<ul>
<li><a
@
click=
"gnFunto(0,'进度汇报')"
:class=
"
{active:gnFlag == 0}">
<Icon
type=
"ios-clipboard"
/>
进度汇报
</a></li>
<
!--
<
li><a
@
click=
"gnFunto(0,'进度汇报')"
:class=
"
{active:gnFlag == 0}">
<Icon
type=
"ios-clipboard"
/>
进度汇报
</a></li>
<li><a
@
click=
"gnFunto(1,'物料领用')"
:class=
"
{active:gnFlag == 1}">
<Icon
type=
"ios-cube"
/>
物料领用
</a></li>
<li><a
@
click=
"gnFunto(2,'产品装配')"
:class=
"
{active:gnFlag == 2}">
<Icon
type=
"md-build"
/>
产品装配
</a></li>
<li><a
@
click=
"gnFunto(3,'工时分配')"
:class=
"
{active:gnFlag == 3}">
<Icon
type=
"ios-time"
/>
工时分配
</a></li>
...
...
@@ -11,7 +11,29 @@
<li><a
@
click=
"gnFunto(6,'工艺案例')"
:class=
"
{active:gnFlag == 6}">
<Icon
type=
"ios-paper"
/>
工艺案例
</a></li>
<li><a
@
click=
"gnFunto(7,'质量判定')"
:class=
"
{active:gnFlag == 7}">
<Icon
type=
"ios-medal"
/>
质量判定
</a></li>
<li><a
@
click=
"gnFunto(8,'数据填报')"
:class=
"
{active:gnFlag == 8}">
<Icon
type=
"ios-create"
/>
数据填报
</a></li>
<li><a
@
click=
"gnFunto(9,'测试数据')"
:class=
"
{active:gnFlag == 9}">
<Icon
type=
"logo-codepen"
/>
测试数据
</a></li>
<li><a
@
click=
"gnFunto(9,'测试数据')"
:class=
"
{active:gnFlag == 9}">
<Icon
type=
"logo-codepen"
/>
测试数据
</a></li>
-->
<li><a
@
click=
"gnFunto(0,'进度汇报')"
:class=
"
{active:gnFlag == 0}">
<img
src=
"@/assets/imgicon/execute/ex01.png"
alt=
""
/>
进度汇报
</a></li>
<li><a
@
click=
"gnFunto(1,'物料领用')"
:class=
"
{active:gnFlag == 1}">
<img
src=
"@/assets/imgicon/execute/ex02.png"
alt=
""
/>
物料领用
</a></li>
<li><a
@
click=
"gnFunto(2,'产品装配')"
:class=
"
{active:gnFlag == 2}">
<img
src=
"@/assets/imgicon/execute/ex03.png"
alt=
""
/>
产品装配
</a></li>
<li><a
@
click=
"gnFunto(3,'工时分配')"
:class=
"
{active:gnFlag == 3}">
<img
src=
"@/assets/imgicon/execute/ex04.png"
alt=
""
/>
工时分配
</a></li>
<li><a
@
click=
"gnFunto(4,'生产准备')"
:class=
"
{active:gnFlag == 4}">
<img
src=
"@/assets/imgicon/execute/ex05.png"
alt=
""
/>
生产准备
</a></li>
<li><a
@
click=
"gnFunto(5,'工艺查看')"
:class=
"
{active:gnFlag == 5}">
<img
src=
"@/assets/imgicon/execute/ex06.png"
alt=
""
/>
工艺查看
</a></li>
<li><a
@
click=
"gnFunto(6,'工艺案例')"
:class=
"
{active:gnFlag == 6}">
<img
src=
"@/assets/imgicon/execute/ex07.png"
alt=
""
/>
工艺案例
</a></li>
<li><a
@
click=
"gnFunto(7,'质量判定')"
:class=
"
{active:gnFlag == 7}">
<img
src=
"@/assets/imgicon/execute/ex08.png"
alt=
""
/>
质量判定
</a></li>
<li><a
@
click=
"gnFunto(8,'数据填报')"
:class=
"
{active:gnFlag == 8}">
<img
src=
"@/assets/imgicon/execute/ex09.png"
alt=
""
/>
数据填报
</a></li>
<li><a
@
click=
"gnFunto(9,'测试数据')"
:class=
"
{active:gnFlag == 9}">
<img
src=
"@/assets/imgicon/execute/ex10.png"
alt=
""
/>
测试数据
</a></li>
</ul>
</div>
</
template
>
...
...
pages/produce/execute/components/orderlist.vue
View file @
b0f47e09
...
...
@@ -23,36 +23,6 @@
<p><Icon
type=
"ios-pricetags"
/>
{{
item
.
gongxu
}}
</p>
<p>
{{
item
.
time
}}
</p>
</Card>
<!--
<Card
class=
"card_order"
>
<p
slot=
"title"
>
CJ_181212_002_001
<span
class=
"fr"
>
未开工
</span></p>
<p
class=
"order_tit"
>
发动机
</p>
<p><Icon
type=
"ios-pricetags"
/>
工序1:领料
</p>
<p>
2018-12-12 ~ 2018-12-30
</p>
</Card>
<Card
class=
"card_order"
>
<p
slot=
"title"
>
CJ_181212_002_001
<span
class=
"fr"
>
执行中
</span></p>
<p
class=
"order_tit"
>
发动机
</p>
<p><Icon
type=
"ios-pricetags"
/>
工序1:领料
</p>
<p>
2018-12-12 ~ 2018-12-30
</p>
</Card>
<Card
class=
"card_order"
>
<p
slot=
"title"
>
CJ_181212_002_001
<span
class=
"fr"
>
暂停中
</span></p>
<p
class=
"order_tit"
>
发动机
</p>
<p><Icon
type=
"ios-pricetags"
/>
工序1:领料
</p>
<p>
2018-12-12 ~ 2018-12-30
</p>
</Card>
<Card
class=
"card_order"
>
<p
slot=
"title"
>
CJ_181212_002_001
<span
class=
"fr"
>
交检中
</span></p>
<p
class=
"order_tit"
>
发动机
</p>
<p><Icon
type=
"ios-pricetags"
/>
工序1:领料
</p>
<p>
2018-12-12 ~ 2018-12-30
</p>
</Card>
<Card
class=
"card_order"
>
<p
slot=
"title"
>
CJ_181212_002_001
<span
class=
"fr"
>
已完成
</span></p>
<p
class=
"order_tit"
>
发动机
</p>
<p><Icon
type=
"ios-pricetags"
/>
工序1:领料
</p>
<p>
2018-12-12 ~ 2018-12-30
</p>
</Card>
-->
</div>
</div>
</
template
>
...
...
pages/produce/execute/execute.less
View file @
b0f47e09
...
...
@@ -189,6 +189,10 @@
}
}
.addd{
ul li a img{
vertical-align: middle;
margin: 0 7px 3px 0;
}
a.active{
background: #2680EB;
}
...
...
@@ -359,29 +363,88 @@
.rangb{ color: #515A6E;}
.fanxiu{ color: #FFA000;}
.feipin{ color: #FE7777;}
.chuanse{
button{
width: 88px;
height: 40px;
font-size: 16px;
margin: 0 30px 0 0;
color: #fff;
}
.button01{ background: #515A6E; }
.button02{ background: #FFA000; }
.button03{ background: #FE7777; }
}
.mass_list{
border: 1px solid #CACBD0;
border-radius: 4px;
padding: 16px 20px;
padding: 10px 15px;
margin: 15px 0;
.btn_play{
margin: 0 0 20px 0;
}
.list01{
.file_card{
.ivu-checkbox{ display: none;}
.file{
float: left;
min-height: 50px;
max-height: 155px;
overflow-x: auto;
.tag_card{
cursor: pointer;
margin: 0 20px 15px 0;
}
.ivu-tag-checked{
border: 1px solid #2680EB !important;
}
.card_bor{
border: 1px solid #2680EB !important;
}
}
.list02{
min-height: 50px;
.tag_card02{
margin: 0 20px 15px 0;
}
}
}
.rangbu{
.list02{
.tag_card02{
.ivu-tag-dot-inner{
background: #515a6e;
}
.hege{ i{color: #2680EB;} }
.rang{ i{color: #515A6E;} }
.fanxiu{ i{color: #FFA000;} }
.feipin{ i{color: #FE7777;} }
}
.ivu-checkbox-wrapper{
margin: 0 24px 0 0;
}
}
.fanxiu_box{
.list02{
.tag_card02{
.ivu-tag-dot-inner{
background: #FFA000;
}
}
}
}
.fei_box{
width: calc(100% - 520px);
display: inline-block;
.list02{
.tag_card02{
.ivu-tag-dot-inner{
background: #FE7777;
}
}
}
}
.fei_right{
float: right;
line-height: 50px;
width: 460px;
}
}
.futer{
width: 100%;
height: 60px;
position: absolute;
bottom: 1px;
}
}
...
...
pages/produce/execute/judgment/index.vue
View file @
b0f47e09
This diff is collapsed.
Click to expand it.
pages/produce/orderlist.vue
View file @
b0f47e09
This diff is collapsed.
Click to expand it.
pages/technology/details/detail.vue
View file @
b0f47e09
...
...
@@ -28,7 +28,7 @@
<Filed
:span=
"12"
:name=
"l('efficiencyValue')"
>
{{
entity
.
efficiencyValue
}}
</Filed>
<Filed
:span=
"12"
:name=
"l('singleOut')"
>
{{
entity
.
singleOut
}}
</Filed>
<Filed
:span=
"24"
:name=
"l('taskContent')"
>
<div
v-html=
"entity.taskContent"
class=
"
html"
></div>
<div
v-html=
"entity.taskContent"
class=
"to
html"
></div>
</Filed>
</Row>
</div>
...
...
pages/technology/details/routingStep/detail.vue
View file @
b0f47e09
...
...
@@ -3,7 +3,7 @@
<Row>
<Filed
:span=
"12"
:name=
"l('stepSeq')"
>
{{
entity
.
stepSeq
}}
</Filed>
<Filed
:span=
"12"
:name=
"l('name')"
>
{{
entity
.
name
}}
</Filed>
<Filed
:span=
"24"
:name=
"l('stepContent')"
><div
v-html=
"entity.stepContent"
class=
"html"
></div></Filed>
<Filed
:span=
"24"
:name=
"l('stepContent')"
><div
v-html=
"entity.stepContent"
class=
"
to
html"
></div></Filed>
<Filed
:span=
"12"
:name=
"l('creationTime')"
>
{{
entity
.
creationTime
}}
</Filed>
<Filed
:span=
"12"
:name=
"l('creatorUserId')"
><User
:value=
"entity.creatorUserId"
></User></Filed>
</Row>
...
...
pages/technology/details/routinghcorder/detail.vue
View file @
b0f47e09
...
...
@@ -17,10 +17,10 @@
<!--
<Filed
:span=
"12"
:name=
"l('handlingOpinionsId')"
>
{{
entity
.
handlingOpinionsId
}}
</Filed>
-->
<Filed
:span=
"12"
:name=
"l('handlingOpinions')"
>
{{
entity
.
handlingOpinions
}}
</Filed>
<Filed
:span=
"24"
:name=
"l('beforeChangeContent')"
>
<div
v-html=
"entity.beforeChangeContent"
></div>
<div
v-html=
"entity.beforeChangeContent"
class=
"tohtml"
></div>
</Filed>
<Filed
:span=
"24"
:name=
"l('afterChangeContent')"
>
<div
v-html=
"entity.afterChangeContent"
></div>
<div
v-html=
"entity.afterChangeContent"
class=
"tohtml"
></div>
</Filed>
<Filed
:span=
"12"
:name=
"l('changeorderCode')"
>
{{
entity
.
changeorderCode
}}
</Filed>
<Filed
:span=
"24"
:name=
"l('changeReason')"
>
{{
entity
.
changeReason
}}
</Filed>
...
...
pages/technology/processview.vue
View file @
b0f47e09
...
...
@@ -168,7 +168,7 @@
<td
class=
"tl"
>
{{
item5
.
taskseq
}}
</td>
<td
class=
"tl"
>
{{
item5
.
name
}}
</td>
<td
class=
"tl"
>
<div
v-html=
"item5.task_content"
class=
"html"
></div>
<div
v-html=
"item5.task_content"
class=
"
to
html"
></div>
</td>
<td
class=
"tl"
>
{{
item5
.
operator
}}
</td>
<td
class=
"tl"
>
{{
item5
.
proofreader
}}
</td>
...
...
@@ -177,7 +177,7 @@
<td
class=
"tl"
>
{{
item6
.
taskseq
}}
</td>
<td
class=
"tl"
>
{{
item6
.
name
}}
</td>
<td
class=
"tl"
>
<div
v-html=
"item6.task_content"
class=
"html"
></div>
<div
v-html=
"item6.task_content"
class=
"
to
html"
></div>
</td>
<td
class=
"tl"
>
{{
item6
.
operator
}}
</td>
<td
class=
"tl"
>
{{
item6
.
proofreader
}}
</td>
...
...
@@ -347,5 +347,6 @@ export default {
position
:
relative
;
border
:
0px
solid
#eee
;
}
</
style
>
pages/technology/productMix/index.vue
0 → 100644
View file @
b0f47e09
<
template
>
<div
class=
"product-mix"
>
<Layout>
<Sider
width=
"300"
>
<!--
<h4>
产品列表
</h4>
-->
<div
class=
"p-list"
>
<!--
<Input
search
enter-button
placeholder=
"请输入产品名称"
/>
-->
<ProductTree
@
on-hide=
"onHide"
@
on-select=
"productSearch"
/>
</div>
</Sider>
<Content>
<Product
:parent=
"parent"
/>
</Content>
</Layout>
</div>
</
template
>
<
script
>
import
ProductTree
from
"./productTree"
;
import
Product
from
"./product"
;
export
default
{
components
:
{
ProductTree
,
Product
},
data
()
{
return
{
parent
:
{
id
:
null
,
parentName
:
""
,
ids
:
""
}
};
},
methods
:
{
productSearch
(
id
,
item
,
ids
)
{
this
.
parent
.
parentName
=
item
.
title
;
this
.
parent
.
id
=
id
;
this
.
parent
.
ids
=
ids
;
// let where = { productId: { op: "In", value: ids } };
// this.$refs.grid.reload(where);
},
onHide
()
{
// this.$Message.info("收起左侧树")
this
.
showMenu
=
false
;
}
}
};
</
script
>
<
style
lang=
"less"
>
.product-mix {
font-family: Microsoft YaHei;
.ivu-layout-sider {
background: rgba(255, 255, 255, 1);
margin-right: 10px;
box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.15);
h4 {
height: 30px;
line-height: 30px;
background: #eee;
padding-left: 10px;
}
.p-list {
padding: 10px;
height: 85vh;
overflow: auto;
}
}
.ivu-layout-content {
margin-left: 5px;
background: rgba(255, 255, 255, 1);
box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.15);
height: 88vh;
overflow: auto;
padding: 10px;
}
}
</
style
>
\ No newline at end of file
pages/technology/productMix/product/add.vue
0 → 100644
View file @
b0f47e09
<
template
>
<Layout>
<Sider
width=
"300"
>
<div
class=
"add-list"
>
<img
:src=
"img"
width=
"100%"
height=
"100%"
/>
</div>
</Sider>
<Content>
<Form
ref=
"form"
:model=
"entity"
:rules=
"rules"
:label-width=
"120"
>
<Row>
<Col
:span=
"12"
>
<FormItem
label=
"上级所属"
prop=
"parentName"
>
<!--
<Input
v-model=
"entity.parentName"
disabled
></Input>
-->
<productSelect1
v-model=
"entity.levelId"
@
on-change=
"proChange"
/>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('productCode')"
prop=
"productCode"
>
<Input
v-model=
"entity.productCode"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('mmcode')"
prop=
"mmcode"
>
<Input
v-model=
"entity.mmcode"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('drawingNo')"
prop=
"drawingNo"
>
<Input
v-model=
"entity.drawingNo"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('name')"
prop=
"name"
>
<Input
v-model=
"entity.name"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('madeCompany')"
prop=
"madeCompany"
>
<Input
v-model=
"entity.madeCompany"
></Input>
</FormItem>
</Col>
<!--
<Col
:span=
"24"
>
<FormItem
:label=
"l('remark')"
prop=
"remark"
>
<Input
v-model=
"entity.remark"
></Input>
</FormItem>
</Col>
-->
<Col
:span=
"24"
>
<FormItem
:label=
"l('productUrlList')"
prop=
"productUrlList"
>
<!--
<InputFile
v-model=
"entity.productUrl"
></InputFile>
-->
<files
ref=
"refFile"
:parms=
"parms"
fileFormat
:Photos=
"true"
@
clickItem=
"clickData"
/>
</FormItem>
</Col>
<!--
<Col
:span=
"24"
>
<FormItem
:label=
"l('productUrlList')"
prop=
"productUrlList"
>
-->
<!--
<Input
v-model=
"entity.productUrlList"
type=
"textarea"
:rows=
"5"
></Input>
-->
<!--
<filesList
v-model=
"entity.productUrlList"
></filesList>
</FormItem>
</Col>
-->
</Row>
<FormItem>
<Button
type=
"primary"
@
click=
"handleSubmit"
:disabled=
"disabled"
>
保存
</Button>
<Button
@
click=
"handleClose"
class=
"ml20"
>
取消
</Button>
</FormItem>
</Form>
</Content>
</Layout>
</
template
>
<
script
>
import
Api
from
"./api"
;
export
default
{
name
:
"Add"
,
data
()
{
return
{
disabled
:
false
,
entity
:
{
mmcode
:
""
,
drawingNo
:
""
,
name
:
""
,
productCode
:
""
,
// status: null,
remark
:
""
,
madeCompany
:
""
,
extend
:
""
,
productUrl
:
""
,
productUrlList
:
""
,
levelId
:
null
,
parentName
:
this
.
parents
.
parentName
},
rules
:
{
name
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
}]
},
parms
:
{
app
:
"technology"
,
eid
:
null
,
name
:
""
,
field
:
""
},
img
:
""
};
},
props
:
{
v
:
Object
,
eid
:
Number
,
parents
:
{
parentName
:
String
,
parentId
:
Number
}
},
mounted
()
{
if
(
this
.
eid
>
0
)
{
this
.
load
(
this
.
eid
);
}
this
.
parms
.
eid
=
this
.
$u
.
guid
();
this
.
$refs
.
refFile
.
intFiles
();
},
methods
:
{
clickData
(
data
)
{
this
.
img
=
data
;
},
handleSubmit
()
{
this
.
$refs
.
form
.
validate
(
v
=>
{
if
(
v
)
{
this
.
disabled
=
true
;
if
(
this
.
$refs
.
refFile
.
nameList
.
length
>
0
)
{
this
.
entity
.
productUrlList
=
this
.
parms
.
eid
;
this
.
entity
.
productUrl
=
this
.
img
;
}
else
{
this
.
entity
.
productUrlList
=
""
;
}
this
.
entity
.
levelId
=
this
.
parents
.
parentId
;
Api
.
create
(
this
.
entity
)
.
then
(
r
=>
{
this
.
disabled
=
false
;
if
(
r
.
success
)
{
this
.
$Message
.
success
(
"保存成功"
);
this
.
$emit
(
"on-ok"
);
}
else
{
this
.
$Message
.
error
(
"保存失败"
);
}
})
.
catch
(
err
=>
{
this
.
disabled
=
false
;
this
.
$Message
.
error
(
"保存失败"
);
console
.
warn
(
err
);
});
}
});
},
handleClose
()
{
this
.
$emit
(
"on-close"
);
},
load
(
v
)
{
Api
.
get
({
id
:
v
}).
then
(
r
=>
{
this
.
entity
=
r
.
result
;
this
.
entity
.
id
=
0
;
});
},
proChange
(
items
)
{
this
.
entity
.
levelId
=
items
.
productId
;
},
l
(
key
)
{
key
=
"product_info"
+
"."
+
key
;
return
this
.
$t
(
key
);
}
},
watch
:
{
v
()
{
this
.
entity
=
this
.
$u
.
clone
(
this
.
v
);
},
eid
(
v
)
{
if
(
v
>
0
)
{
this
.
load
(
v
);
}
}
}
};
</
script
>
<
style
lang=
"less"
>
.ivu-layout-sider {
background: rgba(255, 255, 255, 1);
margin-right: 10px;
box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.15);
.add-list {
width: 100%;
height: 300px;
overflow: hidden;
}
}
</
style
>
\ No newline at end of file
pages/technology/productMix/product/api.js
0 → 100644
View file @
b0f47e09
import
Api
from
'@/plugins/request'
export
default
{
index
:
`
${
technologyUrl
}
productinfo/paged`
,
paged
(
params
){
return
Api
.
post
(
`
${
technologyUrl
}
productinfo/paged`
,
params
);
},
get
(
params
){
return
Api
.
get
(
`
${
technologyUrl
}
productinfo/get`
,
params
);
},
create
(
params
){
return
Api
.
post
(
`
${
technologyUrl
}
productinfo/create`
,
params
);
},
update
(
params
){
return
Api
.
post
(
`
${
technologyUrl
}
productinfo/update`
,
params
);
},
delete
(
id
)
{
return
Api
.
delete
(
`
${
technologyUrl
}
productinfo/delete`
,{
params
:{
id
:
id
}});
},
deletes
(
params
)
{
return
Api
.
post
(
`
${
technologyUrl
}
productinfo/batchdelete`
,
params
);
}
}
\ No newline at end of file
pages/technology/productMix/product/detail.vue
0 → 100644
View file @
b0f47e09
<
template
>
<div
class=
"detail"
>
<Row>
<Filed
:span=
"12"
:name=
"l('mmcode')"
>
{{
entity
.
mmcode
}}
</Filed>
<Filed
:span=
"12"
:name=
"l('drawingNo')"
>
{{
entity
.
drawingNo
}}
</Filed>
<Filed
:span=
"12"
:name=
"l('name')"
>
{{
entity
.
name
}}
</Filed>
<!--
<Filed
:span=
"12"
:name=
"l('productCode')"
>
{{
entity
.
productCode
}}
</Filed>
-->
<!--
<Filed
:span=
"12"
:name=
"l('status')"
>
{{
entity
.
status
}}
</Filed>
-->
<!--
<Filed
:span=
"24"
:name=
"l('remark')"
>
{{
entity
.
remark
}}
</Filed>
-->
<Filed
:span=
"12"
:name=
"l('madeCompany')"
>
{{
entity
.
madeCompany
}}
</Filed>
<!--
<Filed
:span=
"12"
:name=
"l('extend')"
>
{{
entity
.
extend
}}
</Filed>
-->
<Filed
:span=
"24"
:name=
"l('productUrl')"
>
{{
entity
.
productUrl
}}
</Filed>
<Filed
:span=
"24"
:name=
"l('productUrlList')"
>
{{
entity
.
productUrlList
}}
</Filed>
</Row>
</div>
</
template
>
<
script
>
import
Api
from
"./api"
;
export
default
{
name
:
"Add"
,
data
()
{
return
{
entity
:
{},
rules
:
{
name
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
}],
code
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
}]
}
};
},
props
:
{
eid
:
Number
},
mounted
()
{
if
(
this
.
eid
>
0
)
{
this
.
load
(
this
.
eid
);
}
},
methods
:
{
load
(
v
)
{
Api
.
get
({
id
:
v
}).
then
(
r
=>
{
this
.
entity
=
r
.
result
;
this
.
$emit
(
"on-load"
);
});
},
handleClose
()
{
this
.
$emit
(
"on-close"
);
},
l
(
key
)
{
key
=
"product_info"
+
"."
+
key
;
return
this
.
$t
(
key
);
}
},
watch
:
{
eid
(
v
)
{
if
(
v
>
0
)
{
this
.
load
(
v
);
}
}
}
};
</
script
>
\ No newline at end of file
pages/technology/productMix/product/edit.vue
0 → 100644
View file @
b0f47e09
<
template
>
<Form
ref=
"form"
:model=
"entity"
:rules=
"rules"
:label-width=
"120"
>
<Row>
<Col
:span=
"12"
>
<FormItem
:label=
"l('mmcode')"
prop=
"mmcode"
>
<Input
v-model=
"entity.mmcode"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('drawingNo')"
prop=
"drawingNo"
>
<Input
v-model=
"entity.drawingNo"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('name')"
prop=
"name"
>
<Input
v-model=
"entity.name"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('madeCompany')"
prop=
"madeCompany"
>
<Input
v-model=
"entity.madeCompany"
></Input>
</FormItem>
</Col>
<Col
:span=
"24"
>
<FormItem
:label=
"l('productUrl')"
prop=
"productUrl"
>
<files
ref=
"refFile"
:parms=
"parms"
fileFormat
:Photos=
"true"
@
clickItem=
"clickData"
/>
</FormItem>
</Col>
</Row>
<FormItem>
<Button
type=
"primary"
@
click=
"handleSubmit"
:disabled=
"disabled"
>
保存
</Button>
<Button
@
click=
"handleClose"
class=
"ml20"
>
取消
</Button>
</FormItem>
</Form>
</
template
>
<
script
>
import
Api
from
"./api"
;
export
default
{
name
:
"Edit"
,
data
()
{
return
{
disabled
:
false
,
entity
:
{},
rules
:
{
name
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
}]
}
};
},
props
:
{
eid
:
Number
},
mounted
()
{
if
(
this
.
eid
>
0
)
{
this
.
load
(
this
.
eid
);
}
},
methods
:
{
load
(
v
)
{
Api
.
get
({
id
:
v
}).
then
(
r
=>
{
this
.
entity
=
r
.
result
;
});
},
handleSubmit
()
{
this
.
$refs
.
form
.
validate
(
v
=>
{
if
(
v
)
{
this
.
disabled
=
true
;
Api
.
update
(
this
.
entity
)
.
then
(
r
=>
{
this
.
disabled
=
false
;
if
(
r
.
success
)
{
this
.
$Message
.
success
(
"保存成功"
);
this
.
$emit
(
"on-ok"
);
}
else
{
this
.
$Message
.
error
(
"保存失败"
);
}
})
.
catch
(
err
=>
{
this
.
disabled
=
false
;
this
.
$Message
.
error
(
"保存失败"
);
console
.
warn
(
err
);
});
}
});
},
handleClose
()
{
this
.
$emit
(
"on-close"
);
},
l
(
key
)
{
key
=
"product_info"
+
"."
+
key
;
return
this
.
$t
(
key
);
}
},
watch
:
{
eid
(
v
)
{
if
(
v
!=
0
)
{
this
.
load
(
v
);
}
}
}
};
</
script
>
\ No newline at end of file
pages/technology/productMix/product/index.vue
0 → 100644
View file @
b0f47e09
<
template
>
<div
class=
"product-m"
>
<DataGrid
:columns=
"columns"
ref=
"grid"
:action=
"action"
type=
"card"
:high=
"false"
:span=
"6"
:lazy=
"true"
>
<template
slot=
"easySearch"
>
<Form
ref=
"formInline"
:model=
"easySearch"
inline
>
<FormItem
prop=
"keys"
>
<Input
placeholder=
"请输入物料编号/名称"
v-model=
"easySearch.keys.value"
/>
</FormItem>
<FormItem>
<Button
type=
"primary"
@
click=
"search"
>
查询
</Button>
</FormItem>
</Form>
</
template
>
<
template
slot=
"searchForm"
>
<Search
/>
</
template
>
<
template
slot=
"buttons"
>
<Button
type=
"primary"
@
click=
"add"
>
新增
</Button>
</
template
>
<
template
slot=
"card"
slot-scope=
"{row}"
>
<div
class=
"body-card"
>
<Row
class=
"title-i"
>
<Col
:span=
"12"
>
名称:
{{
row
.
name
}}
</Col>
<Col
:span=
"12"
class=
"btn-click"
>
物料编号:
{{
row
.
mmcode
}}
</Col>
</Row>
<Row
class=
"row-down"
>
<Col
span=
"7"
>
<div
class=
"img-i"
>
图片
</div>
</Col>
<Col
span=
"17"
class=
"c"
>
<div>
产品分类:
{{
row
.
productClass
}}
</div>
<div>
图号:
{{
row
.
drawingNo
}}
</div>
<div>
主制单位:
{{
row
.
madeCompany
}}
</div>
<p
class=
"a-icon"
>
<a
@
click=
"edit(row.id)"
>
<Icon
type=
"md-create"
/>
编辑
</a>
<a
@
click=
"remove(row.id)"
>
<Icon
type=
"ios-trash"
/>
删除
</a>
<a
@
click=
"view(row.id)"
>
<Icon
type=
"md-document"
/>
详情
</a>
</p>
</Col>
</Row>
</div>
</
template
>
</DataGrid>
<Modal
v-model=
"modal"
:title=
"title"
width=
"1200"
footer-hide
>
<component
:is=
"detail"
:eid=
"curId"
@
on-close=
"cancel"
@
on-ok=
"ok"
:parents=
"parents"
/>
</Modal>
</div>
</template>
<
script
>
import
Api
from
"./api"
;
import
Search
from
"./search"
;
export
default
{
name
:
"list"
,
components
:
{
Search
},
head
:
{
title
:
""
,
author
:
"henq"
,
description
:
"product_info 5/20/2020 3:13:51 PM"
},
props
:
{
parent
:
{
id
:
Number
,
parentName
:
String
,
ids
:
String
}
},
data
()
{
return
{
action
:
Api
.
index
,
easySearch
:
{
keys
:
{
op
:
"mmcode,name,productCode"
,
value
:
null
}
},
modal
:
false
,
title
:
"新增"
,
detail
:
null
,
curId
:
0
,
columns
:
[
{
key
:
"id"
,
title
:
this
.
$t
(
"id"
),
hide
:
true
,
align
:
"left"
,
high
:
true
}
],
parents
:
{
parentId
:
null
,
parentName
:
""
}
};
},
mounted
()
{
this
.
$refs
.
grid
.
reload
();
console
.
log
(
this
);
},
async
fetch
({
store
,
params
})
{
await
store
.
dispatch
(
"loadDictionary"
);
// 加载数据字典
},
methods
:
{
ok
()
{
this
.
$refs
.
grid
.
load
();
this
.
modal
=
false
;
this
.
curId
=
0
;
},
search
()
{
this
.
$refs
.
grid
.
reload
(
this
.
easySearch
);
},
add
()
{
this
.
curId
=
0
;
this
.
title
=
"新增"
;
this
.
detail
=
()
=>
import
(
"./add"
);
this
.
modal
=
true
;
this
.
parents
.
parentId
=
this
.
parent
.
id
;
this
.
parents
.
parentName
=
this
.
parent
.
parentName
;
},
copy
(
id
)
{
this
.
curId
=
id
;
this
.
title
=
"克隆"
;
this
.
detail
=
()
=>
import
(
"./add"
);
this
.
modal
=
true
;
},
view
(
id
)
{
this
.
curId
=
id
;
this
.
title
=
"详情"
;
this
.
detail
=
()
=>
import
(
"./detail"
);
this
.
modal
=
true
;
},
edit
(
id
)
{
this
.
curId
=
id
;
this
.
title
=
"编辑"
;
this
.
detail
=
()
=>
import
(
"./edit"
);
this
.
modal
=
true
;
},
remove
(
id
)
{
Api
.
delete
(
id
).
then
(
r
=>
{
if
(
r
.
success
)
{
this
.
$refs
.
grid
.
load
();
this
.
$Message
.
success
(
"删除成功"
);
}
});
},
cancel
()
{
this
.
curId
=
0
;
this
.
modal
=
false
;
},
l
(
key
)
{
/*
product_info:{
mmcode:'物料编号',
drawingNo:'图号',
name:'名称',
productCode:'',
status:'',
remark:'',
madeCompany:'主承制单位',
extend:'',
productUrl:'产品图像url',
productUrlList:'产品图象列表',
}
*/
let
vkey
=
"product_info"
+
"."
+
key
;
return
this
.
$t
(
vkey
)
||
key
;
}
},
watch
:
{
"parent.id"
(
v
)
{
if
(
v
)
{
let
data
=
{
levelId
:
{
op
:
"In"
,
value
:
this
.
parent
.
ids
}
};
this
.
$refs
.
grid
.
reload
(
data
);
}
}
}
};
</
script
>
<
style
lang=
"less"
>
.product-m {
.body-card {
border: 1px solid rgba(38, 128, 235, 1);
margin: 10px;
border-radius: 4px;
.title-i {
border-bottom: 1px solid #2680eb;
padding: 0 10px;
height: 35px;
line-height: 35px;
background: rgba(38, 128, 235, 0.2);
color: #2680eb;
.btn-click {
text-align: right;
}
}
.row-down {
padding: 10px;
.img-i {
background: #eee;
height: 90px;
margin-right: 15px;
}
.c div {
margin-bottom: 8px;
}
.a-icon {
text-align: right;
margin-bottom: -5px;
}
}
}
}
</
style
>
\ No newline at end of file
pages/technology/productMix/product/search.vue
0 → 100644
View file @
b0f47e09
<
template
>
<Form
ref=
"form"
:model=
"condition"
:label-width=
"90"
>
<Row>
<Col
:span=
"12"
:v-if=
"condition.id.show"
><FormItem
:label=
"$t('id')"
prop=
"id"
>
<Input
v-model=
"condition.id.value"
>
</Input>
</FormItem></Col>
<Col
:span=
"12"
:v-if=
"condition.creationTime.show"
><FormItem
:label=
"$t('creationTime')"
prop=
"creationTime"
>
<DatePicker
type=
"daterange"
v-model=
"condition.creationTime.value"
></DatePicker>
</FormItem></Col>
<Col
:span=
"12"
:v-if=
"condition.creatorUserId.show"
><FormItem
:label=
"$t('creatorUserId')"
prop=
"creatorUserId"
>
<Input
v-model=
"condition.creatorUserId.value"
>
</Input>
</FormItem></Col>
<Col
:span=
"12"
:v-if=
"condition.lastModificationTime.show"
><FormItem
:label=
"$t('lastModificationTime')"
prop=
"lastModificationTime"
>
<DatePicker
type=
"daterange"
v-model=
"condition.lastModificationTime.value"
></DatePicker>
</FormItem></Col>
<Col
:span=
"12"
:v-if=
"condition.lastModifierUserId.show"
><FormItem
:label=
"$t('lastModifierUserId')"
prop=
"lastModifierUserId"
>
<Input
v-model=
"condition.lastModifierUserId.value"
>
</Input>
</FormItem></Col>
<Col
:span=
"12"
:v-if=
"condition.mmcode.show"
><FormItem
:label=
"l('mmcode')"
prop=
"mmcode"
>
<Input
v-model=
"condition.mmcode.value"
>
</Input>
</FormItem></Col>
<Col
:span=
"12"
:v-if=
"condition.drawingNo.show"
><FormItem
:label=
"l('drawingNo')"
prop=
"drawingNo"
>
<Input
v-model=
"condition.drawingNo.value"
>
</Input>
</FormItem></Col>
<Col
:span=
"12"
:v-if=
"condition.name.show"
><FormItem
:label=
"l('name')"
prop=
"name"
>
<Input
v-model=
"condition.name.value"
>
</Input>
</FormItem></Col>
<Col
:span=
"12"
:v-if=
"condition.productCode.show"
><FormItem
:label=
"l('productCode')"
prop=
"productCode"
>
<Input
v-model=
"condition.productCode.value"
>
</Input>
</FormItem></Col>
<Col
:span=
"12"
:v-if=
"condition.status.show"
><FormItem
:label=
"l('status')"
prop=
"status"
>
<Input
v-model=
"condition.status.value"
>
</Input>
</FormItem></Col>
<Col
:span=
"24"
:v-if=
"condition.remark.show"
><FormItem
:label=
"l('remark')"
prop=
"remark"
>
<Input
v-model=
"condition.remark.value"
>
</Input>
</FormItem></Col>
<Col
:span=
"12"
:v-if=
"condition.madeCompany.show"
><FormItem
:label=
"l('madeCompany')"
prop=
"madeCompany"
>
<Input
v-model=
"condition.madeCompany.value"
>
</Input>
</FormItem></Col>
<Col
:span=
"24"
:v-if=
"condition.productUrl.show"
><FormItem
:label=
"l('productUrl')"
prop=
"productUrl"
>
<Input
v-model=
"condition.productUrl.value"
>
</Input>
</FormItem></Col>
<Col
:span=
"24"
:v-if=
"condition.productUrlList.show"
><FormItem
:label=
"l('productUrlList')"
prop=
"productUrlList"
>
<Input
v-model=
"condition.productUrlList.value"
>
</Input>
</FormItem></Col>
</Row>
</Form>
</
template
>
<
script
>
import
Api
from
'./api'
export
default
{
name
:
'Add'
,
data
()
{
return
{
condition
:
{
id
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
creationTime
:{
op
:
"Range"
,
value
:
null
,
show
:
true
},
creatorUserId
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
lastModificationTime
:{
op
:
"Range"
,
value
:
null
,
show
:
true
},
lastModifierUserId
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
mmcode
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
drawingNo
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
name
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
productCode
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
status
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
remark
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
madeCompany
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
productUrl
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
productUrlList
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
},
}
},
methods
:
{
handleClose
()
{
this
.
$emit
(
'on-close'
)
},
l
(
key
)
{
key
=
"product_info"
+
"."
+
key
;
return
this
.
$t
(
key
)
}
}
}
</
script
>
\ No newline at end of file
pages/technology/productMix/productTree/add.vue
0 → 100644
View file @
b0f47e09
<
template
>
<Form
ref=
"form"
:model=
"entity"
:rules=
"rules"
:label-width=
"90"
>
<Row>
<Col
:span=
"12"
><FormItem
:label=
"l('name')"
prop=
"name"
>
<Input
v-model=
"entity.name"
>
</Input>
</FormItem></Col>
<Col
:span=
"12"
><FormItem
:label=
"l('upId')"
prop=
"upId"
>
<InputNumber
v-model=
"entity.upId"
></InputNumber>
</FormItem></Col>
</Row>
<FormItem>
<Button
type=
"primary"
@
click=
"handleSubmit"
:disabled=
"disabled"
>
保存
</Button>
<Button
@
click=
"handleClose"
class=
"ml20"
>
取消
</Button>
</FormItem>
</Form>
</
template
>
<
script
>
import
Api
from
'./api'
export
default
{
name
:
'Add'
,
data
()
{
return
{
disabled
:
false
,
entity
:
{
name
:
""
,
upId
:
null
},
rules
:
{
name
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'blur'
}]
}
}
},
props
:
{
v
:
Object
,
eid
:
Number
},
mounted
()
{
if
(
this
.
eid
>
0
)
{
this
.
load
(
this
.
eid
);
}
},
methods
:
{
handleSubmit
()
{
this
.
$refs
.
form
.
validate
((
v
)
=>
{
if
(
v
)
{
this
.
disabled
=
true
;
Api
.
create
(
this
.
entity
).
then
((
r
)
=>
{
this
.
disabled
=
false
;
if
(
r
.
success
)
{
this
.
$Message
.
success
(
'保存成功'
)
this
.
$emit
(
'on-ok'
)
}
else
{
this
.
$Message
.
error
(
'保存失败'
)
}
}).
catch
(
err
=>
{
this
.
disabled
=
false
;
this
.
$Message
.
error
(
'保存失败'
)
console
.
warn
(
err
)
})
}
})
},
handleClose
()
{
this
.
$emit
(
'on-close'
)
},
load
(
v
)
{
Api
.
get
({
id
:
v
}).
then
(
r
=>
{
this
.
entity
=
r
.
result
;
this
.
entity
.
id
=
0
;
});
},
l
(
key
)
{
key
=
"product_level"
+
"."
+
key
;
return
this
.
$t
(
key
)
}
},
watch
:
{
v
()
{
this
.
entity
=
this
.
$u
.
clone
(
this
.
v
)
},
eid
(
v
)
{
if
(
v
>
0
)
{
this
.
load
(
v
);
}
}
}
}
</
script
>
\ No newline at end of file
pages/technology/productMix/productTree/api.js
0 → 100644
View file @
b0f47e09
import
Api
from
'@/plugins/request'
export
default
{
index
:
`
${
technologyUrl
}
productlevel/getleveltree`
,
getleveltree
(
params
){
return
Api
.
get
(
`
${
technologyUrl
}
productlevel/getleveltree`
,
params
);
},
get
(
params
){
return
Api
.
get
(
`
${
technologyUrl
}
productlevel/get`
,
params
);
},
create
(
params
){
return
Api
.
post
(
`
${
technologyUrl
}
productlevel/create`
,
params
);
},
update
(
params
){
return
Api
.
post
(
`
${
technologyUrl
}
productlevel/update`
,
params
);
},
delete
(
id
)
{
return
Api
.
delete
(
`
${
technologyUrl
}
productlevel/delete`
,{
params
:{
id
:
id
}});
},
deletes
(
params
)
{
return
Api
.
post
(
`
${
technologyUrl
}
productlevel/batchdelete`
,
params
);
}
}
\ No newline at end of file
pages/technology/productMix/productTree/detail.vue
0 → 100644
View file @
b0f47e09
<
template
>
<div
class=
"detail"
>
<Row>
<Filed
:span=
"12"
:name=
"l('name')"
>
{{
entity
.
name
}}
</Filed>
<Filed
:span=
"12"
:name=
"l('upId')"
>
{{
entity
.
upId
}}
</Filed>
</Row>
</div>
</
template
>
<
script
>
import
Api
from
'./api'
export
default
{
name
:
'Add'
,
data
()
{
return
{
entity
:
{},
rules
:
{
name
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'blur'
}],
code
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'blur'
}]
}
}
},
props
:
{
eid
:
Number
},
mounted
()
{
if
(
this
.
eid
>
0
)
{
this
.
load
(
this
.
eid
);
}
},
methods
:
{
load
(
v
)
{
Api
.
get
({
id
:
v
}).
then
(
r
=>
{
this
.
entity
=
r
.
result
;
this
.
$emit
(
'on-load'
)
})
},
handleClose
()
{
this
.
$emit
(
'on-close'
)
},
l
(
key
)
{
key
=
"product_level"
+
"."
+
key
;
return
this
.
$t
(
key
)
}
},
watch
:
{
eid
(
v
)
{
if
(
v
>
0
)
{
this
.
load
(
v
);
}
}
}
}
</
script
>
\ No newline at end of file
pages/technology/productMix/productTree/edit.vue
0 → 100644
View file @
b0f47e09
<
template
>
<Form
ref=
"form"
:model=
"entity"
:rules=
"rules"
:label-width=
"90"
>
<Row>
<Col
:span=
"12"
><FormItem
:label=
"l('name')"
prop=
"name"
>
<Input
v-model=
"entity.name"
>
</Input>
</FormItem></Col>
<Col
:span=
"12"
><FormItem
:label=
"l('upId')"
prop=
"upId"
>
<InputNumber
v-model=
"entity.upId"
></InputNumber>
</FormItem></Col>
</Row>
<FormItem>
<Button
type=
"primary"
@
click=
"handleSubmit"
:disabled=
"disabled"
>
保存
</Button>
<Button
@
click=
"handleClose"
class=
"ml20"
>
取消
</Button>
</FormItem>
</Form>
</
template
>
<
script
>
import
Api
from
'./api'
export
default
{
name
:
'Edit'
,
data
()
{
return
{
disabled
:
false
,
entity
:
{
},
rules
:
{
name
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'blur'
}]
}
}
},
props
:
{
eid
:
Number
},
mounted
()
{
if
(
this
.
eid
>
0
)
{
this
.
load
(
this
.
eid
);
}
},
methods
:
{
load
(
v
)
{
Api
.
get
({
id
:
v
}).
then
(
r
=>
{
this
.
entity
=
r
.
result
;
})
},
handleSubmit
()
{
this
.
$refs
.
form
.
validate
((
v
)
=>
{
if
(
v
)
{
this
.
disabled
=
true
;
Api
.
update
(
this
.
entity
).
then
((
r
)
=>
{
this
.
disabled
=
false
;
if
(
r
.
success
)
{
this
.
$Message
.
success
(
'保存成功'
)
this
.
$emit
(
'on-ok'
)
}
else
{
this
.
$Message
.
error
(
'保存失败'
)
}
}).
catch
(
err
=>
{
this
.
disabled
=
false
;
this
.
$Message
.
error
(
'保存失败'
)
console
.
warn
(
err
)
})
}
})
},
handleClose
()
{
this
.
$emit
(
'on-close'
)
},
l
(
key
)
{
key
=
"product_level"
+
"."
+
key
;
return
this
.
$t
(
key
)
}
},
watch
:
{
eid
(
v
)
{
if
(
v
!=
0
)
{
this
.
load
(
v
);
}
}
}
}
</
script
>
\ No newline at end of file
pages/technology/productMix/productTree/index.vue
0 → 100644
View file @
b0f47e09
<
template
>
<div
class=
"flex fd tree-menu"
>
<h3>
产品列表
<div
class=
"fr mr10 mt10"
>
<ButtonGroup
class=
"fr"
size=
"small"
>
<Button
:icon=
"expand ? 'md-arrow-dropright' : 'md-arrow-dropdown'"
@
click=
"toggle"
title=
"展开/合并"
></Button>
<Button
icon=
"md-refresh"
title=
"刷新"
@
click=
"loadTree"
></Button>
<Button
icon=
"md-rewind"
title=
"收起"
@
click=
"hide"
></Button>
</ButtonGroup>
</div>
</h3>
<div
class=
"search"
>
<Input
search
placeholder=
"关键字"
v-model=
"keys"
clearable
/>
</div>
<div
class=
"fg"
>
<div
class=
"tree"
>
<Tree
:data=
"data"
ref=
"tree"
@
on-select-change=
"change"
></Tree>
</div>
</div>
</div>
</
template
>
<
script
>
import
Api
from
"./api"
;
export
default
{
name
:
""
,
data
()
{
return
{
keys
:
""
,
expand
:
false
,
list
:
[]
};
},
created
()
{
this
.
loadTree
();
},
methods
:
{
loadTree
()
{
Api
.
getleveltree
().
then
(
r
=>
{
setTree
(
r
.
result
);
function
setTree
(
data
)
{
data
.
map
(
u
=>
{
u
.
title
=
u
.
name
;
u
.
value
=
u
.
id
;
if
(
u
.
children
)
{
setTree
(
u
.
children
);
}
});
}
var
data
=
r
.
result
;
this
.
list
=
this
.
$u
.
clone
(
data
);
});
},
toggle
()
{
this
.
expand
=
!
this
.
expand
;
},
change
(
v
,
b
)
{
console
.
log
(
v
)
console
.
log
(
b
)
let
ids
=
[];
ids
.
push
(
b
.
value
);
if
(
b
.
children
)
{
addId
(
b
.
children
);
function
addId
(
data
)
{
data
.
map
(
u
=>
{
ids
.
push
(
u
.
value
);
if
(
u
.
children
)
{
addId
(
u
.
children
);
}
});
}
}
this
.
$emit
(
"on-select"
,
b
.
value
,
b
,
ids
);
},
hide
()
{
this
.
$emit
(
"on-hide"
);
}
},
computed
:
{
data
()
{
let
items
=
this
.
$u
.
clone
(
this
.
list
);
let
expand
=
this
.
expand
;
let
result
=
[];
search
(
this
.
keys
,
items
);
function
search
(
keys
,
data
)
{
data
.
map
(
u
=>
{
if
(
keys
.
length
<
u
.
title
)
{
u
.
expand
=
expand
;
result
.
push
(
u
);
}
else
{
u
.
expand
=
expand
;
if
(
u
.
title
.
indexOf
(
keys
)
>
-
1
)
{
result
.
push
(
u
);
}
else
if
(
u
.
children
)
{
search
(
keys
,
u
.
children
);
}
}
});
}
return
result
;
}
}
};
</
script
>
<
style
lang=
"less"
>
.tree-menu {
h3 {
height: 50px;
font-size: 14px;
font-family: Microsoft YaHei;
font-weight: bold;
line-height: 50px;
color: rgba(81, 90, 110, 1);
background: rgba(245, 246, 250, 1);
opacity: 1;
padding-left: 10px;
}
.search {
height: 50px;
padding: 5px 10px;
}
.fg {
flex: none;
// height:0;
overflow: auto;
padding-left: 10px;
}
.tree {
height: calc(100vh - 215px);
overflow: auto;
}
}
</
style
>
\ No newline at end of file
pages/technology/productMix/productTree/search.vue
0 → 100644
View file @
b0f47e09
<
template
>
<Form
ref=
"form"
:model=
"condition"
:label-width=
"90"
>
<Row>
<Col
:span=
"12"
:v-if=
"condition.id.show"
><FormItem
:label=
"$t('id')"
prop=
"id"
>
<Input
v-model=
"condition.id.value"
>
</Input>
</FormItem></Col>
<Col
:span=
"12"
:v-if=
"condition.creationTime.show"
><FormItem
:label=
"$t('creationTime')"
prop=
"creationTime"
>
<DatePicker
type=
"daterange"
v-model=
"condition.creationTime.value"
></DatePicker>
</FormItem></Col>
<Col
:span=
"12"
:v-if=
"condition.creatorUserId.show"
><FormItem
:label=
"$t('creatorUserId')"
prop=
"creatorUserId"
>
<Input
v-model=
"condition.creatorUserId.value"
>
</Input>
</FormItem></Col>
<Col
:span=
"12"
:v-if=
"condition.lastModificationTime.show"
><FormItem
:label=
"$t('lastModificationTime')"
prop=
"lastModificationTime"
>
<DatePicker
type=
"daterange"
v-model=
"condition.lastModificationTime.value"
></DatePicker>
</FormItem></Col>
<Col
:span=
"12"
:v-if=
"condition.lastModifierUserId.show"
><FormItem
:label=
"$t('lastModifierUserId')"
prop=
"lastModifierUserId"
>
<Input
v-model=
"condition.lastModifierUserId.value"
>
</Input>
</FormItem></Col>
<Col
:span=
"12"
:v-if=
"condition.name.show"
><FormItem
:label=
"l('name')"
prop=
"name"
>
<Input
v-model=
"condition.name.value"
>
</Input>
</FormItem></Col>
<Col
:span=
"12"
:v-if=
"condition.upId.show"
><FormItem
:label=
"l('upId')"
prop=
"upId"
>
<Input
v-model=
"condition.upId.value"
>
</Input>
</FormItem></Col>
</Row>
</Form>
</
template
>
<
script
>
import
Api
from
'./api'
export
default
{
name
:
'Add'
,
data
()
{
return
{
condition
:
{
id
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
creationTime
:{
op
:
"Range"
,
value
:
null
,
show
:
true
},
creatorUserId
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
lastModificationTime
:{
op
:
"Range"
,
value
:
null
,
show
:
true
},
lastModifierUserId
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
name
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
upId
:{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
},
}
},
methods
:
{
handleClose
()
{
this
.
$emit
(
'on-close'
)
},
l
(
key
)
{
key
=
"product_level"
+
"."
+
key
;
return
this
.
$t
(
key
)
}
}
}
</
script
>
\ No newline at end of file
plugins/iview.js
View file @
b0f47e09
...
...
@@ -43,6 +43,7 @@ import User from '@/components/page/user.vue'
import
op
from
'@/components/page/opration.vue'
import
ProductNumberSelect
from
'@/components/page/productNumberSelect.vue'
import
ProductSelect
from
'@/components/page/productSelect.vue'
import
ProductSelect1
from
'@/components/page/productSelect1.vue'
import
DTSpan
from
'@/components/page/dtSpan.vue'
import
DTSearch
from
'@/components/page/dtSearch.vue'
import
InputTime
from
'@/components/page/inputTime.vue'
...
...
@@ -96,6 +97,7 @@ Vue.component("op", op) //DepartmentSelect
Vue
.
component
(
"DepartmentSelect"
,
DepartmentSelect
)
Vue
.
component
(
"ProductNumberSelect"
,
ProductNumberSelect
)
Vue
.
component
(
"ProductSelect"
,
ProductSelect
)
Vue
.
component
(
"ProductSelect1"
,
ProductSelect1
)
Vue
.
component
(
"DTSpan"
,
DTSpan
)
Vue
.
component
(
"DTSearch"
,
DTSearch
)
Vue
.
component
(
"InputTime"
,
InputTime
)
...
...
src/assets/css/base.css
View file @
b0f47e09
...
...
@@ -8,6 +8,29 @@ html body {
#__layout
{
height
:
100%
;
}
ul
,
li
{
list-style
:
none
;
}
div
::-webkit-scrollbar
{
width
:
10px
;
height
:
10px
;
/**/
}
div
::-webkit-scrollbar-track
{
background
:
#efefef
;
border-radius
:
2px
;
}
div
::-webkit-scrollbar-thumb
{
background
:
rgba
(
38
,
128
,
235
,
0.5
);
border-radius
:
10px
;
}
div
::-webkit-scrollbar-thumb:hover
{
background
:
rgba
(
38
,
128
,
235
,
0.8
);
}
div
::-webkit-scrollbar-corner
{
background
:
#2680eb
;
}
/*flex*/
.flex
{
display
:
flex
;
...
...
@@ -15,6 +38,9 @@ html body {
.fc-m
{
justify-content
:
center
;
}
.fa-m
{
align-items
:
center
;
}
.fc-e
{
justify-content
:
flex-end
;
}
...
...
@@ -30,6 +56,9 @@ html body {
.fg
{
flex-grow
:
1
;
}
.fs
{
flex-shrink
:
0
;
}
.fg2
{
flex-grow
:
2
;
}
...
...
@@ -615,13 +644,15 @@ textarea::-webkit-input-placeholder {
background
:
#f5f6fa
;
}
.tableCommon
.tableCommon
tr
th
{
line-height
:
30
px
;
line-height
:
24
px
;
font-size
:
14px
;
background
:
#EEEDF0
;
}
.tableCommon
.tableCommon
tr
td
{
border
:
none
;
border-bottom
:
1px
solid
#E4E6ED
;
padding
:
0
2px
;
background
:
#
D5E6
FB
;
background
:
#
F6F8
FB
;
}
.tableCommon
tr
td
{
line-height
:
25px
;
...
...
@@ -707,8 +738,20 @@ html [type=button] {
font-weight
:
bold
;
}
.action
a
{
margin
:
0
5px
;
color
:
#1890FF
;
background
:
transparent
;
}
.action
a
span
{
padding
:
4px
;
}
.action
a
i
{
font-size
:
16px
;
padding
:
4px
;
border-radius
:
3px
;
}
.action
a
i
:hover
{
background
:
#1890FF
;
color
:
#fff
;
}
.action
a
.detail
{
color
:
#1890FF
;
...
...
@@ -716,19 +759,18 @@ html [type=button] {
.action
a
.add
{
color
:
#249E91
;
}
.action
a
.add
:hover
{
color
:
#27AB9D
;
}
.action
a
.edit
{
color
:
#0693d4
;
}
.action
a
.edit
:hover
{
color
:
#35BD90
;
}
.action
a
.remove
,
.action
a
.delete
{
color
:
#FF7A8B
;
}
.action
a
.remove
i
:hover
,
.action
a
.delete
i
:hover
{
background
:
#FF7A8B
;
color
:
#fff
;
}
.action
a
.delete
{
color
:
#FF7A8B
;
}
...
...
@@ -752,14 +794,6 @@ html [type=button] {
font-weight
:
bold
;
font-size
:
18px
;
}
.action
a
.icon
:hover
{
background
:
#27AB9D
;
color
:
#fff
;
}
.action
a
.icon
:active
{
background
:
#229185
;
color
:
#fff
;
}
.icon_box
a
.icon
{
display
:
inline-grid
;
width
:
28px
;
...
...
@@ -977,3 +1011,53 @@ html [type=button] {
.detail
.ivu-row
.filed-col
p
.html
p
{
margin
:
0
10px
0
0
;
}
.con_bord
{
margin
:
10px
20px
;
}
.lay100
{
height
:
calc
(
100vh
-
105px
);
background-color
:
#f5f6fa
;
background
:
#f5f6fa
;
}
.lay100
.con
{
padding
:
5px
5px
0px
10px
;
}
.lay100
.con_bord
{
margin
:
10px
20px
;
box-shadow
:
#c7c7c7
1px
2px
7px
3px
;
}
.menu_side
{
background
:
#fff
!important
;
margin
:
5px
0
0
0
!important
;
border
:
1px
solid
#dcdee2
!important
;
}
.show_menu
{
width
:
30px
;
height
:
30px
;
position
:
fixed
;
top
:
100px
;
left
:
0
;
z-index
:
9
;
}
.show_menu
.menu_play
{
width
:
30px
;
height
:
30px
;
line-height
:
34px
;
font-size
:
14px
;
text-align
:
center
;
color
:
#515A6E
;
border-top-right-radius
:
5px
;
border-bottom-right-radius
:
5px
;
background
:
#ffffff
;
box-shadow
:
#ccc
2px
2px
4px
1px
;
}
.show_menu
.menu_play
:hover
{
background-color
:
#2d8cf0
;
color
:
white
;
}
.details
.ivu-input-number
{
width
:
100%
;
}
.tohtml
img
{
max-width
:
95%
;
}
static/imgicon/noPic_product.png
0 → 100644
View file @
b0f47e09
6.52 KB
static/static/base.css
View file @
b0f47e09
...
...
@@ -1559,4 +1559,7 @@ img.imglogo {
height
:
150px
;
padding
:
5px
;
border-bottom
:
2px
solid
#333
;
}
.tohtml
img
{
max-width
:
95%
;
}
\ No newline at end of file
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