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
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>
|