diff --git a/cclqms-vue/src/views/modules/common/Chooselist_eam.vue b/cclqms-vue/src/views/modules/common/Chooselist_eam.vue index 3950813..fe2355e 100644 --- a/cclqms-vue/src/views/modules/common/Chooselist_eam.vue +++ b/cclqms-vue/src/views/modules/common/Chooselist_eam.vue @@ -126,6 +126,8 @@ export default { sqlcode: '', tagno: '', }, + conditionField1: '', + conditionField2: '', defaultParam: false } }, @@ -157,6 +159,8 @@ export default { getChooselistEam({"tagNo": tagNo}).then(({data}) => { this.columnList = [] this.baseListData = data.data + this.conditionField1 = this.qualifyAmbiguousUserField(this.baseListData.fieldname1, this.baseListData.sqlcode) + this.conditionField2 = this.qualifyAmbiguousUserField(this.baseListData.fieldname2, this.baseListData.sqlcode) let start = data.data.sqlcode.toUpperCase().indexOf("Select".toUpperCase()) let end = data.data.sqlcode.toUpperCase().indexOf("from".toUpperCase()) let length = end - start @@ -221,6 +225,8 @@ export default { getDataList (bool) { let sql = this.baseListData.sqlcode + const field1 = this.conditionField1 || this.baseListData.fieldname1 + const field2 = this.conditionField2 || this.baseListData.fieldname2 console.log(this.param1) console.log(this.param2) console.log(this.param3) @@ -229,13 +235,17 @@ export default { console.log(this.param6) console.log(this.baseListData) if (bool) { - sql += " and (" + this.baseListData.fieldname1 + " like '%" + this.param + "%' OR " + this.baseListData.fieldname2 + " like '%" + this.param + "%'" + " ) " + if (field1 && field2) { + sql += " and (" + field1 + " like '%" + this.param + "%' OR " + field2 + " like '%" + this.param + "%'" + " ) " + } else if (field1) { + sql += " and " + field1 + " like '%" + this.param + "%'" + } } - if (this.param1) { - sql += " and " + this.baseListData.fieldname1 + " like '%" + this.param1 + "%'" + if (this.param1 && field1) { + sql += " and " + field1 + " like '%" + this.param1 + "%'" } - if (this.param2) { - sql += " and " + this.baseListData.fieldname2 + " like '%" + this.param2 + "%'" + if (this.param2 && field2) { + sql += " and " + field2 + " like '%" + this.param2 + "%'" } if (this.param3) { sql += " and " + this.baseListData.fieldname3 + " like '%" + this.param3 + "%'" @@ -287,6 +297,18 @@ export default { this.param7 = this.$store.state.user.name this.param = '' this.dataList = [] + }, + qualifyAmbiguousUserField (field, sqlCode) { + const fieldText = String(field || '').trim() + if (!fieldText || fieldText.indexOf('.') > -1) { + return fieldText + } + const sqlText = String(sqlCode || '').toLowerCase() + const hasUserAliasJoin = sqlText.indexOf('from sys_user as a') > -1 && sqlText.indexOf('join access_role as b') > -1 + if (hasUserAliasJoin && (fieldText === 'username' || fieldText === 'user_display')) { + return 'a.' + fieldText + } + return fieldText } } }