|
@@ -24,7 +24,7 @@
|
|
|
</el-row>
|
|
|
</div>
|
|
|
<div class="layerBoxNoBg">
|
|
|
- <el-button>重置</el-button>
|
|
|
+ <el-button @click="clearSearchList">重置</el-button>
|
|
|
<el-button type="primary" style="margin-right:20px" @click="getData('search')">搜索</el-button>
|
|
|
<el-button type="success" icon="el-icon-link" @click="openWindow">添加导航池名称</el-button>
|
|
|
</div>
|
|
@@ -64,33 +64,45 @@
|
|
|
|
|
|
<!--弹出框 start------------------------------------------------------------>
|
|
|
<el-dialog title="添加导航池名称" :visible.sync="windowStatus">
|
|
|
- <el-form :model="form">
|
|
|
- <el-form-item label="导航池名称:" :label-width="formLabelWidth">
|
|
|
+ <el-form :model="form" ref="form" :rules="formRules" autocomplete="off" label-position="left">
|
|
|
+ <el-form-item label="导航池名称:" :label-width="formLabelWidth" prop="name">
|
|
|
<el-input v-model="form.name" autocomplete="off"></el-input>
|
|
|
- <el-checkbox v-model="show_url">引用外链</el-checkbox>
|
|
|
+ <el-checkbox v-model="show_url" @change="ifUrl">引用外链</el-checkbox>
|
|
|
</el-form-item>
|
|
|
- <div v-if="show_url==true">
|
|
|
- <el-form-item label="外链地址:" :label-width="formLabelWidth">
|
|
|
+ <div v-if="form.is_url==1">
|
|
|
+ <el-form-item label="外链地址:" :label-width="formLabelWidth" prop="web_url">
|
|
|
<el-input v-model="form.web_url" autocomplete="off"></el-input>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="导航标题:" :label-width="formLabelWidth" prop="seo_title">
|
|
|
+ <el-input v-model="form.seo_title" autocomplete="off"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="导航关键词:" :label-width="formLabelWidth" prop="seo_keywords">
|
|
|
+ <el-input v-model="form.seo_keywords" autocomplete="off"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="导航描述:" :label-width="formLabelWidth" prop="seo_description">
|
|
|
+ <el-input type="textarea" v-model="form.seo_description"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="排序:" :label-width="formLabelWidth">
|
|
|
+ <el-input v-model="form.sort" autocomplete="off"></el-input>
|
|
|
+ </el-form-item>
|
|
|
</div>
|
|
|
- <div v-else>
|
|
|
- <el-form-item label="关联职能部门:" :label-width="formLabelWidth">
|
|
|
- <el-cascader :key="departmentKey" v-model="form.department_arr_id" placeholder="选择您要绑定的职能部门" :props="departmentData" filterable clearable></el-cascader>
|
|
|
+ <div v-if="form.is_url==0">
|
|
|
+ <el-form-item label="关联职能部门:" :label-width="formLabelWidth" prop="department_arr_id">
|
|
|
+ <el-cascader :key="departmentKey" v-model="form.department_arr_id" placeholder="选择要绑定的职能部门" :props="departmentData" filterable clearable></el-cascader>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="关联行政区划:" :label-width="formLabelWidth">
|
|
|
- <el-cascader :key="cascaderKey" v-model="form.city_arr_id" placeholder="选择您要绑定行政区划" :props="cityData" filterable clearable></el-cascader>
|
|
|
+ <el-form-item label="关联行政区划:" :label-width="formLabelWidth" prop="city_arr_id">
|
|
|
+ <el-cascader :key="cascaderKey" v-model="form.city_arr_id" placeholder="选择要绑定行政区划" :props="cityData" filterable clearable></el-cascader>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="父级导航:" :label-width="formLabelWidth">
|
|
|
-
|
|
|
+ <el-form-item label="父级导航:" :label-width="formLabelWidth" prop="pid_arr">
|
|
|
+ <el-cascader :key="parentKey" v-model="form.pid_arr" placeholder="请选择要绑定的父级导航" :props="parentData" filterable clearable></el-cascader>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="导航标题:" :label-width="formLabelWidth">
|
|
|
+ <el-form-item label="导航标题:" :label-width="formLabelWidth" prop="seo_title">
|
|
|
<el-input v-model="form.seo_title" autocomplete="off"></el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="导航关键词:" :label-width="formLabelWidth">
|
|
|
+ <el-form-item label="导航关键词:" :label-width="formLabelWidth" prop="seo_keywords">
|
|
|
<el-input v-model="form.seo_keywords" autocomplete="off"></el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="导航描述:" :label-width="formLabelWidth">
|
|
|
+ <el-form-item label="导航描述:" :label-width="formLabelWidth" prop="seo_description">
|
|
|
<el-input type="textarea" v-model="form.seo_description"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="排序:" :label-width="formLabelWidth">
|
|
@@ -100,8 +112,8 @@
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button @click="closeWindow">取 消</el-button>
|
|
|
- <el-button type="warning" @click="" v-if="editBtn==true">编辑</el-button>
|
|
|
- <el-button type="primary" @click="" v-else>提交</el-button>
|
|
|
+ <el-button type="warning" @click="editToServe" v-if="editBtn==true">编辑</el-button>
|
|
|
+ <el-button type="primary" @click="addToServe" v-else>提交</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
<!--弹出框 end------------------------------------------------------------>
|
|
@@ -113,9 +125,37 @@
|
|
|
export default {
|
|
|
data() {
|
|
|
//0.全局操作 start ------------------------------------------------------------>
|
|
|
+ //表单验证
|
|
|
+ const validateEmpty = (rule,value,callback) => {
|
|
|
+ if (value.length == 0) {
|
|
|
+ callback(new Error('该项不能为空!'))
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ const validateDepartment = (rule,value,callback) => {
|
|
|
+ if (value.length === 0) {
|
|
|
+ callback(new Error('请选择职能部门!'))
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ const validateCity = (rule,value,callback) => {
|
|
|
+ if (value.length === 0) {
|
|
|
+ callback(new Error('请选择行政区划!'))
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ const validatePid = (rule,value,callback) => {
|
|
|
+ if (value.length === 0) {
|
|
|
+ callback(new Error('请选择父级导航!'))
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
let self = this;
|
|
|
//0.全局操作 end ------------------------------------------------------------>
|
|
|
-
|
|
|
return {
|
|
|
//1.列表和分页相关 start ------------------------------------------------------------>
|
|
|
tableData:[],//内容
|
|
@@ -205,12 +245,24 @@ export default {
|
|
|
department_arr_id:[],//职能部门
|
|
|
city_arr_id:[],//行政区划
|
|
|
sort:0,//排序
|
|
|
- pid:2,
|
|
|
+ //pid:2,
|
|
|
seo_title:"",//标题
|
|
|
seo_keywords:"",//关键词
|
|
|
seo_description:"",//描述
|
|
|
pid_arr:[]//父级导航
|
|
|
},
|
|
|
+ //4.2表单验证规则
|
|
|
+ formRules: {
|
|
|
+ //网站名称不能为空
|
|
|
+ name:[{required:true,trigger:'blur',validator:validateEmpty}],//导航池名称不能为空
|
|
|
+ web_url:[{required:true,trigger:'blur',validator:validateEmpty}],//外链地址不能为空
|
|
|
+ department_arr_id: [{type:'array',required:true,trigger:'change',message:'请选择职能部门!',validator:validateDepartment}],
|
|
|
+ city_arr_id: [{type:'array',required:true,trigger:'change',message:'请选择行政区划!',validator:validateCity}],
|
|
|
+ pid_arr: [{type:'array',required:true,trigger:'change',message:'请选择父级导航!',validator:validatePid}],
|
|
|
+ seo_title:[{required:true,trigger:'blur',validator:validateEmpty}],//标题不能为空
|
|
|
+ seo_keywords:[{required:true,trigger:'blur',validator:validateEmpty}],//关键词不能为空
|
|
|
+ seo_description:[{required:true,trigger:'blur',validator:validateEmpty}],//描述不能为空
|
|
|
+ },
|
|
|
//获取城市列表
|
|
|
cascaderKey:0,//弹窗用的key
|
|
|
cityData: {
|
|
@@ -267,8 +319,34 @@ export default {
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
+ parentKey:0,//获取父级导航
|
|
|
+ parentData: {
|
|
|
+ checkStrictly: 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)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
//弹出框中的表单设置 end ------------------------------------------------------------>
|
|
|
-
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
@@ -276,18 +354,18 @@ export default {
|
|
|
//1.1 开始请求列表信息方法
|
|
|
getData(type){
|
|
|
//搜索条件
|
|
|
- // if(this.getApiData.department_id.length>0){
|
|
|
- // //网系只提交最后一个
|
|
|
- // this.getApiData.department_id = this.getApiData.department_id[this.getApiData.department_id.length - 1];
|
|
|
- // }else{
|
|
|
- // this.getApiData.department_id = "";
|
|
|
- // }
|
|
|
- // if(this.getApiData.city_id.length>0){
|
|
|
- // //城市id只提交最后一个
|
|
|
- // this.getApiData.city_id = this.getApiData.city_id[this.getApiData.city_id.length - 1];
|
|
|
- // }else{
|
|
|
- // this.getApiData.city_id = "";
|
|
|
- // }
|
|
|
+ if(this.getApiData.department_id.length>0){
|
|
|
+ //网系只提交最后一个
|
|
|
+ this.getApiData.department_id = this.getApiData.department_id[this.getApiData.department_id.length - 1];
|
|
|
+ }else{
|
|
|
+ this.getApiData.department_id = "";
|
|
|
+ }
|
|
|
+ if(this.getApiData.city_id.length>0){
|
|
|
+ //城市id只提交最后一个
|
|
|
+ this.getApiData.city_id = this.getApiData.city_id[this.getApiData.city_id.length - 1];
|
|
|
+ }else{
|
|
|
+ this.getApiData.city_id = "";
|
|
|
+ }
|
|
|
|
|
|
//如果是搜索,重新加载第一页
|
|
|
if(type=="search"){
|
|
@@ -348,12 +426,18 @@ export default {
|
|
|
this.getApiData.page = val;
|
|
|
this.getData();
|
|
|
},
|
|
|
+ //1.5 重置按钮
|
|
|
+ clearSearchList(){
|
|
|
+ this.tableData = [];
|
|
|
+ this.getApiData.name = "";
|
|
|
+ this.getApiData.department_id = [];
|
|
|
+ this.getApiData.city_id = [];
|
|
|
+ this.getApiData.page = 1;
|
|
|
+ this.getApiData.pageSize = 10;
|
|
|
+ this.getData();
|
|
|
+ },
|
|
|
//列表和分页相关 end ------------------------------------------------------------>
|
|
|
|
|
|
- //添加导航池 start ------------------------------------------------------------>
|
|
|
-
|
|
|
- //添加导航池 end ------------------------------------------------------------>
|
|
|
-
|
|
|
//2.弹出框设置 start ------------------------------------------------------------>
|
|
|
//2.1 打开弹出框
|
|
|
openWindow() {
|
|
@@ -363,10 +447,67 @@ export default {
|
|
|
//2.2 关闭弹出框
|
|
|
closeWindow(){
|
|
|
this.windowStatus = false;
|
|
|
- //this.clearToServe();
|
|
|
+ this.clearToServe(2);
|
|
|
+ },
|
|
|
+ //2.3 清理弹出框
|
|
|
+ clearToServe(type){
|
|
|
+ if(type==1){ //type1 使用了外部链接
|
|
|
+ this.form.department_arr_id = [];
|
|
|
+ this.form.city_arr_id = [];
|
|
|
+ this.form.pid_arr = [];
|
|
|
+ }
|
|
|
+ if(type==2){ //type2 全部清理
|
|
|
+ this.form.name = "";
|
|
|
+ this.form.is_url = 0;
|
|
|
+ this.form.web_url = "";
|
|
|
+ this.form.department_arr_id = [];
|
|
|
+ this.form.city_arr_id = [];
|
|
|
+ this.form.sort = 0;
|
|
|
+ this.form.seo_title = "";
|
|
|
+ this.form.seo_keywords = "";
|
|
|
+ this.form.seo_description = "";
|
|
|
+ this.form.pid_arr = [];
|
|
|
+ this.$refs.form.clearValidate();
|
|
|
+ }
|
|
|
},
|
|
|
//弹出框设置 end ------------------------------------------------------------>
|
|
|
|
|
|
+ //3.添加导航池 start ------------------------------------------------------------>
|
|
|
+ ifUrl(value){
|
|
|
+ //console.log(value)
|
|
|
+ if(value == true){
|
|
|
+ this.form.is_url = 1
|
|
|
+ }else{
|
|
|
+ this.form.is_url = 0
|
|
|
+ }
|
|
|
+ this.$refs.form.clearValidate();
|
|
|
+ },
|
|
|
+ addToServe(){
|
|
|
+ //先判断是否使用了外链
|
|
|
+ if(this.show_url == true){
|
|
|
+ this.clearToServe(1)
|
|
|
+ }
|
|
|
+ this.$refs.form.validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ this.$store.dispatch('pool/addCategory',this.form).then(res=> {
|
|
|
+ //汇报结果
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: '已成功添加导航池!'
|
|
|
+ });
|
|
|
+ //清空并退出
|
|
|
+ this.closeWindow();
|
|
|
+ }).catch(() => {
|
|
|
+ this.$message({
|
|
|
+ type: 'info',
|
|
|
+ message: '网络错误,请重试!'
|
|
|
+ });
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ },
|
|
|
+ //添加导航池 end ------------------------------------------------------------>
|
|
|
|
|
|
//编辑导航池 start ------------------------------------------------------------>
|
|
|
getDataMain(id){
|
|
@@ -385,11 +526,31 @@ export default {
|
|
|
//回显导航池名称
|
|
|
this.form.name = res.data.name;
|
|
|
|
|
|
+ //回显示是否使用外链
|
|
|
+ if(res.data.is_url==1){
|
|
|
+ this.show_url = true;
|
|
|
+ }else if(res.data.is_url==0){
|
|
|
+ this.show_url = false;
|
|
|
+ }
|
|
|
+ //回显外链
|
|
|
+ this.form.is_url=1;
|
|
|
+ this.form.web_url = res.data.web_url;
|
|
|
+
|
|
|
//回显行政区划
|
|
|
- this.form.city_arr_id = res.data.city_arr_id;
|
|
|
+ this.form.city_arr_id = JSON.parse(res.data.city_arr_id);
|
|
|
//当cascaderKey的值改变的时候 级联选择器会重置里面的内容
|
|
|
this.cascaderKey += 1;
|
|
|
- this.loadCascaderPath(this.form.city_arr_id);
|
|
|
+ this.loadCascaderPath(this.form.city_arr_id,"xzqh");
|
|
|
+
|
|
|
+ //回显父级导航
|
|
|
+ this.form.pid_arr = JSON.parse(res.data.pid_arr);
|
|
|
+ this.parentKey += 1;
|
|
|
+ this.loadCascaderPath(this.form.pid_arr,"fjdh");
|
|
|
+
|
|
|
+ //回显职能部门
|
|
|
+ this.form.department_arr_id = JSON.parse(res.data.department_arr_id);
|
|
|
+ this.departmentKey += 1;
|
|
|
+ this.loadCascaderPath(this.form.department_arr_id,"znbm");
|
|
|
|
|
|
//回显导航池标题,描述,关键词
|
|
|
this.form.seo_title = res.data.seo_title;
|
|
@@ -403,7 +564,7 @@ export default {
|
|
|
this.editBtn = true;//显示编辑按钮
|
|
|
},
|
|
|
//回显行政区划
|
|
|
- async loadCascaderPath(path) {
|
|
|
+ async loadCascaderPath(path,type) {
|
|
|
for (let i = 0; i < path.length; i++) {
|
|
|
const parentId = path[i - 1] || 0; // 获取当前层级的父级ID
|
|
|
const level = i; // 当前层级的索引
|
|
@@ -416,12 +577,32 @@ export default {
|
|
|
}));
|
|
|
// 将数据传递到 resolve,通知 cascader 这一层的数据加载完毕
|
|
|
if (level === path.length - 1) {
|
|
|
- this.form.city_arr_id = path;
|
|
|
+ if(type=="xzqh"){this.form.city_arr_id = path;}
|
|
|
+ if(type=="fjdh"){this.form.pid_arr = path;}
|
|
|
+ if(type=="znbm"){this.form.department_arr_id = path;}
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
},
|
|
|
-
|
|
|
+ //修改表单
|
|
|
+ editToServe(){
|
|
|
+ this.form.id = this.editId;
|
|
|
+ //提交表单
|
|
|
+ this.$store.dispatch('pool/updateCategory',this.form).then(res=> {
|
|
|
+ //汇报结果
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: '已成功修改导航池信息!'
|
|
|
+ });
|
|
|
+ //清空并退出
|
|
|
+ this.closeWindow();
|
|
|
+ }).catch(() => {
|
|
|
+ this.$message({
|
|
|
+ type: 'info',
|
|
|
+ message: '网络错误,请重试!'
|
|
|
+ });
|
|
|
+ })
|
|
|
+ }
|
|
|
//编辑导航池 end ------------------------------------------------------------>
|
|
|
},
|
|
|
mounted(){
|