|
@@ -8,21 +8,60 @@
|
|
|
开发助手:当前窗口在正式版本中将被移除。
|
|
|
</div>
|
|
|
<div class="testAssistantContent">
|
|
|
- <div class="testAssistantContentItem"><span>板块id:</span>{{this.$store.state.template.editSectorId}}</div>
|
|
|
- <div class="testAssistantContentItem"><span>组件位置:</span>{{this.$store.state.template.editComponentSort}}</div>
|
|
|
- <div class="testAssistantContentItem"><span>Json数据位置:</span>{{this.$store.state.template.editDataSort}}</div>
|
|
|
- <div class="testAssistantContentItem"><span>数据类型:</span>{{this.$store.state.template.editComponentType}}</div>
|
|
|
- <div class="testAssistantContentItem"><span>展示条数:</span>{{this.$store.state.template.editComponentSize}}</div>
|
|
|
+ <div class="testAssistantContentItem">
|
|
|
+ <div>当前板块id:</div>
|
|
|
+ <div>{{this.$store.state.template.editSectorId}}</div>
|
|
|
+ </div>
|
|
|
+ <div class="testAssistantContentItem">
|
|
|
+ <div>当前板块所在的页面:</div>
|
|
|
+ <div v-if="this.$store.state.template.pageStatus == 1">首页</div>
|
|
|
+ <div v-if="this.$store.state.template.pageStatus == 2">分类页</div>
|
|
|
+ <div v-if="this.$store.state.template.pageStatus == 3">列表页</div>
|
|
|
+ <div v-if="this.$store.state.template.pageStatus == 4">详情页</div>
|
|
|
+ <div v-if="this.$store.state.template.pageStatus == 5">搜索页</div>
|
|
|
+ <div v-if="this.$store.state.template.pageStatus == 6">自定义列表页</div>
|
|
|
+ <div v-if="this.$store.state.template.pageStatus == 7">自定义详情页</div>
|
|
|
+ </div>
|
|
|
+ <div class="testAssistantContentItem">
|
|
|
+ <div>当前组件在此板块中的位置:</div>
|
|
|
+ <div>{{this.$store.state.template.editComponentSort}}</div>
|
|
|
+ </div>
|
|
|
+ <div class="testAssistantContentItem">
|
|
|
+ <div>当前板块在Json数据中的位置:</div>
|
|
|
+ <div>{{this.$store.state.template.editDataSort}}</div>
|
|
|
+ </div>
|
|
|
+ <div class="testAssistantContentItem">
|
|
|
+ <div>当前组件的数据类型:</div>
|
|
|
+ <div v-if="this.$store.state.template.editComponentType == 1">新闻列表</div>
|
|
|
+ <div v-if="this.$store.state.template.editComponentType == 2">新闻选项卡</div>
|
|
|
+ <div v-if="this.$store.state.template.editComponentType == 3">广告</div>
|
|
|
+ <div v-if="this.$store.state.template.editComponentType == 4">友情链接</div>
|
|
|
+ <div v-if="this.$store.state.template.editComponentType == 6">静态html组件</div>
|
|
|
+ <div v-if="this.$store.state.template.editComponentType == 7">文本</div>
|
|
|
+ <div v-if="this.$store.state.template.editComponentType == 8">评论组件</div>
|
|
|
+ </div>
|
|
|
+ <div class="testAssistantContentItem">
|
|
|
+ <div>展示条数:</div>
|
|
|
+ <div>{{this.$store.state.template.editComponentSize}}</div>
|
|
|
+ </div>
|
|
|
+ <div class="testAssistantContentItem">
|
|
|
+ <div>回显导航池:</div>
|
|
|
+ <div v-if="this.$store.state.template.editComponentType == 1||this.$store.state.template.editComponentType == 2">
|
|
|
+ <span v-if="this.$store.state.template.componentViewData.pid_arr.length == 0">暂未选择导航</span>
|
|
|
+ <span v-else>{{this.$store.state.template.componentViewData.pid_arr}}</span>
|
|
|
+ </div>
|
|
|
+ <div v-else>无需回显</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<!--1.普通新闻类型-->
|
|
|
<div v-if="this.$store.state.template.editComponentType == 1">
|
|
|
- <el-form :model="form" ref="form" :rules="formRules" autocomplete="off" label-position="left">
|
|
|
+ <el-form :model="form.type1data" ref="form" :rules="formRules" autocomplete="off" label-position="left">
|
|
|
<el-form-item label="组件类型:" :label-width="formLabelWidth" class="custom-align-right">
|
|
|
<el-input value="新闻列表" disabled/>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="网站导航:" :label-width="formLabelWidth" prop="pid_arr" class="custom-align-right">
|
|
|
- <el-cascader :key="oneParentKey" v-model="form.pid_arr" placeholder="请选择网站导航" :props="oneParentData" filterable clearable></el-cascader>
|
|
|
+ <el-cascader :key="oneParentKey" v-model="form.type1data.pid_arr" placeholder="请选择网站导航" :props="oneParentData" filterable clearable></el-cascader>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="显示条数:" :label-width="formLabelWidth" class="custom-align-right">
|
|
|
<el-input v-model="this.$store.state.template.editComponentSize" placeholder="请输入请求的条数" disabled/>
|
|
@@ -35,8 +74,17 @@
|
|
|
<el-form-item label="组件类型:" :label-width="formLabelWidth" class="custom-align-right">
|
|
|
<el-input value="新闻选项卡" disabled/>
|
|
|
</el-form-item>
|
|
|
+ <!-- {{ this.$store.state.template.editWebsiteCategory }} -->
|
|
|
<el-form-item label="网站导航:" :label-width="formLabelWidth" prop="pid_arr" class="custom-align-right">
|
|
|
- <el-cascader :key="moreParentKey" v-model="form.type2data.pid_arr" placeholder="请选择网站导航" :props="moreParentData" filterable clearable></el-cascader>
|
|
|
+ <el-select v-model="form.type2data.pid_arr" multiple placeholder="请选择">
|
|
|
+ <el-option
|
|
|
+ v-for="item in this.$store.state.template.editWebsiteCategory"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ <!-- <el-cascader :key="moreParentKey" @change="handleCascaderChange" v-model="form.type2data.pid_arr" placeholder="请选择网站导航" :props="moreParentData" filterable clearable></el-cascader> -->
|
|
|
</el-form-item>
|
|
|
<el-form-item label="显示条数:" :label-width="formLabelWidth" class="custom-align-right">
|
|
|
<el-input v-model="this.$store.state.template.editComponentSize" placeholder="请输入请求的条数" disabled/>
|
|
@@ -49,8 +97,8 @@
|
|
|
<el-form-item label="组件类型:" :label-width="formLabelWidth" class="custom-align-right">
|
|
|
<el-input value="广告" disabled/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="广告位名称:" :label-width="formLabelWidth" prop="adsName" class="custom-align-right">
|
|
|
- <el-input v-model="form.type3data.adsName" placeholder="请输入广告位名称"/>
|
|
|
+ <el-form-item label="广告位名称:" :label-width="formLabelWidth" prop="adName" class="custom-align-right">
|
|
|
+ <el-input v-model="form.type3data.adName" placeholder="请输入广告位名称"/>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
@@ -76,7 +124,7 @@
|
|
|
<el-form-item label="组件类型:" :label-width="formLabelWidth" class="custom-align-right">
|
|
|
<el-input value="文本" disabled/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="标题名称:" :label-width="formLabelWidth" prop="adsName" class="custom-align-right">
|
|
|
+ <el-form-item label="标题名称:" :label-width="formLabelWidth" prop="titleName" class="custom-align-right">
|
|
|
<el-input v-model="form.type7data.titleName" placeholder="请输入标题名称"/>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
@@ -98,6 +146,8 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import Vue from 'vue'; // 导入 Vue
|
|
|
+//监听vuex中的值
|
|
|
export default {
|
|
|
props: {
|
|
|
|
|
@@ -121,7 +171,6 @@ export default {
|
|
|
}
|
|
|
return {
|
|
|
formLabelWidth:"120px",
|
|
|
-
|
|
|
form:{
|
|
|
//单导航新闻
|
|
|
type1data:{
|
|
@@ -144,7 +193,8 @@ export default {
|
|
|
},
|
|
|
formRules:{
|
|
|
pid_arr: [{type:'array',required:true,trigger:'blur',message:'必须选择一个导航!',validator:validatePid}],
|
|
|
- adsName: [{required:true,trigger:'blur',message:'请填写标题名称!',validator:validateEmpty}],
|
|
|
+ adName: [{required:true,trigger:'blur',message:'',validator:validateEmpty}],
|
|
|
+ titleName: [{required:true,trigger:'blur',message:'',validator:validateEmpty}]
|
|
|
},
|
|
|
//获取单个导航id start---------------------------------------->
|
|
|
oneParentKey:0,
|
|
@@ -176,51 +226,142 @@ export default {
|
|
|
},
|
|
|
//获取单个导航id end---------------------------------------->
|
|
|
//获取多个导航id start---------------------------------------->
|
|
|
- moreParentKey:0,
|
|
|
- moreParentData: {
|
|
|
- checkStrictly: true,
|
|
|
- multiple: true,
|
|
|
- lazy: true,
|
|
|
- async lazyLoad (node, resolve) {
|
|
|
- const { level, data } = node;
|
|
|
- if (data && data.children && data.children.length !== 0) {
|
|
|
- return resolve(node)
|
|
|
- }
|
|
|
- console.log(level)
|
|
|
- let parentId = level == 0 ? 0 : data.value
|
|
|
- let parames = {
|
|
|
- 'pid':parentId
|
|
|
- }
|
|
|
- self.$store.dispatch('pool/categoryList',parames).then(res=> {
|
|
|
- if (res.data) {
|
|
|
- const nodes = res.data.map(item => ({
|
|
|
- value: item.id,
|
|
|
- label: item.name,
|
|
|
- leaf: level >= 3,
|
|
|
- children: []
|
|
|
- }))
|
|
|
- resolve(nodes)
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
- },
|
|
|
+ moreParen:[],
|
|
|
+ // base 0.0.1 无法回显多选导航池
|
|
|
+ // 这里不能使用级联选择器,因为这里只能选择同级导航,你选了不同级的导航后端就乱套了
|
|
|
+ // moreParentData: {
|
|
|
+ // checkStrictly: true,
|
|
|
+ // multiple: true,
|
|
|
+ // lazy: true,
|
|
|
+ // async lazyLoad (node, resolve) {
|
|
|
+ // const { level, data } = node;
|
|
|
+ // if (data && data.children && data.children.length !== 0) {
|
|
|
+ // return resolve(node)
|
|
|
+ // }
|
|
|
+ // console.log(level)
|
|
|
+ // let parentId = level == 0 ? 0 : data.value
|
|
|
+ // let parames = {
|
|
|
+ // 'pid':parentId
|
|
|
+ // }
|
|
|
+ // self.$store.dispatch('pool/categoryList',parames).then(res=> {
|
|
|
+ // if (res.data) {
|
|
|
+ // const nodes = res.data.map(item => ({
|
|
|
+ // value: item.id,
|
|
|
+ // label: item.name,
|
|
|
+ // leaf: level >= 3,
|
|
|
+ // children: []
|
|
|
+ // }))
|
|
|
+ // resolve(nodes)
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ // }
|
|
|
+ // },
|
|
|
//获取导航id end---------------------------------------->
|
|
|
};
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ // 映射 Vuex 的 state 到计算属性
|
|
|
+ // 监听导航池变化用于回显
|
|
|
+ getPid() {
|
|
|
+ return this.$store.state.template.componentViewData.pid_arr;
|
|
|
+ },
|
|
|
+ getadName(){
|
|
|
+ return this.$store.state.template.componentViewData.adName;
|
|
|
+ },
|
|
|
+ gettitleName(){
|
|
|
+ return this.$store.state.template.componentViewData.titleName;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ getPid(newVal, oldVal) {
|
|
|
+ console.log("导航池改变了!")
|
|
|
+ console.log(newVal, oldVal)
|
|
|
+ // 回显导航池 判断一下是单导航还是多导航
|
|
|
+ if(this.$store.state.template.editComponentType==1){
|
|
|
+ //base0.0.1 必须先赋值再创建nodes 否则可能无法回显
|
|
|
+ this.form.type1data.pid_arr = newVal;
|
|
|
+ this.loadCascaderPath(newVal);
|
|
|
+ }
|
|
|
+ if(this.$store.state.template.editComponentType==2){
|
|
|
+ this.form.type2data.pid_arr = newVal;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getadName(newVal, oldVal) {
|
|
|
+ console.log("广告文字改变了!")
|
|
|
+ console.log(newVal, oldVal)
|
|
|
+ this.form.type3data.adName = newVal;
|
|
|
+ },
|
|
|
+ gettitleName(newVal, oldVal) {
|
|
|
+ console.log("标题文字改变了!")
|
|
|
+ console.log(newVal, oldVal)
|
|
|
+ this.form.type7data.titleName = newVal;
|
|
|
+ }
|
|
|
+ },
|
|
|
methods: {
|
|
|
closeEditWindow(){
|
|
|
this.$store.commit('template/closeEditWindowStatus');
|
|
|
},
|
|
|
submitData(){
|
|
|
+ //验证表单
|
|
|
this.$refs.form.validate(valid => {
|
|
|
+ //构建提交的数据
|
|
|
+ let data = {
|
|
|
+ id:this.$store.state.template.editSectorId,//组件id
|
|
|
+ sort:this.$store.state.template.editComponentSort,//组件位置
|
|
|
+ dataSort:this.$store.state.template.editDataSort,//数据位置
|
|
|
+ type:this.$store.state.template.editComponentType,//组件类型
|
|
|
+ data:""//提交的数据
|
|
|
+ }
|
|
|
if (valid) {
|
|
|
- console.log("保存数据!")
|
|
|
-
|
|
|
+ //判断当前提交的数据类型
|
|
|
+ //1=普通新闻 2=tabs新闻选项卡 3=广告 4=友情链接 6=静态组件 7=文本 8=评论
|
|
|
+ if(this.$store.state.template.editComponentType == 1){
|
|
|
+ data.data = this.form.type1data;
|
|
|
+ }
|
|
|
+ //2=tabs新闻选项卡
|
|
|
+ if(this.$store.state.template.editComponentType == 2){
|
|
|
+ data.data = this.form.type2data;
|
|
|
+ }
|
|
|
+ //3=广告
|
|
|
+ if(this.$store.state.template.editComponentType == 3){
|
|
|
+ data.data = this.form.type3data;
|
|
|
+ }
|
|
|
+ //7=文本
|
|
|
+ if(this.$store.state.template.editComponentType == 7){
|
|
|
+ data.data = this.form.type7data;
|
|
|
+ }
|
|
|
+ //第二步:提交数据
|
|
|
+ this.$store.commit('template/saveComponentData',data);
|
|
|
+ //第三步:关闭编辑窗口
|
|
|
+ this.$store.commit('template/closeEditWindowStatus');
|
|
|
}
|
|
|
})
|
|
|
- }
|
|
|
+ },
|
|
|
+ //回显级联选择器
|
|
|
+ async loadCascaderPath(path, type) {
|
|
|
+ this.oneParentKey+=1;
|
|
|
+ // 如果是单选类型,path 是普通数组
|
|
|
+ for (let i = 0; i < path.length; i++) {
|
|
|
+ const parentId = path[i - 1] || 0; // 获取当前层级的父级ID
|
|
|
+ const level = i; // 当前层级的索引
|
|
|
+ await this.$store.dispatch('pool/categoryList',{pid:parentId}).then((res)=>{
|
|
|
+ const nodes = res.data.map(item => ({
|
|
|
+ value: item.id,
|
|
|
+ label: item.name,
|
|
|
+ leaf: level >= 4,
|
|
|
+ checked: true
|
|
|
+ }));
|
|
|
+ // 将数据传递到 resolve,通知 cascader 这一层的数据加载完毕
|
|
|
+ if (level === path.length - 1) {
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.form.type1data.pid_arr = path;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
},
|
|
|
- mounted() {
|
|
|
+ mounted() {
|
|
|
|
|
|
},
|
|
|
};
|