门户网站功能完善:包括门户网站配置、门户网站配置类型、产品信息配置和案例内容
master
xs 2 weeks ago
parent e82d993dd7
commit db180ca6de

@ -103,7 +103,7 @@ public class HwPortalConfigController extends BaseController
/**
*
*
*/
@RequiresPermissions("portal:portalConfig:list")
@GetMapping("/portalConfigTypeTree")

@ -7,7 +7,9 @@ import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.portal.domain.HwPortalConfigType;
import com.ruoyi.portal.domain.HwProductCaseInfo;
import com.ruoyi.portal.service.IHwPortalConfigTypeService;
import com.ruoyi.portal.service.IHwProductCaseInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -28,6 +30,9 @@ public class HwProductCaseInfoController extends BaseController
@Autowired
private IHwProductCaseInfoService hwProductCaseInfoService;
@Autowired
private IHwPortalConfigTypeService hwPortalConfigTypeService;
/**
*
*/
@ -95,4 +100,18 @@ public class HwProductCaseInfoController extends BaseController
{
return toAjax(hwProductCaseInfoService.deleteHwProductCaseInfoByCaseInfoIds(caseInfoIds));
}
/**
* s
*/
/**
*
*/
@RequiresPermissions("portal:productCaseInfo:list")
@GetMapping("/portalConfigTypeTree")
public AjaxResult portalConfigTypeTree(HwPortalConfigType hwPortalConfigType) {
return success(hwPortalConfigTypeService.selectPortalConfigTypeTreeList(hwPortalConfigType));
}
}

@ -7,7 +7,9 @@ import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.portal.domain.HwPortalConfigType;
import com.ruoyi.portal.domain.HwProductInfo;
import com.ruoyi.portal.service.IHwPortalConfigTypeService;
import com.ruoyi.portal.service.IHwProductInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -28,6 +30,10 @@ public class HwProductInfoController extends BaseController
@Autowired
private IHwProductInfoService hwProductInfoService;
@Autowired
private IHwPortalConfigTypeService hwPortalConfigTypeService;
/**
*
*/
@ -36,7 +42,7 @@ public class HwProductInfoController extends BaseController
public TableDataInfo list(HwProductInfo hwProductInfo)
{
startPage();
List<HwProductInfo> list = hwProductInfoService.selectHwProductInfoList(hwProductInfo);
List<HwProductInfo> list = hwProductInfoService.selectHwProductInfoJoinList(hwProductInfo);
return getDataTable(list);
}
@ -95,4 +101,18 @@ public class HwProductInfoController extends BaseController
{
return toAjax(hwProductInfoService.deleteHwProductInfoByProductInfoIds(productInfoIds));
}
/**
* s
*/
/**
*
*/
@RequiresPermissions("portal:productInfo:list")
@GetMapping("/portalConfigTypeTree")
public AjaxResult portalConfigTypeTree(HwPortalConfigType hwPortalConfigType) {
return success(hwPortalConfigTypeService.selectPortalConfigTypeTreeList(hwPortalConfigType));
}
}

@ -49,6 +49,7 @@ public class HwProductInfo extends BaseEntity
private Long parentId;
private String configTypeName;
public void setProductInfoId(Long productInfoId)
{
this.productInfoId = productInfoId;
@ -131,6 +132,14 @@ public class HwProductInfo extends BaseEntity
this.parentId = parentId;
}
public String getConfigTypeName() {
return configTypeName;
}
public void setConfigTypeName(String configTypeName) {
this.configTypeName = configTypeName;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

@ -59,4 +59,6 @@ public interface HwPortalConfigTypeMapper
* @return
*/
public int deleteHwPortalConfigTypeByConfigTypeIds(Long[] configTypeIds);
}

@ -59,4 +59,12 @@ public interface HwProductCaseInfoMapper
* @return
*/
public int deleteHwProductCaseInfoByCaseInfoIds(Long[] caseInfoIds);
/**
* ,Join portalConfigType
*
* @param hwProductCaseInfo
* @return
*/
public List<HwProductCaseInfo> selectHwProductCaseInfoJoinList(HwProductCaseInfo hwProductCaseInfo);
}

@ -68,4 +68,12 @@ public interface HwProductInfoMapper
*/
public List<HwProductInfo> selectHwProductInfoJoinDetailList(HwProductInfo hwProductInfo);
/**
* ,join portalConfigType
*
* @param hwProductInfo
* @return
*/
public List<HwProductInfo> selectHwProductInfoJoinList(HwProductInfo hwProductInfo);
}

@ -66,4 +66,12 @@ public interface IHwProductCaseInfoService
* @return
*/
public HwProductCaseInfo getTypicalHomeCaseInfo(HwProductCaseInfo hwProductCaseInfo);
/**
* ,join portalConfigType
*
* @param hwProductCaseInfo
* @return
*/
public List<HwProductCaseInfo> selectHwProductCaseInfoJoinList(HwProductCaseInfo hwProductCaseInfo);
}

@ -67,4 +67,12 @@ public interface IHwProductInfoService
* @return
*/
public List<HwProductInfo> selectHwProductInfoJoinDetailList(HwProductInfo hwProductInfo);
/**
* ,join portalConfigType
*
* @param hwProductInfo
* @return
*/
public List<HwProductInfo> selectHwProductInfoJoinList(HwProductInfo hwProductInfo);
}

@ -125,7 +125,6 @@ public class HwPortalConfigTypeServiceImpl implements IHwPortalConfigTypeService
@Override
public List<TreeSelect> selectPortalConfigTypeTreeList(HwPortalConfigType portalConfigType) {
List<HwPortalConfigType> portalConfigTypes = this.selectHwPortalConfigTypeList(portalConfigType);
System.out.println("1");
return buildPortalConfigTypeTreeSelect(portalConfigTypes);
}

@ -113,4 +113,17 @@ public class HwProductCaseInfoServiceImpl implements IHwProductCaseInfoService
}
return new HwProductCaseInfo();
}
/**
* ,join portalConfigType
*
* @param hwProductCaseInfo
* @return
*/
@Override
public List<HwProductCaseInfo> selectHwProductCaseInfoJoinList(HwProductCaseInfo hwProductCaseInfo)
{
return hwProductCaseInfoMapper.selectHwProductCaseInfoJoinList(hwProductCaseInfo);
}
}

@ -1,6 +1,8 @@
package com.ruoyi.portal.service.impl;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.portal.domain.HwPortalConfigType;
import com.ruoyi.portal.domain.HwProductInfoDetail;
import com.ruoyi.portal.mapper.HwProductInfoDetailMapper;
import com.ruoyi.portal.service.IHwProductInfoDetailService;
@ -54,7 +56,18 @@ public class HwProductInfoDetailServiceImpl implements IHwProductInfoDetailServi
@Override
public int insertHwProductInfoDetail(HwProductInfoDetail hwProductInfoDetail)
{
if (hwProductInfoDetail.getParentId() == null) {
hwProductInfoDetail.setParentId(0L);
hwProductInfoDetail.setAncestors("0");
} else {
HwProductInfoDetail info = hwProductInfoDetailMapper.selectHwProductInfoDetailByProductInfoDetailId(hwProductInfoDetail.getParentId());
hwProductInfoDetail.setAncestors(info.getAncestors() + "," + hwProductInfoDetail.getParentId());
}
hwProductInfoDetail.setCreateTime(DateUtils.getNowDate());
hwProductInfoDetail.setCreateBy(SecurityUtils.getUsername());
return hwProductInfoDetailMapper.insertHwProductInfoDetail(hwProductInfoDetail);
}

@ -176,4 +176,17 @@ public class HwProductInfoServiceImpl implements IHwProductInfoService
private boolean hasChild(List<HwProductInfoDetail> list, HwProductInfoDetail t) {
return getChildList(list, t).size() > 0 ? true : false;
}
/**
* ,join portalConfigType
*
* @param hwProductInfo
* @return
*/
@Override
public List<HwProductInfo> selectHwProductInfoJoinList(HwProductInfo hwProductInfo)
{
return hwProductInfoMapper.selectHwProductInfoJoinList(hwProductInfo);
}
}

@ -102,4 +102,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{caseInfoId}
</foreach>
</delete>
<sql id="selectHwProductCaseInfoJoinVo">
select hpci.case_info_id, hpci.case_info_title, hpci.config_type_id, hpci.typical_flag, hpci.case_info_desc, hpci.case_info_pic, hpci.create_time,
hpci.create_by, hpci.update_time, hpci.update_by,hpct.config_type_name from hw_product_case_info hpci left join hw_portal_config_type hpct on hpci.config_type_id=hpct.config_type_id
</sql>
<select id="selectHwProductCaseInfoJoinList" parameterType="HwProductCaseInfo" resultMap="HwProductCaseInfoResult">
<include refid="selectHwProductCaseInfoJoinVo"/>
<where>
<if test="caseInfoTitle != null and caseInfoTitle != ''"> and hpci.case_info_title like concat('%', #{caseInfoTitle}, '%')</if>
<if test="configTypeId != null and configTypeId != ''"> and hpci.config_type_id = #{configTypeId}</if>
<if test="typicalFlag != null and typicalFlag != ''"> and hpci.typical_flag = #{typicalFlag}</if>
<if test="caseInfoDesc != null and caseInfoDesc != ''"> and case_info_desc = #{caseInfoDesc}</if>
<if test="caseInfoPic != null and caseInfoPic != ''"> and case_info_pic = #{caseInfoPic}</if>
<if test="caseInfoHtml != null and caseInfoHtml != ''"> and case_info_html = #{caseInfoHtml}</if>
<if test="homeTypicalFlag != null and homeTypicalFlag != '' and configTypeId!=null"> and exists (select 1 from hw_portal_config_type hpct where hpct.parent_id=#{configTypeId} and hpct.config_type_id =hpci.config_type_id)</if>
<if test='(homeTypicalFlag == null or homeTypicalFlag == "") and configTypeId != null '> and config_type_id = #{configTypeId}</if>
</where>
</select>
</mapper>

@ -30,8 +30,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="parentId != null and parentId != ''"> and parent_id = #{parentId}</if>
<if test="productInfoId != null "> and product_info_id = #{productInfoId}</if>
<if test="configModal != null and configModal != ''"> and config_modal = #{configModal}</if>
<if test="productInfoDetailTitle != null and productInfoDetailTitle != ''"> and product_info_detail_title = #{productInfoDetailTitle}</if>
<if test="productInfoDetailDesc != null and productInfoDetailDesc != ''"> and product_info_detail_desc = #{productInfoDetailDesc}</if>
<if test="productInfoDetailTitle != null and productInfoDetailTitle != ''"> and product_info_detail_title like concat('%', #{productInfoDetailTitle}, '%')</if>
<if test="productInfoDetailDesc != null and productInfoDetailDesc != ''"> and product_info_detail_desc like concat('%', #{productInfoDetailDesc}, '%')</if>
<if test="productInfoDetailOrder != null "> and product_info_detail_order = #{productInfoDetailOrder}</if>
<if test="productInfoDetailPic != null and productInfoDetailPic != ''"> and product_info_detail_pic = #{productInfoDetailPic}</if>
<if test="ancestors != null and ancestors != ''"> and ancestors = #{ancestors}</if>

@ -18,6 +18,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateBy" column="update_by" />
<result property="parentId" column="parent_id" />
<result property="configTypeName" column="config_type_name" />
</resultMap>
<resultMap id="HwProductInfoHwProductInfoDetailResult" type="HwProductInfo" extends="HwProductInfoResult">
@ -49,8 +50,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="configTypeId != null and configTypeId != ''"> and config_type_id = #{configTypeId}</if>
<if test="tabFlag != null and tabFlag != ''"> and tab_flag = #{tabFlag}</if>
<if test="configModal != null and configModal != ''"> and config_modal = #{configModal}</if>
<if test="productInfoEtitle != null "> and product_info_etitle = #{productInfoEtitle}</if>
<if test="productInfoCtitle != null and productInfoCtitle != ''"> and product_info_ctitle = #{productInfoCtitle}</if>
<if test="productInfoEtitle != null "> and product_info_etitle like concat('%', #{productInfoEtitle}, '%')</if>
<if test="productInfoCtitle != null and productInfoCtitle != ''"> and product_info_ctitle like concat('%', #{productInfoCtitle}, '%')</if>
<if test="productInfoOrder != null "> and product_info_order = #{productInfoOrder}</if>
</where>
</select>
@ -135,4 +136,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
</select>
<sql id="selectHwProductInfoJoinVo">
select hpi.product_info_id, hpi.config_type_id, hpi.tab_flag, hpi.config_modal, hpi.product_info_etitle, hpi.product_info_ctitle, hpi.product_info_order,
hpi.create_time, hpi.create_by, hpi.update_time, hpi.update_by,hpct.config_type_name from hw_product_info hpi left join hw_portal_config_type hpct on hpi.config_type_id=hpct.config_type_id
</sql>
<select id="selectHwProductInfoJoinList" parameterType="HwProductInfo" resultMap="HwProductInfoResult">
<include refid="selectHwProductInfoJoinVo"/>
<where>
<if test="configTypeId != null and configTypeId != ''"> and hpi.config_type_id = #{configTypeId}</if>
<if test="tabFlag != null and tabFlag != ''"> and hpi.tab_flag = #{tabFlag}</if>
<if test="configModal != null and configModal != ''"> and hpi.config_modal = #{configModal}</if>
<if test="productInfoEtitle != null "> and hpi.product_info_etitle like concat('%', #{productInfoEtitle}, '%')</if>
<if test="productInfoCtitle != null and productInfoCtitle != ''"> and hpi.product_info_ctitle like concat('%', #{productInfoCtitle}, '%')</if>
<if test="productInfoOrder != null "> and hpi.product_info_order = #{productInfoOrder}</if>
</where>
</select>
</mapper>

@ -42,3 +42,13 @@ export function delProductCaseInfo(caseInfoId) {
method: 'delete'
})
}
// 查询门户网站配置类型下拉树结构
export function portalConfigTypeTree(query) {
return request({
url: '/portal/productCaseInfo/portalConfigTypeTree',
method: 'get',
params: query
})
}

@ -42,3 +42,13 @@ export function delProductInfo(productInfoId) {
method: 'delete'
})
}
// 查询门户网站配置类型下拉树结构
export function portalConfigTypeTree(query) {
return request({
url: '/portal/productInfo/portalConfigTypeTree',
method: 'get',
params: query
})
}

@ -304,6 +304,22 @@ export const dynamicRoutes = [
]
},
{
path: '/portal/case-info-detail',
component: Layout,
hidden: true,
permissions: ['portal:productCaseInfo:edit'],
children: [
{
path: 'detail/:caseInfoId(\\d+)',
component: () => import('@/views/portal/productCaseInfo/caseInfoDetail.vue'),
name: 'CaseInfoDetail',
meta: { title: '案例内容', activeMenu: '/portal/productCaseInfo',isCache:true }
}
]
},
{
path: '/portal/about-us-info-detail',
component: Layout,

@ -107,7 +107,7 @@
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="父级" prop="parentId">
<treeselect v-model="form.parentId" :options="portalConfigTypeOptions" :normalizer="normalizer" placeholder="请选择父级ID" />
<treeselect v-model="form.parentId" :options="portalConfigTypeOptions" :normalizer="normalizer" placeholder="请选择父级ID" :disabled="form.configTypeId!=null" />
</el-form-item>
<el-form-item label="大类" prop="configTypeClassfication" v-if="form.parentId==null || form.parentId===0">
<el-select v-model="form.configTypeClassfication" placeholder="请选择大类" clearable>

@ -0,0 +1,449 @@
<template>
<div class="app-container">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="案例标题" prop="caseInfoTitle">
<el-input v-model="form.caseInfoTitle" placeholder="请输入案例标题" />
</el-form-item>
<el-form-item label="配置类型" prop="configTypeId">
<treeselect v-model="form.configTypeId" :options="editedConfigTypeOptions" :show-count="true"
placeholder="请选择门户网站配置类型"/>
</el-form-item>
<el-form-item label="典型案例标识" prop="typicalFlag">
<el-select v-model="form.typicalFlag" placeholder="请选择配典型案例标识" style="width: 300px;">
<el-option
v-for="dict in dict.type.hw_product_case_info_typical_flag"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="案例内容" prop="caseInfoDesc">
<el-input v-model="form.caseInfoDesc" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="案例内容图片" prop="caseInfoPic">
<el-upload
single
:action="uploadImgUrl"
list-type="picture-card"
:limit="limit"
:on-success="handleUploadSuccess"
:before-upload="handleBeforeUpload"
:on-error="handleUploadError"
:on-exceed="handleExceed"
ref="imageUpload"
:on-remove="handleDeletePicture"
:show-file-list="true"
:headers="headers"
:file-list="fileList"
:on-preview="handlePictureCardPreview"
:class="{hide: this.fileList.length >= 1}"
>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件且不超过500kb</div>
<i class="el-icon-plus"></i>
</el-upload>
<!-- 上传提示 -->
<div class="el-upload__tip" slot="tip">
请上传
<template v-if="fileSize"> <b style="color: #f56c6c">{{ fileSize }}MB</b></template>
<template v-if="fileType"> <b style="color: #f56c6c">{{ fileType.join("/") }}</b></template>
的文件
</div>
<el-dialog
:visible.sync="dialogVisible"
title="预览"
width="800"
append-to-body
>
<img
:src="dialogImageUrl"
style="display: block; max-width: 100%; margin: 0 auto"
/>
</el-dialog>
</el-form-item>
<el-form-item label="案例详情" prop="caseInfoHtml">
<editor v-model="form.caseInfoHtml" :min-height="192"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="close"> </el-button>
</div>
</div>
</template>
<script>
import { listProductCaseInfo, getProductCaseInfo, delProductCaseInfo, addProductCaseInfo, updateProductCaseInfo,portalConfigTypeTree } from "@/api/portal/productCaseInfo";
import {getToken} from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import {debug} from "script-ext-html-webpack-plugin/lib/common";
export default {
name: "ProductCaseInfo",
dicts: ['hw_product_case_info_typical_flag'],
components: {Treeselect},
props: {
value: [String, Object, Array],
//
limit: {
type: Number,
default: 1,
},
// (MB)
fileSize: {
type: Number,
default: 5,
},
// , ['png', 'jpg', 'jpeg']
fileType: {
type: Array,
default: () => ["png", "jpg", "jpeg"],
},
//
isShowTip: {
type: Boolean,
default: true
}
},
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
productCaseInfoList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
caseInfoTitle: null,
configTypeId: null,
typicalFlag: null,
caseInfoDesc: null,
caseInfoPic: null,
caseInfoHtml: null,
},
//
form: {},
//
rules: {
caseInfoTitle: [
{ required: true, message: "案例标题不能为空", trigger: "blur" }
],
typicalFlag: [
{ required: true, message: "典型案例标识不能为空", trigger: "blur" }
],
caseInfoDesc: [
{ required: true, message: "案例内容不能为空", trigger: "blur" }
],
caseInfoHtml: [
{ required: true, message: "案例详情不能为空", trigger: "blur" }
],
},
number: 0,
uploadList: [],
dialogImageUrl: "",
dialogVisible: false,
hideUpload: false,
uploadImgUrl: process.env.VUE_APP_BASE_API + "/file/upload", //
headers: {
Authorization: "Bearer " + getToken(),
},
fileList: [],
//
configTypeOptions: [],
//
editedConfigTypeOptions: [],
//
portalConfigTypeName: undefined,
defaultProps: {
children: "children",
label: "label"
},
};
},
mounted() {
const caseInfoId = this.$route.params && this.$route.params.caseInfoId;
if(caseInfoId && caseInfoId!=='0'){
this.getEditPortalConfigTypeTree();
getProductCaseInfo(caseInfoId).then(response => {
this.form = response.data;
this.form.caseInfoHtml = decodeURI(this.form.caseInfoHtml)
console.log(this.form.caseInfoHtml)
if (response.data.caseInfoPic != null) {
let previewFile = {};
previewFile.url = response.data.caseInfoPic
this.fileList.push(previewFile);
}
});
}else{
this.reset();
this.getEditPortalConfigTypeTree();
}
},
activated() {
const caseInfoId = this.$route.params && this.$route.params.caseInfoId;
if(caseInfoId && caseInfoId!=='0'){
this.getEditPortalConfigTypeTree();
getProductCaseInfo(caseInfoId).then(response => {
this.form = response.data;
this.form.caseInfoHtml = decodeURI(this.form.caseInfoHtml)
console.log(this.form.caseInfoHtml)
if (response.data.caseInfoPic != null) {
let previewFile = {};
previewFile.url = response.data.caseInfoPic
this.fileList.push(previewFile);
}
});
}else{
this.reset();
this.getEditPortalConfigTypeTree();
}
},
methods: {
/** 查询案例内容列表 */
getList() {
this.loading = true;
listProductCaseInfo(this.queryParams).then(response => {
this.productCaseInfoList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
caseInfoId: null,
caseInfoTitle: null,
configTypeId: null,
typicalFlag: null,
caseInfoDesc: null,
caseInfoPic: null,
caseInfoHtml: null,
createTime: null,
createBy: null,
updateTime: null,
updateBy: null
};
this.resetForm("form");
this.fileList = [];
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.caseInfoId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.getEditPortalConfigTypeTree();
this.open = true;
this.title = "添加案例内容";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.getEditPortalConfigTypeTree();
const caseInfoId = row.caseInfoId || this.ids
getProductCaseInfo(caseInfoId).then(response => {
this.form = response.data;
this.form.caseInfoHtml = decodeURI(this.form.caseInfoHtml)
this.open = true;
this.title = "修改案例内容";
if (response.data.caseInfoPic != null) {
let previewFile = {};
previewFile.url = response.data.caseInfoPic
this.fileList.push(previewFile);
}
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.form.caseInfoHtml = encodeURI(this.form.caseInfoHtml)
if (this.form.caseInfoId != null) {
updateProductCaseInfo(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.close();
});
} else {
this.form.caseInfoHtml = encodeURI(this.form.caseInfoHtml);
addProductCaseInfo(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.close();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const caseInfoIds = row.caseInfoId || this.ids;
this.$modal.confirm('是否确认删除案例内容编号为"' + caseInfoIds + '"的数据项?').then(function() {
return delProductCaseInfo(caseInfoIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('portal/productCaseInfo/export', {
...this.queryParams
}, `productCaseInfo_${new Date().getTime()}.xlsx`)
},
/**上传图片处理*/
// loading
handleBeforeUpload(file) {
let isImg = false;
if (this.fileType.length) {
let fileExtension = "";
if (file.name.lastIndexOf(".") > -1) {
fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
}
isImg = this.fileType.some(type => {
if (file.type.indexOf(type) > -1) return true;
if (fileExtension && fileExtension.indexOf(type) > -1) return true;
return false;
});
} else {
isImg = file.type.indexOf("image") > -1;
}
if (!isImg) {
this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}图片格式文件!`);
return false;
}
if (this.fileSize) {
const isLt = file.size / 1024 / 1024 < this.fileSize;
if (!isLt) {
this.$modal.msgError(`上传头像图片大小不能超过 ${this.fileSize} MB!`);
return false;
}
}
this.$modal.loading("正在上传图片,请稍候...");
this.number++;
},
//
handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} !`);
},
//
handleUploadSuccess(res, file) {
if (res.code === 200) {
this.uploadList.push(res.data.url);
this.uploadedSuccessfully();
} else {
this.number--;
this.$modal.closeLoading();
this.$modal.msgError(res.msg);
this.$refs.imageUpload.handleRemove(file);
this.uploadedSuccessfully();
}
},
//
uploadedSuccessfully() {
if (this.number > 0 && this.uploadList.length === this.number) {
this.fileList = this.fileList.concat(this.uploadList);
this.uploadList = [];
this.number = 0;
this.form.caseInfoPic = this.fileList[0];
// this.$emit("input", this.listToString(this.fileList));
this.$modal.closeLoading();
}
},
//
handleDeletePicture(file) {
const findex = this.fileList.map(f => f.name).indexOf(file.name);
if (findex > -1) {
this.fileList.splice(findex, 1);
// this.$emit("input", this.listToString(this.fileList));
}
this.form.caseInfoPic = '';
},
//
handleUploadError() {
this.$modal.msgError("上传图片失败,请重试");
this.$modal.closeLoading();
},
//
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
//
filterNode(value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
//
handleNodeClick(data) {
this.queryParams.configTypeId = data.id;
this.handleQuery();
},
/** 案例信息查询页面查询部门下拉树结构 */
getPortalConfigTypeTree() {
portalConfigTypeTree({}).then(response => {
this.configTypeOptions = response.data;
});
},
/** 案例编辑页面查询部门下拉树结构 */
getEditPortalConfigTypeTree() {
// this.deptParams.tenantId = tenantId;
portalConfigTypeTree({}).then(response => {
this.editedConfigTypeOptions = response.data;
});
},
close() {
const obj = {path: "/portal/productCaseInfo", query: {t: Date.now(), pageNum: this.$route.query.pageNum}};
this.$tab.closeOpenPage(obj);
}
}
};
</script>

@ -1,6 +1,36 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-row :gutter="20">
<!-- 门户网站配置类型数据-->
<el-col :span="4" :xs="24">
<div class="head-container">
<el-input
v-model="portalConfigTypeName"
placeholder="请输入门户网站配置类型名称"
clearable
size="small"
prefix-icon="el-icon-search"
style="margin-bottom: 20px"
/>
</div>
<div class="head-container">
<el-tree
:data="configTypeOptions"
:props="defaultProps"
:expand-on-click-node="false"
:filter-node-method="filterNode"
ref="tree"
node-key="id"
default-expand-all
highlight-current
@node-click="handleNodeClick"
/>
</div>
</el-col>
<!--产品数据-->
<el-col :span="20" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="98px">
<el-form-item label="案例标题" prop="caseInfoTitle">
<el-input
v-model="queryParams.caseInfoTitle"
@ -9,29 +39,15 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="配置类型ID" prop="configTypeId">
<el-input
v-model="queryParams.configTypeId"
placeholder="请输入配置类型ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="典型案例标识(1是0否)" prop="typicalFlag">
<el-input
v-model="queryParams.typicalFlag"
placeholder="请输入典型案例标识(1是0否)"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="案例内容图片" prop="caseInfoPic">
<el-input
v-model="queryParams.caseInfoPic"
placeholder="请输入案例内容图片"
clearable
@keyup.enter.native="handleQuery"
/>
<el-form-item label="典型案例标识" prop="typicalFlag">
<el-select v-model="queryParams.typicalFlag" placeholder="请选择典型案例标识" clearable>
<el-option
v-for="dict in dict.type.hw_product_case_info_typical_flag"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
@ -87,13 +103,20 @@
<el-table v-loading="loading" :data="productCaseInfoList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键标识" align="center" prop="caseInfoId" />
<el-table-column label="主键标识" align="center" prop="caseInfoId" width="80px;"/>
<el-table-column label="案例标题" align="center" prop="caseInfoTitle" />
<el-table-column label="配置类型ID" align="center" prop="configTypeId" />
<el-table-column label="典型案例标识(1是0否)" align="center" prop="typicalFlag" />
<el-table-column label="典型案例标识" align="center" prop="typicalFlag" >
<template slot-scope="scope">
<dict-tag :options="dict.type.hw_product_case_info_typical_flag" :value="scope.row.typicalFlag"/>
</template>
</el-table-column>
<el-table-column label="案例内容" align="center" prop="caseInfoDesc" />
<el-table-column label="案例内容图片" align="center" prop="caseInfoPic" />
<el-table-column label="案例详情" align="center" prop="caseInfoHtml" />
<el-table-column label="案例内容图片" align="center" prop="caseInfoPic" >
<template slot-scope="scope" v-if="scope.row.caseInfoPic && scope.row.caseInfoPic!=null && scope.row.caseInfoPic!=undefined && scope.row.caseInfoPic!==''">
<img :src="scope.row.caseInfoPic" alt="图片" style="width: 200px;height:150px;">
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
@ -122,17 +145,29 @@
@pagination="getList"
/>
</el-col>
</el-row>
<!-- 添加或修改案例内容对话框 -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="案例标题" prop="caseInfoTitle">
<el-input v-model="form.caseInfoTitle" placeholder="请输入案例标题" />
</el-form-item>
<el-form-item label="配置类型ID" prop="configTypeId">
<el-input v-model="form.configTypeId" placeholder="请输入配置类型ID" />
<el-form-item label="配置类型" prop="configTypeId">
<treeselect v-model="form.configTypeId" :options="editedConfigTypeOptions" :show-count="true"
placeholder="请选择门户网站配置类型"/>
</el-form-item>
<el-form-item label="典型案例标识(1是0否)" prop="typicalFlag">
<el-input v-model="form.typicalFlag" placeholder="请输入典型案例标识(1是0否)" />
<el-form-item label="典型案例标识" prop="typicalFlag">
<el-select v-model="form.typicalFlag" placeholder="请选择配典型案例标识" style="width: 300px;">
<el-option
v-for="dict in dict.type.hw_product_case_info_typical_flag"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="案例内容" prop="caseInfoDesc">
<el-input v-model="form.caseInfoDesc" type="textarea" placeholder="请输入内容" />
@ -193,11 +228,14 @@
</template>
<script>
import { listProductCaseInfo, getProductCaseInfo, delProductCaseInfo, addProductCaseInfo, updateProductCaseInfo } from "@/api/portal/productCaseInfo";
import { listProductCaseInfo, getProductCaseInfo, delProductCaseInfo, addProductCaseInfo, updateProductCaseInfo,portalConfigTypeTree } from "@/api/portal/productCaseInfo";
import {getToken} from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
name: "ProductCaseInfo",
dicts: ['hw_product_case_info_typical_flag'],
components: {Treeselect},
props: {
value: [String, Object, Array],
//
@ -287,9 +325,35 @@ export default {
},
fileList: [],
//
configTypeOptions: [],
//
editedConfigTypeOptions: [],
//
portalConfigTypeName: undefined,
defaultProps: {
children: "children",
label: "label"
},
};
},
watch: {
//
portalConfigTypeName(val) {
this.$refs.tree.filter(val);
}
},
activated() {
const time = this.$route.query.t;
if (time != null && time != this.uniqueId) {
this.uniqueId = time;
this.queryParams.pageNum = Number(this.$route.query.pageNum);
this.getList();
}
},
created() {
this.getPortalConfigTypeTree();
this.getList();
},
methods: {
@ -343,25 +407,33 @@ export default {
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加案例内容";
const params = {pageNum: this.queryParams.pageNum};
this.$tab.openPage("添加案例", '/portal/case-info-detail/detail/0', params);
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const caseInfoId = row.caseInfoId || this.ids
getProductCaseInfo(caseInfoId).then(response => {
this.form = response.data;
this.form.caseInfoHtml = decodeURI(this.form.caseInfoHtml)
this.open = true;
this.title = "修改案例内容";
if (response.data.caseInfoPic != null) {
let previewFile = {};
previewFile.url = response.data.caseInfoPic
this.fileList.push(previewFile);
}
});
const caseInfoId = row.caseInfoId;
let caseInfoTitle = row.caseInfoTitle
const params = {pageNum: this.queryParams.pageNum};
this.$tab.openPage("修改案例["+caseInfoTitle+"]", '/portal/case-info-detail/detail/'+caseInfoId, params);
// this.reset();
// this.getEditPortalConfigTypeTree();
// const caseInfoId = row.caseInfoId || this.ids
// getProductCaseInfo(caseInfoId).then(response => {
// this.form = response.data;
// this.form.caseInfoHtml = decodeURI(this.form.caseInfoHtml)
// this.open = true;
// this.title = "";
// if (response.data.caseInfoPic != null) {
// let previewFile = {};
// previewFile.url = response.data.caseInfoPic
// this.fileList.push(previewFile);
// }
// });
},
/** 提交按钮 */
submitForm() {
@ -486,6 +558,30 @@ export default {
this.dialogVisible = true;
},
//
filterNode(value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
//
handleNodeClick(data) {
this.queryParams.configTypeId = data.id;
this.handleQuery();
},
/** 案例信息查询页面查询部门下拉树结构 */
getPortalConfigTypeTree() {
portalConfigTypeTree({}).then(response => {
this.configTypeOptions = response.data;
});
},
/** 案例编辑页面查询部门下拉树结构 */
getEditPortalConfigTypeTree() {
// this.deptParams.tenantId = tenantId;
portalConfigTypeTree({}).then(response => {
this.editedConfigTypeOptions = response.data;
});
},
}
};
</script>

@ -1,29 +1,55 @@
<template>
<div class="app-container">
<el-row :gutter="20">
<!-- 门户网站配置类型数据-->
<el-col :span="4" :xs="24">
<div class="head-container">
<el-input
v-model="portalConfigTypeName"
placeholder="请输入门户网站配置类型名称"
clearable
size="small"
prefix-icon="el-icon-search"
style="margin-bottom: 20px"
/>
</div>
<div class="head-container">
<el-tree
:data="configTypeOptions"
:props="defaultProps"
:expand-on-click-node="false"
:filter-node-method="filterNode"
ref="tree"
node-key="id"
default-expand-all
highlight-current
@node-click="handleNodeClick"
/>
</div>
</el-col>
<!--产品数据-->
<el-col :span="20" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="配置类型" prop="configTypeId">
<el-input
v-model="queryParams.configTypeId"
placeholder="请输入配置类型"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="是否按tab显示" prop="tabFlag">
<el-input
v-model="queryParams.tabFlag"
placeholder="请输入是否按tab显示"
clearable
@keyup.enter.native="handleQuery"
/>
<el-form-item label="tab标识" prop="tabFlag">
<el-select v-model="queryParams.tabFlag" placeholder="请选择tab标识" clearable>
<el-option
v-for="dict in dict.type.hw_product_info_tab_flag"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="配置模式" prop="configModal">
<el-input
v-model="queryParams.configModal"
placeholder="请输入配置模式"
clearable
@keyup.enter.native="handleQuery"
/>
<el-select v-model="queryParams.configModal" placeholder="请选择配置模式" clearable>
<el-option
v-for="dict in dict.type.hw_product_info_config_modal"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="英文标题" prop="productInfoEtitle">
<el-input
@ -103,10 +129,19 @@
<el-table v-loading="loading" :data="productInfoList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键标识" align="center" prop="productInfoId" />
<el-table-column label="配置类型" align="center" prop="configTypeId" />
<el-table-column label="是否按tab显示" align="center" prop="tabFlag" />
<el-table-column label="配置模式" align="center" prop="configModal" />
<el-table-column label="主键标识" align="center" prop="productInfoId" width="80px;"/>
<el-table-column label="配置类型" align="center" prop="configTypeName" />
<el-table-column label="tab标识" align="center" prop="tabFlag" >
<template slot-scope="scope">
<dict-tag :options="dict.type.hw_product_info_tab_flag" :value="scope.row.tabFlag"/>
</template>
</el-table-column>
<el-table-column label="配置模式" align="center" prop="configModal" >
<template slot-scope="scope">
<dict-tag :options="dict.type.hw_product_info_config_modal" :value="scope.row.configModal"/>
</template>
</el-table-column>
<el-table-column label="英文标题" align="center" prop="productInfoEtitle" />
<el-table-column label="中文标题" align="center" prop="productInfoCtitle" />
<el-table-column label="顺序" align="center" prop="productInfoOrder" />
@ -145,17 +180,40 @@
@pagination="getList"
/>
</el-col>
</el-row>
<!-- 添加或修改产品信息配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="配置类型" prop="configTypeId">
<el-input v-model="form.configTypeId" placeholder="请输入配置类型" />
<el-form-item label="门户网站配置类型" prop="configTypeId">
<treeselect v-model="form.configTypeId" :options="editedConfigTypeOptions" :show-count="true"
placeholder="请选择门户网站配置类型"/>
</el-form-item>
<el-form-item label="是否按tab显示" prop="tabFlag">
<el-input v-model="form.tabFlag" placeholder="请输入是否按tab显示" />
<el-form-item label="tab标识" prop="tabFlag">
<el-select v-model="form.tabFlag" placeholder="请选择tab标识" clearable>
<el-option
v-for="dict in dict.type.hw_product_info_tab_flag"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="配置模式(1图标 +文字+内容横铺4个2左标题+内容右图片3左图标右标题+内容一行2个4左大图右标题+内容一行2个5上标题+下图片6上标题+内容下图片7图标标题内容一行3个,8左图右图9上图下内容一行4个)" prop="configModal">
<el-input v-model="form.configModal" placeholder="请输入配置模式(1图标 +文字+内容横铺4个2左标题+内容右图片3左图标右标题+内容一行2个4左大图右标题+内容一行2个5上标题+下图片6上标题+内容下图片7图标标题内容一行3个,8左图右图9上图下内容一行4个)" />
<el-form-item label="配置模式" prop="configModal">
<el-select v-model="form.configModal" placeholder="请选择配置模式" style="width: 300px;">
<el-option
v-for="dict in dict.type.hw_product_info_config_modal"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="英文标题" prop="productInfoEtitle">
<el-input v-model="form.productInfoEtitle" placeholder="请输入英文标题" />
@ -176,10 +234,14 @@
</template>
<script>
import { listProductInfo, getProductInfo, delProductInfo, addProductInfo, updateProductInfo } from "@/api/portal/productInfo";
import { listProductInfo, getProductInfo, delProductInfo, addProductInfo, updateProductInfo,portalConfigTypeTree } from "@/api/portal/productInfo";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
name: "ProductInfo",
dicts: ['hw_product_info_config_modal','hw_product_info_tab_flag'],
components: {Treeselect},
data() {
return {
//
@ -211,8 +273,10 @@ export default {
productInfoCtitle: null,
productInfoOrder: null,
},
//
form: {},
//
rules: {
configTypeId: [
@ -233,11 +297,28 @@ export default {
productInfoOrder: [
{ required: true, message: "顺序不能为空", trigger: "blur" }
],
}
},
//
configTypeOptions: [],
//
editedConfigTypeOptions: [],
//
portalConfigTypeName: undefined,
defaultProps: {
children: "children",
label: "label"
},
};
},
watch: {
//
portalConfigTypeName(val) {
this.$refs.tree.filter(val);
}
},
created() {
this.getList();
this.getPortalConfigTypeTree();
},
methods: {
/** 查询产品信息配置列表 */
@ -290,12 +371,14 @@ export default {
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.getEditPortalConfigTypeTree();
this.open = true;
this.title = "添加产品信息配置";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.getEditPortalConfigTypeTree();
const productInfoId = row.productInfoId || this.ids
getProductInfo(productInfoId).then(response => {
this.form = response.data;
@ -349,6 +432,33 @@ export default {
const params = {pageNum: this.queryParams.pageNum};
this.$tab.openPage("产品配置详情["+productInfoCtitle+"]", '/portal/product-info-detail/index/'+productInfoId, params);
},
//
filterNode(value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
//
handleNodeClick(data) {
this.queryParams.configTypeId = data.id;
this.handleQuery();
},
/** 产品查询页面查询部门下拉树结构 */
getPortalConfigTypeTree() {
portalConfigTypeTree({}).then(response => {
this.configTypeOptions = response.data;
});
},
/** 产品编辑页面查询部门下拉树结构 */
getEditPortalConfigTypeTree() {
// this.deptParams.tenantId = tenantId;
portalConfigTypeTree({}).then(response => {
this.editedConfigTypeOptions = response.data;
});
},
}
};
</script>

@ -1,30 +1,10 @@
<template>
<div class="app-container">
<div>
<p>如果需要有tab显示的则父级是tab信息其子级是tab下对应的内容信息</p>
</div>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="父级ID有tab的就是此父级ID" prop="parentId">
<el-input
v-model="queryParams.parentId"
placeholder="请输入父级ID有tab的就是此父级ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="产品信息配置ID" prop="productInfoId">
<el-input
v-model="queryParams.productInfoId"
placeholder="请输入产品信息配置ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="配置模式" prop="configModal">
<el-input
v-model="queryParams.configModal"
placeholder="请输入配置模式"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="标题" prop="productInfoDetailTitle">
<el-input
v-model="queryParams.productInfoDetailTitle"
@ -49,22 +29,6 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="图片地址" prop="productInfoDetailPic">
<el-input
v-model="queryParams.productInfoDetailPic"
placeholder="请输入图片地址"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="祖级列表" prop="ancestors">
<el-input
v-model="queryParams.ancestors"
placeholder="请输入祖级列表"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
@ -103,13 +67,14 @@
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
>
<el-table-column label="标题" align="center" prop="productInfoDetailTitle" />
<el-table-column label="父级ID有tab的就是此父级ID" prop="parentId" />
<el-table-column label="产品信息配置ID" align="center" prop="productInfoId" />
<el-table-column label="配置模式" align="center" prop="configModal" />
<el-table-column label="内容" align="center" prop="productInfoDetailDesc" />
<el-table-column label="顺序" align="center" prop="productInfoDetailOrder" />
<el-table-column label="图片地址" align="center" prop="productInfoDetailPic" />
<el-table-column label="祖级列表" align="center" prop="ancestors" />
<el-table-column label="图片" align="center" prop="productInfoDetailPic" >
<template slot-scope="scope" v-if="scope.row.productInfoDetailPic && scope.row.productInfoDetailPic!=null && scope.row.productInfoDetailPic!=undefined && scope.row.productInfoDetailPic!==''">
<img :src="scope.row.productInfoDetailPic" alt="图片" style="width: 200px;height:150px;">
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
@ -140,20 +105,17 @@
<!-- 添加或修改产品信息明细配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="父级ID有tab的就是此父级ID" prop="parentId">
<treeselect v-model="form.parentId" :options="productInfoDetailOptions" :normalizer="normalizer" placeholder="请选择父级ID有tab的就是此父级ID" />
<el-form-item label="父级" prop="parentId">
<treeselect v-model="form.parentId" :options="productInfoDetailOptions" :normalizer="normalizer" placeholder="请选择父级" :disabled="form.productInfoDetailId!=null"/>
</el-form-item>
<el-form-item label="产品信息配置ID" prop="productInfoId">
<el-form-item label="产品信息配置ID" prop="productInfoId" v-if="false">
<el-input v-model="form.productInfoId" placeholder="请输入产品信息配置ID" />
</el-form-item>
<el-form-item label="配置模式" prop="configModal">
<el-input v-model="form.configModal" placeholder="请输入配置模式" />
</el-form-item>
<el-form-item label="标题" prop="productInfoDetailTitle">
<el-input v-model="form.productInfoDetailTitle" placeholder="请输入标题" />
</el-form-item>
<el-form-item label="内容" prop="productInfoDetailDesc">
<el-input v-model="form.productInfoDetailDesc" placeholder="请输入内容" />
<el-input v-model="form.productInfoDetailDesc" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="顺序" prop="productInfoDetailOrder">
<el-input v-model="form.productInfoDetailOrder" placeholder="请输入顺序" />
@ -219,6 +181,7 @@ import {getToken} from "@/utils/auth";
export default {
name: "ProductInfoDetail",
dicts: ['hw_product_info_config_modal'],
props: {
value: [String, Object, Array],
//

Loading…
Cancel
Save