|
|
@@ -301,9 +301,11 @@
|
|
|
ref="RiskPeopleTableRef"
|
|
|
:params="params"
|
|
|
:people-ids="infoFxssbData.ping_gu_ren_yuan_"
|
|
|
+ :people-dept-info="infoFxssbData.ping_gu_bu_men_"
|
|
|
:cul-ways="culWays"
|
|
|
- :bian-zhi-ren="infoFxssbData.bian_zhi_ren_"
|
|
|
+ :bian-zhi-ren="infoFxssbData.bian_zhi_ren_"
|
|
|
@goBack="goRefresh"
|
|
|
+ @update-people-dept-info="handleUpdatePeopleDeptInfo"
|
|
|
/>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -434,7 +436,8 @@ export default {
|
|
|
shi_wu_shuo_ming_: '',
|
|
|
ping_gu_ren_yuan_: '',
|
|
|
ji_hua_bian_hao_: '',
|
|
|
- ji_suan_fang_shi_: ''
|
|
|
+ ji_suan_fang_shi_: '',
|
|
|
+ ping_gu_bu_men_: [] // 新增字段,存储 [{uid: 'xxx', did: 'yyy'}, ...]
|
|
|
},
|
|
|
initWidth: '1280px',
|
|
|
isEdit: false,
|
|
|
@@ -510,6 +513,14 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ },
|
|
|
+ // 监听评估人员变化,同步更新部门映射(保留已有部门)
|
|
|
+ 'infoFxssbData.ping_gu_ren_yuan_': {
|
|
|
+ handler(newVal, oldVal) {
|
|
|
+ if (!this.isEdit && newVal !== oldVal) {
|
|
|
+ this.syncPeopleDeptInfo()
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
|
|
|
@@ -526,6 +537,35 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
+ // 同步评估人员与部门映射(用于新增时)
|
|
|
+ syncPeopleDeptInfo() {
|
|
|
+ const userIds = this.infoFxssbData.ping_gu_ren_yuan_
|
|
|
+ ? this.infoFxssbData.ping_gu_ren_yuan_.split(',').filter(id => id)
|
|
|
+ : []
|
|
|
+ const currentMap = this.infoFxssbData.ping_gu_bu_men_ || []
|
|
|
+ const newMap = userIds.map(uid => {
|
|
|
+ const existing = currentMap.find(item => item.uid === uid)
|
|
|
+ if (existing) {
|
|
|
+ return existing
|
|
|
+ } else {
|
|
|
+ return { uid, did: this.getPersonPosition(uid) || '' }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.infoFxssbData.ping_gu_bu_men_ = newMap
|
|
|
+ },
|
|
|
+ // 子组件部门更新事件
|
|
|
+ handleUpdatePeopleDeptInfo(newDeptInfo) {
|
|
|
+ this.infoFxssbData.ping_gu_bu_men_ = newDeptInfo
|
|
|
+ },
|
|
|
+ // 在保存前主动从子组件同步最新的部门映射,确保数据一致
|
|
|
+ syncDeptInfoFromChild() {
|
|
|
+ if (this.$refs.RiskPeopleTableRef) {
|
|
|
+ const latestDeptInfo = this.$refs.RiskPeopleTableRef.getCurrentDeptInfo()
|
|
|
+ if (latestDeptInfo) {
|
|
|
+ this.infoFxssbData.ping_gu_bu_men_ = latestDeptInfo
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
// 获取最新数据
|
|
|
async getNewData() {
|
|
|
const {
|
|
|
@@ -565,7 +605,7 @@ export default {
|
|
|
type: 'warning'
|
|
|
})
|
|
|
.then(async () => {
|
|
|
- // 提交前自动保存
|
|
|
+ // 提交前自动保存,并先同步部门映射
|
|
|
await this.goSave()
|
|
|
// 判断每个评估人是否已完成识别项
|
|
|
const pinGuRenNum = this.Ids.length
|
|
|
@@ -870,9 +910,14 @@ export default {
|
|
|
},
|
|
|
async goAdd() {
|
|
|
try {
|
|
|
+ // 将部门映射数组转为 JSON 字符串
|
|
|
+ const toSave = { ...this.infoFxssbData }
|
|
|
+ if (toSave.ping_gu_bu_men_) {
|
|
|
+ toSave.ping_gu_bu_men_ = JSON.stringify(toSave.ping_gu_bu_men_)
|
|
|
+ }
|
|
|
const addParamsRecord = {
|
|
|
tableName: 't_fxpgjlb2',
|
|
|
- paramWhere: [this.infoFxssbData]
|
|
|
+ paramWhere: [toSave]
|
|
|
}
|
|
|
const {
|
|
|
variables: { cont }
|
|
|
@@ -891,7 +936,11 @@ export default {
|
|
|
// 先检查状态
|
|
|
await this.getIsFinish()
|
|
|
|
|
|
- // 更新主表
|
|
|
+ // 更新主表,部门映射转为 JSON 字符串
|
|
|
+ const toUpdate = { ...this.infoFxssbData }
|
|
|
+ if (toUpdate.ping_gu_bu_men_) {
|
|
|
+ toUpdate.ping_gu_bu_men_ = JSON.stringify(toUpdate.ping_gu_bu_men_)
|
|
|
+ }
|
|
|
const updateParamsRecord = {
|
|
|
tableName: 't_fxpgjlb2',
|
|
|
updList: [
|
|
|
@@ -899,7 +948,7 @@ export default {
|
|
|
where: {
|
|
|
id_: this.params.id_
|
|
|
},
|
|
|
- param: this.infoFxssbData
|
|
|
+ param: toUpdate
|
|
|
}
|
|
|
]
|
|
|
}
|
|
|
@@ -957,6 +1006,8 @@ export default {
|
|
|
},
|
|
|
async goSave(flag) {
|
|
|
try {
|
|
|
+ // 保存前同步最新的部门映射
|
|
|
+ this.syncDeptInfoFromChild()
|
|
|
this.checkRequired()
|
|
|
if (this.isEdit) {
|
|
|
await this.goEdit(flag)
|
|
|
@@ -990,7 +1041,7 @@ export default {
|
|
|
}
|
|
|
await this.init()
|
|
|
if (this.$refs.RiskPeopleTableRef) {
|
|
|
- await this.$refs.RiskPeopleTableRef.getPeopleList()
|
|
|
+ await this.$refs.RiskPeopleTableRef.refresh() // 改为调用 refresh 方法
|
|
|
}
|
|
|
this.loading = false
|
|
|
},
|
|
|
@@ -1052,14 +1103,29 @@ export default {
|
|
|
async init() {
|
|
|
this.isEdit = !!(this.params && this.params.id_)
|
|
|
if (this.isEdit) {
|
|
|
- this.infoFxssbData = this.params
|
|
|
+ // 深拷贝 params,避免直接修改
|
|
|
+ this.infoFxssbData = JSON.parse(JSON.stringify(this.params))
|
|
|
+ // 从数据库获取最新的部门映射,避免外部传入旧数据
|
|
|
+ const latestData = await this.getNewData()
|
|
|
+ if (latestData.length && latestData[0].ping_gu_bu_men_) {
|
|
|
+ // 用最新的部门映射覆盖
|
|
|
+ this.infoFxssbData.ping_gu_bu_men_ = latestData[0].ping_gu_bu_men_
|
|
|
+ }
|
|
|
+ // 解析部门映射 JSON
|
|
|
+ if (this.infoFxssbData.ping_gu_bu_men_ && typeof this.infoFxssbData.ping_gu_bu_men_ === 'string') {
|
|
|
+ try {
|
|
|
+ this.infoFxssbData.ping_gu_bu_men_ = JSON.parse(this.infoFxssbData.ping_gu_bu_men_)
|
|
|
+ } catch (e) {
|
|
|
+ this.infoFxssbData.ping_gu_bu_men_ = []
|
|
|
+ }
|
|
|
+ } else if (!this.infoFxssbData.ping_gu_bu_men_) {
|
|
|
+ this.infoFxssbData.ping_gu_bu_men_ = []
|
|
|
+ }
|
|
|
console.log('infoFxssbData', this.infoFxssbData)
|
|
|
this.preParams = JSON.parse(JSON.stringify(this.params))
|
|
|
- this.isPingGuRen =
|
|
|
- this.params.ping_gu_ren_yuan_.indexOf(this.userId) >= 0
|
|
|
+ this.isPingGuRen = this.params.ping_gu_ren_yuan_.indexOf(this.userId) >= 0
|
|
|
this.isZuZhang = this.userId === this.infoFxssbData.zu_chang_id_
|
|
|
- this.isFinished =
|
|
|
- this.params && this.params.shi_fou_guo_shen_ === '已完成'
|
|
|
+ this.isFinished = this.params && this.params.shi_fou_guo_shen_ === '已完成'
|
|
|
this.readonly = !!(!this.isZuZhang || this.isFinished)
|
|
|
if (this.params.ping_gu_ren_yuan_) {
|
|
|
this.Ids = this.params.ping_gu_ren_yuan_.split(',')
|
|
|
@@ -1067,6 +1133,12 @@ export default {
|
|
|
this.Ids = []
|
|
|
}
|
|
|
await this.showAlert()
|
|
|
+
|
|
|
+ // 强制子组件使用最新的部门映射重新加载(关键修复)
|
|
|
+ await this.$nextTick()
|
|
|
+ if (this.$refs.RiskPeopleTableRef) {
|
|
|
+ await this.$refs.RiskPeopleTableRef.refresh()
|
|
|
+ }
|
|
|
} else {
|
|
|
const { positions } = this.$store.getters.userInfo
|
|
|
// 默认编制部门是主部门,没有主部门默认第一个部门
|
|
|
@@ -1096,6 +1168,8 @@ export default {
|
|
|
this.infoFxssbData.shi_wu_shuo_ming_ = `年度:${this.infoFxssbData.nian_du_};组长:${this.infoFxssbData.zu_chang_};评估开始日期:${this.infoFxssbData.kai_shi_ri_qi_};风险类型:${this.infoFxssbData.feng_xian_lei_xin}`
|
|
|
})
|
|
|
this.infoFxssbData.ji_suan_fang_shi_ = Object.keys(this.culWays)[0]
|
|
|
+ // 新增模式默认部门映射为空数组,等评估人员选择后再同步
|
|
|
+ this.infoFxssbData.ping_gu_bu_men_ = []
|
|
|
}
|
|
|
}
|
|
|
}
|