Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
hg-smart
Overview
Overview
Details
Activity
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
platform
hg-smart
Commits
643184de
Commit
643184de
authored
May 11, 2024
by
wancheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
配置管理更新
parent
8a2d7a2e
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
265 additions
and
41 deletions
+265
-41
DdynamicEnum.java
src/main/java/com/baosight/hggp/common/DdynamicEnum.java
+7
-0
ServiceHGPZ004.java
.../java/com/baosight/hggp/hg/pz/service/ServiceHGPZ004.java
+3
-1
ServiceHGPZ005.java
.../java/com/baosight/hggp/hg/pz/service/ServiceHGPZ005.java
+38
-4
ServiceHGPZ007.java
.../java/com/baosight/hggp/hg/pz/service/ServiceHGPZ007.java
+20
-8
ServiceHGPZ010.java
.../java/com/baosight/hggp/hg/pz/service/ServiceHGPZ010.java
+6
-0
HGPZ005.xml
src/main/java/com/baosight/hggp/hg/pz/sql/HGPZ005.xml
+18
-0
HGPZ010.js
src/main/webapp/HG/PZ/HGPZ010.js
+163
-24
HGPZ010.jsp
src/main/webapp/HG/PZ/HGPZ010.jsp
+10
-4
No files found.
src/main/java/com/baosight/hggp/common/DdynamicEnum.java
View file @
643184de
...
...
@@ -72,6 +72,13 @@ public enum DdynamicEnum {
INVENT_RECORD_BLOCK_ID
(
"invent_record_block_id"
,
"inventCode"
,
"inventName"
,
"HGPZ005.queryComboBox"
),
/**
* 模块:存货档案(ALL)
* 用途:存货档案下拉框
* 编写:
*/
INVENT_ALL_BLOCK_ID
(
"invent_all_block_id"
,
"id"
,
"spec"
,
"material"
,
"unit"
,
"length"
,
"width"
,
"thick"
,
"coefficient"
,
"HGPZ005.queryComboBoxAll"
),
/**
* 模块:仓库类型
* 用途:仓库类型下拉框
* 编写:
...
...
src/main/java/com/baosight/hggp/hg/pz/service/ServiceHGPZ004.java
View file @
643184de
...
...
@@ -220,7 +220,7 @@ public class ServiceHGPZ004 extends ServiceBase {
* @param inInfo
* @return
*/
@OperationLogAnnotation
(
operModul
=
"存货档案"
,
operType
=
"查询"
,
operDesc
=
"下拉框"
)
@OperationLogAnnotation
(
operModul
=
"存货档案"
,
operType
=
"查询"
,
operDesc
=
"
父级
下拉框"
)
public
EiInfo
queryParComboBox
(
EiInfo
inInfo
)
{
try
{
List
<
DdynamicEnum
>
list
=
new
ArrayList
<>();
...
...
@@ -231,5 +231,7 @@ public class ServiceHGPZ004 extends ServiceBase {
}
return
inInfo
;
}
}
src/main/java/com/baosight/hggp/hg/pz/service/ServiceHGPZ005.java
View file @
643184de
...
...
@@ -19,10 +19,7 @@ import com.baosight.iplat4j.core.service.soa.XLocalManager;
import
com.baosight.iplat4j.core.web.threadlocal.UserSession
;
import
com.baosight.iplat4j.ed.util.SequenceGenerator
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
/**
* 存货档案
...
...
@@ -222,5 +219,42 @@ public class ServiceHGPZ005 extends ServiceBase {
}
return
inInfo
;
}
/**
* 下拉框
*
* @param inInfo
* @return
*/
@OperationLogAnnotation
(
operModul
=
"存货档案"
,
operType
=
"查询"
,
operDesc
=
"下拉框"
)
public
EiInfo
queryComboBox
(
EiInfo
inInfo
)
{
try
{
List
<
DdynamicEnum
>
list
=
new
ArrayList
<>();
list
.
add
(
DdynamicEnum
.
INVENT_RECORD_BLOCK_ID
);
CommonMethod
.
initBlock
(
inInfo
,
list
,
EiInfoUtils
.
getFirstRow
(
inInfo
),
false
);
}
catch
(
Exception
e
)
{
LogUtils
.
setDetailMsg
(
inInfo
,
e
,
"查询规格失败"
);
}
return
inInfo
;
}
/**
* 下拉框
*
* @param inInfo
* @return
*/
@OperationLogAnnotation
(
operModul
=
"存货档案"
,
operType
=
"查询"
,
operDesc
=
"下拉框"
)
public
EiInfo
queryComboBoxAll
(
EiInfo
inInfo
)
{
try
{
List
<
DdynamicEnum
>
list
=
new
ArrayList
<>();
list
.
add
(
DdynamicEnum
.
INVENT_ALL_BLOCK_ID
);
CommonMethod
.
initBlock
(
inInfo
,
list
,
EiInfoUtils
.
getFirstRow
(
inInfo
),
false
);
}
catch
(
Exception
e
)
{
LogUtils
.
setDetailMsg
(
inInfo
,
e
,
"查询规格失败"
);
}
return
inInfo
;
}
}
src/main/java/com/baosight/hggp/hg/pz/service/ServiceHGPZ007.java
View file @
643184de
...
...
@@ -7,10 +7,7 @@ import com.baosight.hggp.core.dao.DaoUtils;
import
com.baosight.hggp.hg.constant.HGConstant
;
import
com.baosight.hggp.hg.pz.domain.HGPZ007
;
import
com.baosight.hggp.hg.xs.tools.HGXSTools
;
import
com.baosight.hggp.util.AssertUtils
;
import
com.baosight.hggp.util.CommonMethod
;
import
com.baosight.hggp.util.DateUtils
;
import
com.baosight.hggp.util.LogUtils
;
import
com.baosight.hggp.util.*
;
import
com.baosight.hggp.util.contants.ACConstants
;
import
com.baosight.iplat4j.core.ProjectInfo
;
import
com.baosight.iplat4j.core.ei.EiConstant
;
...
...
@@ -21,10 +18,7 @@ import com.baosight.iplat4j.core.service.soa.XLocalManager;
import
com.baosight.iplat4j.core.web.threadlocal.UserSession
;
import
com.baosight.iplat4j.ed.util.SequenceGenerator
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
/**
* 仓库档案
...
...
@@ -217,5 +211,23 @@ public class ServiceHGPZ007 extends ServiceBase {
}
return
inInfo
;
}
/**
* 下拉框
*
* @param inInfo
* @return
*/
@OperationLogAnnotation
(
operModul
=
"仓库档案"
,
operType
=
"查询"
,
operDesc
=
"下拉框"
)
public
EiInfo
queryComboBox
(
EiInfo
inInfo
)
{
try
{
List
<
DdynamicEnum
>
list
=
new
ArrayList
<>();
list
.
add
(
DdynamicEnum
.
WH_RECORD_BLOCK_ID
);
CommonMethod
.
initBlock
(
inInfo
,
list
,
EiInfoUtils
.
getFirstRow
(
inInfo
),
false
);
}
catch
(
Exception
e
)
{
LogUtils
.
setDetailMsg
(
inInfo
,
e
,
"查询规格失败"
);
}
return
inInfo
;
}
}
src/main/java/com/baosight/hggp/hg/pz/service/ServiceHGPZ010.java
View file @
643184de
package
com
.
baosight
.
hggp
.
hg
.
pz
.
service
;
import
com.baosight.hggp.aspect.annotation.OperationLogAnnotation
;
import
com.baosight.hggp.common.DdynamicEnum
;
import
com.baosight.hggp.core.constant.CommonConstant
;
import
com.baosight.hggp.core.dao.DaoUtils
;
import
com.baosight.hggp.hg.constant.HGConstant
;
import
com.baosight.hggp.hg.pz.domain.HGPZ010
;
import
com.baosight.hggp.hg.xs.tools.HGXSTools
;
import
com.baosight.hggp.util.AssertUtils
;
import
com.baosight.hggp.util.CommonMethod
;
import
com.baosight.hggp.util.DateUtils
;
import
com.baosight.hggp.util.LogUtils
;
import
com.baosight.hggp.util.contants.ACConstants
;
...
...
@@ -19,6 +21,7 @@ import com.baosight.iplat4j.core.service.soa.XLocalManager;
import
com.baosight.iplat4j.core.web.threadlocal.UserSession
;
import
com.baosight.iplat4j.ed.util.SequenceGenerator
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -41,6 +44,9 @@ public class ServiceHGPZ010 extends ServiceBase {
@OperationLogAnnotation
(
operModul
=
"库存预警"
,
operType
=
"查询"
,
operDesc
=
"初始化"
)
public
EiInfo
initLoad
(
EiInfo
inInfo
)
{
try
{
CommonMethod
.
initBlock
(
inInfo
,
Arrays
.
asList
(
DdynamicEnum
.
WH_TYPE_BLOCK_ID
),
null
,
false
);
CommonMethod
.
initBlock
(
inInfo
,
Arrays
.
asList
(
DdynamicEnum
.
WH_RECORD_BLOCK_ID
),
null
,
false
);
CommonMethod
.
initBlock
(
inInfo
,
Arrays
.
asList
(
DdynamicEnum
.
INVENT_TYPE_BLOCK_ID
),
null
,
false
);
inInfo
.
addBlock
(
EiConstant
.
resultBlock
).
addBlockMeta
(
new
HGPZ010
().
eiMetadata
);
}
catch
(
PlatException
e
)
{
LogUtils
.
setDetailMsg
(
inInfo
,
e
,
"初始化失败"
);
...
...
src/main/java/com/baosight/hggp/hg/pz/sql/HGPZ005.xml
View file @
643184de
...
...
@@ -298,4 +298,22 @@
ORDER BY INVENT_CODE
</select>
<!-- 缺省下拉框 -->
<select
id=
"queryComboBoxAll"
parameterClass=
"java.util.HashMap"
resultClass=
"java.util.HashMap"
>
SELECT DISTINCT
ID AS "id",
(CASE WHEN SPEC = '' THEN '无规格' ELSE SPEC END) AS "spec",
LENGTH AS "length" ,
<!-- 长 -->
WIDTH AS "width" ,
<!-- 宽 -->
THICK AS "thick" ,
<!-- 厚 -->
COEFFICIENT AS "coefficient" ,
<!-- 系数 -->
MATERIAL AS "material" ,
<!-- 材质 -->
UNIT AS "unit"
<!-- 单位 -->
FROM ${hggpSchema}.HGPZ005
WHERE DELETE_FLAG = 0
AND STATUS = 1
<include
refid=
"condition"
/>
ORDER BY ID
</select>
</sqlMap>
src/main/webapp/HG/PZ/HGPZ010.js
View file @
643184de
let
InventNameGlobalData
=
[];
let
WhNameGlobalData
=
[];
let
inventAllGlobalData
=
[];
$
(
function
()
{
// 查询
...
...
@@ -9,6 +12,85 @@ $(function() {
pageSizes
:
[
10
,
20
,
30
,
50
,
100
,
200
]
},
columns
:
[{
field
:
"whCode"
,
template
:
function
(
dataItem
)
{
for
(
let
i
=
0
;
i
<
WhNameGlobalData
.
length
;
i
++
)
{
if
(
WhNameGlobalData
[
i
][
'valueField'
]
===
dataItem
[
'whCode'
])
{
return
WhNameGlobalData
[
i
][
'textField'
];
}
}
return
""
;
},
editor
:
function
(
container
,
options
)
{
let
inInfo
=
new
EiInfo
();
inInfo
.
set
(
"inqu_status-0-whType"
,
options
.
model
[
"whType"
]);
inInfo
.
set
(
"inqu_status-0-isSplicingSymbol"
,
false
);
inInfo
.
set
(
"serviceName"
,
"HGPZ007"
);
inInfo
.
set
(
"methodName"
,
"queryComboBox"
);
inInfo
.
set
(
"blockId"
,
"wh_record_block_id"
);
inInfo
.
set
(
"field"
,
options
.
field
);
refreshSelect
(
container
,
inInfo
);
}
},{
field
:
"inventCode"
,
template
:
function
(
dataItem
)
{
for
(
let
i
=
0
;
i
<
InventNameGlobalData
.
length
;
i
++
)
{
if
(
InventNameGlobalData
[
i
][
'valueField'
]
===
dataItem
[
'inventCode'
])
{
return
InventNameGlobalData
[
i
][
'textField'
];
}
}
return
""
;
},
editor
:
function
(
container
,
options
)
{
let
inInfo
=
new
EiInfo
();
inInfo
.
set
(
"inqu_status-0-inventType"
,
options
.
model
[
"inventType"
]);
inInfo
.
set
(
"inqu_status-0-isSplicingSymbol"
,
false
);
inInfo
.
set
(
"serviceName"
,
"HGPZ005"
);
inInfo
.
set
(
"methodName"
,
"queryComboBox"
);
inInfo
.
set
(
"blockId"
,
"invent_record_block_id"
);
inInfo
.
set
(
"field"
,
options
.
field
);
refreshSelect
(
container
,
inInfo
);
}
},{
field
:
"inventRecordId"
,
template
:
function
(
dataItem
)
{
for
(
let
i
=
0
;
i
<
inventAllGlobalData
.
length
;
i
++
)
{
if
(
inventAllGlobalData
[
i
][
'valueField'
]
===
dataItem
[
'inventRecordId'
])
{
return
inventAllGlobalData
[
i
][
'textField'
];
}
}
return
""
;
},
editor
:
function
(
container
,
options
)
{
let
inInfo
=
new
EiInfo
();
inInfo
.
set
(
"inqu_status-0-inventCode"
,
options
.
model
[
"inventCode"
]);
inInfo
.
set
(
"serviceName"
,
"HGPZ005"
);
inInfo
.
set
(
"methodName"
,
"queryComboBoxAll"
);
inInfo
.
set
(
"blockId"
,
"invent_all_block_id"
);
inInfo
.
set
(
"field"
,
options
.
field
);
refreshSelect
(
container
,
inInfo
);
}
},
{
field
:
"material"
,
template
:
function
(
dataItem
)
{
for
(
let
i
=
0
;
i
<
inventAllGlobalData
.
length
;
i
++
)
{
if
(
inventAllGlobalData
[
i
][
'valueField'
]
===
dataItem
[
'inventRecordId'
])
{
return
inventAllGlobalData
[
i
][
'param1Field'
];
}
}
return
""
;
}
},
{
field
:
"unit"
,
template
:
function
(
dataItem
)
{
for
(
let
i
=
0
;
i
<
inventAllGlobalData
.
length
;
i
++
)
{
if
(
inventAllGlobalData
[
i
][
'valueField'
]
===
dataItem
[
'inventRecordId'
])
{
return
inventAllGlobalData
[
i
][
'param2Field'
];
}
}
return
""
;
}
},{
field
:
"createdName"
,
template
:
function
(
options
)
{
return
showUserName
(
options
.
createdBy
,
options
.
createdName
);
...
...
@@ -19,6 +101,22 @@ $(function() {
return
showUserName
(
options
.
updatedBy
,
options
.
updatedName
);
}
}],
loadComplete
:
function
(
grid
)
{
// 此grid对象
grid
.
dataSource
.
bind
(
"change"
,
function
(
e
)
{
if
(
e
.
field
==
"inventRecordId"
)
{
var
tr
,
index
;
// 获取此model元素信息
var
item
=
e
.
items
[
0
];
for
(
let
i
=
0
;
i
<
inventAllGlobalData
.
length
;
i
++
)
{
if
(
inventAllGlobalData
[
i
][
'valueField'
]
===
item
.
inventRecordId
)
{
resultGrid
.
setCellValue
(
item
,
'material'
,
inventAllGlobalData
[
i
][
'param1Field'
])
resultGrid
.
setCellValue
(
item
,
'unit'
,
inventAllGlobalData
[
i
][
'param2Field'
])
}
}
}
});
},
onSuccess
:
function
(
e
)
{
if
(
e
.
eiInfo
.
extAttr
.
methodName
==
'save'
||
e
.
eiInfo
.
extAttr
.
methodName
==
'delete'
){
...
...
@@ -45,6 +143,9 @@ $(function() {
$
(
window
).
load
(
function
()
{
// 查询
query
();
initWh
();
initInvent
();
initSpec
();
});
/**
...
...
@@ -55,6 +156,50 @@ let query = function () {
}
/**
* 初始化存货
*/
let
initWh
=
function
()
{
let
inInfo
=
new
EiInfo
();
EiCommunicator
.
send
(
"HGPZ007"
,
"queryComboBox"
,
inInfo
,
{
onSuccess
:
function
(
ei
)
{
WhNameGlobalData
=
ei
.
getBlock
(
"wh_record_block_id"
).
getMappedRows
();
},
onFail
:
function
(
ei
)
{
}
},
{
async
:
false
});
}
/**
* 初始化存货
*/
let
initInvent
=
function
()
{
let
inInfo
=
new
EiInfo
();
EiCommunicator
.
send
(
"HGPZ005"
,
"queryComboBox"
,
inInfo
,
{
onSuccess
:
function
(
ei
)
{
InventNameGlobalData
=
ei
.
getBlock
(
"invent_record_block_id"
).
getMappedRows
();
},
onFail
:
function
(
ei
)
{
}
},
{
async
:
false
});
}
/**
* 初始化规格
*/
let
initSpec
=
function
()
{
let
inInfo
=
new
EiInfo
();
inInfo
.
set
(
"inqu_status-0-inventTypes"
,
[
1
,
2
]);
inInfo
.
set
(
"inqu_status-0-isSplicingSymbol"
,
false
);
EiCommunicator
.
send
(
"HGPZ005"
,
"queryComboBoxAll"
,
inInfo
,
{
onSuccess
:
function
(
ei
)
{
inventAllGlobalData
=
ei
.
getBlock
(
"invent_all_block_id"
).
getMappedRows
();
},
onFail
:
function
(
ei
)
{
}
},
{
async
:
false
});
}
/**
* 保存
*/
let
save
=
function
()
{
...
...
@@ -65,45 +210,39 @@ let save = function () {
}
let
flag
=
true
;
$
.
each
(
rows
,
function
(
index
,
item
)
{
let
custType
=
item
.
get
(
"custType"
);
let
custName
=
item
.
get
(
"custName"
);
let
companyName
=
item
.
get
(
"companyName"
);
let
headName
=
item
.
get
(
"headName"
);
let
phoneName
=
item
.
get
(
"phoneName"
);
let
address
=
item
.
get
(
"address"
);
let
status
=
item
.
get
(
"status"
);
if
(
isBlank
(
custType
)){
message
(
"选中的第"
+
(
index
+
1
)
+
"行
\"
供应商类型
\"
,不能为空!"
);
flag
=
false
;
return
false
;
}
if
(
isBlank
(
custName
)){
message
(
"选中的第"
+
(
index
+
1
)
+
"行
\"
供应商名称
\"
,不能为空!"
);
let
whType
=
item
.
get
(
"whType"
);
let
whCode
=
item
.
get
(
"whCode"
);
let
inventType
=
item
.
get
(
"inventType"
);
let
inventCode
=
item
.
get
(
"inventCode"
);
let
inventRecordId
=
item
.
get
(
"inventRecordId"
);
let
warnNum
=
item
.
get
(
"warnNum"
);
if
(
isBlank
(
whType
)){
message
(
"选中的第"
+
(
index
+
1
)
+
"行
\"
仓库类型
\"
,不能为空!"
);
flag
=
false
;
return
false
;
}
if
(
isBlank
(
companyNam
e
)){
message
(
"选中的第"
+
(
index
+
1
)
+
"行
\"
公司
\"
,不能为空!"
);
if
(
isBlank
(
whCod
e
)){
message
(
"选中的第"
+
(
index
+
1
)
+
"行
\"
仓库名称
\"
,不能为空!"
);
flag
=
false
;
return
false
;
}
if
(
isBlank
(
headNam
e
)){
message
(
"选中的第"
+
(
index
+
1
)
+
"行
\"
负责人
\"
,不能为空!"
);
if
(
isBlank
(
inventTyp
e
)){
message
(
"选中的第"
+
(
index
+
1
)
+
"行
\"
存货类型
\"
,不能为空!"
);
flag
=
false
;
return
false
;
}
if
(
isBlank
(
phoneNam
e
)){
message
(
"选中的第"
+
(
index
+
1
)
+
"行
\"
负责人联系方式
\"
,不能为空!"
);
if
(
isBlank
(
inventCod
e
)){
message
(
"选中的第"
+
(
index
+
1
)
+
"行
\"
存货名称
\"
,不能为空!"
);
flag
=
false
;
return
false
;
}
if
(
isBlank
(
address
)){
message
(
"选中的第"
+
(
index
+
1
)
+
"行
\"
地址
\"
,不能为空!"
);
if
(
isBlank
(
inventRecordId
)){
message
(
"选中的第"
+
(
index
+
1
)
+
"行
\"
规格
\"
,不能为空!"
);
flag
=
false
;
return
false
;
}
if
(
isBlank
(
status
)){
message
(
"选中的第"
+
(
index
+
1
)
+
"行
\"
状态
\"
,不能为空
!"
);
if
(
!
isPositiveInteger
(
warnNum
)){
message
(
"选中的第"
+
(
index
+
1
)
+
"行
\"
预警值
\"
,必须是大于0的整数
!"
);
flag
=
false
;
return
false
;
}
...
...
src/main/webapp/HG/PZ/HGPZ010.jsp
View file @
643184de
...
...
@@ -15,7 +15,7 @@
<EF:EFSelect
cname=
"仓库类型"
blockId=
"inqu_status"
ename=
"whType"
row=
"0"
colWidth=
"3"
filter=
"contains"
defultValue=
""
>
<EF:EFOption
label=
"全部"
value=
""
/>
<EF:EFOptions
blockId=
"wh_type_
record_
block_id"
textField=
"textField"
valueField=
"valueField"
/>
<EF:EFOptions
blockId=
"wh_type_block_id"
textField=
"textField"
valueField=
"valueField"
/>
</EF:EFSelect>
</div>
</EF:EFRegion>
...
...
@@ -23,11 +23,17 @@
<EF:EFRegion
id=
"result"
title=
"记录集"
>
<EF:EFGrid
blockId=
"result"
autoDraw=
"override"
isFloat=
"true"
>
<EF:EFColumn
ename=
"id"
cname=
"主键"
hidden=
"true"
/>
<EF:EFComboColumn
ename=
"inventType"
cname=
"存货类型"
width=
"100"
align=
"center"
required=
"true"
readonly=
"true"
>
<EF:EFCodeOption
codeName=
"hpjx.hpkc.inventType"
condition=
"ITEM_CODE IN ('1', '2')"
/>
<EF:EFComboColumn
ename=
"whType"
cname=
"仓库类型"
width=
"120"
align=
"center"
required=
"true"
blockName=
"wh_type_block_id"
textField=
"textField"
valueField=
"valueField"
columnTemplate=
"#=textField#"
itemTemplate=
"#=textField#"
readonly=
"false"
filter=
"contains"
>
</EF:EFComboColumn>
<EF:EFColumn
ename=
"whCode"
cname=
"仓库名称"
width=
"120"
align=
"center"
required=
"true"
readonly=
"true"
/>
<EF:EFComboColumn
ename=
"inventType"
cname=
"存货类型"
width=
"120"
align=
"center"
required=
"true"
blockName=
"invent_type_block_id"
textField=
"textField"
valueField=
"valueField"
columnTemplate=
"#=textField#"
itemTemplate=
"#=textField#"
readonly=
"false"
filter=
"contains"
>
</EF:EFComboColumn>
<EF:EFColumn
ename=
"inventCode"
cname=
"存货名称"
width=
"120"
align=
"center"
required=
"true"
readonly=
"true"
/>
<EF:EFColumn
ename=
"inventRecordId"
cname=
"规格"
width=
"120"
align=
"center"
required=
"true"
readonly=
"true"
/>
<EF:EFColumn
ename=
"material"
cname=
"材质"
width=
"120"
align=
"center"
enable=
"false"
/>
...
...
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