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

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

@ -21,6 +21,18 @@
:prop="item.keyName"
: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'">
<el-input
v-if="
@ -106,10 +118,14 @@
size="small"
clearable
class="item-select"
:multiple="item.multiple || false"
:filterable="item.filterable || false"
:allowCreate="item.allowCreate || false"
@change="(e) => handleChangeSelect(e, item)"
>
<el-option
v-for="subItem in item.optionList"
:key="subItem.value"
v-for="(subItem, subIndex) in item.optionList"
:key="subItem.value + subIndex"
:label="subItem.label"
:value="subItem.value"
>
@ -126,7 +142,7 @@
:show-all-levels="false"
size="small"
clearable
style="width: 240px"
class="item-select"
@change="(e) => handleChangeCascader(e, item)"
>
</el-cascader>
@ -143,9 +159,11 @@
:file-list="item.showList"
:on-success="(res, file) => handleImgSuccess(res, file, 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>
</template>
@ -384,8 +402,16 @@ export default {
},
handleChangeCascader(vals, item) {
this.fmData[item["keyName"]] = vals;
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) {
console.log("handleImgRemove", file);
let url = file.url || file.response.data.url;
let url = file.response ? file.response.data.url : file.url;
if (url) {
let { fmData } = this;
this.fmData[item.keyName] = fmData[item.keyName].filter(
@ -411,7 +437,8 @@ export default {
);
}
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) {
console.log("handleImgSuccess", res);
if (res.code === 0 && res.msg === "success") {
this.fmData[item.keyName].push({
let { fmData } = this;
let picItem = {
url: res.data.url,
name: file.name,
size: file.size,
type: file.type,
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.length > 0) {
this.fmData[item.supKeys[0]] = fmData[item.keyName].map(
@ -434,7 +467,8 @@ export default {
);
}
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 {
@ -688,7 +722,7 @@ export default {
width: 450px;
}
.item-select {
width: 225px;
width: 450px;
}
.item-number {
width: 225px;

Loading…
Cancel
Save