Commit 98f19d85 by 无尘

add: 增加会员详情字段

parent 3a0a06f9
...@@ -7,10 +7,16 @@ ...@@ -7,10 +7,16 @@
<div class="custom-dialog-body"> <div class="custom-dialog-body">
<template v-for="(item,index) in customData"> <template v-for="(item,index) in customData">
<div class="detail-field-cell flex" :key="index"> <div class="detail-field-cell flex" :key="index">
<div class="detail-field-left">{{item.name}}</div> <div class="detail-field-left">{{item.fieldName}}</div>
<div class="detail-field-right flex"> <div class="detail-field-right flex">
<el-checkbox-group class="flex flex-wrap" v-model="item.checkList" @change="customChange"> <el-checkbox-group class="flex flex-wrap" v-model="item.checkList" @change="customChange">
<el-checkbox v-for="(childItem,childIndex) in item.childList" :label="childItem.id" :key="childItem.id" name="type">{{childItem.name}}</el-checkbox> <el-checkbox v-for="(childItem,childIndex) in item.children"
:label="childItem.fieldCode"
:key="childItem.fieldCode"
:disabled="childItem.disable"
name="type" >
{{childItem.fieldName}}
</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</div> </div>
</div> </div>
...@@ -35,91 +41,97 @@ ...@@ -35,91 +41,97 @@
type: Boolean, type: Boolean,
default: false default: false
}, },
datailData: { detailData: {
type: Array, type: Array,
default: [] default: []
},
dataType: {
type: Number,
default: 1 //'类型:1行政架构,2门店架构'
} }
}, },
data () { data () {
return { return {
repProjectName: 'gic-web', // 项目名 repProjectName: 'gic-web', // 项目名
customDialog: false, // 弹框显示 customDialog: false, // 弹框显示
fixData: ['clerkName','clerkPhone','groupName','positionName'],
fixDataStore: ['clerkName','clerkPhone','groupName','positionName','clerkCode'],
// 复选框数据 // 复选框数据
customData: [ customData: [
{ {
id: 1, fieldCode: 1,
name: "基本信息", fieldName: "基本信息",
checkList: [], checkList: [],
childList: [ children: [
{ {
id: 'name', fieldCode: 'name',
name: '姓名' fieldName: '姓名'
}, },
{ {
id: 'depart', fieldCode: 'depart',
name: '部门' fieldName: '部门'
}, },
{ {
id: 'phone', fieldCode: 'phone',
name: '手机号' fieldName: '手机号'
}, },
{ {
id: 'email', fieldCode: 'email',
name: '邮箱' fieldName: '邮箱'
}, },
{ {
id: 'profession', fieldCode: 'profession',
name: '职业' fieldName: '职业'
}, },
{ {
id: 'hiredate', fieldCode: 'hiredate',
name: '入职时间' fieldName: '入职时间'
}, },
] ]
}, },
{ {
id: 2, fieldCode: 2,
name: "工作信息", fieldName: "工作信息",
checkList: [], checkList: [],
childList: [ children: [
{ {
id: 'name', fieldCode: 'name',
name: '姓名' fieldName: '姓名'
}, },
{ {
id: 'depart', fieldCode: 'depart',
name: '部门' fieldName: '部门'
} }
] ]
}, },
{ {
id: 3, fieldCode: 3,
name: "个人信息", fieldName: "个人信息",
checkList: [], checkList: [],
childList: [ children: [
{ {
id: 'name', fieldCode: 'name',
name: '姓名' fieldName: '姓名'
}, },
{ {
id: 'depart', fieldCode: 'depart',
name: '部门' fieldName: '部门'
}, },
] ]
}, },
{ {
id: 4, fieldCode: 4,
name: "学历信息", fieldName: "学历信息",
checkList: [], checkList: [],
childList: [ children: [
{ {
id: 'name', fieldCode: 'name',
name: '姓名' fieldName: '姓名'
}, },
{ {
id: 'depart', fieldCode: 'depart',
name: '部门' fieldName: '部门'
}, },
] ]
}, },
...@@ -141,6 +153,9 @@ ...@@ -141,6 +153,9 @@
that.baseUrl = host that.baseUrl = host
} }
}, },
computed: {
},
methods:{ methods:{
/** /**
...@@ -157,16 +172,18 @@ ...@@ -157,16 +172,18 @@
customCancel() { customCancel() {
const that = this; const that = this;
that.customDialog = false that.customDialog = false
that.$emit('customHandleConfirm') that.$emit('customHandleConfirm','hide')
}, },
/** /**
* 确定 * 确定
*/ */
customConfirm() { customConfirm() {
const that = this; const that = this;
// console.log(that.customData) that.checkList = that.customData.map(item=>item.checkList).flat();
that.$emit('customHandleConfirm') that.saveFields(that.dataType)
}, },
/** /**
...@@ -187,13 +204,13 @@ ...@@ -187,13 +204,13 @@
type: type,// 类型:1行政架构,2门店架构' type: type,// 类型:1行政架构,2门店架构'
} }
postRequest('/haoban-manage-web/employee-show-field-detail.json',para) postRequest('/haoban-manage-web/record/employee-show-field-save.json',para)
.then((res) => { .then((res) => {
// console.log(res,res.data,res.data.errorCode) // console.log(res,res.data,res.data.errorCode)
var resData = res.data var resData = res.data
if (resData.errorCode == 1) { if (resData.errorCode == 1) {
showMsg.showmsg('操作成功','success') showMsg.showmsg('添加成功','success');
that.$emit('customHandleConfirm')
return; return;
} }
...@@ -266,40 +283,30 @@ ...@@ -266,40 +283,30 @@
*/ */
handleAllFields(result) { handleAllFields(result) {
const that = this const that = this
result.forEach(function(ele,index){ // console.log(that.treeData(result))
if (!!that.hasOwnProperty(ele.parentCode)) { let newResult = that.treeData(result);
ele.fixed = parseInt(ele.fixed) === 1? true : false; newResult.forEach(function(ele,index){
ele.isMust = parseInt(ele.isMust) === 1? true : false; ele.checkList = []
ele.fieldEdited = parseInt(ele.fieldEdited) === 1? true : false; // ele.children.forEach(function(el,key){
ele.systemFlag = true; // el.disable = that.dataType == 1 ? that.fixData.includes(el.fieldCode) : that.fixDataStore.includes(el.fieldCode)
ele.fieldOperations = !!ele.fieldOperations? JSON.parse(ele.fieldOperations): {}; // })
ele.staffRecordsIds = !!ele.staffRecordsIds? JSON.parse(ele.staffRecordsIds): [];
that[ele.parentCode].push(ele);
};
// 设置 fieldParent
if (!!that.fieldParent.hasOwnProperty(ele.fieldCode)) {
ele.children = [];
that.fieldParent[ele.fieldCode] = ele;
ele.systemFlag = true;
}
}) })
that.customData = newResult;
}, },
formatDate(time,flag) { /**
* 处理已选信息
*/
handleDetailData() {
const that = this const that = this
// (0-9)年月数字的显示 that.customData.forEach(function(ele,index) {
function formatDig(num) { ele.checkList = [];
return num > 9 ? '' + num : '0' + num; ele.children.forEach(function(el,key){
}
var myDate = new Date(time); that.checkList.includes(el.fieldCode)? ele.checkList.push(el.fieldCode): '';
let y = myDate.getFullYear(); el.disable = that.dataType == 1 ? that.fixData.includes(el.fieldCode) : that.fixDataStore.includes(el.fieldCode)
let m = myDate.getMonth()+1; })
let d = myDate.getDate(); })
return y + flag + formatDig(m) + flag + formatDig(d) + flag
} }
}, },
...@@ -308,17 +315,20 @@ ...@@ -308,17 +315,20 @@
const that = this; const that = this;
that.customDialog = newData that.customDialog = newData
}, },
datailData: function(newData,oldData){ detailData: function(newData,oldData){
const that = this; const that = this;
// console.log(newData)
that.checkList = !!newData && !!newData.length ? newData: []; that.checkList = !!newData && !!newData.length ? newData: [];
}, that.handleDetailData()
}
}, },
/* 接收数据 */ /* 接收数据 */
mounted(){ mounted(){
console.log("传递的参数对象:",this.showCustomDialog) // console.log("传递的参数对象:",this.showCustomDialog)
const that = this; const that = this;
that.customDialog = that.showCustomDialog that.customDialog = that.showCustomDialog;
that.getAllFields()
}, },
} }
......
...@@ -7,12 +7,12 @@ ...@@ -7,12 +7,12 @@
<h2 class="m-b-25">{{adminStruct.name}}</h2> <h2 class="m-b-25">{{adminStruct.name}}</h2>
<div class="staffDetails-cell-fixed"> <div class="staffDetails-cell-fixed">
<template v-for="(item,index) in adminStruct.fixedList"> <template v-for="(item,index) in adminStruct.fixedList">
<el-button disabled class="staffDetails-cell-btn">{{item.name}}</el-button> <el-button disabled class="staffDetails-cell-btn">{{item.fieldName}}</el-button>
</template> </template>
</div> </div>
<div class="staffDetails-cell-add"> <div class="staffDetails-cell-add">
<template v-for="(item,index) in adminStruct.defineList"> <template v-for="(item,index) in adminStruct.defineList">
<el-tag class="staffDetails-cell-btn">{{item.name}} <i class="el-icon-circle-close" @click.stop="delField(index,item,adminStruct.defineList)"></i></el-tag> <el-tag class="staffDetails-cell-btn">{{item.fieldName}} <i class="el-icon-circle-close" @click.stop="delField(index,item,adminStruct.defineList,1)"></i></el-tag>
</template> </template>
<el-button class="el-tag m-l-8 staffDetails-cell-btn" @click.stop="showDialogLayer(1)"><i class="el-icon-plus"></i>添加字段</el-button> <el-button class="el-tag m-l-8 staffDetails-cell-btn" @click.stop="showDialogLayer(1)"><i class="el-icon-plus"></i>添加字段</el-button>
</div> </div>
...@@ -21,12 +21,12 @@ ...@@ -21,12 +21,12 @@
<h2 class="m-b-25">{{storeStruct.name}}</h2> <h2 class="m-b-25">{{storeStruct.name}}</h2>
<div class="staffDetails-cell-fixed"> <div class="staffDetails-cell-fixed">
<template v-for="(item,index) in storeStruct.fixedList"> <template v-for="(item,index) in storeStruct.fixedList">
<el-button disabled class="staffDetails-cell-btn">{{item.name}}</el-button> <el-button disabled class="staffDetails-cell-btn">{{item.fieldName}}</el-button>
</template> </template>
</div> </div>
<div class="staffDetails-cell-add"> <div class="staffDetails-cell-add">
<template v-for="(item,index) in storeStruct.defineList"> <template v-for="(item,index) in storeStruct.defineList">
<el-tag class="staffDetails-cell-btn">{{item.name}} <i class="el-icon-circle-close" @click.stop="delField(index,item,storeStruct.defineList)"></i></el-tag> <el-tag class="staffDetails-cell-btn">{{item.fieldName}} <i class="el-icon-circle-close" @click.stop="delField(index,item,storeStruct.defineList,2)"></i></el-tag>
</template> </template>
<el-button class="el-tag m-l-8 staffDetails-cell-btn" @click.stop="showDialogLayer(2)"><i class="el-icon-plus"></i>添加字段</el-button> <el-button class="el-tag m-l-8 staffDetails-cell-btn" @click.stop="showDialogLayer(2)"><i class="el-icon-plus"></i>添加字段</el-button>
</div> </div>
...@@ -35,7 +35,13 @@ ...@@ -35,7 +35,13 @@
</div> </div>
<vue-gic-footer></vue-gic-footer> <vue-gic-footer></vue-gic-footer>
<!-- 自定义字段 --> <!-- 自定义字段 -->
<staff-detail-field :datailData="datailData" :showCustomDialog="showCustomDialog" @customHandleConfirm="customHandleConfirm"></staff-detail-field> <staff-detail-field
:detailData="detailData"
:showCustomDialog="showCustomDialog"
:dataType="dataType"
@customHandleConfirm="customHandleConfirm">
</staff-detail-field>
</div> </div>
</template> </template>
<script> <script>
...@@ -72,64 +78,45 @@ export default { ...@@ -72,64 +78,45 @@ export default {
} }
], ],
// 固定的字段
fixData: ['clerkName','clerkPhone','groupName','positionName'],
fixDataStore: ['clerkName','clerkPhone','groupName','positionName','clerkCode'],
// 行政架构 // 行政架构
adminStruct: { adminStruct: {
name: '行政架构通讯录员工详情字段', name: '行政架构通讯录员工详情字段',
fixedList: [ fixedList: [
{ // {
name: '姓名' // fieldName: "姓名",
}, // fields: "clerkName"
{ // },
name: '姓名' // {
}, // fieldName: "手机号",
{ // fields: "clerkPhone"
name: '姓名' // },
}, // {
{ // fieldName: "部门",
name: '姓名' // fields: "groupName"
} // },
// {
// fieldName: "职位",
// fields: "positionName"
// }
], ],
defineList: [ defineList: [
{ // {
name: '姓名' // fieldName: "姓名",
}, // fields: "clerkName"
{ // },
name: '姓名' // {
}, // fieldName: "手机号",
{ // fields: "clerkPhone"
name: '姓名' // },
}, // {
{ // fieldName: "部门",
name: '姓名' // fields: "groupName"
}, // },
{
name: '姓名'
},
{
name: '姓名'
},
{
name: '姓名'
},
{
name: '姓名'
},
{
name: '姓名'
},
{
name: '姓名'
},
{
name: '姓名'
},
{
name: '姓名'
},
{
name: '姓名'
},
], ],
}, },
...@@ -137,37 +124,46 @@ export default { ...@@ -137,37 +124,46 @@ export default {
storeStruct: { storeStruct: {
name: '门店架构通讯录员工详情字段', name: '门店架构通讯录员工详情字段',
fixedList: [ fixedList: [
{ // {
name: '姓名' // fieldName: "姓名",
} // fields: "clerkName"
// },
// {
// fieldName: "手机号",
// fields: "clerkPhone"
// },
// {
// fieldName: "部门",
// fields: "groupName"
// },
// {
// fieldName: "职位",
// fields: "positionName"
// },
// {
// fieldName: "code",
// fields: "clerkCode"
// }
], ],
defineList: [ defineList: [
{ // {
name: '姓名' // fieldName: "姓名",
}, // fields: "clerkName"
{ // },
name: '姓名' // {
}, // fieldName: "手机号",
{ // fields: "clerkPhone"
name: '姓名' // },
}, // {
{ // fieldName: "部门",
name: '姓名' // fields: "groupName"
}, // },
{
name: '姓名'
},
{
name: '姓名'
},
{
name: '姓名'
},
] ]
}, },
showCustomDialog: false, // 自定义弹框显示标志 showCustomDialog: false, // 自定义弹框显示标志
datailData: [], // '类型:1行政架构,2门店架构' detailData: [], // 已选数据 '类型:1行政架构,2门店架构'
dataType: null, //'类型:1行政架构,2门店架构'
} }
}, },
computed: { computed: {
...@@ -180,49 +176,106 @@ export default { ...@@ -180,49 +176,106 @@ export default {
showDialogLayer(type) { showDialogLayer(type) {
const that = this const that = this
that.showCustomDialog = true; that.showCustomDialog = true;
that.detailType = type; that.dataType = type;
console.log(1) if (type === 1) {
that.detailData = that.adminStruct.fixedList.map(item=>item.fields).concat(that.adminStruct.defineList.map(item=>item.fields))
}else {
that.detailData = that.storeStruct.fixedList.map(item=>item.fields).concat(that.storeStruct.defineList.map(item=>item.fields))
}
console.log(type)
}, },
/** /**
* 自定义弹框触发事件 * 自定义弹框触发事件
*/ */
customHandleConfirm(val) { customHandleConfirm(val) {
const that = this const that = this;
that.showCustomDialog = false; that.showCustomDialog = false;
if (!!val) {return false;}
that.getSaveFields(that.dataType);
}, },
/** /**
* 删除字段 * 删除字段
*/ */
delField(index,item,list) { delField(index,item,list,flag) {
const that = this const that = this
that.$alert('确定要删除?', '提示', { that.$alert('确定要删除?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
}).then(({ value }) => { }).then(({ value }) => {
list.splice(index,1) that.postDlField(item.fields,flag,list,index)
}).catch(() => { }).catch(() => {
}); });
}, },
/** /**
* 删除字段---api
*/
postDlField(code,type,list,index) {
const that = this;
const para = {
fields: code,
type: type,// 类型:1行政架构,2门店架构'
}
postRequest('/haoban-manage-web/record/employee-show-field-delete.json',para)
.then((res) => {
// console.log(res,res.data,res.data.errorCode)
var resData = res.data
if (resData.errorCode == 1) {
showMsg.showmsg('删除成功','success')
list.splice(index,1)
return;
}
errMsg.errorMsg(resData)
})
.catch(function (error) {
console.log(error);
that.$message.error({
duration: 1000,
message: error.message
})
});
},
/**
* 获取已经选择的字段 * 获取已经选择的字段
*/ */
getSaveFields(type) { getSaveFields(type) {
const that = this; const that = this;
if (type === 1) {
that.adminStruct.fixedList = [];
that.adminStruct.defineList = [];
}else {
that.storeStruct.fixedList = [];
that.storeStruct.defineList = [];
}
const para = { const para = {
type: type,// 类型:1行政架构,2门店架构' type: type,// 类型:1行政架构,2门店架构'
} }
postRequest('/haoban-manage-web/employee-show-field-detail.json',para) postRequest('/haoban-manage-web/record/employee-show-field-detail.json',para)
.then((res) => { .then((res) => {
// console.log(res,res.data,res.data.errorCode) // console.log(res,res.data,res.data.errorCode)
var resData = res.data var resData = res.data
if (resData.errorCode == 1) { if (resData.errorCode == 1) {
showMsg.showmsg('操作成功','success') // showMsg.showmsg('操作成功','success')
// console.log(Number.parseInt(type))
resData.result.forEach(function(ele,index){
if (Number.parseInt(type) === 1) {
that.fixData.includes(ele.fields)? that.adminStruct.fixedList.push(ele) : that.adminStruct.defineList.push(ele)
}else {
that.fixDataStore.includes(ele.fields)? that.storeStruct.fixedList.push(ele) : that.storeStruct.defineList.push(ele)
}
})
return; return;
} }
...@@ -231,7 +284,6 @@ export default { ...@@ -231,7 +284,6 @@ export default {
}) })
.catch(function (error) { .catch(function (error) {
console.log(error); console.log(error);
that.$message.error({ that.$message.error({
duration: 1000, duration: 1000,
message: error.message message: error.message
...@@ -240,7 +292,8 @@ export default { ...@@ -240,7 +292,8 @@ export default {
} }
}, },
mounted() { mounted() {
const that = this
Promise.all([that.getSaveFields(1),that.getSaveFields(2)]);
}, },
components: { components: {
navCrumb, navCrumb,
...@@ -302,6 +355,7 @@ export default { ...@@ -302,6 +355,7 @@ export default {
.staffDetails-cell-btn { .staffDetails-cell-btn {
width: 110px; width: 110px;
height: 32px; height: 32px;
padding: 0;
margin: 0 20px 20px 0; margin: 0 20px 20px 0;
text-align: center; text-align: center;
vertical-align: top; vertical-align: top;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment