更新的条件支持选择列

This commit is contained in:
暮光:城中城
2021-05-29 22:18:15 +08:00
parent c56613bc63
commit 089fab958d
5 changed files with 50 additions and 6 deletions

View File

@@ -1 +1 @@
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=favicon-db.png><title>数据库文档管理</title><link href=css/app.b6b9fe42.css rel=preload as=style><link href=css/chunk-vendors.8924efc6.css rel=preload as=style><link href=js/app.c876342e.js rel=preload as=script><link href=js/chunk-vendors.d40f789d.js rel=preload as=script><link href=css/chunk-vendors.8924efc6.css rel=stylesheet><link href=css/app.b6b9fe42.css rel=stylesheet></head><body><noscript><strong>We're sorry but zyplayer-db-ui doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=js/chunk-vendors.d40f789d.js></script><script src=js/app.c876342e.js></script></body></html>
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=favicon-db.png><title>数据库文档管理</title><link href=css/app.b6b9fe42.css rel=preload as=style><link href=css/chunk-vendors.8924efc6.css rel=preload as=style><link href=js/app.8fdb52a2.js rel=preload as=script><link href=js/chunk-vendors.d40f789d.js rel=preload as=script><link href=css/chunk-vendors.8924efc6.css rel=stylesheet><link href=css/app.b6b9fe42.css rel=stylesheet></head><body><noscript><strong>We're sorry but zyplayer-db-ui doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=js/chunk-vendors.d40f789d.js></script><script src=js/app.8fdb52a2.js></script></body></html>

View File

@@ -96,6 +96,19 @@
</el-tabs>
</div>
</el-drawer>
<!--选择导出为update的条件列弹窗-->
<el-dialog :visible.sync="exportConditionVisible" width="500px" title="选择更新语句条件">
<div>
更新条件列
<el-select v-model="conditionDataColsChoice" multiple placeholder="请选择" style="width: 370px;">
<el-option v-for="item in conditionDataCols" :key="item.prop" :label="item.prop" :value="item.prop"></el-option>
</el-select>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="exportConditionVisible = false"> </el-button>
<el-button type="primary" @click="doCopyCheckLineUpdate"> </el-button>
</span>
</el-dialog>
<span id="widthCalculate" style="visibility: hidden; white-space: nowrap;position: fixed;"></span>
</div>
</template>
@@ -139,6 +152,10 @@
myHistoryListList: [],
// 选择复制
choiceResultObj: {},
//
exportConditionVisible: false,
conditionDataCols: [],
conditionDataColsChoice: [],
}
},
mounted: function () {
@@ -442,10 +459,29 @@
handleSelectionChange(val) {
this.$set(this.choiceResultObj, this.executeShowTable, val);
},
doCopyCheckLineUpdate() {
let choiceData = this.choiceResultObj[this.executeShowTable] || [];
if (choiceData.length > 0) {
let dataCols = this.executeResultList.find(item => item.name === this.executeShowTable).dataCols;
let copyData = copyFormatter.format('update', this.editorDbProduct, dataCols, choiceData, this.conditionDataColsChoice);
this.conditionDataColsChoice = [];
this.exportConditionVisible = false;
this.$copyText(copyData).then(
res => this.$message.success("内容已复制到剪切板!"),
err => this.$message.error("抱歉,复制失败!")
);
}
},
handleCopyCheckLineCommand(type) {
let choiceData = this.choiceResultObj[this.executeShowTable] || [];
if (choiceData.length > 0) {
let dataCols = this.executeResultList.find(item => item.name === this.executeShowTable).dataCols;
if (type === 'update') {
// 选择更新的条件列
this.conditionDataCols = dataCols;
this.exportConditionVisible = true;
return;
}
let copyData = copyFormatter.format(type, this.editorDbProduct, dataCols, choiceData);
this.$copyText(copyData).then(
res => this.$message.success("内容已复制到剪切板!"),

View File

@@ -28,7 +28,7 @@ export default {
});
return copyData;
},
update(dataCols, choiceData) {
update(dataCols, choiceData, condition=[]) {
// 复制为update语句
let copyData = '';
choiceData.forEach(item => {
@@ -39,12 +39,20 @@ export default {
let val = item[col.prop];
if (typeof val === 'number' && !isNaN(val)) {
values += val;
if (col.prop === 'id') where = ' where id = ' + val;
if (condition.indexOf(col.prop) >= 0) {
if (where.length > 0) where += ' and ';
where += col.prop + ' = ' + val;
}
} else {
val = val.replaceAll('\'', '\'\'');
values += "'" + val + "'";
if (condition.indexOf(col.prop) >= 0) {
if (where.length > 0) where += ' and ';
where += col.prop + ' = ' + "'" + val + "'";
}
}
});
if (where.length > 0) where = ' where ' + where;
copyData += 'update `table` set ' + values + where + ';\n';
});
return copyData;

View File

@@ -1,14 +1,14 @@
import base from './base'
export default {
format(type, product, dataCols, choiceData) {
format(type, product, dataCols, choiceData, condition) {
let formatter = this.getProduct(product);
if (type === 'insert') {
// 复制为insert语句
return formatter.insert(dataCols, choiceData);
} else if (type === 'update') {
// 复制为update语句
return formatter.update(dataCols, choiceData);
return formatter.update(dataCols, choiceData, condition);
} else if (type === 'json') {
// 复制为json
return formatter.json(dataCols, choiceData);