提交 403255d2 authored 作者: 刘旭's avatar 刘旭

添加页面

上级 c4b75ce7
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
"eslint": "^8.4.1", "eslint": "^8.4.1",
"eslint-plugin-vue": "^8.2.0", "eslint-plugin-vue": "^8.2.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mockjs": "^1.1.0",
"moment": "^2.29.1", "moment": "^2.29.1",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
"qs": "^6.10.3", "qs": "^6.10.3",
...@@ -35,7 +34,6 @@ ...@@ -35,7 +34,6 @@
}, },
"devDependencies": { "devDependencies": {
"@types/lodash": "^4.14.182", "@types/lodash": "^4.14.182",
"@types/mockjs": "^1.0.4",
"@types/node": "^16.11.12", "@types/node": "^16.11.12",
"@types/qs": "^6.9.7", "@types/qs": "^6.9.7",
"@vitejs/plugin-vue": "^2.3.1", "@vitejs/plugin-vue": "^2.3.1",
...@@ -48,7 +46,6 @@ ...@@ -48,7 +46,6 @@
"unplugin-vue-components": "^0.19.3", "unplugin-vue-components": "^0.19.3",
"vite": "^2.6.14", "vite": "^2.6.14",
"vite-plugin-inspect": "^0.5.0", "vite-plugin-inspect": "^0.5.0",
"vite-plugin-mock": "^2.9.6",
"vite-plugin-svg-icons": "^2.0.1", "vite-plugin-svg-icons": "^2.0.1",
"vue-tsc": "^0.3.0" "vue-tsc": "^0.3.0"
}, },
......
<template>
<div style="margin-top: 20px;">
<el-pagination v-model:currentPage="pageData.pageNo" v-model:page-size="pageData.pageSize"
:page-sizes="[10, 15, 20]" :small="pageData.small" :disabled="pageData.disabled"
:background="pageData.background" layout="->, total, sizes, prev, pager, next, jumper" :total="total"
@size-change="handleSizeChange" hide-on-single-page @current-change="handleCurrentChange" />
</div>
</template>
<script setup lang='ts'>
let props = defineProps({
pageData: {
type: Object,
default: {
pageNo: {
type: Number,
default: 1
},
pageSize: {
type: Number,
default: 10
},
small: {
type: Boolean,
default: false
},
disabled: {
type: Boolean,
default: false
},
background: {
type: String || Boolean,
default: '' || false
}
}
},
total: {
type: Number,
default: 0
}
})
let emits = defineEmits(['sizeChange', 'currentChange'])
// 新条数
const handleSizeChange = (val: number) => {
emits('sizeChange', val)
}
// // 新页数
const handleCurrentChange = (val: number) => {
emits('currentChange', val)
}
</script>
<style lang = "scss" scoped>
</style>
\ No newline at end of file
...@@ -5,7 +5,6 @@ import router from './router'; ...@@ -5,7 +5,6 @@ import router from './router';
import { start, close } from '@/utils/nprogress' import { start, close } from '@/utils/nprogress'
import { getToken, cleanSession, getMenu } from '@/utils/auth' import { getToken, cleanSession, getMenu } from '@/utils/auth'
import { elNotificaton } from '@/utils/customemessage' import { elNotificaton } from '@/utils/customemessage'
import '@/mock' //生产时请注释掉,
import { filterAsyncRoutes } from '@/store/modules/menu' import { filterAsyncRoutes } from '@/store/modules/menu'
import { store, key } from '@/store' import { store, key } from '@/store'
import * as ElIconModules from '@element-plus/icons-vue' import * as ElIconModules from '@element-plus/icons-vue'
......
import Mock from 'mockjs'
Mock.mock(`${import.meta.env.VITE_APP_BASE_URL}/department/index`, {
code: 200,
'data|1-10': [
{
"id|+1": 0,
cname: '@cname',
ename: '@name',
'type|+1': 0 ,
'code|+1': 'code001',
'children|1-10': [
{
"id|+1": 10,
cname: '@cname',
ename: '@name',
'type|+1': 0,
'code|+1': 'code002',
'children|1-10': [
{
"id|+1": 20,
cname: '@cname',
ename: '@name',
'type|+1': 0,
'code|+1': 'code003',
}
]
}
]
}
],
msg: null,
success: true
})
Mock.mock(`${import.meta.env.VITE_APP_BASE_URL}/department/bizunit`, {
code: 200,
'data|1-10': [
{
"id|+1": 0,
cname: '@cname',
ename: '@name',
'depart|+1': '' ,
'product': '',
'code|+1': 'code001'
}
],
msg: null,
success: true
})
import Mock from "mockjs";
import '@/mock/login'
import '@/mock/table'
import '@/mock/departmentManage'
import '@/mock/project'
// 设置全局延时
Mock.setup({
timeout: '300-600'
})
\ No newline at end of file
import Mock from "mockjs";
// Mock.mock(`${import.meta.env.VITE_APP_BASE_URL}/login`, 'post', ({body}) => {
// let result = {data: {},code:0,message:''}
// const {name, password} = JSON.parse(body)
//
// let success = false
//
// if (success) {
// result.code = 0
// result.message = Mock.mock('@TIMEFIX').CN + ',欢迎回来'
//
// result.data = {"msg":"欢迎回来",'token':"iwoefwietowewewo"}
// } else {
// result.code = -1
// result.message = '账户名或密码错误(admin/888888 or test/888888)'
// }
// return result
// })
\ No newline at end of file
import Mock from 'mockjs'
Mock.mock(`${import.meta.env.VITE_APP_BASE_URL}/project/projectType`, {
code: 200,
'data|1-100': [
{
"id|+1": 0,
cname: '@cname',
ename: '@name',
'code|+1': 'code001',
'bizunits': [],
'effect_time': '@date',
'lose_effect_time': '@date',
'detail': ''
}
],
msg: null,
success: true
})
Mock.mock(`${import.meta.env.VITE_APP_BASE_URL}/project/projectMaster`, {
code: 200,
'data|1-10': [
{
"id|+1": 0,
bizUnit: '研发事业部',
classificationIds: '',
classificationName: 'code001',
createTime: '@date',
'isEnabled|1': false,
name: '@cname',
notes: null,
'templatePhases|1-5': [
{
data: null,
children: [],
displayShow: null,
isLeaf: true,
'id|+1': 0,
label: '@cname',
'selected|1': false,
text: '',
title: '',
value: ''
}
]
}
],
msg: null,
success: true
})
import Mock from 'mockjs'
Mock.mock(`${import.meta.env.VITE_APP_BASE_URL}/systemMenus/index`, {
code: 200,
data: {
'treeList|1-10': [
{
"id|+1": 0,
icon: '',
lable: '@cname',
parentId: '',
'sort|0-100': 0,
'show|1': false,
controller: '@name',
url: '/index'
}
]
},
msg: null,
success: true
})
...@@ -17,6 +17,20 @@ const routes: Array<RouteRecordRaw> = [ ...@@ -17,6 +17,20 @@ const routes: Array<RouteRecordRaw> = [
}, },
], ],
}, },
// {
// path: '/manage',
// component: Layout,
// children: [
// {
// path: '/manage/configMap',
// name: 'configMap',
// component: () => import("@/views/manage/configMap.vue"),
// props: {
// id: 0
// }
// },
// ]
// },
{ {
path: "/login", path: "/login",
name: "login", name: "login",
......
import { request } from '../config' import { request } from '../config'
export const getMapList = (kingdeeCommonConfigId?: number, pageNo?: number, pageSize?: number) => { export const getMapList = (params: any) => {
return request({ return request({
url: '/api/kingdee/field/mapping/list', url: '/api/kingdee/field/mapping/list',
method: 'get', method: 'get',
params: { kingdeeCommonConfigId, pageNo, pageSize } params
}) })
} }
...@@ -15,3 +15,19 @@ export const createMap = (data: any) => { ...@@ -15,3 +15,19 @@ export const createMap = (data: any) => {
data data
}) })
} }
export const updateMap = (data: any) => {
return request({
url: '/api/kingdee/field/mapping/update',
method: 'put',
data
})
}
export const deleteMap = (id: number, kingdeeCommonConfigId: number) => {
return request({
url: '/api/kingdee/field/mapping/delete',
method: 'delete',
params: { id, kingdeeCommonConfigId }
})
}
\ No newline at end of file
import { request } from '../config'
export const getStsoList = (params: any) => {
return request({
url: '/api/synchronization/operation/list',
method: 'get',
params
})
}
export const createStso = (data: any) => {
return request({
url: '/api/synchronization/operation/create',
method: 'post',
data
})
}
export const updateStso = (data: any) => {
return request({
url: '/api/synchronization/operation/update',
method: 'put',
data
})
}
export const deleteStso = (id: number,) => {
return request({
url: '/api/synchronization/operation/delete',
method: 'delete',
params: { id }
})
}
\ No newline at end of file
...@@ -4,12 +4,13 @@ import { request } from "../../config"; ...@@ -4,12 +4,13 @@ import { request } from "../../config";
export function getCommonConfig( export function getCommonConfig(
pageNo?: number, pageNo?: number,
pageSize?: number, pageSize?: number,
name?: string name?: string,
operation?: number
) { ) {
return request({ return request({
url: "/api/kingdee/common/config/list", url: "/api/kingdee/common/config/list",
method: "get", method: "get",
params: { pageNo, pageSize, name }, params: { pageNo, pageSize, name, operation },
}); });
} }
......
<template>
<el-dialog v-model="dialogVisible" :title="title" width="30%" @close="handleClose">
<el-form :model="fromData" ref="fromRef" :rules="fromRules" label-width="120px">
<el-row>
<el-col v-for="(item, index) in fromList" :key="index">
<el-form-item :label="item.lable" :prop="item.prop">
<el-input v-model="fromData[item.prop]" :type="item.type" :placeholder="'请输入' + item.lable" />
</el-form-item>
</el-col>
<el-col>
<el-form-item label="是否是分录字段" prop="isEntryField">
<el-switch v-model="fromData.isEntryField" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="onConfirm">确认</el-button>
</span>
</template>
</el-dialog>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { fromList } from '../../tableData/configMapTable'
import { createMap, updateMap } from '@/services/api/configMap'
import { ElMessage } from 'element-plus';
const emits = defineEmits(['initMap'])
const dialogVisible = ref(false)
const fromRef = ref()
const title = ref('新增')
const fromData = ref({
kingdeeCommonConfigId: 5,
kingDeeField: '',
kingDeeFieldName: '',
fieldType: '',
retrievalField: '',
isEntryField: false,
thirdPartyField: '',
thirdPartyFieldName: '',
sortOrder: ''
} as any)
// 校验规则
const fromRules = ref({
kingDeeField: [{ required: true, message: '', trigger: 'blur' }],
kingDeeFieldName: [{ required: true, message: '', trigger: 'blur' }],
fieldType: [{ required: true, message: '', trigger: 'blur' }],
thirdPartyField: [{ required: true, message: '', trigger: 'blur' }],
thirdPartyFieldName: [{ required: true, message: '', trigger: 'blur' }],
sortOrder: [{ required: true, message: '', trigger: 'blur' }]
})
// 确认操作
const onConfirm = () => {
fromRef.value?.validate((valid: boolean, fields: any) => {
if (valid) {
if (title.value === '新增') {
createMap(fromData.value).then((res: any) => {
if (res.code === 200) {
emits('initMap')
handleClose()
ElMessage({ type: 'success', message: '添加成功!' })
}
})
} else {
updateMap(fromData.value).then((res: any) => {
if (res.code === 200) {
emits('initMap')
handleClose()
ElMessage({ type: 'success', message: '修改成功!' })
}
})
}
} else {
console.log('error submit!', fields)
}
})
}
const handleClose = () => {
fromData.value = {
kingdeeField: '',
kingdeeFieldName: '',
fieldType: '',
retrievalField: '',
isEntryField: '',
thirdPartyField: '',
thirdPartyFieldName: '',
sortOrder: ''
}
dialogVisible.value = false
}
defineExpose({
dialogVisible,
fromData,
title
})
</script>
\ No newline at end of file
<template>
<el-dialog v-model="dialogVisible" :title="title" width="30%" @close="handleClose">
<el-form :model="detailsForm" ref="detailRef" :rules="detailRules" label-width="100px">
<el-row>
<el-col>
<el-form-item label="金蝶字段" prop="kingdeeField">
<el-input v-model="detailsForm.kingdeeField" placeholder="请输入金蝶字段" />
</el-form-item>
</el-col>
<el-col>
<el-form-item label="名称" prop="erpName">
<el-input v-model="detailsForm.erpName" placeholder="请输入名称" />
</el-form-item>
</el-col>
<el-col>
<el-form-item label="字段类型" prop="type">
<el-select v-model="detailsForm.type" placeholder="请选择类型" @change="handleChange">
<el-option label="文本" value="文本" />
<el-option label="数值" value="数值" />
<el-option label="基础资料" value="基础资料" />
</el-select>
</el-form-item>
</el-col>
<el-col v-if="detailsForm.type === '基础资料'">
<el-form-item label="检索字段" prop="indexField">
<el-input v-model="detailsForm.indexField" placeholder="请输入检索字段" />
</el-form-item>
</el-col>
<el-col>
<el-form-item label="是否是明细" prop="isDetailField">
<el-switch v-model="detailsForm.isDetailField" />
</el-form-item>
</el-col>
<el-col>
<el-form-item label="MES字段" prop="thirdPartyField">
<el-input v-model="detailsForm.thirdPartyField" placeholder="请输入MES字段" />
</el-form-item>
</el-col>
<el-col>
<el-form-item label="名称" prop="mesName">
<el-input v-model="detailsForm.mesName" placeholder="请输入名称" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="onConfirm">确认</el-button>
</span>
</template>
</el-dialog>
</template>
<script setup lang="ts">
import { ref } from 'vue';
const emtis = defineEmits(['addDetails', 'editDetails'])
const dialogVisible = ref(false)
const detailRef = ref()
const title = ref('添加明细')
const detailsForm = ref({
kingdeeField: '',
type: '',
erpName: '',
mesName: '',
isDetailField: false,
thirdPartyField: '',
indexField: ''
})
const detailRules = ref({
kingdeeField: [{ required: true, message: '', trigger: 'blur' }],
thirdPartyField: [{ required: true, message: '', trigger: 'blur' }],
indexField: [{ required: true, message: '', trigger: 'blur' }],
})
// 更新select的值
const handleChange = (value: any) => {
if (value != '基础资料') detailsForm.value.indexField = ''
else detailsForm.value.indexField = 'FNumber'
}
const onConfirm = () => {
detailRef.value?.validate((valid: boolean, fields: any) => {
if (valid) {
console.log(detailsForm.value);
if (title.value === '添加明细') {
const obj = Object.assign({}, detailsForm.value)
emtis('addDetails', obj)
handleClose()
} else {
const obj = Object.assign({}, detailsForm.value)
emtis('editDetails', obj)
dialogVisible.value = false
}
} else {
console.log('error submit!', fields)
}
})
}
const handleClose = () => {
// detailRef.value?.resetFields()
detailsForm.value = {
kingdeeField: '',
type: '',
erpName: '',
mesName: '',
isDetailField: false,
thirdPartyField: '',
indexField: ''
}
dialogVisible.value = false
}
defineExpose({
dialogVisible,
detailsForm,
title
})
</script>
\ No newline at end of file
...@@ -19,66 +19,65 @@ ...@@ -19,66 +19,65 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="同步方向"> <el-form-item label="查询方向">
<el-select v-model="fieidForm.flag" placeholder="请选择"> <el-select v-model="fieidForm.operation" placeholder="请选择">
<el-option label="ERP->MES" value="-1"></el-option> <el-option label="查询" value="1"></el-option>
<el-option label="MES->ERP" value="1"></el-option> <el-option label="创建/更新" value="2"></el-option>
<el-option label="同步" value="3"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" v-if="fieidForm.flag === '-1' || fieidForm.flag === 'ERP->MES'"> <el-col :span="8"
v-if="fieidForm.operation === '1' || fieidForm.operation === '3' || fieidForm.operation === 'ERP->MES'">
<el-form-item label="金蝶主键字段" prop="primaryKeyField"> <el-form-item label="金蝶主键字段" prop="primaryKeyField">
<el-input v-model="fieidForm.primaryKeyField" placeholder="请输入金蝶主键字段" /> <el-input v-model="fieidForm.primaryKeyField" placeholder="请输入金蝶主键字段" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" v-if="fieidForm.flag === '-1' || fieidForm.flag === 'ERP->MES'"> <el-col :span="8"
v-if="fieidForm.operation === '1' || fieidForm.operation === '3' || fieidForm.operation === 'ERP->MES'">
<el-form-item label="MES分录标识"> <el-form-item label="MES分录标识">
<el-input v-model="fieidForm.mesEntryName" placeholder="请输入MES分录标识" /> <el-input v-model="fieidForm.mesEntryName" placeholder="请输入MES分录标识" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" v-if="fieidForm.flag === '-1' || fieidForm.flag === 'ERP->MES'"> <el-col :span="8"
v-if="fieidForm.operation === '1' || fieidForm.operation === '3' || fieidForm.operation === 'ERP->MES'">
<el-form-item label="单据分录主键字段"> <el-form-item label="单据分录主键字段">
<el-input v-model="fieidForm.entryPrimaryKeyField" placeholder="请输入单据分录主键字段" /> <el-input v-model="fieidForm.entryPrimaryKeyField" placeholder="请输入单据分录主键字段" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- <el-col></el-col> --> <!-- <el-col></el-col> -->
<el-col :span="8" v-if="fieidForm.flag === '1' || fieidForm.flag === 'MES->ERP'"> <el-col :span="8" v-if="fieidForm.operation === '2' || fieidForm.operation === 'MES->ERP'">
<el-form-item label="分录标识" prop="entryName"> <el-form-item label="分录标识" prop="entryName">
<!-- :prop="fieidForm.flag === '1' && fieidForm.flag === 'MES->ERP' ? '' : 'entryName'" --> <!-- :prop="fieidForm.operation === '1' && fieidForm.operation === 'MES->ERP' ? '' : 'entryName'" -->
<el-input v-model="fieidForm.entryName" placeholder="请输入分录标识" /> <el-input v-model="fieidForm.entryName" placeholder="请输入分录标识" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" v-show="fieidForm.flag === '1' || fieidForm.flag === 'MES->ERP'"> <el-col :span="8" v-show="fieidForm.operation === '2' || fieidForm.operation === 'MES->ERP'">
<el-form-item label="源单唯一标识"> <el-form-item label="源单唯一标识">
<el-input v-model="fieidForm.fathersFormId" placeholder="请输入源单唯一标识" /> <el-input v-model="fieidForm.fathersFormId" placeholder="请输入源单唯一标识" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" v-show="fieidForm.flag === '1' || fieidForm.flag === 'MES->ERP'"> <el-col :span="8" v-show="fieidForm.operation === '2' || fieidForm.operation === 'MES->ERP'">
<el-form-item label="单据转换唯一标识"> <el-form-item label="单据转换唯一标识">
<el-input v-model="fieidForm.pushRule" placeholder="请输入单据转换唯一标识" /> <el-input v-model="fieidForm.pushRule" placeholder="请输入单据转换唯一标识" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" v-show="fieidForm.flag === '1' || fieidForm.flag === 'MES->ERP'"> <el-col :span="8" v-show="fieidForm.operation === '2' || fieidForm.operation === 'MES->ERP'">
<el-form-item label="源单分录标识"> <el-form-item label="源单分录标识">
<el-input v-model="fieidForm.fatherEntryName" placeholder="请输入源单分录标识" /> <el-input v-model="fieidForm.fatherEntryName" placeholder="请输入源单分录标识" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- <el-col :span="8" v-show="fieidForm.flag === '1' || fieidForm.flag === 'MES->ERP'"> <el-col :span="8" v-show="fieidForm.operation === '2' || fieidForm.operation === 'MES->ERP'">
<el-form-item label="行内码标识">
<el-input v-model="fieidForm.linkFsIdName" placeholder="请输入行内码标识" />
</el-form-item>
</el-col> -->
<el-col :span="8" v-show="fieidForm.flag === '1' || fieidForm.flag === 'MES->ERP'">
<el-form-item label="执行步骤"> <el-form-item label="执行步骤">
<el-select v-model="fieidForm.isAutoPerform" placeholder="请选择执行步骤"> <el-select v-model="fieidForm.isAutoPerform" placeholder="请选择执行步骤">
<!-- <el-option label="暂存" value="0"></el-option> --> <el-option label="暂存" value="0"></el-option>
<el-option label="保存" value="1"></el-option> <el-option label="保存" value="1"></el-option>
<el-option label="提交" value="2"></el-option> <el-option label="提交" value="2"></el-option>
<el-option label="审核" value="3"></el-option> <el-option label="审核" value="3"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" v-show="fieidForm.flag === '1' || fieidForm.flag === 'MES->ERP'"> <el-col :span="8" v-show="fieidForm.operation === '2' || fieidForm.operation === 'MES->ERP'">
<el-form-item label="在事务中"> <el-form-item label="在事务中">
<el-switch v-model="fieidForm.isInTransaction" active-value="1" inactive-value="0" /> <el-switch v-model="fieidForm.isInTransaction" active-value="1" inactive-value="0" />
</el-form-item> </el-form-item>
...@@ -95,10 +94,6 @@ ...@@ -95,10 +94,6 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<el-divider />
<relevant-details @detailFormValue="detailFormValue" :kingdeeFiledDetailData="kingdeeFiledDetailData"
:fieldTitle="fieldTitle">
</relevant-details>
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="handleClose">关闭</el-button> <el-button @click="handleClose">关闭</el-button>
...@@ -112,7 +107,6 @@ ...@@ -112,7 +107,6 @@
import { ref, watch } from 'vue'; import { ref, watch } from 'vue';
import { ElMessage, ElMessageBox } from 'element-plus'; import { ElMessage, ElMessageBox } from 'element-plus';
import { addCommonConfig, putCommonConfig } from '@/services/api/systemApi/fieldConfiguration/commonConfig' import { addCommonConfig, putCommonConfig } from '@/services/api/systemApi/fieldConfiguration/commonConfig'
import relevantDetails from './relevantDetails.vue';
const props = defineProps({ const props = defineProps({
currentPage: { currentPage: {
...@@ -133,7 +127,7 @@ const fieidForm = ref({ ...@@ -133,7 +127,7 @@ const fieidForm = ref({
sFormId: '', sFormId: '',
docType: '', docType: '',
name: '', name: '',
flag: '-1', operation: '1',
// linkFsIdName: '', // linkFsIdName: '',
pushRule: '', pushRule: '',
fatherEntryName: 'ERP_SIC', fatherEntryName: 'ERP_SIC',
...@@ -146,7 +140,6 @@ const fieidForm = ref({ ...@@ -146,7 +140,6 @@ const fieidForm = ref({
mesEntryName: '', mesEntryName: '',
isAutoPerform: '3', isAutoPerform: '3',
entryPrimaryKeyField: '', entryPrimaryKeyField: '',
kingdeeFiledDetail: <any>{}
}) })
const kingdeeFiledDetailData = ref<any>([]) const kingdeeFiledDetailData = ref<any>([])
const fieidRules = ref({ const fieidRules = ref({
...@@ -155,7 +148,6 @@ const fieidRules = ref({ ...@@ -155,7 +148,6 @@ const fieidRules = ref({
name: [{ required: true, message: '', trigger: 'blur' }], name: [{ required: true, message: '', trigger: 'blur' }],
entryName: [{ required: true, message: '', trigger: 'blur' }], entryName: [{ required: true, message: '', trigger: 'blur' }],
primaryKeyField: [{ required: true, message: '', trigger: 'blur' }], primaryKeyField: [{ required: true, message: '', trigger: 'blur' }],
// flag: [{ required: true, message: '', trigger: 'change' }],
}) })
const updateCount = ref(0) const updateCount = ref(0)
...@@ -168,8 +160,6 @@ const onConfirm = () => { ...@@ -168,8 +160,6 @@ const onConfirm = () => {
fieidRef.value?.validate((valid: boolean, fields: any) => { fieidRef.value?.validate((valid: boolean, fields: any) => {
if (valid) { if (valid) {
if (fieldTitle.value === '新增字段') { if (fieldTitle.value === '新增字段') {
if (JSON.stringify(fieidForm.value.kingdeeFiledDetail) === '{}') return ElMessage({ type: 'warning', message: '金蝶字段相关明细不能为空' })
JSON.stringify(fieidForm.value.kingdeeFiledDetail)
addCommonConfig(fieidForm.value).then((res: any) => { addCommonConfig(fieidForm.value).then((res: any) => {
if (res.code === 200) { if (res.code === 200) {
clear() clear()
...@@ -178,8 +168,6 @@ const onConfirm = () => { ...@@ -178,8 +168,6 @@ const onConfirm = () => {
} }
}) })
} else { } else {
if (JSON.stringify(fieidForm.value.kingdeeFiledDetail) === '[]') return ElMessage({ type: 'warning', message: '金蝶字段相关明细不能为空' })
JSON.stringify(fieidForm.value.kingdeeFiledDetail)
putCommonConfig(fieidForm.value).then((res: any) => { putCommonConfig(fieidForm.value).then((res: any) => {
if (res.code === 200) { if (res.code === 200) {
clear() clear()
...@@ -194,14 +182,13 @@ const onConfirm = () => { ...@@ -194,14 +182,13 @@ const onConfirm = () => {
}) })
} }
const detailFormValue = (Val: any) => fieidForm.value.kingdeeFiledDetail = Val
const clear = () => { const clear = () => {
kingdeeFiledDetailData.value = [] kingdeeFiledDetailData.value = []
fieidForm.value = { fieidForm.value = {
sFormId: '', sFormId: '',
docType: '', docType: '',
name: '', name: '',
flag: '-1', operation: '1',
// linkFsIdName: '', // linkFsIdName: '',
pushRule: '', pushRule: '',
fatherEntryName: 'ERP_SIC', fatherEntryName: 'ERP_SIC',
...@@ -214,7 +201,6 @@ const clear = () => { ...@@ -214,7 +201,6 @@ const clear = () => {
mesEntryName: '', mesEntryName: '',
isAutoPerform: '3', isAutoPerform: '3',
entryPrimaryKeyField: '', entryPrimaryKeyField: '',
kingdeeFiledDetail: <any>{}
} }
updateCount.value = 0 updateCount.value = 0
disabled.value = false disabled.value = false
......
<template>
<div style="padding-left: 5%; margin-top: 20px;">
<el-row justify="space-between">
<span style="font-size: 16px; font-weight: 600; margin-bottom: 12px;">金蝶字段相关明细</span>
<el-button type="primary" size="small" style="margin-right: 20px;" @click="handleAdd"
v-show="fieldTitle !== '详情'">添加明细</el-button>
</el-row>
<el-table :data="kingdeeFiledDetailData" border stripe>
<el-table-column label="金蝶字段" prop="kingdeeField" />
<el-table-column label="名称" prop="erpName" />
<el-table-column label="类型" prop="type" />
<el-table-column label="是否是明细" prop="isDetailField" />
<el-table-column label="MES字段" prop="thirdPartyField" />
<el-table-column label="名称" prop="mesName" />
<el-table-column label="操作" width="135" align="center" v-if="fieldTitle !== '详情'">
<template #default="scope">
<el-space>
<el-popconfirm title="确认删除该明细?" @confirm="handleDelete(scope.$index)">
<template #reference>
<el-link :underline="false" type="danger">删除</el-link>
</template>
</el-popconfirm>
<el-divider direction="vertical" />
<el-dropdown>
<el-link :underline="false" type="primary">更多</el-link>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item @click="moveUpward(scope.$index, scope.row)">上移</el-dropdown-item>
<el-dropdown-item @click="moveDown(scope.$index, scope.row)">下移</el-dropdown-item>
<el-dropdown-item @click="handleEdit(scope.$index, scope.row)">编辑</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</el-space>
</template>
</el-table-column>
</el-table>
</div>
<add-details ref="addDetailRef" @addDetails="handleDetailClick" @editDetails="handleEditDetails"></add-details>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { ElMessage } from 'element-plus';
import addDetails from './addDetails.vue';
const props = defineProps({
kingdeeFiledDetailData: <any>{
type: Object,
default: []
},
fieldTitle: {
type: String,
default: ''
}
})
const emits = defineEmits(['detailFormValue'])
const addDetailRef = ref()
const detailIndex = ref()
const handleEdit = (index: number, row: any) => {
detailIndex.value = index
addDetailRef.value.detailsForm = row
addDetailRef.value.title = '编辑明细'
addDetailRef.value.dialogVisible = true
}
const handleAdd = () => {
addDetailRef.value.title = '添加明细'
addDetailRef.value.dialogVisible = true
}
const handleDelete = (id: number) => props.kingdeeFiledDetailData.splice(id, 1)
// 新增
const handleDetailClick = (Val: any) => {
props.kingdeeFiledDetailData.push(Val)
emits('detailFormValue', props.kingdeeFiledDetailData)
}
// 修改
const handleEditDetails = (Val: any) => {
props.kingdeeFiledDetailData[detailIndex.value] = Val
emits('detailFormValue', props.kingdeeFiledDetailData)
addDetailRef.value.detailsForm = {
kingdeeField: '',
type: '',
erpName: '',
mesName: '',
isDetailField: false,
thirdPartyField: '',
indexField: ''
}
addDetailRef.value.dialogVisible = false
}
// 上移
const moveUpward = (index: number, row: any) => {
if (index > 0) {
let upData = props.kingdeeFiledDetailData[index - 1];
props.kingdeeFiledDetailData.splice(index - 1, 1);
props.kingdeeFiledDetailData.splice(index, 0, upData);
} else {
ElMessage({
message: '已经是第一条,上移失败',
type: 'warning'
});
}
}
// 下移
const moveDown = (index: number, row: any) => {
if ((index + 1) == props.kingdeeFiledDetailData.length) {
ElMessage({
message: '已经是最后一条,下移失败',
type: 'warning'
});
} else {
let downData = props.kingdeeFiledDetailData[index + 1];
props.kingdeeFiledDetailData.splice(index + 1, 1);
props.kingdeeFiledDetailData.splice(index, 0, downData);
}
}
</script>
<style lang="scss" scoped>
::v-deep(.el-space__item) {
margin-right: 0 !important
}
</style>
\ No newline at end of file
<template> <template>
<div class='app-container'> <el-drawer v-model="showMap" size="60%">
123 <el-button type="primary" size="small" icon="plus" @click="addMap" style="margin-bottom: 20px;">添加</el-button>
</div> <el-table :data="mapData" v-loading="loading" border stripe>
<el-table-column v-for="(item, index) in tableList" :key="index" :label="item.lable" :prop="item.prop"
:width="item.width" align="center" />
<el-table-column label="是否是分录字段" prop="isEntryField" align="center" width="130">
<template #default="scope">
<el-tag v-if="scope.row.isEntryField === true" type="success"></el-tag>
<el-tag v-else type="info"></el-tag>
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="120">
<template #default="scope">
<el-button type="primary" link size="small" @click="editMap(scope.row)">编辑</el-button>
<el-divider direction="vertical" />
<el-button type="danger" link size="small" @click="delMap(scope.row.id)">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination :page-data="listQuery" :total="total" @size-change="sizeChange" @current-change="currentChange" />
</el-drawer>
<new-map ref="newMapRef" @init-map="init" />
</template> </template>
<script setup lang='ts'> <script setup lang='ts'>
import { ref } from 'vue' import { ref } from 'vue'
import { getMapList, deleteMap } from '@/services/api/configMap'
import { getCommonConfig } from '@/services/api/systemApi/fieldConfiguration/commonConfig'
import { tableList } from './tableData/configMapTable'
import { ElMessageBox, ElMessage } from 'element-plus'
import newMap from './components/configMap/newMap.vue'
import pagination from '@/components/pagination/index.vue'
const showMap = ref(false)
const newMapRef = ref()
const kingdeeCommonConfigId = ref(1)
const listQuery = ref({
kingdeeCommonConfigId: kingdeeCommonConfigId.value,
pageNo: 1,
pageSize: 10
})
const total = ref(0)
const mapData = ref()
const loading = ref(true)
const addMap = () => {
newMapRef.value.dialogVisible = true
newMapRef.value.title = '新增'
}
const editMap = (data: any) => {
newMapRef.value.dialogVisible = true
newMapRef.value.title = '编辑'
newMapRef.value.fromData = data
}
let sizeChange = (val: number) => {
listQuery.value.pageSize = val
init()
}
let currentChange = (val: number) => {
listQuery.value.pageNo = val
init()
}
const delMap = (id: number) => {
ElMessageBox.confirm(
'确认删除?',
'提示',
{
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
deleteMap(id, listQuery.value.kingdeeCommonConfigId).then((res: any) => {
if (res.code === 200) {
init()
ElMessage({
type: 'success',
message: '删除成功!',
})
}
})
})
.catch(() => { return })
}
const initCommonConfig = () => {
getCommonConfig(1, 10, '', 3).then((res: any) => {
console.log(res);
})
}
initCommonConfig()
const init = () => {
getMapList(listQuery.value).then((res: any) => {
if (res.code === 200) {
mapData.value = res.data.records
total.value = res.data.total
loading.value = false
}
})
}
init()
defineExpose({
showMap,
kingdeeCommonConfigId
})
</script> </script>
<style lang = "scss" scoped> <style lang = "scss" scoped>
</style> </style>
\ No newline at end of file
...@@ -9,19 +9,21 @@ ...@@ -9,19 +9,21 @@
{{ scope.row.name === '其他出库' || scope.row.name === '其他入库' ? scope.row.name + '单' : scope.row.name }} {{ scope.row.name === '其他出库' || scope.row.name === '其他入库' ? scope.row.name + '单' : scope.row.name }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="同步方向" prop="flag" align="center"> <el-table-column label="同步方向" prop="operation" align="center">
<template #default="scope"> <template #default="scope">
{{ scope.row.flag === -1 ? 'ERP->MES' : 'MES->ERP' }} {{ scope.row.operation === -1 ? 'ERP->MES' : 'MES->ERP' }}
</template> </template>
</el-table-column>> </el-table-column>>
<el-table-column label="创建时间" prop="createTime" align="center" /> <el-table-column label="创建时间" prop="createTime" align="center" />
<el-table-column label="操作" width="200" align="center"> <el-table-column label="操作" width="255" align="center">
<template #default="scope"> <template #default="scope">
<el-link :underline="false" type="primary" @click="showDetails(scope.row)">详情</el-link> <el-link :underline="false" type="primary" @click="showDetails(scope.row)">详情</el-link>
<el-divider direction="vertical" /> <el-divider direction="vertical" />
<el-link :underline="false" type="primary" @click="showMap(scope.row.id)">配置映射</el-link>
<el-divider direction="vertical" />
<el-link :underline="false" type="primary" @click="handleEdit(scope.row)">编辑</el-link> <el-link :underline="false" type="primary" @click="handleEdit(scope.row)">编辑</el-link>
<el-divider direction="vertical" /> <el-divider direction="vertical" />
<el-link :underline="false" type="primary" @click="handleDelete(scope.row.id)">删除 <el-link :underline="false" type="danger" @click="handleDelete(scope.row.id)">删除
</el-link> </el-link>
</template> </template>
</el-table-column> </el-table-column>
...@@ -30,8 +32,8 @@ ...@@ -30,8 +32,8 @@
layout="->, total, sizes, prev, pager, next, jumper" :total="total" hide-on-single-page layout="->, total, sizes, prev, pager, next, jumper" :total="total" hide-on-single-page
@size-change="handleSizeChange" @current-change="handleCurrentChange" style="margin-top: 20px;" /> @size-change="handleSizeChange" @current-change="handleCurrentChange" style="margin-top: 20px;" />
</div> </div>
<new-field ref="newFieldRef" @initCommonConfig="initCommonConfig" :currentPage="currentPage" :pageSize="pageSize"> <new-field ref="newFieldRef" @initCommonConfig="initCommonConfig" :currentPage="currentPage" :pageSize="pageSize" />
</new-field> <config-map ref="configMapRef" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
...@@ -39,10 +41,12 @@ import { ref } from 'vue' ...@@ -39,10 +41,12 @@ import { ref } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'; import { ElMessage, ElMessageBox } from 'element-plus';
import { getCommonConfig, deleteCommonConfig } from '@/services/api/systemApi/fieldConfiguration/commonConfig' import { getCommonConfig, deleteCommonConfig } from '@/services/api/systemApi/fieldConfiguration/commonConfig'
import newField from './components/fieldConfiguration/newField.vue'; import newField from './components/fieldConfiguration/newField.vue';
import configMap from './configMap.vue'
const fieidData = ref() const fieidData = ref()
const loading = ref(true) const loading = ref(true)
const newFieldRef = ref() const newFieldRef = ref()
const configMapRef = ref()
const currentPage = ref(1) const currentPage = ref(1)
const pageSize = ref(10) const pageSize = ref(10)
const total = ref() const total = ref()
...@@ -66,26 +70,28 @@ const showFieid = () => { ...@@ -66,26 +70,28 @@ const showFieid = () => {
const handleEdit = (row: any) => { const handleEdit = (row: any) => {
const data = Object.assign({}, row) const data = Object.assign({}, row)
newFieldRef.value.fieldTitle = '编辑字段' newFieldRef.value.fieldTitle = '编辑字段'
if (typeof data.kingdeeFiledDetail === 'string') data.kingdeeFiledDetail = JSON.parse(data.kingdeeFiledDetail) data.operation = '' + data.operation
data.flag = '' + data.flag
data.isAutoPerform = '' + data.isAutoPerform data.isAutoPerform = '' + data.isAutoPerform
data.isInTransaction = '' + data.isInTransaction data.isInTransaction = '' + data.isInTransaction
newFieldRef.value.fieidForm = data newFieldRef.value.fieidForm = data
newFieldRef.value.kingdeeFiledDetailData = data.kingdeeFiledDetail
newFieldRef.value.updateCount = -1 newFieldRef.value.updateCount = -1
newFieldRef.value.drawerVisible = true newFieldRef.value.drawerVisible = true
} }
const showDetails = (row: any) => { const showDetails = (row: any) => {
const data = Object.assign({}, row) const data = Object.assign({}, row)
newFieldRef.value.fieldTitle = '详情' newFieldRef.value.fieldTitle = '详情'
if (typeof data.kingdeeFiledDetail === 'string') data.kingdeeFiledDetail = JSON.parse(data.kingdeeFiledDetail) data.operation = '' + data.operation
data.flag = '' + data.flag
data.isInTransaction = '' + data.isInTransaction data.isInTransaction = '' + data.isInTransaction
newFieldRef.value.fieidForm = data newFieldRef.value.fieidForm = data
newFieldRef.value.disabled = true newFieldRef.value.disabled = true
newFieldRef.value.kingdeeFiledDetailData = data.kingdeeFiledDetail
newFieldRef.value.drawerVisible = true newFieldRef.value.drawerVisible = true
} }
const showMap = (id: number) => {
configMapRef.value.showMap = true
configMapRef.value.kingdeeCommonConfigId = id
}
const handleDelete = (id: number) => { const handleDelete = (id: number) => {
ElMessageBox.confirm( ElMessageBox.confirm(
'确定删除该字段?', '确定删除该字段?',
......
<template>
<div class='app-container'>
<el-button type="primary" icon="plus" size="small" style="margin-bottom: 20px;" @click="addStso">添加</el-button>
<el-table :data="stsoData" border stripe style="width:60%">
<el-table-column label="任务类名" prop="jobClassName" align="center" />
<el-table-column label="接收地址" prop="receiveAddress" align="center" />
<el-table-column label="创建时间" prop="createTime" align="center" />
<el-table-column label="操作" align="center" width="120">
<template #default="scope">
<el-button type="primary" link size="small" @click="editStso(scope.row)">编辑</el-button>
<el-divider direction="vertical" />
<el-button type="danger" link size="small" @click="delStso(scope.row.id)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-dialog v-model="showDialog" :title="title" width="30%" :before-close="handleClose">
<el-form :model="formData" ref="formRef" :rules="fromRules" label-width="120px">
<el-form-item label="任务类名" prop="jobClassName">
<el-input v-model="formData.jobClassName" placeholder="请输入任务类名" />
</el-form-item>
<el-form-item label="通用配置id" prop="commonConfigId">
<el-select v-model="formData.commonConfigId" class="m-2" placeholder="请选择">
<el-option v-for="item in commonConfigData" :key="item.id" :label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="接收地址" prop="receiveAddress">
<el-input v-model="formData.receiveAddress" placeholder="请输入任务类名" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="onConfirm">确认</el-button>
</template>
</el-dialog>
</div>
</template>
<script setup lang='ts'>
import { ref } from 'vue'
import { ElMessageBox, ElMessage } from 'element-plus'
import { getStsoList, createStso, updateStso, deleteStso } from '@/services/api/stso'
import { getCommonConfig } from '@/services/api/systemApi/fieldConfiguration/commonConfig'
// 查询参数
const listQuery = ref({
jobClassName: '', // 任务类名
pageNo: 1, // 页码
pageSize: 10, // 每页数量
})
const total = ref(0)
const stsoData = ref()
const formRef = ref()
const formData = ref({
jobClassName: '', // 任务类名
commonConfigId: '', // 通用配置id
receiveAddress: '' // 接收地址
})
// 校验规则
const fromRules = ref({
jobClassName: [{ required: true, message: '', trigger: 'blur' }],
commonConfigId: [{ required: true, message: '', trigger: 'change' }],
receiveAddress: [{ required: true, message: '', trigger: 'blur' }],
})
const commonConfigData = ref()
const showDialog = ref(false)
const title = ref('新增')
// 添加
const addStso = () => {
title.value = '新增'
showDialog.value = true
}
// 添加
const editStso = (row: any) => {
title.value = '编辑'
formData.value = row
showDialog.value = true
}
// 添加
const delStso = (id: number) => {
ElMessageBox.confirm(
'确认删除?',
'提示',
{
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
deleteStso(id).then((res: any) => {
if (res.code === 200) {
initStsoList()
ElMessage({
type: 'success',
message: '删除成功!',
})
}
})
})
.catch(() => { return })
}
const onConfirm = () => {
formRef.value?.validate((valid: boolean, fields: any) => {
if (valid) {
if (title.value === '新增') {
createStso(formData.value).then((res: any) => {
if (res.code === 200) {
initStsoList()
handleClose()
ElMessage({ type: 'success', message: '添加成功!' })
}
})
} else {
updateStso(formData.value).then((res: any) => {
if (res.code === 200) {
initStsoList()
handleClose()
ElMessage({ type: 'success', message: '修改成功!' })
}
})
}
} else {
console.log(fields);
}
})
}
const handleClose = () => {
formData.value = {
jobClassName: '',
commonConfigId: '',
receiveAddress: ''
}
showDialog.value = false
}
// 获取通用配置id数据
const initCommonConfig = () => {
getCommonConfig(1, 10, '', 3).then((res: any) => {
if (res.code === 200) {
commonConfigData.value = res.data.records
}
})
}
initCommonConfig()
// 初始化数据
const initStsoList = () => {
getStsoList(listQuery.value).then((res: any) => {
if (res.code === 200) {
stsoData.value = res.data.records
total.value = res.data.total
console.log(res);
}
})
}
initStsoList()
</script>
<style lang = "scss" scoped>
</style>
\ No newline at end of file
export const fromList = [
{ lable: '排序顺序', prop: 'sortOrder', type: 'number' },
{ lable: '金蝶字段', prop: 'kingDeeField' },
{ lable: '金蝶字段名称', prop: 'kingDeeFieldName' },
{ lable: '字段类型', prop: 'fieldType' },
{ lable: '检索字段', prop: 'retrievalField' },
{ lable: '第三方字段', prop: 'thirdPartyField' },
{ lable: '第三方字段名称', prop: 'thirdPartyFieldName' },
]
export const tableList = [
{ lable: '排序顺序', prop: 'sortOrder', width: '120' },
{ lable: '金蝶字段', prop: 'kingDeeField', width: '155' },
{ lable: '金蝶字段名称', prop: 'kingDeeFieldName' },
{ lable: '字段类型', prop: 'fieldType' },
{ lable: '基础资料', prop: 'retrievalField' },
{ lable: '第三方字段', prop: 'thirdPartyField', width: '155' },
{ lable: '第三方字段名称', prop: 'thirdPartyFieldName' }
]
...@@ -12,7 +12,7 @@ import { ElementPlusResolver } from "unplugin-vue-components/resolvers"; ...@@ -12,7 +12,7 @@ import { ElementPlusResolver } from "unplugin-vue-components/resolvers";
import Icons from "unplugin-icons/vite"; import Icons from "unplugin-icons/vite";
import IconsResolver from "unplugin-icons/resolver"; import IconsResolver from "unplugin-icons/resolver";
import Inspect from "vite-plugin-inspect"; import Inspect from "vite-plugin-inspect";
import { viteMockServe } from "vite-plugin-mock"; // import { viteMockServe } from "vite-plugin-mock";
import { createSvgIconsPlugin } from "vite-plugin-svg-icons"; import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
const pathSrc = path.resolve(__dirname, "src"); const pathSrc = path.resolve(__dirname, "src");
...@@ -31,10 +31,10 @@ export default ({ command, mode }) => { ...@@ -31,10 +31,10 @@ export default ({ command, mode }) => {
// 指定symbolId格式 // 指定symbolId格式
symbolId: "icon-[dir]-[name]", symbolId: "icon-[dir]-[name]",
}), }),
viteMockServe({ // viteMockServe({
// default // // default
mockPath: "mock", // mockPath: "mock",
}), // }),
// AutoImport({ // AutoImport({
// // Auto import functions from Vue, e.g. ref, reactive, toRef... // // Auto import functions from Vue, e.g. ref, reactive, toRef...
// // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等 // // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等
......
差异被折叠。
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论