Browse Source

更改中

master
dai 3 years ago
parent
commit
fdd80b204e
  1. 23
      src/utils/cascader.js
  2. 67
      src/views/modules/communityParty/article/index.vue
  3. 58
      src/views/modules/cpts/base/cpts/edit.vue

23
src/utils/cascader.js

@ -1,6 +1,3 @@
/**
* 深度克隆
*/
export function getItemByIdInCascader(arr, vals, idName, childName) { export function getItemByIdInCascader(arr, vals, idName, childName) {
let item = arr.find((v) => v[idName] == vals[0]); let item = arr.find((v) => v[idName] == vals[0]);
if (vals.length > 1) { if (vals.length > 1) {
@ -17,3 +14,23 @@ export function getItemByIdInCascader(arr, vals, idName, childName) {
return [item]; return [item];
} }
} }
export function collapse(arr, childName) {
if (arr.length > 0) {
let ret = [...arr];
arr.forEach((element) => {
let childs = element[childName];
if (childs && Array.isArray(childs)) {
ret.push(...collapse(childs, childName));
}
});
return ret;
} else {
return [];
}
}
export default {
getItemByIdInCascader,
collapse,
};

67
src/views/modules/communityParty/article/index.vue

@ -23,7 +23,8 @@
<script> <script>
import basePage from "@/views/modules/cpts/base/index"; import basePage from "@/views/modules/cpts/base/index";
import { getItemByIdInCascader } from "@/utils/cascader"; import { getItemByIdInCascader, collapse } from "@/utils/cascader";
import { requestPost } from "@/js/dai/request";
export default { export default {
props: {}, props: {},
@ -31,7 +32,7 @@ export default {
data() { data() {
return { return {
searchParams: [ searchParams: [
{ field: "活动标题", keyName: "name", type: "input" }, { field: "活动标题", keyName: "title", type: "input" },
{ {
field: "标签", field: "标签",
keyName: "tagIds", keyName: "tagIds",
@ -154,7 +155,7 @@ export default {
editParams: [ editParams: [
{ {
field: "文章标题", field: "文章标题",
keyName: "name", keyName: "title",
type: "input", type: "input",
maxlength: 50, maxlength: 50,
editDisabled: true, editDisabled: true,
@ -168,11 +169,14 @@ export default {
}, },
{ {
field: "封面图片", field: "封面图片",
keyName: "category", keyName: "imgArr",
type: "upload", type: "upload",
limit: 1, limit: 1,
editDisabled: true, editDisabled: true,
rules: [], rules: [],
value: [],
supKeys: ["imgUrlArr", "imgUrl"],
supValues: [[], ""],
beforeImgUpload(file, item, that) { beforeImgUpload(file, item, that) {
console.log(file); console.log(file);
const isLt1M = file.size / 1024 / 1024 < 10; const isLt1M = file.size / 1024 / 1024 < 10;
@ -191,59 +195,75 @@ export default {
}, },
{ {
field: "发布范围", field: "发布范围",
keyName: "publishRangeIds", keyName: "gridIdList",
type: "cascader", type: "cascader",
value: [],
supKeys: ["publishRangeDesc"],
supValues: [""],
optionUrl: "/gov/org/customeragency/agencygridtree", optionUrl: "/gov/org/customeragency/agencygridtree",
optionUrlParams: { optionUrlParams: {
agencyId: this.$store.state.user.agencyId, agencyId: this.$store.state.user.agencyId,
}, },
optionList: [], optionList: [],
optionProps: { optionProps: {
multiple: false, multiple: true,
value: "agencyId", value: "agencyId",
label: "agencyName", label: "agencyName",
children: "subAgencyList", children: "subAgencyList",
checkStrictly: true, checkStrictly: false,
emitPath: false,
}, },
optionCook(obj) { optionCook(obj) {
return [obj]; return [obj];
}, },
supKeys: ["publishRangeId", "publishRangeType"], handleChangeFn(vals, item, that) {
supValues: ["", ""], console.log("handleChangeFn", vals);
handleChangeFn(vals, item) {
const { optionList } = item; const { optionList } = item;
const optionPlaneList = collapse(optionList, "subAgencyList");
if (vals.length > 0) { if (vals.length > 0) {
item["supValues"][0] = vals[vals.length - 1]; let selectedList = vals.map(
item["supValues"][1] = getItemByIdInCascader( (v) =>
optionList, getItemByIdInCascader(
vals, optionPlaneList,
[v],
"agencyId", "agencyId",
"subAgencyList" "subAgencyList"
)[vals.length - 1]["level"]; )[0]
);
console.log("handleChangeFn", selectedList);
let selectedFilterList = selectedList.filter(
(a) => a.level == "grid"
);
that.fmData[item["keyName"]] = selectedFilterList.map(
(a) => a.agencyId
);
that.fmData[item["supKeys"][0]] = selectedFilterList.map(
(a) => a.agencyName
);
} else { } else {
item["supValues"][0] = "";
item["supValues"][1] = "";
} }
}, },
}, },
{ {
field: "发布时间", field: "发布时间",
keyName: "principalName", keyName: "publishDate",
type: "date", type: "date",
maxlength: 50, maxlength: 50,
}, },
{ {
field: "文章标签", field: "文章标签",
keyName: "tagIds", keyName: "tagNameList",
type: "select", type: "select",
multiple: true, multiple: true,
filterable: true,
allowCreate: true,
optionUrl: "/gov/voice/tag/taglist", optionUrl: "/gov/voice/tag/taglist",
optionUrlParams: {}, optionUrlParams: {},
optionList: [], optionList: [],
optionCook(list) { optionCook(list) {
return list.map((item) => ({ return list.map((item) => ({
label: item.tagName, label: item.tagName,
value: item.tagId, value: item.tagName,
})); }));
}, },
}, },
@ -254,9 +274,10 @@ export default {
}, },
{ {
field: "置顶", field: "置顶",
keyName: "principalMobile", keyName: "isTop",
type: "input", type: "switch",
maxlength: 50, activeValue: "1",
inactiveValue: "0",
}, },
], ],
editElseRules: {}, editElseRules: {},

58
src/views/modules/cpts/base/cpts/edit.vue

@ -21,6 +21,18 @@
:prop="item.keyName" :prop="item.keyName"
:rules="item.rules || []" :rules="item.rules || []"
> >
<template v-if="item.type == 'switch'">
<el-switch
v-model="fmData[item.keyName]"
size="small"
:active-text="item.activeText || ''"
:inactive-text="item.inactiveText || ''"
:active-value="item.activeValue || true"
:inactive-value="item.inactiveValue || false"
>
</el-switch>
</template>
<template v-if="item.type == 'input'"> <template v-if="item.type == 'input'">
<el-input <el-input
v-if=" v-if="
@ -106,10 +118,14 @@
size="small" size="small"
clearable clearable
class="item-select" class="item-select"
:multiple="item.multiple || false"
:filterable="item.filterable || false"
:allowCreate="item.allowCreate || false"
@change="(e) => handleChangeSelect(e, item)"
> >
<el-option <el-option
v-for="subItem in item.optionList" v-for="(subItem, subIndex) in item.optionList"
:key="subItem.value" :key="subItem.value + subIndex"
:label="subItem.label" :label="subItem.label"
:value="subItem.value" :value="subItem.value"
> >
@ -126,7 +142,7 @@
:show-all-levels="false" :show-all-levels="false"
size="small" size="small"
clearable clearable
style="width: 240px" class="item-select"
@change="(e) => handleChangeCascader(e, item)" @change="(e) => handleChangeCascader(e, item)"
> >
</el-cascader> </el-cascader>
@ -143,9 +159,11 @@
:file-list="item.showList" :file-list="item.showList"
:on-success="(res, file) => handleImgSuccess(res, file, item)" :on-success="(res, file) => handleImgSuccess(res, file, item)"
:on-remove="(res) => handleImgRemove(res, item)" :on-remove="(res) => handleImgRemove(res, item)"
:before-upload="beforeImgUpload" :before-upload="(file) => beforeImgUpload(file, item)"
>
<a
><i class="el-icon-plus avatar-uploader-icon"></i> 点击上传</a
> >
<a><i class="el-icon-plus avatar-uploader-icon"></i> 点击上传</a>
</el-upload> </el-upload>
</template> </template>
@ -384,8 +402,16 @@ export default {
}, },
handleChangeCascader(vals, item) { handleChangeCascader(vals, item) {
this.fmData[item["keyName"]] = vals;
if (typeof item.handleChangeFn == "function") { if (typeof item.handleChangeFn == "function") {
item.handleChangeFn(vals, item); item.handleChangeFn(vals, item, this);
}
},
handleChangeSelect(vals, item) {
console.log(vals, item);
this.fmData[item["keyName"]] = vals;
if (typeof item.handleChangeFn == "function") {
item.handleChangeFn(vals, item, this);
} }
}, },
@ -398,7 +424,7 @@ export default {
handleImgRemove(file, item) { handleImgRemove(file, item) {
console.log("handleImgRemove", file); console.log("handleImgRemove", file);
let url = file.url || file.response.data.url; let url = file.response ? file.response.data.url : file.url;
if (url) { if (url) {
let { fmData } = this; let { fmData } = this;
this.fmData[item.keyName] = fmData[item.keyName].filter( this.fmData[item.keyName] = fmData[item.keyName].filter(
@ -411,7 +437,8 @@ export default {
); );
} }
if (item.supKeys.length > 1) { if (item.supKeys.length > 1) {
this.fmData[item.supKeys[1]] = item.supValues[0][0] || ""; this.fmData[item.supKeys[1]] =
this.fmData[item.supKeys[0]][0] || "";
} }
} }
} }
@ -420,13 +447,19 @@ export default {
handleImgSuccess(res, file, item) { handleImgSuccess(res, file, item) {
console.log("handleImgSuccess", res); console.log("handleImgSuccess", res);
if (res.code === 0 && res.msg === "success") { if (res.code === 0 && res.msg === "success") {
this.fmData[item.keyName].push({ let { fmData } = this;
let picItem = {
url: res.data.url, url: res.data.url,
name: file.name, name: file.name,
size: file.size, size: file.size,
type: file.type, type: file.type,
format: file.name.split(".").pop(), format: file.name.split(".").pop(),
}); };
if (Array.isArray(this.fmData[item.keyName])) {
this.fmData[item.keyName].push(picItem);
} else {
this.fmData[item.keyName] = [picItem];
}
if (item.supKeys && Array.isArray(item.supKeys)) { if (item.supKeys && Array.isArray(item.supKeys)) {
if (item.supKeys.length > 0) { if (item.supKeys.length > 0) {
this.fmData[item.supKeys[0]] = fmData[item.keyName].map( this.fmData[item.supKeys[0]] = fmData[item.keyName].map(
@ -434,7 +467,8 @@ export default {
); );
} }
if (item.supKeys.length > 1) { if (item.supKeys.length > 1) {
this.fmData[item.supKeys[1]] = item.supValues[0][0] || ""; this.fmData[item.supKeys[1]] =
this.fmData[item.supKeys[0]][0] || "";
} }
} }
} else { } else {
@ -688,7 +722,7 @@ export default {
width: 450px; width: 450px;
} }
.item-select { .item-select {
width: 225px; width: 450px;
} }
.item-number { .item-number {
width: 225px; width: 225px;

Loading…
Cancel
Save