You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

289 lines
11 KiB

<template>
<div>
<div style="display: flex;">
<div :style="'width:' + (window.pageWidth - 200 - 110 - 25) + 'px;'">
<el-table :data="contactPersonList" border :height="(window.pageHeight < 600 ? 100 : window.pageHeight - 400) / 2"
size="small" highlight-current-row @row-click="rowClick" ref="contactPersonList">
<el-table-column prop="displayName" label="姓名" min-width="70" align="center" />
<el-table-column prop="title" label="职务" min-width="70" align="center" />
<el-table-column prop="remark" label="备注" min-width="150" align="center" />
<el-table-column prop="creatorName" label="创建者" min-width="70" align="center" />
<el-table-column prop="creationTime" label="创建时间" min-width="120" align="center">
<template slot-scope="scope">
<div v-if="scope.row.creationTime">
{{ moment(scope.row.creationTime).format('yyyy-MM-DD HH:mm:ss') }}
</div>
</template>
</el-table-column>
<el-table-column prop="lastModifierName" label="修改者" min-width="70" align="center" />
<el-table-column prop="lastModificationTime" label="修改时间" min-width="120" align="center">
<template slot-scope="scope">
<div v-if="scope.row.lastModificationTime">
{{ moment(scope.row.lastModificationTime).format('yyyy-MM-DD HH:mm:ss') }}
</div>
</template>
</el-table-column>
</el-table>
<el-table :data="contactMethodList" border :height="(window.pageHeight < 600 ? 100 : window.pageHeight - 400) / 2"
size="small" highlight-current-row ref="contactMethodList">
<el-table-column prop="contactMethodType" label="类型" width="60" align="center">
<template slot-scope="scope">
<div>
{{ scope.row.contactMethodType === "0" ? "手机" : "邮箱" }}
</div>
</template>
</el-table-column>
<el-table-column prop="contactMethodValue" label="联系方式" min-width="120" align="center" />
<el-table-column prop="creatorName" label="创建者" min-width="70" align="center" />
<el-table-column prop="creationTime" label="创建时间" min-width="120" align="center">
<template slot-scope="scope">
<div v-if="scope.row.creationTime">
{{ moment(scope.row.creationTime).format('yyyy-MM-DD HH:mm:ss') }}
</div>
</template>
</el-table-column>
<el-table-column prop="lastModifierName" label="修改者" min-width="70" align="center" />
<el-table-column prop="lastModificationTime" label="修改时间" min-width="120" align="center">
<template slot-scope="scope">
<div v-if="scope.row.lastModificationTime">
{{ moment(scope.row.lastModificationTime).format('yyyy-MM-DD HH:mm:ss') }}
</div>
</template>
</el-table-column>
</el-table>
</div>
<div style="margin-left: 10px; margin-top: 20px">
<div v-show="checkPagePriv(pagePriv.privs, '新增联系人')" style="margin-top: 10px">
<el-button type="primary" @click="btnAdd" class="commonbutton">新增联系人</el-button>
</div>
<div v-show="checkPagePriv(pagePriv.privs, '编辑联系人')" style="margin-top: 10px">
<el-button type="success" @click="btnEdit" class="commonbutton">编辑联系人</el-button>
</div>
<div v-show="checkPagePriv(pagePriv.privs, '删除联系人')" style="margin-top: 10px">
<el-button type="danger" @click="btnDel" class="deleteButton">删除联系人</el-button>
</div>
</div>
</div>
<!-- 联系人 -->
<el-dialog :title="`${dataTransOpts.tableS.contact_person.id ? '编辑' : '新增'}联系人`"
:visible.sync="dialogWin.ContactPersonEdit" width="800px" @close="close_dialogWin_ContactPersonEdit">
<ContactPersonEdit :refFunc="setData" />
</el-dialog>
</div>
</template>
<script>
import moment from "moment";
import { mapState } from "vuex";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { getPagePriv, checkPagePriv, objCopy, deepCopy, arrayExistObj, setData } from "../../utlis/proFunc";
import ContactPersonEdit from '../../components/customerOrg/ContactPersonEdit.vue'
export default {
components: {
ContactPersonEdit
},
props: ["customerOrgId"],
data() {
return {
pagePriv: {
routeUrlorPageName: 'customerOrg', //当前页面归属路由或归属页面权限名称
privs: [] // 页面权限
},
curChooseRow: { id: "" }, // 当前选择联系人信息
contactPersonList: [], // 联系人列表
contactMethodList: [], // 联系方式列表
};
},
created() {
//获取用户当前页面的权限
let userPriv = window.sessionStorage.getItem('userPriv')
if (userPriv) this.pagePriv.privs = deepCopy(getPagePriv(this.pagePriv.routeUrlorPageName))
},
//挂载完成
mounted() {
this.getContactPersonList(this.dataTransOpts.tableS.customer_org.id)
},
computed: {
...mapState(["window", "customerOrg", "dialogWin", "dataTransOpts"]),
},
methods: {
moment, checkPagePriv,
//获取联系人列表
getContactPersonList(customerOrgId) {
if (!customerOrgId) {
this.contactPersonList = [];
this.contactMethodList = []
return
}
getapi(
`/api/app/contact-person/in-customer-org-id/${customerOrgId}`
).then((res) => {
if (res.code != -1) {
this.contactPersonList = res.data;
if (res.data.length > 0) {
this.getContactMethodList(res.data[0].id);
} else {
this.contactMethodList = [];
}
}
});
},
//获取联系方式列表
//api/app/contact-method/in-contact-person-id?ContactPersonId=3a0c08ad-4304-138b-d9e6-a7338739dfc4' \
getContactMethodList(ContactPersonId) {
if (!ContactPersonId) {
this.contactMethodList = []
return
}
getapi("/api/app/contact-method/in-contact-person-id", {
ContactPersonId,
}).then((res) => {
//console.log('res.data',res.data)
this.contactMethodList = res.data;
});
},
//联系人 相关操作
btnAdd() {
//console.log("新增 addContactPerson");
if (!this.dataTransOpts.tableS.customer_org.id) {
this.$message.warning({ showClose: true, message: "没有体检单位信息"});
return;
}
this.dataTransOpts.tableS.contact_person.id = ''
this.dialogWin.ContactPersonEdit = true;
setTimeout(() => {
this.dataTransOpts.refresh.contact_person.S++
}, 10);
},
btnEdit() {
//console.log("编辑 editContactPerson");
// console.log('this.customerOrgId',this.customerOrgId)
if (!this.dataTransOpts.tableS.customer_org.id) {
this.$message.warning({ showClose: true, message: "没有体检单位信息"});
return;
} else if (!this.dataTransOpts.tableS.contact_person.id) {
this.$message.warning({ showClose: true, message: "请先选择要编辑的联系人"});
return;
}
this.dialogWin.ContactPersonEdit = true;
this.dataTransOpts.refresh.contact_person.S++
},
//删除联系人行
btnDel() {
//console.log("删除 delContactPerson");
if (!this.dataTransOpts.tableS.contact_person.id) {
this.$message.warning({ showClose: true, message: "请先选择要编辑的联系人"});
return;
}
this.$confirm("此操作将永久删除该记录, 是否继续?", "提示", {
confirmButtonText: "是",
cancelButtonText: "否",
type: "warning",
}).then(() => {
//console.log('{patientRegisterIds}',{patientRegisterIds})
return deletapi(`/api/app/contact-person/${this.dataTransOpts.tableS.contact_person.id}`);
}).then((res) => {
if (res.code != -1) {
let lfind = arrayExistObj(this.contactPersonList, 'id', this.dataTransOpts.tableS.contact_person.id)
if (lfind > -1) this.contactPersonList.splice(lfind, 1)
this.dataTransOpts.tableS.contact_person.id = "";
setTimeout(() => {
this.dataTransOpts.refresh.contact_method.M++
}, 10);
console.log("操作成功!");
}
}).catch((err) => {
if (err == "cancel") console.log("已取消删除");
});
},
// 设置 data 对象的值(暂时支持到7级),供子组件调用
setData(item, v) {
setData(this, item, v)
console.log('父函数 this.curChooseRow,v', this.curChooseRow, item, v)
},
//新增或编辑后选中记录
close_dialogWin_ContactPersonEdit() {
let personId = this.curChooseRow.id
if (this.dataTransOpts.tableS.contact_person.id) personId = this.dataTransOpts.tableS.contact_person.id
console.log('close_dialogWin_ContactPersonEdit',personId,this.dataTransOpts.tableS.contact_person.id)
if (personId) {
let currentRow = {}
let lfind = arrayExistObj(this.contactPersonList, 'id', personId)
if (lfind > -1) {
objCopy(this.curChooseRow, this.contactPersonList[lfind])
currentRow = this.contactPersonList[lfind]
} else{
currentRow = deepCopy(this.curChooseRow)
this.contactPersonList.push(currentRow)
}
setTimeout(() => {
this.dataTransOpts.refresh.contact_method.M++
this.$refs['contactPersonList'].setCurrentRow()
this.$refs['contactPersonList'].setCurrentRow(currentRow)
}, 10)
}
},
rowClick(row) {
this.curChooseRow = deepCopy(row)
this.dataTransOpts.tableS.contact_person.id = row.id
setTimeout(() => {
this.dataTransOpts.refresh.contact_method.M++
}, 20);
},
},
watch: {
// 单位id未变时,强制刷新
"dataTransOpts.refresh.contact_person.M": {
// immediate: true,
handler(newVal, oldVal) {
console.log(`watch 联系人 newVal:${newVal} oldVal:${oldVal} customerOrgId: ${this.dataTransOpts.tableS.customer_org.id}`);
this.getContactPersonList(this.dataTransOpts.tableS.customer_org.id)
}
},
// 单位id未变时,强制刷新
"dataTransOpts.refresh.contact_method.M": {
// immediate: true,
handler(newVal, oldVal) {
console.log(`watch 联系方式 newVal:${newVal} oldVal:${oldVal} contactPersonId: ${this.dataTransOpts.tableS.contact_person.id}`);
// this.getContactPersonList(this.dataTransOpts.tableS.contact_person.id)
this.getContactMethodList(this.dataTransOpts.tableS.contact_person.id);
}
},
// 'customerOrgId' (newVal,oldVal){
// console.log('watch customerOrgId',newVal,oldVal)
// if(newVal != oldVal){
// this.personId = ''
// }
// }
},
};
</script>
<style scoped>
@import '../../assets/css/global_table.css';
@import '../../assets/css/global_input.css';
@import '../../assets/css/global_form.css';
.btnClass {
width: 110px;
}
</style>