提交 49315233 authored 作者: 刘旭's avatar 刘旭

提交

上级 dbdd8fc4
......@@ -73,3 +73,20 @@ export function importFile(data: any) {
data
})
}
// 查询金蝶参数
export function getConnectParam() {
return request({
url: "/api/mall/init/common/param",
method: "get",
});
}
// 保存金蝶参数
export function putConnectParam(data: any) {
return request({
url: "/api/mall/init/common/param/create",
method: "post",
data,
});
}
<template>
<el-dialog v-model="showDialog" title="选择产品" width="30%">
<div class="select">
<el-select v-if="status" v-model="productAfterCode" @change="afterChange">
<el-option v-for="item in options" :key="item.id" :label="item.title" :value="item.code" />
</el-select>
<el-select v-else v-model="productBeforeCode" @change="beforeChange">
<el-option v-for="item in options" :key="item.id" :label="item.title" :value="item.code" />
</el-select>
</div>
<template #footer>
<el-button type="primary" @click="showDialog = false">确定</el-button>
</template>
</el-dialog>
</template>
<script setup lang='ts'>
import { ref } from 'vue'
const props = defineProps({
// 第一个选择产品
productAfterCode: {
type: String,
default: ''
},
// 第二个选择产品
productBeforeCode: {
type: String,
default: ''
},
// select 数据源
options: {
type: Object,
default: []
}
})
const showDialog = ref(false)
const status = ref(true) // 判断是哪个选择产品
const emits = defineEmits(['codeChange'])
const afterChange = (value: string) => {
if (value) emits('codeChange', 'after', value)
}
const beforeChange = (value: string) => {
if (value) emits('codeChange', 'before', value)
}
defineExpose({
showDialog,
status
})
</script>
<style lang = "scss" scoped>
.select {
box-sizing: border-box;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
:deep(.el-dialog__body) {
display: flex;
justify-content: center;
align-items: center;
}
}
</style>
\ No newline at end of file
<template>
<!-- 表单区域 -->
<el-form ref="ruleFormRef" :rules="rules" :model="sybchronizationForm" :disabled="isDisabled" label-position="left"
label-width="95px" class="demo-ruleForm" style="margin-top: 50px">
<el-row>
<el-col :span="24">
<el-form-item label="金蝶地址:" prop="k3CloudUrl">
<el-input v-model="sybchronizationForm.k3CloudUrl" placeholder="请输入金蝶地址:" clearable />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="账套ID:" prop="dbid">
<el-input v-model="sybchronizationForm.dbid" placeholder="请输入账套ID:" clearable />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="端口:" prop="lang">
<el-input v-model="sybchronizationForm.lang" placeholder="请输入端口:" clearable />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="账号:" prop="uid">
<el-input v-model="sybchronizationForm.uid" placeholder="请输入账号:" clearable />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="密码:" prop="pwd">
<el-input v-model="sybchronizationForm.pwd" type="password" placeholder="请输入密码:" clearable
show-password />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="时间:" prop="duration">
<el-input type="number" v-model="sybchronizationForm.duration" placeholder="间隔时间:" clearable
@input="(val: any) => { if (val <= 0 || val >= 60) sybchronizationForm.duration = '' }" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</template>
<script lang="ts" setup>
import {
getSynchronization,
putSynchronization,
} from "@/services/api/systemApi/synchronization/synchronizationAPI";
import { ref } from "vue";
import { ElMessage } from "element-plus";
import type { FormInstance, FormRules } from "element-plus";
const sybchronizationForm = ref({
k3CloudUrl: "",
thirdPartyUrl: '',
dbid: "",
lang: "",
uid: "",
pwd: "",
duration: '',
});
// 校验规则
const rules = ref<FormRules>({
k3CloudUrl: [{ required: true, message: "金蝶地址不为空", trigger: "blur" }],
dbid: [{ required: true, message: "数据库ID不为空", trigger: "blur" }],
lang: [{ required: true, message: "端口不为空", trigger: "blur" }],
uid: [{ required: true, message: "账号不为空", trigger: "blur" }],
pwd: [{ required: true, message: "密码不为空", trigger: "blur" }],
duration: [{ required: true, message: "间隔时间不为空, 且大于0 小于60", trigger: "blur" },]
});
const ruleFormRef = ref<FormInstance>();
const isDisabled = ref(true);
// 保存配置
const handleSave = (formEl: FormInstance | undefined) => {
if (!formEl) return;
formEl.validate(async (valid, fields) => {
if (valid) {
const res: any = await putSynchronization(sybchronizationForm.value);
if (res.code === 200) {
ElMessage({ message: "保存参数成功!", type: "success" });
}
} else {
console.log("校验失败", fields);
return false;
}
});
};
</script>
<style lang="scss" scoped>
.el-form-item {
margin-bottom: 40px;
}
</style>
<template>
<!-- 表单区域 -->
<el-form ref="ruleFormRef" :rules="rules" :model="connectParamForm" :disabled="isDisabled" label-position="left"
label-width="95px" class="demo-ruleForm" style="margin-top: 50px">
<el-row>
<el-col :span="24">
<el-form-item label="金蝶地址:" prop="mallAddress">
<el-input v-model="connectParamForm.mallAddress" placeholder="请输入金蝶地址:" clearable />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="账号:" prop="account">
<el-input v-model="connectParamForm.account" placeholder="请输入账号:" clearable />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="密码:" prop="password">
<el-input v-model="connectParamForm.password" type="password" placeholder="请输入密码:" clearable
show-password />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="时间:" prop="duration">
<el-input type="number" v-model="connectParamForm.duration" placeholder="间隔时间:" clearable
@input="(val: any) => { if (val <= 0 || val >= 60) connectParamForm.duration = '' }" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</template>
<script lang="ts" setup>
import {
getConnectParam,
putConnectParam,
} from "@/services/api/systemApi/synchronization/synchronizationAPI";
import { ref } from "vue";
import { ElMessage } from "element-plus";
import type { FormInstance, FormRules } from "element-plus";
const connectParamForm = ref({
mallAddress: "",
account: '',
password: "",
duration: ""
});
// 校验规则
const rules = ref<FormRules>({
mallAddress: [{ required: true, message: "金蝶地址不为空", trigger: "blur" }],
account: [{ required: true, message: "账号不为空", trigger: "blur" }],
password: [{ required: true, message: "密码不为空", trigger: "blur" }],
duration: [{ required: true, message: "间隔时间不为空, 且大于0 小于60", trigger: "blur" },]
});
const ruleFormRef = ref<FormInstance>();
const isDisabled = ref(true);
// 保存配置
const handleSave = (formEl: FormInstance | undefined) => {
if (!formEl) return;
formEl.validate(async (valid, fields) => {
if (valid) {
const res: any = await putConnectParam(connectParamForm.value);
if (res.code === 200) {
ElMessage({ message: "保存参数成功!", type: "success" });
}
} else {
console.log("校验失败", fields);
return false;
}
});
};
</script>
<style lang="scss" scoped>
.el-form-item {
margin-bottom: 40px;
}
</style>
<template>
<!-- <el-dialog v-model="previewVisible" title="预览" :width="800"> -->
<el-button type="primary" @click="check" v-if="previewVisible">校验</el-button>
<el-button type="primary" @click="handleGetData" v-if="previewVisible">获取数据</el-button>
<ElGenerateForm ref="generateFormRef" v-if="previewVisible" :data="widgetForm" />
<!-- <template #footer>
<el-button @click="handleReset">重置</el-button>
<el-button type="primary" @click="handleGetData">获取数据</el-button>
</template> -->
<!-- </el-dialog> -->
</template>
<script setup lang='ts'>
import { ref } from 'vue'
import ElGenerateForm from '../../../../vueFormCreate/core/element/ElGenerateForm.vue'
import { data } from './test'
const previewVisible = ref(false)
const widgetForm = data.data
const generateFormRef = ref()
const dataJsonTemplate = ref({
data: ''
})
const handleReset = () => generateFormRef.value.reset()
// 获取数据
const handleGetData = () => {
generateFormRef.value.getData().then((res: any) => {
dataJsonTemplate.value.data = res
console.log(dataJsonTemplate.value, 'dataJsonTemplate.value');
})
}
const handleCopyClick = (text: string) => {
// copy(text)
}
const check = () => {
generateFormRef.value.getData().then((res: any) => {
console.log(res);
console.log('校验', res);
})
}
defineExpose({
previewVisible
})
</script>
<style lang = "scss" scoped>
</style>
\ No newline at end of file
export const data = {
"code": 200,
"data": {
"list": [
{
"options": {
"clearable": false,
"readonly": false,
"maxlength": null,
"defaultValue": "http://192.168.0.49/k3cloud/",
"prefix": "",
"width": "100%",
"prepend": "",
"disabled": false,
"rules": {
"pattern": "",
"trigger": "blur",
"message": "",
"type": "any",
"enum": "",
"required": true
},
"placeholder": "",
"suffix": "",
"append": ""
},
"model": "k3_cloud_url",
"rules": [],
"label": "金蝶地址",
"dbFieldComment": "金蝶地址",
"type": "input",
"dbFieldName": "k3_cloud_url",
"key": "e814fa940a76497986a1c44be74707d0"
},
{
"options": {
"clearable": false,
"readonly": false,
"maxlength": null,
"defaultValue": "635755e0765c2e",
"prefix": "",
"width": "100%",
"prepend": "",
"disabled": false,
"rules": {
"pattern": "",
"trigger": "blur",
"message": "",
"type": "any",
"enum": "",
"required": true
},
"placeholder": "",
"suffix": "",
"append": ""
},
"model": "dbid",
"rules": [],
"label": "金蝶账套",
"dbFieldComment": "金蝶账套",
"type": "input",
"dbFieldName": "dbid",
"key": "74ce381b56a14fa98df0edcc247cfc5b"
},
{
"options": {
"clearable": false,
"readonly": false,
"maxlength": null,
"defaultValue": "admin",
"prefix": "",
"width": "100%",
"prepend": "",
"disabled": false,
"rules": {
"pattern": "",
"trigger": "blur",
"message": "",
"type": "any",
"enum": "",
"required": false
},
"placeholder": "",
"suffix": "",
"append": ""
},
"model": "uid",
"rules": [],
"label": "用户名",
"dbFieldComment": "用户名",
"type": "input",
"dbFieldName": "uid",
"key": "8389d01a315f4965bde5016dbd822d71"
},
{
"options": {
"clearable": false,
"readonly": false,
"maxlength": null,
"defaultValue": "kingdee$2022",
"prefix": "",
"width": "100%",
"prepend": "",
"disabled": false,
"rules": {
"pattern": "",
"trigger": "blur",
"message": "",
"type": "any",
"enum": "",
"required": false
},
"placeholder": "",
"suffix": "",
"append": ""
},
"model": "pwd",
"rules": [],
"label": "密码",
"dbFieldComment": "密码",
"type": "input",
"dbFieldName": "pwd",
"key": "afe9c315d0e84e8398b80d44f7525f83"
},
{
"options": {
"clearable": false,
"readonly": false,
"maxlength": null,
"defaultValue": "2052",
"prefix": "",
"width": "100%",
"prepend": "",
"disabled": false,
"rules": {
"pattern": "",
"trigger": "blur",
"message": "",
"type": "any",
"enum": "",
"required": false
},
"placeholder": "",
"suffix": "",
"append": ""
},
"model": "lang",
"rules": [],
"label": "端口",
"dbFieldComment": "端口",
"type": "input",
"dbFieldName": "lang",
"key": "9b4cac0704274b2691b8d4c9a7b86a15"
},
{
"options": {
"clearable": false,
"readonly": false,
"maxlength": null,
"defaultValue": "1",
"prefix": "",
"width": "100%",
"prepend": "",
"disabled": false,
"rules": {
"pattern": "",
"trigger": "blur",
"message": "",
"type": "any",
"enum": "",
"required": false
},
"placeholder": "",
"suffix": "",
"append": ""
},
"model": "duration",
"rules": [],
"label": "时长/分钟",
"dbFieldComment": "时长/分钟",
"type": "input",
"dbFieldName": "duration",
"key": "c120ff5d7b5941adbaa8d891ae766fb0"
}
],
"config": {
"dbTableName": "tb_kingdee_init_connect_param",
"formId": "kingdee",
"dbTableComment": "金蝶配置表",
"size": "default",
"labelPosition": "right",
"labelWidth": 100,
"hideRequiredAsterisk": false
}
},
"message": "",
"success": true
}
\ No newline at end of file
......@@ -232,8 +232,8 @@ const init = (formId?: string, pageNo?: number, pageSize?: number) => {
init(searchValue.value, tablePage.value.pageNo, tablePage.value.pageSize)
</script>
<style lang="scss">
.fc-style {
<style lang="scss" scoped>
:deep(.fc-style) {
height: 800px;
border: 1px solid #ccc;
}
......
<template>
<el-button type="primary" icon="plus" @click="addProductShow" style="margin: 20px 0 0 20px;">新增</el-button>
<el-button type="primary" icon="plus" @click="openShow" style="margin: 20px 0 0 20px;">打开测试</el-button>
<div class='container'>
<el-row justify="start" style="width: 100%; height: 100%;">
<el-col :span="12" style="padding-right: 20px;">
<el-table :data="productData" border>
<el-table-column label="产品1" prop="productAfterCode" align="center" />
<el-table-column label="产品2" prop="productBeforeCode" align="center" />
<el-table-column label="产品1" prop="productAfterCodeName" align="center" />
<el-table-column label="产品2" prop="productBeforeCodeName" align="center" />
<el-table-column label="操作" align="center" fixed="right" width="155">
<template #default="scope">
<el-button type="primary" link size="small" @click="selectScene(scope.row.id)">选择场景
......@@ -15,48 +17,45 @@
</el-table-column>
</el-table>
</el-col>
<el-col :span="1">
<el-divider class="divider" direction="vertical" />
</el-col>
<el-col :span="11" style="margin-top: 8%;">
<el-row justify="start">
<el-col :span="6">
<el-button type="primary" circle style="width: 100px; height: 100px; margin-right: 50px;"
@click="selectAfterProducts">
</el-row>
</div>
<el-dialog v-model="showAddDialog" title="选择产品" width="50%">
<el-row justify="start" style="padding: 0 10%;">
<el-col :span="6" style="text-align:center">
<el-button type="primary" circle style="width: 100px; height: 100px;" @click="selectAfterProducts">
{{ afterTitle }}</el-button>
</el-col>
<el-col :span="12" style="display: flex; align-items: center;">
<el-col :span="12" style="display: flex; align-items: center; justify-content: center; text-align: center;">
<div class="line-arrow">
<div class="line"></div>
</div>
</el-col>
<el-col :span="6">
<el-button type="primary" circle style="width: 100px; height: 100px;"
@click="selectBeforeProducts">
<el-col :span="6" style="text-align:center">
<el-button type="primary" circle style="width: 100px; height: 100px;" @click="selectBeforeProducts">
{{ beforeTitle }}</el-button>
</el-col>
<el-col :span="11" style="margin-top: 20px;">
<previewProduct ref="previewProductAfterRef" />
<!-- <kingdee-basic-config /> -->
</el-col>
<el-col :span="2">
</el-col>
<el-col :span="11" style="margin-top: 20px;">
<previewProduct ref="previewProductBeforeRef" />
<!-- <kingdee-basic-config /> -->
</el-col>
<el-col :span="24" style="text-align: center;">
<el-button type="primary" @click="onConfirm" style="width: 88px; margin-top: 20%;">保存产品
</el-button>
</el-col>
</el-row>
</el-col>
</el-row>
<el-dialog v-model="showDialog" title="选择产品" width="30%">
<el-select v-if="status" v-model="productAfterCode">
<el-option v-for="item in options" :key="item.id" :label="item.title" :value="item.code" />
</el-select>
<el-select v-else v-model="productBeforeCode">
<el-option v-for="item in options" :key="item.id" :label="item.title" :value="item.code" />
</el-select>
<template #footer>
<el-button type="primary" @click="showDialog = false">确定</el-button>
</template>
</el-dialog>
</div>
<add-product ref="addProductRef" :options="options" :productAfterCode="productAfterCode"
:productBeforeCode="productBeforeCode" @codeChange="codeChange" />
</template>
......@@ -65,14 +64,19 @@ import { ref, computed } from 'vue'
import { getPlatformProductList, createPlatformProduct, deletePlatformProduct, getDictItemList } from '@/services/api/platformProducts'
import { ElMessage, ElMessageBox } from 'element-plus';
import { useRouter } from 'vue-router';
import addProduct from './components/platformProducts/addProduct.vue';
// import kingdeeBasicConfig from './components/platformProducts/kingdeeBasicConfig.vue';
import previewProduct from './components/platformProducts/previewProduct.vue';
const router = useRouter();
const options = ref([] as any) // select 数据源
const showDialog = ref(false)
const showAddDialog = ref(false)
const productAfterCode = ref() // 第一个选择产品
const productBeforeCode = ref() // 第二个选择产品
const status = ref(true) // 判断是哪个选择产品
const productData = ref()
const addProductRef = ref()
const previewProductAfterRef = ref()
const previewProductBeforeRef = ref()
const afterTitle = computed(() => {
if (productAfterCode.value) {
......@@ -96,16 +100,36 @@ const beforeTitle = computed(() => {
else return '选择产品'
})
// 添加产品
let addProductShow = () => {
showAddDialog.value = true
}
let openShow = () => {
previewProductAfterRef.value.previewVisible = true
}
// 选择前产品
const selectAfterProducts = () => {
status.value = true
showDialog.value = true
addProductRef.value.status = true
addProductRef.value.showDialog = true
}
// 选择前产品
const selectBeforeProducts = () => {
status.value = false
showDialog.value = true
addProductRef.value.status = false
addProductRef.value.showDialog = true
}
const codeChange = (code: string, value: string) => {
if (code === 'after') {
previewProductAfterRef.value.previewVisible = true
productAfterCode.value = value
}
else {
previewProductBeforeRef.value.previewVisible = true
productBeforeCode.value = value
}
}
// 选择场景
......@@ -144,13 +168,12 @@ const onConfirm = () => {
if (!productAfterCode.value) return ElMessage({ type: 'warning', message: '请先选择第一个产品' })
if (!productBeforeCode.value) return ElMessage({ type: 'warning', message: '请先选择第二个产品' })
if (productBeforeCode.value === productAfterCode.value) return ElMessage({ type: 'warning', message: '不能选择相同产品' })
showDialog.value = false
showAddDialog.value = false
let data = {
productAfterCode: productAfterCode.value,
productBeforeCode: productBeforeCode.value
}
// sessionStorage.setItem('productAfterCode', productAfterCode.value)
// sessionStorage.setItem('productBeforeCode', productBeforeCode.value)
createPlatformProduct(data).then((res: any) => {
if (res.code === 200) {
init()
......@@ -192,15 +215,17 @@ init()
justify-content: center;
align-items: center;
padding: 20px;
}
.line-arrow {
.line-arrow {
display: flex;
flex-direction: row;
align-items: center;
margin-right: 50px;
padding: 0 50px;
width: 100%;
.line {
width: 300px;
width: 100%;
border: 1px solid #dcdfe6;
}
......@@ -210,16 +235,5 @@ init()
border-left: 10px solid #dcdfe6;
}
}
.divider {
height: 100%;
}
:deep(.el-dialog__body) {
display: flex;
justify-content: center;
align-items: center;
}
}
</style>
\ No newline at end of file
......@@ -15,7 +15,14 @@
<el-input v-model="filterForm.name" placeholder="请输入名称" clearable />
</el-form-item>
</el-col>
<el-col></el-col>
<el-col :span="6">
<el-form-item label="选择产品" width="60px">
<el-select v-model="filterForm.platformProductRelationId" clearable placeholder="请选择产品">
<el-option v-for="item in productOptions" :key="item.id" :label="item.label"
:value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="同步时长/毫秒">
<div class="input-class" id="input-class" @mouseover="mouseover" @mouseleave="mouseleave">
......@@ -141,8 +148,10 @@ import { ElMessage, ElTable } from "element-plus";
import { store } from '@/store';
import { getProductLog } from "@/services/api/systemApi/log/logApi";
import { useproductLogTableList } from "../system/tableConfigData/useXyunLog";
import { getPlatformProductList } from '@/services/api/platformProducts'
const dateTime = ref();
const productOptions = ref(); // 产品数据源
const filterForm = ref<any>({
dateFrom: "",
dateTo: "",
......@@ -150,7 +159,7 @@ const filterForm = ref<any>({
costTimeFrom: undefined,
costTimeTo: undefined,
queueId: "",
platformProductRelationId: 1
platformProductRelationId: null
});
const detailForm = ref<any>({
flag: "",
......@@ -182,7 +191,7 @@ const filterChange = (value: any) => {
nextTick(() => {
filters.value = i;
page(
1,
filterForm.value.platformProductRelationId,
currentPage.value,
pageSize.value,
filterForm.value.dateFrom,
......@@ -226,7 +235,7 @@ const handleScreen = () => {
filterForm.value.costTimeTo === '') {
store.commit('search/setproductSearch', filterForm.value)
page(
1,
filterForm.value.platformProductRelationId,
currentPage.value,
pageSize.value,
filterForm.value.dateFrom,
......@@ -252,7 +261,7 @@ const handleScreen = () => {
const handleSizeChange = (val: number) => {
pageSize.value = val;
page(
1,
filterForm.value.platformProductRelationId,
currentPage.value,
pageSize.value,
filterForm.value.dateFrom,
......@@ -268,7 +277,7 @@ const handleSizeChange = (val: number) => {
const handleCurrentChange = (val: number) => {
currentPage.value = val;
page(
1,
filterForm.value.platformProductRelationId,
currentPage.value,
pageSize.value,
filterForm.value.dateFrom,
......@@ -306,7 +315,7 @@ const initfilter = () => {
filterForm.value = data
dateTime.value = [new Date(data.dateFrom), new Date(data.dateTo)]
page(
1,
filterForm.value.platformProductRelationId,
currentPage.value,
pageSize.value,
filterForm.value.dateFrom,
......@@ -381,6 +390,21 @@ const page = (
}
});
};
// 初始化数据
const initProduct = () => {
getPlatformProductList().then((res: any) => {
if (res.code === 200) {
res.data.records.forEach((item: any) => {
item.label = item.productAfterCodeName + '-' + item.productBeforeCodeName
})
productOptions.value = res.data.records
console.log(productOptions.value, '产品线数据源');
}
})
}
initProduct()
</script>
<style lang="scss" scoped>
@import './scss/kingdeeLog.scss'
......
......@@ -19,11 +19,23 @@
</el-col>
<el-col :span="4" style="text-align: center;">
<el-button type="primary" @click="onConfirm">筛选</el-button>
<el-button type="primary" @click="handleManual">手动同步</el-button>
</el-col>
</el-row>
</el-form>
<el-divider />
<div style="margin: 20px 0">
<el-space :size="30">
<!-- <el-button type="primary" icon="Refresh" @click="handleErrorManual">重置同步</el-button> -->
<!-- <el-button type="primary" icon="Finished" @click="handleCheck">校验</el-button> -->
<el-button :type="flag === 1 ? 'info' : 'primary'" icon="SwitchButton" @click="handleOpen">启用同步
</el-button>
<el-button :type="flag === 1 ? 'primary' : 'info'" icon="CircleClose" @click="handleClose">关闭同步
</el-button>
<el-button type="primary" icon="RefreshRight" @click="handleManual">手动同步</el-button>
<el-button type="primary" @click="handleSelected">导入 lic 文件</el-button>
<input ref="uploadInput" type="file" style="display: none;" accept=".tmp" @change="submitUpload">
</el-space>
</div>
<el-table :data="monitoringData" v-loading="loading" border stripe @filter-change="filterChange">
<el-table-column prop="status" label="同步状态" :filters="[
{ text: '未同步', value: '0' },
......@@ -73,8 +85,15 @@
import { ref, reactive, onMounted } from 'vue'
import { store } from '@/store'
import { ElMessage, ElMessageBox } from 'element-plus';
import { getManual } from '@/services/api/systemApi/synchronization/synchronizationAPI'
import { getSMonitoring, deleteSMonitoring } from '@/services/api/systemApi/synchronousMonitoring'
import {
getStart,
getManual,
getOff,
getabnormal,
getSRecords,
importFile
} from "@/services/api/systemApi/synchronization/synchronizationAPI";
const loading = ref(true)
......@@ -92,6 +111,9 @@ const pageData = reactive({
pageSize: 10
})
// 1、 启动 0、 关闭
const flag = ref()
// 筛选
const onConfirm = () => {
store.commit('search/setMonitoringSearch', filterForm.value)
......@@ -111,7 +133,6 @@ const filterChange = (value: any) => {
Object.values(value).forEach((e: any) => {
i = e[0]
})
// nextTick(() => {
filterForm.value.status = i;
initSMonitoring(
pageData.currentPage,
......@@ -121,7 +142,6 @@ const filterChange = (value: any) => {
filterForm.value.sFormId,
filterForm.value.status
)
// });
};
// 每页新条数
......@@ -149,6 +169,12 @@ const handleCurrentChange = (val: number) => {
)
};
const initSRecords = () =>
getSRecords().then((res: any) => flag.value = res.data.status)
initSRecords()
const handleDelete = (id: number) => {
ElMessageBox.confirm(
'确定删除该字段?',
......@@ -164,13 +190,108 @@ const handleDelete = (id: number) => {
}).catch(() => { return false })
}
const handleErrorManual = async () => {
const res: any = await getabnormal()
if (res.code === 200) {
ElMessage({ type: 'success', message: '重置同步成功' })
}
};
// 开启自动同步
const handleOpen = async () => {
// if (isDisabled.value === true) return;
const res: any = await getStart();
if (res.code === 200) {
initSRecords()
setTimeout(() => {
initSMonitoring(
pageData.currentPage,
pageData.pageSize,
filterForm.value.fid,
filterForm.value.queueId,
filterForm.value.sFormId,
filterForm.value.status
)
}, 1000);
return ElMessage({ type: "success", message: "自动启动成功" });
}
};
// 关闭自动同步
const handleClose = async () => {
const res: any = await getOff();
if (res.code === 200) {
initSRecords()
setTimeout(() => {
initSMonitoring(
pageData.currentPage,
pageData.pageSize,
filterForm.value.fid,
filterForm.value.queueId,
filterForm.value.sFormId,
filterForm.value.status
)
}, 1000);
return ElMessage({ type: "success", message: "关闭成功" });
}
};
// 手动同步
const handleManual = async () => {
const res: any = await getManual()
if (res.code === 200) {
initSRecords()
setTimeout(() => {
initSMonitoring(
pageData.currentPage,
pageData.pageSize,
filterForm.value.fid,
filterForm.value.queueId,
filterForm.value.sFormId,
filterForm.value.status
)
}, 1000);
ElMessage({ type: 'success', message: '手动同步成功' })
}
};
let uploadInput = ref()
// 点击导入文件
const handleSelected = () => uploadInput.value.click()
// //选好文件之后点击打开按钮
const submitUpload = (e: any) => {
const files = e.target.files
const rawFile = files[0]
console.log(rawFile);
if (!rawFile) return
upload(rawFile)
}
//上传
const upload = (rawFile: any) => {
uploadInput.value = null
uploadSectionFile(rawFile)
}
const uploadSectionFile = (file: any, params?: any) => {
// let data = params
let fromData = new FormData()// FormData 对象
let fileObj = file// 相当于input里取得的files
console.log('file', fileObj);
fromData.append('file', fileObj)// 文件对象
console.log(fromData);
importFile(fromData).then((res: any) => {
//调用上传接口
if (res.code === 200) {
ElMessage({ type: 'success', message: '导入成功!' })
}
})
}
// 监控数据
const initSMonitoring = (
pageNo?: number,
......
<template>
<!-- 按钮 -->
<div style="margin: 50px 50px">
<!-- <div style="margin: 50px 50px">
<el-space :size="30">
<el-button type="primary" icon="Finished" @click="handleCheck">校验</el-button>
<el-button :type="flag === 1 ? 'info' : 'primary'" icon="SwitchButton" @click="handleOpen">启用同步</el-button>
<el-button :type="flag === 1 ? 'primary' : 'info'" icon="CircleClose" @click="handleClose">关闭同步</el-button>
<el-button type="primary" icon="Refresh" @click="handleManual">手动同步</el-button>
<el-button type="primary" icon="RefreshRight" @click="handleManual">手动同步</el-button>
<el-button type="primary" @click="handleSelected">导入 lic 文件</el-button>
<input ref="uploadInput" type="file" style="display: none;" accept=".tmp" @change="submitUpload">
</el-space>
</div>
</div> -->
<!-- 表单区域 -->
<div style="margin: 100px 40% 0 10%">
<el-form ref="ruleFormRef" :rules="rules" :model="sybchronizationForm" :disabled="isDisabled"
label-position="right" label-width="155px" class="demo-ruleForm" style="margin-top: 50px">
<el-row>
<el-col :span="24">
<el-col :span="24">
<!-- <el-col :span="24">
<el-form-item label="第三方地址:" prop="thirdPartyUrl">
<el-input v-model="sybchronizationForm.thirdPartyUrl" placeholder="请输入第三方地址:" clearable />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="金蝶地址:" prop="k3CloudUrl">
<el-input v-model="sybchronizationForm.k3CloudUrl" placeholder="请输入金蝶地址:" clearable />
</el-form-item>
</el-col>
</el-col> -->
<el-col :span="24">
<el-form-item label="商城地址:" prop="k3CloudUrl">
<el-input v-model="sybchronizationForm.k3CloudUrl" placeholder="请输入商城地址:" clearable />
</el-form-item>
</el-col>
<!-- <el-col :span="24">
<el-form-item label="账套ID:" prop="dbid">
<el-input v-model="sybchronizationForm.dbid" placeholder="请输入账套ID:" clearable />
</el-form-item>
......@@ -35,7 +40,7 @@
<el-form-item label="端口:" prop="lang">
<el-input v-model="sybchronizationForm.lang" placeholder="请输入端口:" clearable />
</el-form-item>
</el-col>
</el-col> -->
<el-col :span="24">
<el-form-item label="账号:" prop="uid">
<el-input v-model="sybchronizationForm.uid" placeholder="请输入账号:" clearable />
......@@ -47,12 +52,12 @@
show-password />
</el-form-item>
</el-col>
<el-col :span="24">
<!-- <el-col :span="24">
<el-form-item label="间隔时间/分钟:" prop="duration">
<el-input type="number" v-model="sybchronizationForm.duration" placeholder="间隔时间:" clearable
@input="(val: any) => { if (val <= 0 || val >= 60) sybchronizationForm.duration = '' }" />
</el-form-item>
</el-col>
</el-col> -->
<el-col :span="24">
<el-form-item style="margin-left: 20%">
<el-button type="primary" icon="Download" @click="handleSave(ruleFormRef)">保存配置</el-button>
......@@ -103,6 +108,7 @@ const isDisabled = ref(true);
// 1、 启动 0、 关闭
const flag = ref()
const handleCheck = async () => {
if (!isDisabled.value) {
const res: any = await getCheck(sybchronizationForm.value)
......
......@@ -60,7 +60,7 @@ export const useproductLogTableList = () => {
// 每页条数
const pageSize = ref(10);
const loading = ref(true);
const platformProductRelationId = 1
const platformProductRelationId: any = null
onMounted(async () => {
const res = await getProductLog(platformProductRelationId, currentPage.value, pageSize.value);
tableList.value = res.data.records;
......
<template>
<!-- <el-header class="btn-bar">
<el-header class="btn-bar">
<slot></slot>
<el-button
v-if="$attrs.uploadJson"
type="text"
@click="$emit('uploadJson')"
>
<el-button v-if="$attrs.uploadJson" type="text" @click="$emit('uploadJson')">
<template #icon>
<SvgIcon iconClass="upload" />
</template>
导入JSON
</el-button>
<el-button
v-if="$attrs.clearable"
type="text"
@click="$emit('clearable')"
>
<el-button v-if="$attrs.clearable" type="text" @click="$emit('clearable')">
<template #icon>
<SvgIcon iconClass="clearable" />
</template>
清空
</el-button>
<el-button
v-if="$attrs.preview"
type="text"
@click="$emit('preview')"
>
<el-button v-if="$attrs.preview" type="text" @click="$emit('preview')">
<template #icon>
<SvgIcon iconClass="preview" />
</template>
预览
</el-button>
<el-button
v-if="$attrs.generateJson"
type="text"
@click="$emit('generateJson')"
>
<el-button v-if="$attrs.generateJson" type="text" @click="$emit('generateJson')">
<template #icon>
<SvgIcon iconClass="generate-json" />
</template>
生成JSON
</el-button>
<el-button
v-if="$attrs.generateCode"
type="text"
@click="$emit('generateCode')"
>
<el-button v-if="$attrs.generateCode" type="text" @click="$emit('generateCode')">
<template #icon>
<SvgIcon iconClass="generate-code" />
</template>
生成代码
</el-button>
</el-header> -->
</el-header>
</template>
<script lang="ts">
......
......@@ -119,8 +119,10 @@ export default defineComponent({
.validate()
.then((validate: boolean) => {
if (validate) {
// console.log('成功', state.generateForm);
resolve(state.model)
} else {
// console.log('失败');
ElMessage.error('验证失败')
}
})
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论