Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
E
enterprise-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
enterprise-platform
Commits
afaac2d9
Commit
afaac2d9
authored
Dec 04, 2024
by
姬鋆屾
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pref:提交产品模块所修改内容,轮播图改为多图上传,富文本等修改
parent
790d23a8
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
1332 additions
and
836 deletions
+1332
-836
enterprise-manager-ui/admin/.env.development
enterprise-manager-ui/admin/.env.development
+3
-0
enterprise-manager-ui/admin/src/assets/less/new.css
enterprise-manager-ui/admin/src/assets/less/new.css
+8
-0
enterprise-manager-ui/admin/src/assets/less/new.less
enterprise-manager-ui/admin/src/assets/less/new.less
+55
-55
enterprise-manager-ui/admin/src/components/FormField.vue
enterprise-manager-ui/admin/src/components/FormField.vue
+114
-42
enterprise-manager-ui/admin/src/components/Header.vue
enterprise-manager-ui/admin/src/components/Header.vue
+4
-6
enterprise-manager-ui/admin/src/components/ImageUpload.vue
enterprise-manager-ui/admin/src/components/ImageUpload.vue
+85
-10
enterprise-manager-ui/admin/src/views/company/drawershow.vue
enterprise-manager-ui/admin/src/views/company/drawershow.vue
+125
-65
enterprise-manager-ui/admin/src/views/news/drawershow.vue
enterprise-manager-ui/admin/src/views/news/drawershow.vue
+226
-160
enterprise-manager-ui/admin/src/views/product/drawershow.vue
enterprise-manager-ui/admin/src/views/product/drawershow.vue
+538
-355
enterprise-manager-ui/admin/src/views/product/list.vue
enterprise-manager-ui/admin/src/views/product/list.vue
+174
-143
No files found.
enterprise-manager-ui/admin/.env.development
0 → 100644
View file @
afaac2d9
#开发环境
NODE_ENV = "development"
VUE_APP_API_BASE_URL= http://192.168.0.98:11086
enterprise-manager-ui/admin/src/assets/less/new.css
View file @
afaac2d9
...
...
@@ -2,6 +2,7 @@
height
:
100%
!important
;
}
.layout-menu-wrapper
{
padding
:
0
24px
;
height
:
64px
!important
;
line-height
:
64px
!important
;
background
:
linear-gradient
(
90deg
,
#1845c6
,
#2999ff
)
!important
;
...
...
@@ -9,6 +10,13 @@
.layout-menu-wrapper
.layout-logo
{
font-size
:
20px
;
font-weight
:
bold
;
width
:
200px
;
}
.layout-menu-wrapper
.menu-list
{
margin-left
:
50px
;
}
.layout-menu-wrapper
.menu-list
li
{
padding
:
0
20px
;
}
.layout-menu-wrapper
.menu-list
li
a
{
display
:
block
;
...
...
enterprise-manager-ui/admin/src/assets/less/new.less
View file @
afaac2d9
#app {
height: 100% !important;
height: 100% !important;
}
.layout-menu-wrapper {
height: 64px !important;
line-height: 64px !important;
background: linear-gradient(90deg, #1845c6, #2999ff) !important;
padding: 0 24px;
height: 64px !important;
line-height: 64px !important;
background: linear-gradient(90deg, #1845c6, #2999ff) !important;
.layout-logo {
font-size: 20px;
font-weight: bold;
}
.menu-list {
li {
a {
display: block;
padding: 0 12px;
height: 100%;
font-size: 14px !important;
color: rgba(254, 254, 254, .65) !important;
text-align: center !important;
i {
font-size: 14px !important;
margin-right: 10px !important;
}
.layout-logo {
font-size: 20px;
font-weight: bold;
width: 200px;
}
i:first-child {
margin-right: 0px !important;
}
.menu-list {
margin-left: 50px;
li {
padding: 0 20px;
a {
display: block;
padding: 0 12px;
height: 100%;
font-size: 14px !important;
color: rgba(254, 254, 254, 0.65) !important;
text-align: center !important;
&:hover {
color: #fff !important;
i {
font-size: 14px !important;
margin-right: 10px !important;
}
}
i:first-child {
margin-right: 0px !important;
}
&.router-link-active,
&[active] {
//background: #1890ff;
color: #fff !important;
list-style-type: none;
border-bottom: none !important;
padding-bottom: 2px;
background-color: #1890ff !important;
}
}
&:hover {
color: #fff !important;
}
&.router-link-active,
&[active] {
//background: #1890ff;
color: #fff !important;
list-style-type: none;
border-bottom: none !important;
padding-bottom: 2px;
background-color: #1890ff !important;
}
}
}
}
}
.layout-header .layout-submenu-wrapper {
width: 95% !important;
margin: 0 auto !important;
margin-top: 20px !important;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
width: 95% !important;
margin: 0 auto !important;
margin-top: 20px !important;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
}
.page.active {
width: 95% !important;
margin: 0 auto !important;
padding: 20px !important;
padding-top: 0 !important;
width: 95% !important;
margin: 0 auto !important;
padding: 20px !important;
padding-top: 0 !important;
}
.page {
height: 82% !important;
min-height: 82% !important;
border-bottom-left-radius: 8px;
border-bottom-right-radius: 8px;
}
\ No newline at end of file
height: 82% !important;
min-height: 82% !important;
border-bottom-left-radius: 8px;
border-bottom-right-radius: 8px;
}
enterprise-manager-ui/admin/src/components/FormField.vue
View file @
afaac2d9
// 表单节点封装,支持 input textarea select radio checkbox 及slot方式
<
template
>
<el-col
:span=
'span'
>
<el-form-item
:label=
"label"
:prop=
"prop"
class=
'my-form-field'
>
<el-col
:span=
"span"
>
<el-form-item
:label=
"label"
:prop=
"prop"
class=
"my-form-field"
>
<slot>
<el-input
:disabled=
'disabled'
:placeholder=
'placeholder'
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
v-if=
'type === "text"'
:class=
"inputClass"
:clearable=
'clearable'
></el-input>
<el-input
:disabled=
'disabled'
:placeholder=
'placeholder'
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
type=
'password'
v-if=
'type === "password"'
></el-input>
<el-input-number
:disabled=
'disabled'
v-model=
"field"
size=
"small"
:placeholder=
'placeholder'
@
change=
"emit"
@
input=
"emit"
v-if=
'type === "num"'
></el-input-number>
<el-input
:disabled=
"disabled"
:placeholder=
"placeholder"
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
v-if=
"type === 'text'"
:class=
"inputClass"
:clearable=
"clearable"
></el-input>
<el-input
:disabled=
"disabled"
:placeholder=
"placeholder"
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
type=
"password"
v-if=
"type === 'password'"
></el-input>
<el-input-number
:disabled=
"disabled"
v-model=
"field"
size=
"small"
:placeholder=
"placeholder"
@
change=
"emit"
@
input=
"emit"
v-if=
"type === 'num'"
></el-input-number>
<el-input
:disabled=
'disabled'
:placeholder=
'placeholder'
v-model=
"field"
@
change=
"emit"
:rows=
'rows'
@
input=
"emit"
v-if=
'type === "textarea"'
type=
'textarea'
:autosize=
"textareaSize"
:class=
"inputClass"
></el-input>
<el-input
:disabled=
"disabled"
:placeholder=
"placeholder"
v-model=
"field"
@
change=
"emit"
:rows=
"rows"
@
input=
"emit"
v-if=
"type === 'textarea'"
type=
"textarea"
:autosize=
"textareaSize"
:class=
"inputClass"
></el-input>
<el-select
:disabled=
'disabled'
v-model=
"field"
@
change=
"emit"
:multiple=
'multiple'
:filterable=
'filterable'
:clearable=
'clearable'
v-if=
'type === "select"'
>
<el-select
:disabled=
"disabled"
v-model=
"field"
@
change=
"emit"
:multiple=
"multiple"
:filterable=
"filterable"
:clearable=
"clearable"
v-if=
"type === 'select'"
>
<el-option
v-for=
"($label, $value) in enumData"
:key=
"$value"
...
...
@@ -21,25 +63,54 @@
></el-option>
</el-select>
<el-radio-group
:disabled=
'disabled'
v-model=
"field"
@
change=
"emit"
v-if=
'type === "radio"'
>
<el-radio-group
:disabled=
"disabled"
v-model=
"field"
@
change=
"emit"
v-if=
"type === 'radio'"
>
<el-radio
v-for=
'($label, $value) in enumData'
:key=
'$value'
v-for=
"($label, $value) in enumData"
:key=
"$value"
:label=
"$value"
>
{{
$label
}}
</el-radio>
>
{{
$label
}}
</el-radio
>
</el-radio-group>
<el-checkbox-group
:disabled=
'disabled'
v-model=
"field"
@
change=
"emit"
v-if=
'type === "checkbox"'
>
<el-checkbox-group
:disabled=
"disabled"
v-model=
"field"
@
change=
"emit"
v-if=
"type === 'checkbox'"
>
<el-checkbox
v-for=
'($label, $value) in enumData'
:key=
'$value'
v-for=
"($label, $value) in enumData"
:key=
"$value"
:label=
"$value"
>
{{
$label
}}
</el-checkbox>
>
{{
$label
}}
</el-checkbox
>
</el-checkbox-group>
<el-date-picker
:disabled=
'disabled'
type=
"date"
value-format=
"yyyy-MM-dd HH:mm:ss"
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
placeholder=
"选择日期"
v-if=
'type === "date"'
></el-date-picker>
<el-date-picker
:disabled=
'disabled'
type=
"datetime"
value-format=
"yyyy-MM-dd HH:mm:ss"
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
placeholder=
"选择日期"
v-if=
'type === "datetime"'
></el-date-picker>
<el-date-picker
:disabled=
"disabled"
type=
"date"
value-format=
"yyyy-MM-dd HH:mm:ss"
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
placeholder=
"选择日期"
v-if=
"type === 'date'"
></el-date-picker>
<el-date-picker
:disabled=
"disabled"
type=
"datetime"
value-format=
"yyyy-MM-dd HH:mm:ss"
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
placeholder=
"选择日期"
v-if=
"type === 'datetime'"
></el-date-picker>
</slot>
</el-form-item>
</el-col>
...
...
@@ -48,29 +119,29 @@
<
script
>
export
default
{
props
:
{
// 字段值
// 字段值
value
:
{
type
:
[
String
,
Number
,
Array
],
},
// 组件的el-col span宽度 1-24,默认12
span
:
{
span
:
{
type
:
Number
,
default
:
12
,
},
// 字段类型: text,password,textarea,select,radio,checkbox,date,datetime
type
:
{
type
:
{
type
:
String
,
default
:
'
text
'
,
default
:
"
text
"
,
},
// 字段name
prop
:
{
type
:
String
,
default
:
''
,
default
:
""
,
},
// 字段中文标题
label
:
{
type
:
String
,
default
:
''
,
default
:
""
,
},
// 是否禁用
disabled
:
{
...
...
@@ -80,18 +151,18 @@ export default {
// 是否提示
placeholder
:
{
type
:
String
,
default
:
''
,
default
:
""
,
},
// 字段所需的枚举类型
enumData
:
{
type
:
Object
,
default
:
()
=>
{},
default
:
()
=>
{},
},
// textarea专用-自适应内容高度
textareaSize
:
{
type
:
Object
,
default
:
()
=>
{},
default
:
()
=>
{},
},
// select专用-是否可搜索
filterable
:
{
...
...
@@ -111,38 +182,39 @@ export default {
// 字段所需的枚举类型
options
:
{
type
:
Array
,
default
:
()
=>
[],
default
:
()
=>
[],
},
children
:
{
type
:
Array
,
default
:
()
=>
[],
default
:
()
=>
[],
},
inputClass
:
{
type
:
String
,
default
:
''
,
}
default
:
""
,
}
,
},
methods
:
{
emit
()
{
this
.
$emit
(
'
input
'
,
this
.
newVal
)
this
.
$emit
(
'
change
'
,
this
.
newVal
)
}
this
.
$emit
(
"
input
"
,
this
.
newVal
);
this
.
$emit
(
"
change
"
,
this
.
newVal
);
console
.
log
(
this
.
newVal
);
},
},
computed
:
{
field
:
{
get
()
{
return
this
.
value
return
this
.
value
;
},
set
(
val
)
{
this
.
newVal
=
val
;
}
}
}
,
}
,
},
data
()
{
return
{
newVal
:
this
.
value
,
}
}
}
}
;
}
,
}
;
</
script
>
enterprise-manager-ui/admin/src/components/Header.vue
View file @
afaac2d9
...
...
@@ -11,11 +11,11 @@
<router-link
to=
"/"
>
<img
:src=
"sysLogo ? sysLogo : require('../assets/images/logo.png')"
style=
"margin-bottom:5px"
style=
"margin-bottom:
5px"
height=
"40"
alt=
""
/>
<b
style=
"color:
white;font-size:18px;
"
<b
style=
"color:
white; font-size: 18px
"
>
{{
sysName
?
sysName
:
"
企业服务平台
"
}}
</b
...
...
@@ -43,7 +43,7 @@
</span>
-->
<el-dropdown
@
command=
"handleCommand"
>
<span
class=
"el-dropdown-link"
style=
"color:white"
>
<span
class=
"el-dropdown-link"
style=
"color:
white"
>
{{
userData
.
currUserName
}}
<i
class=
"el-icon-arrow-down el-icon--right"
></i>
</span>
...
...
@@ -249,9 +249,7 @@ export default {
}
}
}
.layout-profile {
padding-right: 30px;
}
}
.layout-submenu-wrapper {
...
...
enterprise-manager-ui/admin/src/components/ImageUpload.vue
View file @
afaac2d9
...
...
@@ -2,7 +2,7 @@
<
template
>
<div
class=
"component-upload-image"
>
<el-upload
:action=
"uploadImgUrl
+'?prePath=' +
prePath"
:action=
"uploadImgUrl
+ '?prePath=' +
prePath"
list-type=
"picture-card"
:on-success=
"handleUploadSuccess"
:before-upload=
"handleBeforeUpload"
...
...
@@ -11,14 +11,22 @@
:show-file-list=
"false"
:headers=
"headers"
style=
"display: inline-block; vertical-align: top"
v-if=
"!isList"
>
<el-image
v-if=
"!value"
:src=
"value"
>
<el-image
v-if=
"!value"
:src=
"value.indexOf('http') == -1 ? baseUrl + value : value"
>
<div
slot=
"error"
class=
"image-slot"
>
<i
class=
"el-icon-plus"
/>
</div>
</el-image>
<div
v-else
class=
"image"
>
<el-image
:src=
"value"
:style=
"`width:150px;height:150px;`"
fit=
"fill"
/>
<el-image
:src=
"value.indexOf('http') == -1 ? baseUrl + value : value"
:style=
"`width:150px;height:150px;`"
fit=
"fill"
/>
<div
class=
"mask"
>
<div
class=
"actions"
>
<span
title=
"预览"
@
click.stop=
"dialogVisible = true"
>
...
...
@@ -31,8 +39,36 @@
</div>
</div>
</el-upload>
<el-dialog
:visible.sync=
"dialogVisible"
title=
"预览"
width=
"800"
append-to-body
>
<img
:src=
"value"
style=
"display: block; max-width: 100%; margin: 0 auto;"
>
<el-upload
:action=
"uploadImgUrl + '?prePath=' + prePath"
list-type=
"picture-card"
:on-remove=
"handleRemove"
:on-success=
"handleUploadSuccess"
:before-upload=
"handleBeforeUpload"
:on-preview=
"handlePictureCardPreview"
:file-list=
"imgList"
accept=
".jpeg,.png,.jpg,.bmp,.gif"
:headers=
"headers"
v-else
>
<i
class=
"el-icon-plus"
></i>
</el-upload>
<el-dialog
:visible.sync=
"dialogVisible"
title=
"预览"
width=
"800"
append-to-body
>
<img
:src=
"dialogImageUrl"
style=
"display: block; max-width: 100%; margin: 0 auto"
v-if=
"isList"
/>
<img
:src=
"value"
style=
"display: block; max-width: 100%; margin: 0 auto"
v-else
/>
</el-dialog>
</div>
</
template
>
...
...
@@ -41,8 +77,11 @@
export
default
{
data
()
{
return
{
baseUrl
:
process
.
env
.
VUE_APP_API_BASE_URL
+
"
/
"
,
dialogVisible
:
false
,
uploadImgUrl
:
"
/enterprise/file/commonupload
"
,
// 上传的图片服务器地址
uploadImgUrl
:
"
/enterprise/file/commonupload
"
,
// 上传的图片服务器地址
imgList
:
[],
dialogImageUrl
:
""
,
};
},
props
:
{
...
...
@@ -53,16 +92,52 @@ export default {
//保存服务器路径前缀地址
prePath
:
{
type
:
String
,
default
:
''
,
default
:
""
,
},
isList
:
{
type
:
Boolean
,
default
:
false
,
},
},
mounted
()
{
// 判断是否为多图上传
if
(
this
.
isList
)
{
if
(
this
.
value
&&
this
.
value
!=
""
)
{
this
.
imgList
=
[];
let
arr
=
[];
arr
=
this
.
value
?.
split
(
"
,
"
);
arr
.
forEach
((
v
)
=>
{
let
obj
=
{};
obj
.
name
=
"
轮播图
"
;
obj
.
uid
=
parseInt
(
Math
.
random
(
0
,
100
));
v
.
indexOf
(
"
http
"
)
==
-
1
?
(
obj
.
url
=
this
.
baseUrl
+
v
)
:
(
obj
.
url
=
v
);
this
.
imgList
.
push
(
obj
);
});
}
}
},
methods
:
{
handleRemove
(
file
,
fileList
)
{
console
.
log
(
fileList
);
this
.
imgList
=
fileList
;
},
handlePictureCardPreview
(
file
)
{
this
.
dialogImageUrl
=
file
.
url
;
this
.
dialogVisible
=
true
;
},
removeImage
()
{
this
.
$emit
(
"
input
"
,
""
);
},
handleUploadSuccess
(
res
)
{
this
.
$emit
(
"
input
"
,
res
.
url
);
this
.
loading
.
close
();
handleUploadSuccess
(
res
,
file
,
fileList
)
{
if
(
this
.
isList
)
{
this
.
loading
.
close
();
this
.
imgList
=
fileList
;
}
else
{
this
.
$emit
(
"
input
"
,
res
.
url
);
this
.
loading
.
close
();
}
},
handleBeforeUpload
()
{
this
.
loading
=
this
.
$loading
({
...
...
enterprise-manager-ui/admin/src/views/company/drawershow.vue
View file @
afaac2d9
...
...
@@ -7,10 +7,26 @@
:destroy-on-close=
"true"
size=
"80%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"140px"
style=
"padding:0 40px;"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"140px"
style=
"padding: 0 40px"
>
<el-row>
<Field
label=
"企业名称"
prop=
"companyName"
v-model=
"form.companyName"
placeholder=
"请输入企业名称"
/>
<Field
label=
"联系电话"
prop=
"contactPhone"
v-model=
"form.contactPhone"
placeholder=
"请输入联系电话"
/>
<Field
label=
"企业名称"
prop=
"companyName"
v-model=
"form.companyName"
placeholder=
"请输入企业名称"
/>
<Field
label=
"联系电话"
prop=
"contactPhone"
v-model=
"form.contactPhone"
placeholder=
"请输入联系电话"
/>
<!--
<Field
label=
"公司编码"
prop=
"companyCode"
v-model=
"form.companyCode"
placeholder=
"请输入公司编码"
/>
<Field
label=
"注册号"
prop=
"registrationNumber"
v-model=
"form.registrationNumber"
placeholder=
"请输入注册号"
/>
<Field
label=
"法定代表人"
prop=
"legalRepresentative"
v-model=
"form.legalRepresentative"
placeholder=
"请输入法定代表人"
/>
...
...
@@ -28,11 +44,19 @@
prop=
"businessAdress"
placeholder=
"请输入经营地址"
>
<area-select
ref=
"areaselect"
v-model=
"form.areaCode"
@
addressSelect=
"addressSelect"
></area-select>
<area-select
ref=
"areaselect"
v-model=
"form.areaCode"
@
addressSelect=
"addressSelect"
></area-select>
</Field>
<!--
<Field
label=
"所在地"
prop=
"location"
v-model=
"form.location"
placeholder=
"请输入所在地"
/>
-->
<Field
prop=
"location"
v-model=
"form.location"
placeholder=
"请输入详细地址"
/>
<Field
prop=
"location"
v-model=
"form.location"
placeholder=
"请输入详细地址"
/>
<!--
<Field
label=
"电子邮件地址"
prop=
"email"
v-model=
"form.email"
placeholder=
"请输入电子邮件地址"
/>
<Field
label=
"公司网站"
prop=
"website"
v-model=
"form.website"
placeholder=
"请输入公司网站"
/>
<Field
label=
"税务登记号"
prop=
"taxRegistrationNumber"
v-model=
"form.taxRegistrationNumber"
placeholder=
"请输入税务登记号"
/>
...
...
@@ -67,13 +91,16 @@
></el-option>
</el-select>
</Field>
<Field
<Field
label=
"公司介绍"
>
<editor
v-model=
"form.companyIntroduction"
:min-height=
"150"
/>
</Field>
<!--
<Field
label=
"公司介绍"
prop=
"companyIntroduction"
v-model=
"form.companyIntroduction"
type=
"textarea"
placeholder=
"请输入公司介绍"
/>
/>
-->
<!--
<Field
:span=
"24"
label=
"企业视频"
><fileUpload
v-model=
"form.companyVideoPath"
:fileType=
"[ 'mp4', 'avi']"
prePath=
"/file/fileupload"
/></Field>
<Field
:span=
"24"
label=
"企业宣传图片"
><fileUpload
v-model=
"form.companyPicPath"
:fileType=
"['png', 'jpg', 'jpeg']"
prePath=
"/file/preview"
/></Field>
...
...
@@ -88,10 +115,22 @@
ref=
"companyPatents"
>
<!--
<el-table-column
type=
"selection"
width=
"50"
align=
"center"
/>
-->
<el-table-column
label=
"序号"
align=
"center"
prop=
"index"
width=
"50"
/>
<el-table-column
label=
"知识产权类型"
align=
"center"
prop=
"intellectPropertyType"
>
<el-table-column
label=
"序号"
align=
"center"
prop=
"index"
width=
"50"
/>
<el-table-column
label=
"知识产权类型"
align=
"center"
prop=
"intellectPropertyType"
>
<template
slot-scope=
"scope"
>
<el-input
v-model=
"scope.row.intellectPropertyType"
placeholder=
"请输入知识产权类型"
/>
<el-input
v-model=
"scope.row.intellectPropertyType"
placeholder=
"请输入知识产权类型"
/>
</
template
>
</el-table-column>
...
...
@@ -107,25 +146,40 @@
<el-table-column
label=
"操作"
width=
"240"
>
<
template
slot-scope=
"scope"
>
<Confirm
@
confirm=
"handleDeleteCompanyPatents(scope.row)"
message=
"确定要删除该条知识产权吗?"
>
<Confirm
@
confirm=
"handleDeleteCompanyPatents(scope.row)"
message=
"确定要删除该条知识产权吗?"
>
<div
class=
"del"
>
删除
</div>
</Confirm>
</
template
>
</el-table-column>
</el-table>
<el-row
style=
"margin:
10px 0;display: flex;justify-content: center;
"
style=
"margin:
10px 0; display: flex; justify-content: center
"
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
icon=
"el-icon-plus"
@
click=
"handleAddCompanyPatents"
>
新增知识产权
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-plus"
@
click=
"handleAddCompanyPatents"
>
新增知识产权
</el-button
>
</el-col>
</el-row>
<el-form-item
v-if=
"pageInfo.type!='view'"
class=
"formbtns"
>
<el-button
type=
"primary"
@
click=
"hanndleSubmit"
icon=
"el-icon-circle-check-outline"
>
保存
</el-button>
<el-button
@
click=
"open=false"
icon=
"el-icon-circle-close-outline"
>
取消
</el-button>
<el-form-item
v-if=
"pageInfo.type != 'view'"
class=
"formbtns"
>
<el-button
type=
"primary"
@
click=
"hanndleSubmit"
icon=
"el-icon-circle-check-outline"
>
保存
</el-button
>
<el-button
@
click=
"open = false"
icon=
"el-icon-circle-close-outline"
>
取消
</el-button
>
</el-form-item>
</Field>
</el-form>
...
...
@@ -139,25 +193,25 @@ export default {
name
:
"
CompanyDetail
"
,
mixins
:
[
form
],
components
:
{
Confirm
Confirm
,
},
created
()
{
this
.
changePath
(
"
company
"
);
},
data
()
{
let
that
=
this
;
var
checkPhone
=
(
rule
,
value
,
callback
)
=>
{
let
phoneReg
=
/^
(((\d{3,4}
-
)?[
0-9
]{7,8})
|
(
1
(
3|4|5|6|7|8|9
)\d{9}))
$/
if
(
!
value
)
{
callback
()
}
else
{
if
(
phoneReg
.
test
(
value
))
{
callback
()
}
else
{
callback
(
new
Error
(
"
请输入正确的联系电话
"
))
var
checkPhone
=
(
rule
,
value
,
callback
)
=>
{
let
phoneReg
=
/^
(((\d{3,4}
-
)?[
0-9
]{7,8})
|
(
1
(
3|4|5|6|7|8|9
)\d{9}))
$/
;
if
(
!
value
)
{
callback
()
;
}
else
{
if
(
phoneReg
.
test
(
value
))
{
callback
()
;
}
else
{
callback
(
new
Error
(
"
请输入正确的联系电话
"
))
;
}
}
}
}
;
return
{
regionCodeList
:
[],
areaprops
:
{
...
...
@@ -168,22 +222,22 @@ export default {
lazyLoad
(
node
,
resolve
)
{
var
param
=
{
pid
:
node
.
level
===
0
?
0
:
node
.
data
.
id
,
size
:
-
1
size
:
-
1
,
};
that
.
$post
(
"
/base/area/list
"
,
param
).
then
(
res
=>
{
that
.
$post
(
"
/base/area/list
"
,
param
).
then
(
(
res
)
=>
{
console
.
log
(
res
);
let
nodes
=
res
.
data
.
data
.
map
(
item
=>
{
let
nodes
=
res
.
data
.
data
.
map
(
(
item
)
=>
{
return
{
value
:
item
.
areaCode
,
label
:
item
.
name
,
id
:
item
.
iid
,
leaf
:
item
.
haveSonArea
===
"
False
"
leaf
:
item
.
haveSonArea
===
"
False
"
,
};
});
resolve
(
nodes
);
});
}
}
,
},
// 子表选中数据
checkedCompanyLabels
:
[],
...
...
@@ -206,61 +260,67 @@ export default {
rules
:
{
companyName
:
[
{
required
:
true
,
message
:
"
请输入公司名称
"
,
trigger
:
"
blur
"
},
{
max
:
128
,
message
:
"
最多只能录入128个字符
"
,
trigger
:
"
blur
"
}
{
max
:
128
,
message
:
"
最多只能录入128个字符
"
,
trigger
:
"
blur
"
}
,
],
areaCode
:
[
{
required
:
true
,
message
:
"
请输入所属区域编码
"
,
trigger
:
"
blur
"
},
{
max
:
128
,
message
:
"
最多只能录入128个字符
"
,
trigger
:
"
blur
"
}
{
max
:
128
,
message
:
"
最多只能录入128个字符
"
,
trigger
:
"
blur
"
}
,
],
areaName
:
[
{
required
:
true
,
message
:
"
请输入所属区域名称
"
,
trigger
:
"
blur
"
},
{
max
:
128
,
message
:
"
最多只能录入128个字符
"
,
trigger
:
"
blur
"
}
{
max
:
128
,
message
:
"
最多只能录入128个字符
"
,
trigger
:
"
blur
"
}
,
],
contactPhone
:
[
{
required
:
true
,
message
:
"
请输入联系电话
"
,
trigger
:
"
blur
"
},
{
validator
:
checkPhone
,
trigger
:
"
blur
"
},
{
max
:
32
,
message
:
"
最多只能录入32个字符
"
,
trigger
:
"
blur
"
}
{
validator
:
checkPhone
,
trigger
:
"
blur
"
},
{
max
:
32
,
message
:
"
最多只能录入32个字符
"
,
trigger
:
"
blur
"
}
,
],
lon
:
[
{
required
:
true
,
message
:
"
请输入经度
"
,
trigger
:
"
blur
"
},
{
max
:
32
,
message
:
"
最多只能录入32个字符
"
,
trigger
:
"
blur
"
}
{
max
:
32
,
message
:
"
最多只能录入32个字符
"
,
trigger
:
"
blur
"
}
,
],
lati
:
[
{
required
:
true
,
message
:
"
请输入纬度
"
,
trigger
:
"
blur
"
},
{
max
:
32
,
message
:
"
最多只能录入32个字符
"
,
trigger
:
"
blur
"
}
{
max
:
32
,
message
:
"
最多只能录入32个字符
"
,
trigger
:
"
blur
"
}
,
],
logoPath
:
[
{
required
:
true
,
message
:
"
请输入企业logo
"
,
trigger
:
"
blur
"
},
{
max
:
128
,
message
:
"
最多只能录入128个字符
"
,
trigger
:
"
blur
"
}
{
max
:
128
,
message
:
"
最多只能录入128个字符
"
,
trigger
:
"
blur
"
}
,
],
establishDate
:
[{
required
:
true
,
message
:
"
请选择成立日期
"
}],
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}]
}
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}]
,
}
,
};
},
methods
:
{
hanndleSubmit
(){
this
.
form
.
businessAdress
=
this
.
$refs
.
areaselect
.
provinceName
+
this
.
$refs
.
areaselect
.
cityName
+
this
.
$refs
.
areaselect
.
areaName
+
this
.
$refs
.
areaselect
.
streetName
+
this
.
$refs
.
areaselect
.
communityName
+
this
.
form
.
location
hanndleSubmit
()
{
this
.
form
.
businessAdress
=
this
.
$refs
.
areaselect
.
provinceName
+
this
.
$refs
.
areaselect
.
cityName
+
this
.
$refs
.
areaselect
.
areaName
+
this
.
$refs
.
areaselect
.
streetName
+
this
.
$refs
.
areaselect
.
communityName
+
this
.
form
.
location
;
// 检查知识产权list中类型不能为空
if
(
this
.
companyPatentsList
&&
this
.
companyPatentsList
.
length
>
0
)
{
let
isNull
=
false
this
.
companyPatentsList
.
forEach
((
item
)
=>
{
if
(
this
.
companyPatentsList
&&
this
.
companyPatentsList
.
length
>
0
)
{
let
isNull
=
false
;
this
.
companyPatentsList
.
forEach
((
item
)
=>
{
if
(
!
item
.
intellectPropertyType
)
{
isNull
=
true
isNull
=
true
;
}
})
if
(
isNull
)
{
this
.
$confirm
(
'
知识产权类型不能为空
'
,
'
提示
'
,
{
confirmButtonText
:
'
确定
'
,
type
:
'
warning
'
,
showCancelButton
:
false
,
//是否显示取消按钮
showClose
:
false
,
//是否显示关闭按钮
})
})
;
if
(
isNull
)
{
this
.
$confirm
(
"
知识产权类型不能为空
"
,
"
提示
"
,
{
confirmButtonText
:
"
确定
"
,
type
:
"
warning
"
,
showCancelButton
:
false
,
//是否显示取消按钮
showClose
:
false
,
//是否显示关闭按钮
})
;
return
;
}
}
this
.
submitForm
()
this
.
submitForm
()
;
},
addressSelect
(
val
)
{
console
.
log
(
"
addressSelect
"
,
val
);
...
...
@@ -293,7 +353,7 @@ export default {
handleDeleteCompanyPatents
(
row
)
{
// 由于有一些知识产权还没有id,所以这里删除选用的是字段中带的index
this
.
companyPatentsList
=
this
.
companyPatentsList
.
filter
(
item
=>
item
.
index
!==
row
.
index
(
item
)
=>
item
.
index
!==
row
.
index
);
this
.
form
.
companyPatentsList
=
this
.
companyPatentsList
;
},
...
...
@@ -311,7 +371,7 @@ export default {
beforeRender
(
data
)
{
if
(
data
.
entity
.
companyLabelsList
)
{
let
arr
=
[];
data
.
entity
.
companyLabelsList
.
forEach
(
item
=>
{
data
.
entity
.
companyLabelsList
.
forEach
(
(
item
)
=>
{
//如果相等做操作
item
[
"
labelId
"
]
=
item
[
"
labelId
"
]
+
""
;
arr
.
push
(
item
.
labelId
);
...
...
@@ -400,7 +460,7 @@ export default {
establishDate
:
null
,
remark
:
""
,
companyLabelsList
:
[],
companyPatentsList
:
[]
companyPatentsList
:
[]
,
};
this
.
resetForm
(
"
form
"
);
},
...
...
@@ -408,19 +468,19 @@ export default {
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
}
}
,
},
watch
:
{
companyLabelsList
(
newval
)
{
let
arr
=
[];
newval
.
forEach
(
item
=>
{
newval
.
forEach
(
(
item
)
=>
{
arr
.
push
({
labelId
:
item
labelId
:
item
,
});
});
this
.
form
.
companyLabelsList
=
arr
;
}
}
}
,
}
,
};
</
script
>
...
...
enterprise-manager-ui/admin/src/views/news/drawershow.vue
View file @
afaac2d9
<
template
>
<!-- 弹出框表单 -->
<el-drawer
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
:destroy-on-close=
"true"
size=
"100%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<div
class=
"form"
>
<div
class=
"formleft"
>
<Field
label=
"标题"
:span=
"24"
prop=
"title"
v-model=
"form.title"
placeholder=
"请输入标题"
/>
<Field
:span=
"24"
label=
"内容"
><editor
v-model=
"form.content"
:min-height=
"256"
/></Field>
</div>
<div
class=
"formright"
>
<el-row>
<Field
label=
"类型"
:span=
"20"
prop=
"categoryId"
v-model=
"form.categoryId"
type=
"radio"
:enum-data=
"dict.categoryId"
placeholder=
"请输入分类id"
/>
<Field
:span=
"20"
label=
"封面"
><imageUpload
v-model=
"form.titleLogoPath"
prePath=
"/file/preview"
/></Field>
<!-- 弹出框表单 -->
<el-drawer
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
:destroy-on-close=
"true"
size=
"100%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<div
class=
"form"
>
<div
class=
"formleft"
>
<Field
label=
"标题"
:span=
"24"
prop=
"title"
v-model=
"form.title"
placeholder=
"请输入标题"
/>
<Field
:span=
"24"
label=
"内容"
><editor
v-model=
"form.content"
:min-height=
"256"
/></Field>
</div>
<div
class=
"formright"
>
<el-row>
<Field
label=
"类型"
:span=
"20"
prop=
"categoryId"
v-model=
"form.categoryId"
type=
"radio"
:enum-data=
"dict.categoryId"
placeholder=
"请输入分类id"
/>
<Field
:span=
"20"
label=
"封面"
>
<imageUpload
v-model=
"form.titleLogoPath"
prePath=
"/file/preview"
:isList=
"true"
ref=
"imgList"
/>
</Field>
<Field
:span=
"20"
label=
"责任编辑"
prop=
"editor"
v-model=
"form.editor"
placeholder=
"请输入责任编辑"
/>
<Field
:span=
"20"
label=
"责任编辑"
prop=
"editor"
v-model=
"form.editor"
placeholder=
"请输入责任编辑"
/>
<Field
:span=
"20"
label=
"发布部门"
prop=
"deptId"
v-model=
"form.deptId"
type=
"select"
:enum-data=
"dict.deptId"
placeholder=
"请输入发布部门"
/>
<Field
:span=
"20"
label=
"发布部门"
prop=
"deptId"
v-model=
"form.deptId"
type=
"select"
:enum-data=
"dict.deptId"
placeholder=
"请输入发布部门"
/>
<Field
:span=
"20"
label=
"文章来源"
prop=
"source"
v-model=
"form.source"
placeholder=
"请输入文章来源"
/>
<Field
:span=
"20"
label=
"文章来源"
prop=
"source"
v-model=
"form.source"
placeholder=
"请输入文章来源"
/>
<Field
label=
"发布时间"
prop=
"publishTime"
v-model=
"form.publishTime"
type=
"date"
/>
<Field
label=
"发布时间"
prop=
"publishTime"
v-model=
"form.publishTime"
type=
"date"
/>
<Field
:span=
"20"
label=
"声明"
prop=
"statement"
v-model=
"form.statement"
type=
"textarea"
placeholder=
"请输入声明"
/>
</el-row>
</div>
</div>
<el-form-item
class=
"footerbtns"
>
<el-button
type=
"primary"
@
click=
'submitForm'
icon=
'el-icon-circle-check-outline'
>
发布
</el-button>
<el-button
@
click=
'()=>
{open = false}' icon='el-icon-circle-close-outline'>取消
</el-button>
</el-form-item>
</el-form>
</el-drawer>
<Field
:span=
"20"
label=
"声明"
prop=
"statement"
v-model=
"form.statement"
type=
"textarea"
placeholder=
"请输入声明"
/>
</el-row>
</div>
</div>
<el-form-item
class=
"footerbtns"
>
<el-button
type=
"primary"
@
click=
"submitForm"
icon=
"el-icon-circle-check-outline"
>
发布
</el-button
>
<el-button
@
click=
"
() =>
{
open = false;
}
"
icon="el-icon-circle-close-outline"
>取消
</el-button
>
</el-form-item>
</el-form>
</el-drawer>
</
template
>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
NewsDetail
"
,
mixins
:
[
form
],
components
:
{
},
created
()
{
this
.
changePath
(
"
news
"
)
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
新闻
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:[
"
top
"
,
"
viewNums
"
,
"
categoryId
"
],
toDate
:[
"
publishTime
"
,
],
// 表单校验
rules
:
{
categoryId
:
[
{
required
:
true
,
message
:
"
请选择频道类型
"
,
trigger
:
"
blur
"
},
],
title
:
[
{
required
:
true
,
message
:
"
请输入标题
"
,
trigger
:
"
blur
"
},
{
max
:
512
,
message
:
"
最多只能录入512个字符
"
,
trigger
:
"
blur
"
,},
],
titleLogoPath
:
[
{
required
:
true
,
message
:
"
请输入标题logo
"
,
trigger
:
"
blur
"
},
],
publishTime
:
[
{
required
:
true
,
message
:
"
请选择发布时间
"
},
]
}
};
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
news/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
this
.
title
=
"
修改新闻
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
()
this
.
urls
.
currUrl
=
"
news/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
this
.
title
=
"
新增新闻
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
news/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
this
.
title
=
"
新闻详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
open
=
true
;
},
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
NewsDetail
"
,
mixins
:
[
form
],
components
:
{},
created
()
{
this
.
changePath
(
"
news
"
);
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
新闻
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:
[
"
top
"
,
"
viewNums
"
,
"
categoryId
"
],
toDate
:
[
"
publishTime
"
],
// 表单校验
rules
:
{
categoryId
:
[
{
required
:
true
,
message
:
"
请选择频道类型
"
,
trigger
:
"
blur
"
},
],
title
:
[
{
required
:
true
,
message
:
"
请输入标题
"
,
trigger
:
"
blur
"
},
{
max
:
512
,
message
:
"
最多只能录入512个字符
"
,
trigger
:
"
blur
"
},
],
titleLogoPath
:
[
{
required
:
true
,
message
:
"
请输入标题logo
"
,
trigger
:
"
blur
"
},
],
publishTime
:
[{
required
:
true
,
message
:
"
请选择发布时间
"
}],
},
};
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
news/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改新闻
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
();
this
.
urls
.
currUrl
=
"
news/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增新闻
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
news/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
新闻详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
open
=
true
;
},
// 提交前数据处理
beforeSubmit
(
data
)
{
console
.
log
(
data
,
"
123
"
);
let
arr
=
[];
arr
=
this
.
$refs
.
imgList
.
imgList
.
map
((
v
)
=>
{
return
v
.
response
?
v
.
response
.
url
:
v
.
url
.
substr
(
v
.
url
.
indexOf
(
"
f
"
));
});
data
.
titleLogoPath
=
arr
.
join
(
"
,
"
);
return
data
;
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
// 表单重置
reset
()
{
this
.
form
=
{
categoryId
:
null
,
categoryName
:
""
,
title
:
""
,
titleLogoPath
:
""
,
content
:
""
,
top
:
0
,
viewNums
:
0
,
publishTime
:
null
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
// 表单重置
reset
()
{
this
.
form
=
{
categoryId
:
null
,
categoryName
:
""
,
title
:
""
,
titleLogoPath
:
""
,
content
:
""
,
top
:
0
,
viewNums
:
0
,
publishTime
:
null
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.footerbtns{
margin-top: 20px;
padding-top: 20px;
border-top: 1px solid gainsboro;
display: flex;
justify-content: center;
align-content: center;
.footerbtns
{
margin-top: 20px;
padding-top: 20px;
border-top: 1px solid gainsboro;
display: flex;
justify-content: center;
align-content: center;
}
.form{
display: flex;
width: 100%;
.formleft
{
flex:
1;
width: 60%;
height: calc(100vh - 200px);
overflow: auto;
}
.formright
{
width: 40%;
flex-shrink: 0;
flex-grow: 0;
}
.form
{
display: flex;
width: 100%;
.formleft
{
flex:
1;
width: 60%;
height: calc(100vh - 200px);
overflow: auto;
}
.formright
{
width: 40%;
flex-shrink: 0;
flex-grow: 0;
}
}
</
style
>
\ No newline at end of file
enterprise-manager-ui/admin/src/views/product/drawershow.vue
View file @
afaac2d9
<
template
>
<!-- 弹出框表单 -->
<el-drawer
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
:destroy-on-close=
"true"
size=
"90%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<div
class=
"form"
>
<div
class=
"formleft"
>
<el-row>
<Field
label=
"产品名称"
prop=
"productName"
v-model=
"form.productName"
placeholder=
"请输入产品名称,名称唯一"
/>
</el-row>
<el-row>
<Field
label=
"产品slogan"
prop=
"productSlogan"
v-model=
"form.productSlogan"
placeholder=
"请输入产品slogan"
/>
</el-row>
<el-row>
<Field
label=
"产品分类"
prop=
"categoryId"
v-model=
"form.categoryId"
:multiple=
"true"
type=
"select"
:enumData=
"dict.categoryId"
placeholder=
"请选择产品分类"
/>
<Field
label=
"所属企业"
prop=
"companyId"
v-model=
"form.companyId"
:multiple=
"true"
type=
"select"
:enumData=
"dict.companyId"
placeholder=
"请选择所属企业"
/>
<!-- 弹出框表单 -->
<el-drawer
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
:destroy-on-close=
"true"
size=
"90%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<div
class=
"form"
>
<div
class=
"formleft"
>
<el-row>
<Field
label=
"产品名称"
prop=
"productName"
v-model=
"form.productName"
placeholder=
"请输入产品名称,名称唯一"
/>
</el-row>
<el-row>
<Field
label=
"产品slogan"
>
<el-tag
:key=
"tag"
v-for=
"tag in dynamicTags"
closable
:disable-transitions=
"false"
@
close=
"handleClose(tag)"
>
{{
tag
}}
</el-tag>
<el-input
class=
"input-new-tag"
v-if=
"inputVisible"
v-model=
"inputValue"
ref=
"saveTagInput"
size=
"small"
@
keyup.enter.native=
"handleInputConfirm"
@
blur=
"handleInputConfirm"
>
</el-input>
<el-button
v-else
class=
"button-new-tag"
size=
"small"
@
click=
"showInput"
>
+ 新增 slogan
</el-button
>
</Field>
<!--
<Field
label=
"产品slogan"
prop=
"productSlogan"
v-model=
"form.productSlogan"
placeholder=
"请输入产品slogan"
/>
-->
</el-row>
<el-row>
<Field
label=
"产品分类"
prop=
"categoryId"
v-model=
"form.categoryId"
:multiple=
"false"
type=
"select"
:enumData=
"dict.categoryId"
placeholder=
"请选择产品分类"
/>
<Field
label=
"所属企业"
prop=
"companyId"
v-model=
"form.companyId"
:multiple=
"true"
type=
"select"
:enumData=
"dict.companyId"
placeholder=
"请选择所属企业"
/>
<!--
<Field
label=
"产品图标"
><imageUpload
v-model=
"form.productLogoPath"
prePath=
"/file/preview"
/></Field>
-->
</el-row>
<el-row>
<Field
label=
"产品封面图片"
prop=
"productFacePath"
><imageUpload
v-model=
"form.productFacePath"
prePath=
"/file/preview"
/>
</Field>
</el-row>
<!--
<el-row>
<Field
label=
"宣传形式"
type=
"checkbox"
:enumData=
"dict.propagandaList"
v-model=
"form.nowPropaganda"
@
change=
"changeNowprop"
></Field>
</el-row>
-->
<el-row>
<Field
label=
"轮播图"
>
<imageUpload
v-model=
"form.productPicPath"
prePath=
"/file/preview"
:isList=
"true"
ref=
"imgList"
/>
</Field>
</el-row>
<el-row>
<Field
label=
"短视频"
><fileUpload
v-model=
"form.productVideoPath"
:fileType=
"['mp4', 'avi']"
prePath=
"/file/fileupload"
/></Field>
</el-row>
<el-row>
<Field
label=
"产品简介"
prop=
"productIntroduction"
v-model=
"form.productIntroduction"
type=
"textarea"
placeholder=
"请输入产品简介"
/>
<!--
<Field
label=
"发布时间"
prop=
"publishTime"
v-model=
"form.publishTime"
type=
"date"
/>
-->
</el-row>
<el-row>
<Field
label=
"是否热门"
prop=
"hot"
v-model=
"form.hot"
type=
"radio"
:enumData=
"dict.hot"
placeholder=
"请选择是否热门"
/>
<!--
<Field
label=
"备注"
prop=
"productRemark"
v-model=
"form.productRemark"
type=
"textarea"
placeholder=
"请输入备注"
/>
-->
</el-row>
</div>
<!--
<Field
label=
"产品图标"
><imageUpload
v-model=
"form.productLogoPath"
prePath=
"/file/preview"
/></Field>
-->
</el-row>
<el-row>
<Field
label=
"产品封面图片"
prop=
"productFacePath"
><imageUpload
v-model=
"form.productFacePath"
prePath=
"/file/preview"
/>
</Field>
</el-row>
<el-row>
<Field
label=
"宣传形式"
type=
"radio"
:enumData=
"propagandaList"
v-model=
"nowPropaganda"
:field=
"nowPropaganda"
@
emit=
"changeNowprop"
></Field>
</el-row>
<el-row>
<Field
label=
"轮播图"
v-if=
"nowPropaganda==0"
><imageUpload
v-model=
"form.productPicPath"
prePath=
"/file/preview"
/></Field>
</el-row>
<el-row>
<Field
label=
"短视频"
v-if=
"nowPropaganda==1"
><fileUpload
v-model=
"form.productVideoPath"
:fileType=
"[ 'mp4', 'avi']"
prePath=
"/file/fileupload"
/></Field>
</el-row>
<el-row>
<Field
label=
"产品简介"
prop=
"productIntroduction"
v-model=
"form.productIntroduction"
type=
"textarea"
placeholder=
"请输入产品简介"
/>
<!--
<Field
label=
"发布时间"
prop=
"publishTime"
v-model=
"form.publishTime"
type=
"date"
/>
-->
</el-row>
<el-row>
<Field
label=
"是否热门"
prop=
"hot"
v-model=
"form.hot"
type=
"radio"
:enumData=
"dict.hot"
placeholder=
"请选择是否热门"
/>
<!--
<Field
label=
"备注"
prop=
"productRemark"
v-model=
"form.productRemark"
type=
"textarea"
placeholder=
"请输入备注"
/>
-->
</el-row>
</div>
<div
class=
"formright"
>
<div
class=
"tabs"
>
<div
class=
"tab"
:class=
"nowtab==1?'activetab':''"
@
click=
"changeTab(1)"
>
产品详情
</div>
<div
class=
"tab"
:class=
"nowtab==2?'activetab':''"
@
click=
"changeTab(2)"
>
常见问题
</div>
</div>
<div
class=
"content"
v-show=
"nowtab==1"
>
<editor
v-model=
"form.productDetail"
:min-height=
"100"
/>
</div>
<div
class=
"content"
v-show=
"nowtab==2"
>
<el-table
:data=
"productQuestionList"
:row-class-name=
"rowProductQuestionIndex"
@
selection-change=
"handleProductQuestionSelectionChange"
ref=
"productQuestion"
>
<el-table-column
label=
"序号"
align=
"center"
prop=
"index"
width=
"50"
/>
<el-table-column
label=
"问题"
prop=
"question"
>
<template
slot-scope=
"scope"
>
<el-input
v-model=
"scope.row.question"
placeholder=
"请输入问题"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"常见问题回答"
prop=
"answer"
>
<
template
slot-scope=
"scope"
>
<el-input
v-model=
"scope.row.answer"
placeholder=
"请输入常见问题回答"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
width=
"240"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<Confirm
@
confirm=
"handleDeleteCompanyPatents(scope.row)"
message=
"确定要删除该条知识产权吗?"
>
<div
class=
"del"
>
删除
</div>
</Confirm>
</
template
>
</el-table-column>
</el-table>
<el-row
style=
"margin:10px 0;display: flex;justify-content: center;"
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
icon=
"el-icon-plus"
@
click=
"handleAddProductQuestion"
>
新增常见问题
</el-button>
</el-col>
</el-row>
</div>
</div>
<div
class=
"formright"
>
<div
class=
"tabs"
>
<div
class=
"tab"
:class=
"nowtab == 1 ? 'activetab' : ''"
@
click=
"changeTab(1)"
>
产品详情
</div>
<div
class=
"tab"
:class=
"nowtab == 2 ? 'activetab' : ''"
@
click=
"changeTab(2)"
>
常见问题
</div>
<!-- 保存按钮 -->
<form-buttons
@
submit=
'onSubmitForm'
@
cancel=
'cancelForm'
v-if=
"pageInfo.type!='view'"
class=
"formbtns"
/>
</el-form>
</div>
<div
class=
"content"
v-show=
"nowtab == 1"
>
<editor
v-model=
"form.productDetail"
:min-height=
"100"
/>
</div>
<div
class=
"content"
v-show=
"nowtab == 2"
>
<el-table
:data=
"productQuestionList"
:row-class-name=
"rowProductQuestionIndex"
@
selection-change=
"handleProductQuestionSelectionChange"
ref=
"productQuestion"
>
<el-table-column
label=
"序号"
align=
"center"
prop=
"index"
width=
"50"
/>
<el-table-column
label=
"问题"
prop=
"question"
>
<template
slot-scope=
"scope"
>
<el-input
v-model=
"scope.row.question"
placeholder=
"请输入问题"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"常见问题回答"
prop=
"answer"
>
<
template
slot-scope=
"scope"
>
<el-input
v-model=
"scope.row.answer"
placeholder=
"请输入常见问题回答"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
width=
"240"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<Confirm
@
confirm=
"handleDeleteCompanyPatents(scope.row)"
message=
"确定要删除该条知识产权吗?"
>
<div
class=
"del"
>
删除
</div>
</Confirm>
</
template
>
</el-table-column>
</el-table>
<el-row
style=
"margin: 10px 0; display: flex; justify-content: center"
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
icon=
"el-icon-plus"
@
click=
"handleAddProductQuestion"
>
新增常见问题
</el-button
>
</el-col>
</el-row>
</div>
</div>
</div>
</el-drawer>
<!-- 保存按钮 -->
<form-buttons
@
submit=
"onSubmitForm"
@
cancel=
"cancelForm"
v-if=
"pageInfo.type != 'view'"
class=
"formbtns"
/>
</el-form>
</el-drawer>
</template>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
ProductDetail
"
,
mixins
:
[
form
],
components
:
{
},
created
()
{
this
.
changePath
(
"
product
"
)
},
data
()
{
return
{
propagandaList
:[
'
轮播图
'
,
'
短视频
'
],
// 当前宣传形式
nowPropaganda
:
0
,
nowtab
:
1
,
// 子表选中数据
checkedProductQuestion
:
[],
// 产品常见问题表格数据
productQuestionList
:
[],
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
产品
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:[
"
hot
"
,
],
toArrays
:[
"
companyId
"
,
"
categoryId
"
],
toDate
:[
"
publishTime
"
,
],
// 表单校验
rules
:
{
productName
:
[
{
required
:
true
,
message
:
"
请输入产品名称,名称唯一
"
,
trigger
:
"
blur
"
},
{
max
:
20
,
message
:
"
最多只能录入20个字符
"
,
trigger
:
"
blur
"
,},
],
productSlogan
:
[
{
required
:
true
,
message
:
"
请输入产品slogan
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
,},
],
productLogoPath
:
[
{
required
:
true
,
message
:
"
请输入产品图标
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
,},
],
productFacePath
:
[
{
required
:
true
,
message
:
"
请输入产品封面图片
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
,},
],
publishTime
:
[
{
required
:
true
,
message
:
"
请选择发布时间
"
},
],
createTime
:
[
{
required
:
true
,
message
:
"
请选择创建时间
"
},
],
}
};
},
methods
:
{
// 重写提交表单
onSubmitForm
(){
// 由于宣传形式修改,只能存在一种,所以当选中一种时另外一种清空
if
(
this
.
nowPropaganda
===
0
){
// 选中轮播图
this
.
form
.
productVideoPath
=
''
}
else
{
// 选中短视频
this
.
form
.
productPicPath
=
''
}
// 检查常见问题list中问题不能为空
if
(
this
.
productQuestionList
&&
this
.
productQuestionList
.
length
>
0
){
let
isNull
=
false
this
.
productQuestionList
.
forEach
((
item
)
=>
{
if
(
!
item
.
question
)
{
isNull
=
true
}
})
if
(
isNull
){
this
.
$confirm
(
'
常见问题项的问题标题不能为空
'
,
'
提示
'
,
{
confirmButtonText
:
'
确定
'
,
type
:
'
warning
'
,
showCancelButton
:
false
,
//是否显示取消按钮
showClose
:
false
,
//是否显示关闭按钮
})
return
;
}
}
this
.
submitForm
()
},
// 修改宣传形式
changeNowprop
(
val
){
this
.
nowPropaganda
=
val
},
// 问题删除
handleDeleteCompanyPatents
(
row
)
{
console
.
log
(
row
);
// 由于有一些知识产权还没有id,所以这里删除选用的是字段中带的index
this
.
productQuestionList
=
this
.
productQuestionList
.
filter
(
item
=>
item
.
index
!==
row
.
index
);
this
.
form
.
productQuestionList
=
this
.
productQuestionList
;
},
cancelForm
(){
this
.
open
=
false
},
changeTab
(
nowtab
){
this
.
nowtab
=
nowtab
this
.
$forceUpdate
()
},
/** 产品常见问题序号 */
rowProductQuestionIndex
({
row
,
rowIndex
})
{
row
.
index
=
rowIndex
+
1
;
},
/** 产品常见问题添加按钮操作 */
handleAddProductQuestion
()
{
let
obj
=
{};
obj
.
productName
=
""
;
obj
.
question
=
""
;
obj
.
answer
=
""
;
obj
.
createTime
=
""
;
obj
.
createUserId
=
""
;
obj
.
updateTime
=
""
;
this
.
productQuestionList
.
push
(
obj
);
},
/** 产品常见问题删除按钮操作 */
handleDeleteProductQuestion
()
{
if
(
this
.
checkedProductQuestion
.
length
==
0
)
{
this
.
$alert
(
"
请先选择要删除的产品常见问题数据
"
,
"
提示
"
,
{
confirmButtonText
:
"
确定
"
,
});
}
else
{
this
.
productQuestionList
.
splice
(
this
.
checkedProductQuestion
[
0
].
index
-
1
,
1
);
}
},
/** 单选框选中数据 */
handleProductQuestionSelectionChange
(
selection
)
{
if
(
selection
.
length
>
1
)
{
this
.
$refs
.
productQuestion
.
clearSelection
();
this
.
$refs
.
productQuestion
.
toggleRowSelection
(
selection
.
pop
());
}
else
{
this
.
checkedProductQuestion
=
selection
;
}
},
// 渲染前置处理
beforeRender
(
data
)
{
if
(
data
.
entity
.
productQuestionList
)
{
this
.
productQuestionList
=
data
.
entity
.
productQuestionList
;
}
// 判断有无短视频,如果有短视频那么更改为短视频选项
if
(
data
.
entity
.
productVideoPath
){
this
.
nowPropaganda
=
1
}
else
{
this
.
nowPropaganda
=
0
}
return
data
},
/** 编辑 */
edit
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
product/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
this
.
title
=
"
修改产品
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
()
this
.
urls
.
currUrl
=
"
product/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
this
.
title
=
"
新增产品
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
product/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
this
.
title
=
"
产品详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
open
=
true
;
},
beforeSubmit
(
data
)
{
data
.
categoryId
=
data
.
categoryId
.
join
(
"
,
"
)
data
.
companyId
=
data
.
companyId
.
join
(
"
,
"
)
return
data
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
ProductDetail
"
,
mixins
:
[
form
],
components
:
{},
created
()
{
this
.
changePath
(
"
product
"
);
},
data
()
{
return
{
dynamicTags
:
[],
inputVisible
:
false
,
inputValue
:
""
,
propagandaList
:
{
1
:
"
轮播图
"
,
2
:
"
短视频
"
},
// 当前宣传形式
nowPropaganda
:
[],
nowtab
:
1
,
// 子表选中数据
checkedProductQuestion
:
[],
// 产品常见问题表格数据
productQuestionList
:
[],
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
产品
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:
[
"
hot
"
],
toArrays
:
[
"
companyId
"
],
toDate
:
[
"
publishTime
"
],
// 表单校验
rules
:
{
productName
:
[
{
required
:
true
,
message
:
"
请输入产品名称,名称唯一
"
,
trigger
:
"
blur
"
,
},
{
max
:
20
,
message
:
"
最多只能录入20个字符
"
,
trigger
:
"
blur
"
},
],
productSlogan
:
[
{
required
:
true
,
message
:
"
请输入产品slogan
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
],
productLogoPath
:
[
{
required
:
true
,
message
:
"
请输入产品图标
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
],
productFacePath
:
[
{
required
:
true
,
message
:
"
请输入产品封面图片
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
],
publishTime
:
[{
required
:
true
,
message
:
"
请选择发布时间
"
}],
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
},
};
},
methods
:
{
// 删除slogan标签
handleClose
(
tag
)
{
this
.
dynamicTags
.
splice
(
this
.
dynamicTags
.
indexOf
(
tag
),
1
);
},
// 展示标签输入框
showInput
()
{
this
.
inputVisible
=
true
;
this
.
$nextTick
((
_
)
=>
{
this
.
$refs
.
saveTagInput
.
$refs
.
input
.
focus
();
});
},
// 确认标签输入框内容
handleInputConfirm
()
{
let
inputValue
=
this
.
inputValue
;
if
(
inputValue
)
{
this
.
dynamicTags
.
push
(
inputValue
);
}
this
.
inputVisible
=
false
;
this
.
inputValue
=
""
;
},
// 重写提交表单
onSubmitForm
()
{
console
.
log
(
this
.
form
);
console
.
log
(
this
.
$refs
.
imgList
.
imgList
);
let
arr
=
[];
arr
=
this
.
$refs
.
imgList
.
imgList
.
map
((
v
)
=>
{
return
v
.
response
?
v
.
response
.
url
:
v
.
url
.
substr
(
v
.
url
.
indexOf
(
"
f
"
));
});
this
.
form
.
productPicPath
=
arr
.
join
(
"
,
"
);
// // 由于宣传形式修改,只能存在一种,所以当选中一种时另外一种清空
// if (this.nowPropaganda === 0) {
// // 选中轮播图
// this.form.productVideoPath = "";
// } else {
// // 选中短视频
// this.form.productPicPath = "";
// }
// 检查常见问题list中问题不能为空
if
(
this
.
productQuestionList
&&
this
.
productQuestionList
.
length
>
0
)
{
let
isNull
=
false
;
this
.
productQuestionList
.
forEach
((
item
)
=>
{
if
(
!
item
.
question
)
{
isNull
=
true
;
}
});
if
(
isNull
)
{
this
.
$confirm
(
"
常见问题项的问题标题不能为空
"
,
"
提示
"
,
{
confirmButtonText
:
"
确定
"
,
type
:
"
warning
"
,
showCancelButton
:
false
,
//是否显示取消按钮
showClose
:
false
,
//是否显示关闭按钮
});
return
;
}
}
this
.
submitForm
();
},
// 修改宣传形式
changeNowprop
(
val
)
{
this
.
form
.
nowPropaganda
=
val
;
this
.
$forceUpdate
(
this
.
form
);
},
// 问题删除
handleDeleteCompanyPatents
(
row
)
{
console
.
log
(
row
);
// 由于有一些知识产权还没有id,所以这里删除选用的是字段中带的index
this
.
productQuestionList
=
this
.
productQuestionList
.
filter
(
(
item
)
=>
item
.
index
!==
row
.
index
);
this
.
form
.
productQuestionList
=
this
.
productQuestionList
;
},
cancelForm
()
{
this
.
open
=
false
;
},
changeTab
(
nowtab
)
{
this
.
nowtab
=
nowtab
;
this
.
$forceUpdate
();
},
/** 产品常见问题序号 */
rowProductQuestionIndex
({
row
,
rowIndex
})
{
row
.
index
=
rowIndex
+
1
;
},
/** 产品常见问题添加按钮操作 */
handleAddProductQuestion
()
{
let
obj
=
{};
obj
.
productName
=
""
;
obj
.
question
=
""
;
obj
.
answer
=
""
;
obj
.
createTime
=
""
;
obj
.
createUserId
=
""
;
obj
.
updateTime
=
""
;
this
.
productQuestionList
.
push
(
obj
);
},
/** 产品常见问题删除按钮操作 */
handleDeleteProductQuestion
()
{
if
(
this
.
checkedProductQuestion
.
length
==
0
)
{
this
.
$alert
(
"
请先选择要删除的产品常见问题数据
"
,
"
提示
"
,
{
confirmButtonText
:
"
确定
"
,
});
}
else
{
this
.
productQuestionList
.
splice
(
this
.
checkedProductQuestion
[
0
].
index
-
1
,
1
);
}
},
/** 单选框选中数据 */
handleProductQuestionSelectionChange
(
selection
)
{
if
(
selection
.
length
>
1
)
{
this
.
$refs
.
productQuestion
.
clearSelection
();
this
.
$refs
.
productQuestion
.
toggleRowSelection
(
selection
.
pop
());
}
else
{
this
.
checkedProductQuestion
=
selection
;
}
},
// 渲染前置处理
beforeRender
(
data
)
{
if
(
data
.
entity
.
productQuestionList
)
{
this
.
productQuestionList
=
data
.
entity
.
productQuestionList
;
}
// 判断有无短视频,如果有短视频那么更改为短视频选项
// if (data.entity.productVideoPath) {
// this.nowPropaganda = 1;
// } else {
// this.nowPropaganda = 0;
// }
data
.
entity
.
categoryId
?
(
data
.
entity
.
categoryId
=
String
(
data
.
entity
.
categoryId
))
:
""
;
data
.
entity
.
productSlogan
&&
data
.
entity
.
productSlogan
!=
""
?
(
this
.
dynamicTags
=
data
.
entity
.
productSlogan
.
split
(
"
,
"
))
:
""
;
return
data
;
},
/** 编辑 */
edit
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
product/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改产品
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
();
this
.
urls
.
currUrl
=
"
product/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增产品
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
product/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
产品详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
open
=
true
;
this
.
dict
.
propagandaList
=
{
1
:
"
轮播图
"
,
2
:
"
短视频
"
};
this
.
form
.
nowPropaganda
=
[];
this
.
$forceUpdate
(
this
.
dict
);
this
.
$forceUpdate
(
this
.
form
);
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
beforeSubmit
(
data
)
{
// data.categoryId = data.categoryId.join(",");
data
.
companyId
=
data
.
companyId
.
join
(
"
,
"
);
this
.
dynamicTags
&&
this
.
dynamicTags
.
length
>
0
?
(
data
.
productSlogan
=
this
.
dynamicTags
.
join
(
"
,
"
))
:
(
data
.
productSlogan
=
""
);
return
data
;
},
// 表单重置
reset
()
{
this
.
form
=
{
productName
:
""
,
productCode
:
""
,
productSlogan
:
""
,
productLogoPath
:
""
,
productFacePath
:
""
,
productVideoPath
:
""
,
productPicPath
:
""
,
productIntroduction
:
""
,
productDetail
:
""
,
publishTime
:
null
,
hot
:
0
,
productRemark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
// 表单重置
reset
()
{
this
.
form
=
{
productName
:
""
,
productCode
:
""
,
productSlogan
:
""
,
productLogoPath
:
""
,
productFacePath
:
""
,
productVideoPath
:
""
,
productPicPath
:
""
,
productIntroduction
:
""
,
productDetail
:
""
,
publishTime
:
null
,
hot
:
0
,
productRemark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
/deep/.el-tag + .el-tag {
margin-left: 10px;
}
/deep/.button-new-tag {
margin-left: 10px;
height: 32px;
line-height: 30px;
padding-top: 0;
padding-bottom: 0;
}
.input-new-tag {
width: 90px;
margin-left: 10px;
vertical-align: bottom;
}
.del {
color: red;
}
...
...
@@ -343,43 +526,43 @@
padding-right: 30px;
border-top: 1px solid #dcdcdc;
}
.tabs{
background: #dcdcdc59;
height: 50px;
display: flex;
padding-left: 10px;
.tab
{
height: 100%;
line-height: 50px;
padding: 0 20px;
width: 120px;
align-items: center;
// display: flex;
// justify-content: center;
// align-content: center;
}
.activetab
{
background: white;
}
.tabs
{
background: #dcdcdc59;
height: 50px;
display: flex;
padding-left: 10px;
.tab
{
height: 100%;
line-height: 50px;
padding: 0 20px;
width: 120px;
align-items: center;
// display: flex;
// justify-content: center;
// align-content: center;
}
.activetab
{
background: white;
}
}
.form{
display: flex;
.formleft{
width: 600px;
border-right: 1px solid gainsboro;
flex-shrink: 0;
flex-grow: 0;
}
.el-col-12{
width: 96% !important;
}
.formright{
margin-left: 10px;
width: 100%;
.content{
margin-top: 10px;
width: 100%;
}
.form {
display: flex;
.formleft {
width: 600px;
border-right: 1px solid gainsboro;
flex-shrink: 0;
flex-grow: 0;
}
.el-col-12 {
width: 96% !important;
}
.formright {
margin-left: 10px;
width: 100%;
.content {
margin-top: 10px;
width: 100%;
}
}
}
</
style
>
\ No newline at end of file
enterprise-manager-ui/admin/src/views/product/list.vue
View file @
afaac2d9
<
template
>
<div
class=
"page"
>
<LayoutTable
ref=
"layouttable"
:data=
"tableData"
:config=
"tableConfig"
notDel
>
<!-- 热门0为非热门1为热门 -->
<div
slot=
"table-search-left"
class=
"onlyhot"
>
<el-checkbox
:key=
"0"
v-model=
"ishot"
:checked=
"ishot"
@
change=
"changeIshot"
>
</el-checkbox>
只看热门
</div>
</LayoutTable>
<div
class=
"page"
>
<LayoutTable
ref=
"layouttable"
:data=
"tableData"
:config=
"tableConfig"
notDel
>
<!-- 热门0为非热门1为热门 -->
<div
slot=
"table-search-left"
class=
"onlyhot"
>
<el-checkbox
:key=
"0"
v-model=
"ishot"
:checked=
"ishot"
@
change=
"changeIshot"
>
</el-checkbox>
只看热门
</div>
</LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
</
template
>
<
script
>
/** 表单弹出框模式需引入 */
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
ProductList
"
,
components
:
{
drawerShow
},
mixins
:
[
table
],
mounted
()
{
// 重写查询
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
onSubmit
=
this
.
onSearch
// 重写搜索清除
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
cleanForm
=
this
.
cleanForm
},
methods
:
{
renderTable
(
tableData
)
{
return
(
<
el
-
table
stripe
data
=
{
tableData
}
class
=
"
total-table
"
>
{
this
.
columnSet
.
map
((
item
)
=>
this
.
renderTableColumn
(
item
))}
<
/el-table
>
);
},
renderTableColumn
(
options
)
{
return
(
<
el
-
table
-
column
prop
=
{
options
.
prop
}
label
=
{
options
.
label
}
width
=
{
options
.
width
}
formatter
=
{
options
.
formatter
}
>
<
/el-table-column
>
);
},
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
drawerform
.
add
(
row
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
drawerform
.
edit
(
row
);
},
/** 重写查看方法 */
toView
(
row
)
{
this
.
$refs
.
drawerform
.
view
(
row
);
},
// 重写查询
onSearch
(){
if
(
this
.
ishot
){
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
form
=
Object
.
assign
({},
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
form
,
{
hot
:
1
})
}
let
{
path
,
query
}
=
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
$route
;
let
data
=
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
decode
(
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
form
);
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
$router
.
push
({
path
:
path
,
query
:
Object
.
assign
({},
query
,
data
),
});
},
// 重写搜索清除
cleanForm
(){
this
.
ishot
=
false
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
form
.
hot
=
undefined
this
.
$forceUpdate
()
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
clean
();
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
onSubmit
();
},
changeIshot
(
val
){
this
.
ishot
=
val
}
},
data
()
{
return
{
ishot
:
false
,
config
:
{
search
:
[
{
name
:
"
categoryId
"
,
type
:
"
select
"
,
placeholder
:
"
请选择产品分类
"
,
label
:
"
产品分类
"
},
{
name
:
"
companyId
"
,
type
:
"
select
"
,
placeholder
:
"
请选择所属企业
"
,
label
:
"
所属企业
"
},
{
name
:
"
productName
"
,
type
:
"
text
"
,
label
:
"
产品名称
"
,
fuzzy
:
true
,
},
],
columns
:
[
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
/** 表单弹出框模式需引入 */
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
ProductList
"
,
components
:
{
drawerShow
,
},
mixins
:
[
table
],
mounted
()
{
// 重写查询
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
onSubmit
=
this
.
onSearch
;
// 重写搜索清除
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
cleanForm
=
this
.
cleanForm
;
},
methods
:
{
renderTable
(
tableData
)
{
return
(
<
el
-
table
stripe
data
=
{
tableData
}
class
=
"
total-table
"
>
{
this
.
columnSet
.
map
((
item
)
=>
this
.
renderTableColumn
(
item
))}
<
/el-table
>
);
},
renderTableColumn
(
options
)
{
return
(
<
el
-
table
-
column
prop
=
{
options
.
prop
}
label
=
{
options
.
label
}
width
=
{
options
.
width
}
formatter
=
{
options
.
formatter
}
><
/el-table-column
>
);
},
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
drawerform
.
add
(
row
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
drawerform
.
edit
(
row
);
},
/** 重写查看方法 */
toView
(
row
)
{
this
.
$refs
.
drawerform
.
view
(
row
);
},
// 重写查询
onSearch
()
{
if
(
this
.
ishot
)
{
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
form
=
Object
.
assign
(
{},
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
form
,
{
hot
:
1
}
);
}
let
{
path
,
query
}
=
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
$route
;
let
data
=
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
decode
(
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
form
);
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
$router
.
push
({
path
:
path
,
query
:
Object
.
assign
({},
query
,
data
),
});
},
// 重写搜索清除
cleanForm
()
{
this
.
ishot
=
false
;
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
form
.
hot
=
undefined
;
this
.
$forceUpdate
();
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
clean
();
this
.
$refs
.
layouttable
.
$refs
.
searchform
.
onSubmit
();
},
changeIshot
(
val
)
{
this
.
ishot
=
val
;
},
},
data
()
{
return
{
ishot
:
false
,
config
:
{
search
:
[
{
name
:
"
categoryId
"
,
type
:
"
select
"
,
placeholder
:
"
请选择产品分类
"
,
label
:
"
产品分类
"
,
},
{
name
:
"
companyId
"
,
type
:
"
select
"
,
placeholder
:
"
请选择所属企业
"
,
label
:
"
所属企业
"
,
},
{
name
:
"
productName
"
,
type
:
"
text
"
,
label
:
"
产品名称
"
,
fuzzy
:
true
,
},
],
columns
:
[
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
产品名称
"
,
prop
:
"
productName
"
},
{
label
:
"
产品名称
"
,
prop
:
"
productName
"
},
{
label
:
"
产品分类
"
,
prop
:
"
categoryId
"
,
formatter
:
this
.
formatters
},
{
label
:
"
产品分类
"
,
prop
:
"
categoryId
"
,
formatter
:
this
.
formatters
},
{
label
:
"
所属企业
"
,
prop
:
"
companyId
"
,
formatter
:
this
.
formatters
},
{
label
:
"
所属企业
"
,
prop
:
"
companyId
"
,
formatter
:
this
.
formatters
},
{
label
:
"
产品介绍
"
,
prop
:
"
productIntroduction
"
,
width
:
500
,
formatter
:
this
.
formatters
},
{
label
:
"
产品介绍
"
,
prop
:
"
productIntroduction
"
,
width
:
500
,
formatter
:
this
.
formatters
,
},
{
label
:
"
发布时间
"
,
prop
:
"
publishTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
发布时间
"
,
prop
:
"
publishTime
"
,
formatter
:
this
.
formatterDate
,
},
{
label
:
"
热门
"
,
prop
:
"
hot
"
,
formatter
:
this
.
formatterYES
,
width
:
50
},
{
label
:
"
热门
"
,
prop
:
"
hot
"
,
formatter
:
this
.
formatterYES
,
width
:
50
,
},
{
label
:
"
最近更新时间
"
,
prop
:
"
updateTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
最近更新时间
"
,
prop
:
"
updateTime
"
,
formatter
:
this
.
formatterDate
,
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
return
(
<
table
-
buttons
noAdd
noView
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
}
]
}
};
}
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
(
row
)
=>
{
return
(
<
table
-
buttons
noAdd
noView
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
},
},
],
},
};
},
};
</
script
>
<
style
lang=
"less"
>
.table-form{
display: flex
;
.table-form
{
display: flex
;
}
.onlyhot{
margin-right: 20px;
line-height: 30px;
font-size: 14px;
color: #333333;
.onlyhot
{
margin-right: 20px;
line-height: 30px;
font-size: 14px;
color: #333333;
}
</
style
>
\ 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