This commit is contained in:
oneao committed 2026-03-22 21:49:28 +08:00
1 parent aa813c9649
commit 62550b8182
45 files changed
+12535 -566

No files matched your search

-2
View File
@@ -31,7 +31,6 @@ declare module 'vue' {
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
ShJdDrawer: typeof import('./src/components/sh/shJdDrawer.vue')['default']
ShProgressDrawer: typeof import('./src/components/sh/shProgressDrawer.vue')['default']
TableDialog: typeof import('./src/components/TableDialog.vue')['default']
TableDialogSingleQuery: typeof import('./src/components/TableDialogSingleQuery.vue')['default']
ToshDialog: typeof import('./src/components/sendsh/toshDialog.vue')['default']
@@ -62,7 +61,6 @@ declare global {
const RouterLink: typeof import('vue-router')['RouterLink']
const RouterView: typeof import('vue-router')['RouterView']
const ShJdDrawer: typeof import('./src/components/sh/shJdDrawer.vue')['default']
const ShProgressDrawer: typeof import('./src/components/sh/shProgressDrawer.vue')['default']
const TableDialog: typeof import('./src/components/TableDialog.vue')['default']
const TableDialogSingleQuery: typeof import('./src/components/TableDialogSingleQuery.vue')['default']
const ToshDialog: typeof import('./src/components/sendsh/toshDialog.vue')['default']
File diff suppressed because it is too large. Load diff
+2 -2
View File
@@ -4,8 +4,8 @@ import axios from 'axios'
import router from '@/router/index'
const instance = axios.create({
// baseURL: 'http://localhost:8089/api', // 后端接口地址
baseURL: 'http://192.168.1.137:8089/api', // 后端接口地址
baseURL: 'http://localhost:8089/api', // 后端接口地址
// baseURL: 'http://192.168.1.137:8089/api', // 后端接口地址
// baseURL: 'http://192.168.1.176:8089/api',
// baseURL: '/api', // 后端接口地址
timeout: 30000,
@@ -1,19 +1,6 @@
<template>
<el-dialog
v-bind="$attrs"
title="Sql预览"
width="1000px"
class="dialog"
@open="initData"
>
<div class="sql-preview">
{{ sqlStr }}
</div>
</el-dialog>
</template>
<script setup>
import { ref } from 'vue'
const props = defineProps({
data: {
type: null,
@@ -28,27 +15,28 @@ const props = defineProps({
const sqlStr = ref('')
function initData() {
if (!props.viewtable) return
if (!props.viewtable)
return
const vrows = props.data || []
const sqlArr = []
// 删除语句
const deleteSql = `DELETE FROM s_columnlib WHERE col_TableName='${props.viewtable}';`
const deleteSql = `DELETE FROM s_columnLib WHERE col_TableName='${props.viewtable}';`
sqlArr.push(deleteSql)
// 插入语句
vrows.forEach((row) => {
const insertSql =
'INSERT INTO s_columnlib(col_TableName,col_FieldName,col_Caption,col_Width,col_Visible,col_Position,' +
'col_ShowSummary,col_BandIndex,col_AllowNull,col_AllowRepeat,col_DefaultValue,col_ReadOnly,col_Color,' +
'col_CanSearch,col_SearchOrder,col_NeedReserve,col_sorted,col_DisplayFormat,col_type,col_datatype,col_foot)'
const insertSql
= 'INSERT INTO s_columnLib(col_TableName,col_FieldName,col_Caption,col_Width,col_Visible,col_Position,'
+ 'col_ShowSummary,col_BandIndex,col_AllowNull,col_AllowRepeat,col_DefaultValue,col_ReadOnly,col_Color,'
+ 'col_CanSearch,col_SearchOrder,col_NeedReserve,col_sorted,col_DisplayFormat,col_type,col_datatype,col_foot)'
const valueSql =
`VALUES('${props.viewtable}', '${row.col_FieldName}', '${row.col_Caption}', '${row.col_Width}', '${row.col_Visible}', '${row.col_Position}', ` +
`'${row.col_ShowSummary}', '${row.col_BandIndex}', '${row.col_AllowNull}', '${row.col_AllowRepeat}', '${row.col_DefaultValue}', '${row.col_ReadOnly}', '${row.col_Color}', ` +
`'${row.col_CanSearch}', '${row.col_SearchOrder}', '${row.col_NeedReserve}', '${row.col_sorted}', '${row.col_DisplayFormat}', '${row.col_type}', '${row.col_datatype}', '${row.col_foot}');`
const valueSql
= `VALUES('${props.viewtable}', '${row.col_FieldName}', '${row.col_Caption}', '${row.col_Width}', '${row.col_Visible}', '${row.col_Position}', `
+ `'${row.col_ShowSummary}', '${row.col_BandIndex}', '${row.col_AllowNull}', '${row.col_AllowRepeat}', '${row.col_DefaultValue}', '${row.col_ReadOnly}', '${row.col_Color}', `
+ `'${row.col_CanSearch}', '${row.col_SearchOrder}', '${row.col_NeedReserve}', '${row.col_sorted}', '${row.col_DisplayFormat}', '${row.col_type}', '${row.col_datatype}', '${row.col_foot}');`
sqlArr.push(insertSql)
sqlArr.push(valueSql)
@@ -59,6 +47,20 @@ function initData() {
}
</script>
<template>
<el-dialog
v-bind="$attrs"
title="Sql预览"
width="1000px"
class="dialog"
@open="initData"
>
<div class="sql-preview">
{{ sqlStr }}
</div>
</el-dialog>
</template>
<style scoped>
.dialog-content {
display: flex;
@@ -1,3 +1,129 @@
<script setup>
import { ElMessage } from 'element-plus'
import { reactive, ref, watch } from 'vue'
import axios from '@/utils/axios'
const props = defineProps({
modelValue: Boolean,
data: {
type: null,
required: true,
},
})
const emit = defineEmits(['update:modelValue'])
const loading = reactive({
table: true,
save: false,
})
const visible = ref(props.modelValue)
watch(
() => props.modelValue,
v => (visible.value = v),
)
watch(visible, v => emit('update:modelValue', v))
const tableData = ref([])
const selectedRows = ref([])
function handleSelectionChange(rows) {
selectedRows.value = rows
}
async function initData() {
const fieldName = props.data?.col_FieldName
if (!fieldName)
return
loading.table = true
const params = {
tableName: 's_columnLib',
whereClause: `col_FieldName = '${fieldName}'`,
}
try {
const response = await axios.get('/pagdetail', { params })
if (response.data?.success) {
tableData.value = (response.data.data?.records || []).filter(
item => item.col_TableName !== props.data.col_TableName,
)
console.log(tableData.value)
}
else {
tableData.value = []
ElMessage.error(response.data?.message || '加载列信息失败')
}
}
catch (err) {
tableData.value = []
ElMessage.error(err || '加载列信息失败')
}
finally {
loading.table = false
}
}
function close() {
tableData.value = []
selectedRows.value = []
visible.value = false
}
async function handleSave() {
if (selectedRows.value.length === 0) {
close()
return
}
loading.save = true
const caption = props.data?.col_Caption || ''
// 构建更新数据
const updates = selectedRows.value.map(row => ({
col_TableName: row.col_TableName,
col_FieldName: row.col_FieldName,
col_Caption: caption,
}))
const requestData = [
{
tableName: 's_columnLib',
keyFields: ['col_TableName', 'col_FieldName'], // 双主键
inserts: [],
updates, // 放入更新数组
deletes: [],
},
]
try {
const response = await axios.post('/saveobjectV3', requestData, {
headers: { 'Content-Type': 'application/json' },
})
if (response.data?.success) {
ElMessage.success('保存成功')
close()
}
else {
throw new Error(response.data?.message || '保存失败')
}
}
catch (err) {
console.error('保存出错:', err)
ElMessage.error(err.message || '保存失败')
}
finally {
loading.save = false
}
}
</script>
<template>
<el-dialog
v-bind="$attrs"
@@ -23,132 +149,17 @@
</el-table>
<template #footer>
<div class="dialog-footer">
<el-button @click="close">取消</el-button>
<el-button type="primary" :loading="loading.save" @click="handleSave">确认</el-button>
<el-button @click="close">
取消
</el-button>
<el-button type="primary" :loading="loading.save" @click="handleSave">
确认
</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup>
import { ref, watch, reactive } from 'vue'
import axios from '@/utils/axios'
import { ElMessage } from 'element-plus'
const props = defineProps({
modelValue: Boolean,
data: {
type: null,
required: true,
},
})
const loading = reactive({
table: true,
save: false,
})
const emit = defineEmits(['update:modelValue'])
const visible = ref(props.modelValue)
watch(
() => props.modelValue,
(v) => (visible.value = v),
)
watch(visible, (v) => emit('update:modelValue', v))
const tableData = ref([])
const selectedRows = ref([])
const handleSelectionChange = (rows) => {
selectedRows.value = rows
}
async function initData() {
const fieldName = props.data?.col_FieldName
if (!fieldName) return
loading.table = true
const params = {
tableName: 's_columnLib',
whereClause: `col_FieldName = '${fieldName}'`,
}
try {
const response = await axios.get('/pagdetail', { params })
if (response.data?.success) {
tableData.value = (response.data.data?.records || []).filter(
(item) => item.col_TableName !== props.data.col_TableName,
)
console.log(tableData.value)
} else {
tableData.value = []
ElMessage.error(response.data?.message || '加载列信息失败')
}
} catch (err) {
tableData.value = []
ElMessage.error(err || '加载列信息失败')
} finally {
loading.table = false
}
}
const close = () => {
tableData.value = []
selectedRows.value = []
visible.value = false
}
const handleSave = async () => {
if (selectedRows.value.length === 0) {
close()
return
}
loading.save = true
const caption = props.data?.col_Caption || ''
// 构建更新数据
const updates = selectedRows.value.map((row) => ({
col_TableName: row.col_TableName,
col_FieldName: row.col_FieldName,
col_Caption: caption,
}))
const requestData = [
{
tableName: 's_columnLib',
keyFields: ['col_TableName', 'col_FieldName'], // 双主键
inserts: [],
updates, // 放入更新数组
deletes: [],
},
]
try {
const response = await axios.post('/saveobjectV3', requestData, {
headers: { 'Content-Type': 'application/json' },
})
if (response.data?.success) {
ElMessage.success('保存成功')
close()
} else {
throw new Error(response.data?.message || '保存失败')
}
} catch (err) {
console.error('保存出错:', err)
ElMessage.error(err.message || '保存失败')
} finally {
loading.save = false
}
}
</script>
<style scoped>
.dialog-content {
display: flex;