Compare commits
No commits in common. "huyt" and "zhangpc" have entirely different histories.
|
@ -23,25 +23,3 @@ export function queryDetailsByBillCodeAPI(data) {
|
|||
data,
|
||||
});
|
||||
}
|
||||
export function queryBillFiledsAPI(data) {
|
||||
return request({
|
||||
url: "/kangarooDataCenterV3/ae/push/log/queryBillFileds",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function queryBillPagedAPI(data) {
|
||||
return request({
|
||||
url: "/kangarooDataCenterV3/ae/push/log/queryBillPaged",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
export function queryDetailsByBillCodeAndMdmIdAPI(data) {
|
||||
return request({
|
||||
url: "/kangarooDataCenterV3/ae/push/log/queryDetailsByBillCodeAndMdmId",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
import request from "@/utils/request";
|
||||
import baseTree from '@/components/base/BaseMenuTree/index.vue'
|
||||
import basePage from '@/components/base/basePage/index.vue'
|
||||
|
||||
export default {
|
||||
components: { basePage, baseTree }
|
||||
components: { baseTree }
|
||||
}
|
||||
|
||||
//业务模块
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 172 KiB |
Binary file not shown.
Before Width: | Height: | Size: 394 KiB |
Binary file not shown.
Before Width: | Height: | Size: 18 KiB |
|
@ -7,7 +7,7 @@
|
|||
<el-form validate-on-rule-change :model="ruleForm" :rules="rules" label-position="top" ref="ruleForm"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-row :gutter="24" v-for="(item, index) in formRow" :key="index" :style="{marginBottom: isSence ?'0': '17px'}">
|
||||
<el-row :gutter="24" v-for="(item, index) in formRow" :key="index" style="margin-bottom: 17px;">
|
||||
<el-col v-for="(row, indexRow) in item.elCol" :span="row.span ? row.span : spanNumber" :key="indexRow">
|
||||
<el-form-item :prop="row.prop" :style="`display: flex;margin-bottom: ${marginBottom}px;`"
|
||||
v-if="row.show != false" :class="(rules[row.prop] ? 'ruleFormClass ' : '')"
|
||||
|
@ -16,7 +16,7 @@
|
|||
<div class="single label" v-if="row.label" slot="label"
|
||||
:style="`width: ${spanWidth};` + `justify-content: ${justifyContent};`" flex
|
||||
>
|
||||
<span class="label" :style="{color: isSence ? '#999':'#333',fontSize: isSence ? '14px':'13px'}">{{ row.label }}</span>
|
||||
<span class="label">{{ row.label }}</span>
|
||||
</div>
|
||||
<el-input v-model="ruleForm[row.prop]" v-if="row.tag === 'password'" type="password" show-password clearable
|
||||
auto-complete="off" placeholder="密码" @keyup.enter.native="handleLogin"
|
||||
|
@ -204,10 +204,6 @@ export default {
|
|||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
isSence: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
formdata: {
|
||||
type: Object
|
||||
},
|
||||
|
|
|
@ -35,14 +35,12 @@ export default {
|
|||
sizeChange(val) {
|
||||
let pageModel = this.pageModel
|
||||
pageModel.pageSize = val
|
||||
pageModel.limit = val
|
||||
this.$emit('update:pageModel', pageModel)
|
||||
this.$emit('onPageChange')
|
||||
},
|
||||
currentChange(val) {
|
||||
let pageModel = this.pageModel
|
||||
pageModel.pageIndex = val
|
||||
pageModel.page = val
|
||||
this.$emit('update:pageModel', pageModel)
|
||||
this.$emit('onPageChange')
|
||||
}
|
||||
|
|
|
@ -47,11 +47,7 @@ export default {
|
|||
return data[4];
|
||||
}else if (url.includes("businessMatter")) {
|
||||
return data[5];
|
||||
}else if (url.includes("accountantMatter")) {
|
||||
return data[6];
|
||||
}
|
||||
|
||||
else {
|
||||
} else {
|
||||
return empty;
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -115,8 +115,7 @@ export default {
|
|||
this.currentPath.includes("IntegrationTaskCenter") ||
|
||||
this.currentPath.includes("businessCenter") ||
|
||||
this.currentPath.includes("ApplicationCenter")||
|
||||
this.currentPath.includes("businessMatter") ||
|
||||
this.currentPath.includes("accountantMatter")
|
||||
this.currentPath.includes("businessMatter")
|
||||
|
||||
) {
|
||||
route.meta.affix = true;
|
||||
|
@ -187,12 +186,6 @@ export default {
|
|||
icon: "el-icon-postcard",
|
||||
show: false,
|
||||
},
|
||||
{
|
||||
title: "财资事项平台",
|
||||
path: "/accountantMatter",
|
||||
icon: "el-icon-postcard",
|
||||
show: false,
|
||||
},
|
||||
],
|
||||
};
|
||||
},
|
||||
|
@ -205,8 +198,7 @@ export default {
|
|||
url.includes("IntegrationTaskCenter") ||
|
||||
url.includes("businessCenter") ||
|
||||
url.includes("ApplicationCenter") ||
|
||||
url.includes("businessMatter") ||
|
||||
url.includes("accountantMatter")
|
||||
url.includes("businessMatter")
|
||||
) {
|
||||
this.$store.dispatch("settings/changeSetting", {
|
||||
key: "showTagsView",
|
||||
|
@ -285,8 +277,7 @@ export default {
|
|||
item.path.includes("IntegrationTaskCenter") ||
|
||||
item.path.includes("businessCenter") ||
|
||||
item.path.includes("ApplicationCenter") ||
|
||||
item.path.includes("businessMatter") ||
|
||||
item.path.includes("accountantMatter")
|
||||
item.path.includes("businessMatter")
|
||||
) {
|
||||
this.$store.dispatch("settings/changeSetting", {
|
||||
key: "showTagsView",
|
||||
|
|
|
@ -135,11 +135,7 @@ export default {
|
|||
currentData = data[4]
|
||||
} else if (url.includes('businessMatter')) {
|
||||
currentData = data[5]
|
||||
} else if (url.includes('accountantMatter')) {
|
||||
currentData = data[6]
|
||||
}
|
||||
|
||||
else {
|
||||
} else {
|
||||
currentData = []
|
||||
}
|
||||
} else {
|
||||
|
@ -270,8 +266,6 @@ export default {
|
|||
currentData = data[4]
|
||||
} else if (url.includes('businessMatter')) {
|
||||
currentData = data[5]
|
||||
}else if (url.includes('accountantMatter')) {
|
||||
currentData = data[6]
|
||||
}
|
||||
}
|
||||
if (this.isActive(view)) {
|
||||
|
@ -296,8 +290,6 @@ export default {
|
|||
INDEX = 4
|
||||
} else if (url.includes('businessMatter')) {
|
||||
INDEX = 5
|
||||
} else if (url.includes('accountantMatter')) {
|
||||
INDEX = 6
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -330,8 +322,6 @@ export default {
|
|||
INDEX = 4
|
||||
} else if (url.includes('businessMatter')) {
|
||||
INDEX = 5
|
||||
}else if (url.includes('accountantMatter')) {
|
||||
INDEX = 6
|
||||
}
|
||||
}
|
||||
if (INDEX != null) {
|
||||
|
@ -371,8 +361,6 @@ export default {
|
|||
INDEX = 4
|
||||
} else if (url.includes('businessMatter')) {
|
||||
INDEX = 5
|
||||
} else if (url.includes('accountantMatter')) {
|
||||
INDEX = 6
|
||||
}
|
||||
}
|
||||
if (INDEX != null) {
|
||||
|
|
|
@ -172,15 +172,6 @@ export const constantRoutes = [{
|
|||
title: '会计事项平台',
|
||||
icon: 'dashboard'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'accountantMatter',
|
||||
component: () => import('@/views/newVersionView/accountantMatter/index'),
|
||||
name: 'accountantMatter',
|
||||
meta: {
|
||||
title: '财资事项平台',
|
||||
icon: 'dashboard'
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
@ -7,7 +7,6 @@ const state = {
|
|||
[],
|
||||
[],
|
||||
[],
|
||||
[]
|
||||
],
|
||||
cachedViews: [
|
||||
[],
|
||||
|
@ -16,7 +15,6 @@ const state = {
|
|||
[],
|
||||
[],
|
||||
[],
|
||||
[]
|
||||
],
|
||||
iframeViews: [
|
||||
[],
|
||||
|
@ -24,7 +22,6 @@ const state = {
|
|||
[],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
[]
|
||||
],
|
||||
|
||||
|
@ -49,8 +46,6 @@ const mutations = {
|
|||
Index = 4
|
||||
}else if (url.includes("businessMatter")) {
|
||||
Index = 5;
|
||||
}else if (url.includes("accountantMatter")) {
|
||||
Index = 6;
|
||||
}
|
||||
}
|
||||
if (Index != null) {
|
||||
|
@ -78,8 +73,6 @@ const mutations = {
|
|||
Index = 4
|
||||
}else if (url.includes("businessMatter")) {
|
||||
Index = 5;
|
||||
}else if (url.includes("accountantMatter")) {
|
||||
Index = 6;
|
||||
}
|
||||
}
|
||||
if (Index != null) {
|
||||
|
@ -116,8 +109,6 @@ const mutations = {
|
|||
Index = 4
|
||||
}else if (url.includes("businessMatter")) {
|
||||
Index = 5;
|
||||
}else if (url.includes("accountantMatter")) {
|
||||
Index = 6;
|
||||
}
|
||||
}
|
||||
if (Index != null) {
|
||||
|
@ -143,8 +134,6 @@ const mutations = {
|
|||
Index = 4
|
||||
}else if (url.includes("businessMatter")) {
|
||||
Index = 5;
|
||||
}else if (url.includes("accountantMatter")) {
|
||||
Index = 6;
|
||||
}
|
||||
}
|
||||
if (Index != null) {
|
||||
|
@ -173,8 +162,6 @@ const mutations = {
|
|||
Index = 4
|
||||
}else if (url.includes("businessMatter")) {
|
||||
Index = 5;
|
||||
}else if (url.includes("accountantMatter")) {
|
||||
Index = 6;
|
||||
}
|
||||
}
|
||||
if (Index != null) {
|
||||
|
@ -198,8 +185,6 @@ const mutations = {
|
|||
Index = 4
|
||||
}else if (url.includes("businessMatter")) {
|
||||
Index = 5;
|
||||
}else if (url.includes("accountantMatter")) {
|
||||
Index = 6;
|
||||
}
|
||||
}
|
||||
if (Index != null) {
|
||||
|
@ -224,8 +209,6 @@ const mutations = {
|
|||
Index = 4
|
||||
}else if (url.includes("businessMatter")) {
|
||||
Index = 5;
|
||||
}else if (url.includes("accountantMatter")) {
|
||||
Index = 6;
|
||||
}
|
||||
}
|
||||
if (Index != null) {
|
||||
|
@ -250,9 +233,7 @@ const mutations = {
|
|||
} else if (url.includes("ApplicationCenter")) {
|
||||
INDEX = 4
|
||||
}else if (url.includes("businessMatter")) {
|
||||
INDEX = 5;
|
||||
}else if (url.includes("accountantMatter")) {
|
||||
INDEX = 6;
|
||||
Index = 5;
|
||||
}
|
||||
}
|
||||
if (INDEX != null) {
|
||||
|
@ -282,8 +263,6 @@ const mutations = {
|
|||
INDEX = 4
|
||||
}else if (url.includes("businessMatter")) {
|
||||
INDEX = 5;
|
||||
}else if (url.includes("accountantMatter")) {
|
||||
INDEX = 6;
|
||||
}
|
||||
}
|
||||
if (INDEX != null) {
|
||||
|
@ -308,8 +287,6 @@ const mutations = {
|
|||
INDEX = 4
|
||||
}else if (url.includes("businessMatter")) {
|
||||
INDEX = 5;
|
||||
}else if (url.includes("accountantMatter")) {
|
||||
INDEX = 6;
|
||||
}
|
||||
}
|
||||
if (INDEX != null) {
|
||||
|
@ -332,8 +309,6 @@ const mutations = {
|
|||
INDEX = 4
|
||||
}else if (url.includes("businessMatter")) {
|
||||
INDEX = 5;
|
||||
}else if (url.includes("accountantMatter")) {
|
||||
INDEX = 6;
|
||||
}
|
||||
}
|
||||
if (INDEX != null) {
|
||||
|
@ -356,8 +331,6 @@ const mutations = {
|
|||
INDEX = 4
|
||||
}else if (url.includes("businessMatter")) {
|
||||
INDEX = 5;
|
||||
}else if (url.includes("accountantMatter")) {
|
||||
INDEX = 6;
|
||||
}
|
||||
}
|
||||
if (INDEX != null) {
|
||||
|
@ -385,8 +358,6 @@ const mutations = {
|
|||
INDEX = 4
|
||||
}else if (url.includes("businessMatter")) {
|
||||
INDEX = 5;
|
||||
}else if (url.includes("accountantMatter")) {
|
||||
INDEX = 6;
|
||||
}
|
||||
}
|
||||
if (INDEX != null) {
|
||||
|
@ -427,8 +398,6 @@ const mutations = {
|
|||
INDEX = 4
|
||||
}else if (url.includes("businessMatter")) {
|
||||
INDEX = 5;
|
||||
}else if (url.includes("accountantMatter")) {
|
||||
INDEX = 6;
|
||||
}
|
||||
}
|
||||
if (INDEX != null) {
|
||||
|
|
|
@ -19,9 +19,9 @@
|
|||
</div>
|
||||
<div class="showList">
|
||||
<div class="showItem" v-for="(item,index) in voucherList" :key="index"
|
||||
:class="{active:item.id === voucherClickId}" @click="voucherCliclHandle(item.id,item.name,item.def1)"
|
||||
:class="{active:item.id === voucherClickId}" @click="voucherCliclHandle(item.id,item.name)"
|
||||
>
|
||||
<div class="name">{{ item.name }}{{ item.def1 === 'Y' ? '①' : '' }}</div>
|
||||
<div class="name">{{ item.name }}</div>
|
||||
<div class="icon">
|
||||
<i class="el-icon-edit" @click.stop="voucherDialogEditHandle(item)" style="margin-right: 10px"></i>
|
||||
<i class="el-icon-delete" style="color: red" @click.stop="voucherDialogDelHandle(item)"></i>
|
||||
|
@ -73,7 +73,7 @@
|
|||
</div>
|
||||
<div style="margin-left: 10px;display: flex;align-items: center">
|
||||
凭证类别:
|
||||
<p v-if="!editFlag">{{ typeMerge == 'Y' ? '合并' : typeMerge == 'N' ? '拆分' : '' }}</p>
|
||||
<p v-if="!editFlag">{{typeMerge == 'Y'?'合并':typeMerge == 'N'?'拆分':''}}</p>
|
||||
<el-switch
|
||||
v-else
|
||||
v-model="typeMerge"
|
||||
|
@ -119,13 +119,6 @@
|
|||
type="primary"
|
||||
>保存
|
||||
</el-button>
|
||||
<el-button
|
||||
size="small"
|
||||
icon="el-icon-check"
|
||||
@click="copyOperate"
|
||||
type="primary"
|
||||
>复制
|
||||
</el-button>
|
||||
<el-button
|
||||
size="small"
|
||||
icon="el-icon-delete"
|
||||
|
@ -425,28 +418,6 @@
|
|||
{{ row.row.pkCashflow }}
|
||||
</div>
|
||||
</template>
|
||||
<template #def1="{row}">
|
||||
<div v-if="editFlag">
|
||||
<el-select
|
||||
class="w-100"
|
||||
v-model="row.row.def1"
|
||||
filterable
|
||||
:clearable="true"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="(el, index) in [{label:'是',value:'Y'},{label:'否',value:'N'}]"
|
||||
:key="el.value"
|
||||
:label="el.label"
|
||||
:value="el.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div v-else>
|
||||
{{ row.row.def1 === 'Y' ? '是' : '否' }}
|
||||
</div>
|
||||
</template>
|
||||
<!-- 备注-->
|
||||
<template #remark="{row}">
|
||||
<div v-if="editFlag">
|
||||
|
@ -731,29 +702,6 @@
|
|||
></baseChoice>
|
||||
</div>
|
||||
</base-dialog>
|
||||
<!-- 20250704新增凭证-->
|
||||
<base-dialog
|
||||
:dialogVisible.sync="voucherDialogShow"
|
||||
:closeModal="false"
|
||||
:footerShow="true"
|
||||
:title="passwordDialogTitle+'凭证类型'"
|
||||
width="400px"
|
||||
top="20vh"
|
||||
@handleConfirmClick="voucherDialogClickHandle"
|
||||
>
|
||||
<div class="rightDialogClass_main"
|
||||
style="background-color: #fff;display: flex;align-content: flex-start;justify-content: flex-start;flex-direction: column"
|
||||
>
|
||||
<div class="addDialog">
|
||||
<div class="nameTitle">凭证类型名称:</div>
|
||||
<el-input v-model="billTypeADDName"></el-input>
|
||||
</div>
|
||||
<div class="addDialog" style="align-items: center;display: flex;margin-top: 10px;justify-content: flex-start">
|
||||
<div class="nameTitle">单笔生成:</div>
|
||||
<el-switch v-model="def1" active-value="Y" inactive-value="N"></el-switch>
|
||||
</div>
|
||||
</div>
|
||||
</base-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -807,7 +755,6 @@ export default {
|
|||
//凭证相关
|
||||
voucherClickId: '',
|
||||
voucherClickName: '',
|
||||
voucherClickdef1: '',
|
||||
voucherDialogShow: false,
|
||||
voucherList: [],
|
||||
subClassOptions: [],//会计科目下啦
|
||||
|
@ -836,7 +783,6 @@ export default {
|
|||
width: '100'
|
||||
}
|
||||
],
|
||||
def1: 'N',
|
||||
pkglbookOptions: [],
|
||||
treePropsproperty: {
|
||||
children: 'sublistMdmModuleDbFileds',
|
||||
|
@ -854,7 +800,7 @@ export default {
|
|||
clickRowKey: '',
|
||||
activeTabs: '元数据属性',
|
||||
tabItem: ['元数据属性', '固定值'],
|
||||
arithmeticArr: ['+', '-', '*', '/', '->', '==', '(', ')', '<', '>', '<=', '>=', 'substr(,,)','if(*?:)'],
|
||||
arithmeticArr: ['+', '-', '*', '/', '->', '==', '(', ')', '<', '>', '<=', '>=', 'substr(,,)'],
|
||||
//公式text
|
||||
textarea: '',
|
||||
textareaEn: '',
|
||||
|
@ -1055,28 +1001,28 @@ export default {
|
|||
],
|
||||
exchangeRate: [
|
||||
{ required: true, message: '请输入汇率', trigger: 'change' }
|
||||
],
|
||||
jNumField: [
|
||||
{ required: true, message: '请选择借方数量字段', trigger: 'change' }
|
||||
],
|
||||
jYbSumField: [
|
||||
{ required: true, message: '请选择借方原币金额字段', trigger: 'change' }
|
||||
],
|
||||
jBbSumField: [
|
||||
{ required: true, message: '请选择借方本币金额字段', trigger: 'change' }
|
||||
],
|
||||
dNumField: [
|
||||
{ required: true, message: '请选择贷方数量字段', trigger: 'change' }
|
||||
],
|
||||
dYbSumField: [
|
||||
{ required: true, message: '请选择贷方原币金额字段', trigger: 'change' }
|
||||
],
|
||||
dBbSumField: [
|
||||
{ required: true, message: '请选择贷方本币金额字段', trigger: 'change' }
|
||||
],
|
||||
pkCashflow: [
|
||||
{ required: true, message: '请选择现金流量项目主键', trigger: 'change' }
|
||||
]
|
||||
// jNumField: [
|
||||
// { required: true, message: '请选择借方数量字段', trigger: 'change' }
|
||||
// ],
|
||||
// jYbSumField: [
|
||||
// { required: true, message: '请选择借方原币金额字段', trigger: 'change' }
|
||||
// ],
|
||||
// jBbSumField: [
|
||||
// { required: true, message: '请选择借方本币金额字段', trigger: 'change' }
|
||||
// ],
|
||||
// dNumField: [
|
||||
// { required: true, message: '请选择贷方数量字段', trigger: 'change' }
|
||||
// ],
|
||||
// dYbSumField: [
|
||||
// { required: true, message: '请选择贷方原币金额字段', trigger: 'change' }
|
||||
// ],
|
||||
// dBbSumField: [
|
||||
// { required: true, message: '请选择贷方本币金额字段', trigger: 'change' }
|
||||
// ],
|
||||
// pkCashflow: [
|
||||
// { required: true, message: '请选择现金流量项目主键', trigger: 'change' }
|
||||
// ]
|
||||
|
||||
},
|
||||
fixedValueForm: [
|
||||
|
@ -1198,11 +1144,6 @@ export default {
|
|||
prop: 'pkCashflow',
|
||||
width: 150
|
||||
},
|
||||
{
|
||||
label: '是否计算科目余额',
|
||||
prop: 'def1',
|
||||
width: 150
|
||||
},
|
||||
{
|
||||
label: '备注',
|
||||
prop: 'remark',
|
||||
|
@ -1241,7 +1182,7 @@ export default {
|
|||
children: 'sublistMdmModuleDbFileds',
|
||||
label: 'name'
|
||||
},
|
||||
typeMerge: ''
|
||||
typeMerge:''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
@ -1274,8 +1215,8 @@ export default {
|
|||
this.getAddTableData()
|
||||
}
|
||||
},
|
||||
getTableAddList(val) {
|
||||
console.log(val, 'val', this.fixedValueClickRow)
|
||||
getTableAddList(val){
|
||||
console.log(val,'val',this.fixedValueClickRow)
|
||||
this.pageModel.propValue7 = val
|
||||
this.pageModel.propValue8 = val
|
||||
this.pageModel.prop7 = this.fixedValueClickRow.codefieldname
|
||||
|
@ -1287,10 +1228,9 @@ export default {
|
|||
this.$vmNews('请选择一条数据')
|
||||
return
|
||||
}
|
||||
let obj = this.$refs.baseChoice2.optionData
|
||||
let obj =this.$refs.baseChoice2.optionData
|
||||
this.$set(this.$refs.fixedValueFormRefsName.ruleForm, 'recordData', obj[this.fixedValueClickRow.namefieldname])
|
||||
console.log(this.fixedValueClickRow, 'this.fixedValueClickRow')
|
||||
this.textarea += `@@$${this.fixedValueClickRow.dbName}:id=${obj.id}`
|
||||
this.textarea += `@@$${this.fixedValueClickRow.dbName}:${this.fixedValueClickRow.tablepkname}=${obj[this.fixedValueClickRow.tablepkname]}`
|
||||
// this.$set(this.clickRow, `factorid${this.clickNum}`, this.$refs.baseChoice.optionData[this.clickObj.key])
|
||||
// this.$set(this.clickRow, `factorname${this.clickNum}`, this.$refs.baseChoice.optionData[this.clickObj.labelKey])
|
||||
// this.$set(this.clickRow, `factorpk${this.clickNum}`, this.$refs.baseChoice.optionData['id'])
|
||||
|
@ -1340,10 +1280,9 @@ export default {
|
|||
this.selected[0].assistEntityList.push({})
|
||||
},
|
||||
//凭证相关
|
||||
voucherCliclHandle(id, name, def1) {
|
||||
voucherCliclHandle(id, name) {
|
||||
this.voucherClickId = id
|
||||
this.voucherClickName = name
|
||||
this.voucherClickdef1 = def1
|
||||
this.resetTable()
|
||||
},
|
||||
voucherDialogDelHandle(item) {
|
||||
|
@ -1362,7 +1301,6 @@ export default {
|
|||
voucherDialogEditHandle(item) {
|
||||
this.billTypeADDID = item.id
|
||||
this.billTypeADDName = item.name
|
||||
this.def1 = item.def1
|
||||
this.voucherDialogShow = true
|
||||
this.passwordDialogTitle = '编辑'
|
||||
},
|
||||
|
@ -1385,8 +1323,7 @@ export default {
|
|||
if (this.passwordDialogTitle === '新增') {
|
||||
const res = await typeSaveAPI({
|
||||
name: this.billTypeADDName,
|
||||
mdmId: this.billTypeClickID,
|
||||
def1: this.def1
|
||||
mdmId: this.billTypeClickID
|
||||
})
|
||||
this.$vmNews('保存成功', 'success')
|
||||
this.getVoucherListHandle()
|
||||
|
@ -1394,8 +1331,7 @@ export default {
|
|||
const res = await typeUpdateAPI({
|
||||
id: this.billTypeADDID,
|
||||
name: this.billTypeADDName,
|
||||
mdmId: this.billTypeClickID,
|
||||
def1: this.def1
|
||||
mdmId: this.billTypeClickID
|
||||
})
|
||||
this.$vmNews('保存成功', 'success')
|
||||
this.getVoucherListHandle()
|
||||
|
@ -1406,7 +1342,6 @@ export default {
|
|||
this.voucherDialogShow = true
|
||||
this.passwordDialogTitle = '新增'
|
||||
this.billTypeADDName = ''
|
||||
this.def1 = 'N'
|
||||
this.billTypeADDID = ''
|
||||
},
|
||||
//保存方法
|
||||
|
@ -1419,10 +1354,10 @@ export default {
|
|||
}
|
||||
})
|
||||
})
|
||||
let tableData = this.tableData.map(el => {
|
||||
return {
|
||||
let tableData = this.tableData.map(el=>{
|
||||
return{
|
||||
...el,
|
||||
typeMerge: this.typeMerge
|
||||
typeMerge:this.typeMerge
|
||||
}
|
||||
})
|
||||
console.log(this.tableData, 'this.tableData')
|
||||
|
@ -1431,21 +1366,6 @@ export default {
|
|||
this.editFlag = false
|
||||
this.getTableData()
|
||||
},
|
||||
//复制方法
|
||||
async copyOperate() {
|
||||
if (!this.selected.length) {
|
||||
this.$vmNews('请至少选择一条数据')
|
||||
return
|
||||
}
|
||||
let copyTarget = JSON.parse(JSON.stringify(this.selected[0]))
|
||||
console.log(copyTarget.assistEntityList, 'copyTarget')
|
||||
//恰掉id
|
||||
delete copyTarget.id
|
||||
copyTarget.assistEntityList.forEach(item => {
|
||||
delete item.id
|
||||
})
|
||||
this.tableData.push(copyTarget)
|
||||
},
|
||||
//关闭方法
|
||||
closeOperate() {
|
||||
this.editFlag = false
|
||||
|
@ -2199,7 +2119,7 @@ export default {
|
|||
currencyFieArr: [],
|
||||
assistEntityList: [],
|
||||
templateTypeId: this.voucherClickId,
|
||||
typeMerge: this.typeMerge
|
||||
typeMerge:this.typeMerge
|
||||
}
|
||||
this.tableData.push(obj)
|
||||
return
|
||||
|
@ -2303,7 +2223,7 @@ export default {
|
|||
'nameEn': 'delOperate',
|
||||
'menuId': '936df6d1cd7e4f9ba4c972e0f84b5ab4',
|
||||
'iconName': 'el-icon-delete',
|
||||
'style': 'danger',
|
||||
'styles': 'danger',
|
||||
'btnFunction': 'delOperate',
|
||||
'remark': null,
|
||||
'userId': null,
|
||||
|
@ -2404,7 +2324,7 @@ export default {
|
|||
'nameEn': 'delOperateAssist',
|
||||
'menuId': '936df6d1cd7e4f9ba4c972e0f84b5ab4',
|
||||
'iconName': 'el-icon-delete',
|
||||
'style': 'danger',
|
||||
'styles': 'danger',
|
||||
'btnFunction': 'delOperate',
|
||||
'remark': null,
|
||||
'userId': null,
|
||||
|
|
|
@ -1779,7 +1779,7 @@ export default {
|
|||
'nameEn': 'delOperate',
|
||||
'menuId': '936df6d1cd7e4f9ba4c972e0f84b5ab4',
|
||||
'iconName': 'el-icon-delete',
|
||||
'style': 'danger',
|
||||
'styles': 'danger',
|
||||
'btnFunction': 'delOperate',
|
||||
'remark': null,
|
||||
'userId': null,
|
||||
|
@ -1880,7 +1880,7 @@ export default {
|
|||
'nameEn': 'delOperateAssist',
|
||||
'menuId': '936df6d1cd7e4f9ba4c972e0f84b5ab4',
|
||||
'iconName': 'el-icon-delete',
|
||||
'style': 'danger',
|
||||
'styles': 'danger',
|
||||
'btnFunction': 'delOperate',
|
||||
'remark': null,
|
||||
'userId': null,
|
||||
|
|
|
@ -1567,7 +1567,7 @@ export default {
|
|||
'nameEn': 'delOperate',
|
||||
'menuId': '936df6d1cd7e4f9ba4c972e0f84b5ab4',
|
||||
'iconName': 'el-icon-delete',
|
||||
'style': 'danger',
|
||||
'styles': 'danger',
|
||||
'btnFunction': 'delOperate',
|
||||
'remark': null,
|
||||
'userId': null,
|
||||
|
@ -1668,7 +1668,7 @@ export default {
|
|||
'nameEn': 'delOperateAssist',
|
||||
'menuId': '936df6d1cd7e4f9ba4c972e0f84b5ab4',
|
||||
'iconName': 'el-icon-delete',
|
||||
'style': 'danger',
|
||||
'styles': 'danger',
|
||||
'btnFunction': 'delOperate',
|
||||
'remark': null,
|
||||
'userId': null,
|
||||
|
|
|
@ -1,415 +0,0 @@
|
|||
<template>
|
||||
<div class="editorItem">
|
||||
<el-form-item>
|
||||
<div class="editor-header" :style="indentStyle">
|
||||
<span
|
||||
v-if="row.children && row.children.length > 0"
|
||||
class="toggle-btn"
|
||||
@click="toggleCollapse"
|
||||
>
|
||||
<i
|
||||
:class="
|
||||
isCollapsed ? 'el-icon-caret-right' : 'el-icon-caret-bottom'
|
||||
"
|
||||
></i>
|
||||
</span>
|
||||
<span class="column-title"
|
||||
>{{ row.column_name }}
|
||||
<span style="font-size: 12px; margin-left: 5px; font-weight: bold">{{
|
||||
row.column_comment
|
||||
}}</span></span
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="editor-container" :style="indentStyle">
|
||||
<div
|
||||
class="content-editor"
|
||||
:ref="'contentEditor' + row.column_name + rowIndex"
|
||||
:contenteditable="!viewFlag"
|
||||
@keydown="handleKeyDown($event, row.column_name, rowIndex)"
|
||||
@input="handleInput($event, row.column_name, rowIndex)"
|
||||
@click="handleEditorClick($event, row.column_name, rowIndex)"
|
||||
@paste="handlePaste($event, row.column_name, rowIndex)"
|
||||
@focus="handleEditorFocus($event, row.column_name, rowIndex)"
|
||||
@blur="handleEditorBlur($event, row.column_name, rowIndex)"
|
||||
></div>
|
||||
<div
|
||||
v-if="!viewFlag"
|
||||
class="editorIcon"
|
||||
@click.stop="handleAddNodeToEditor(row.column_name, rowIndex)"
|
||||
>
|
||||
<i class="el-icon-circle-plus"></i>
|
||||
</div>
|
||||
<div
|
||||
v-if="!viewFlag"
|
||||
class="clearIcon"
|
||||
@click.stop="handleClearNodeToEditor(row.column_name, rowIndex)"
|
||||
>
|
||||
<i class="el-icon-circle-close"></i>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 子项,只有在展开时才显示 -->
|
||||
<EditorItem
|
||||
v-if="!isCollapsed"
|
||||
v-for="(child, index) in row.children"
|
||||
:key="index"
|
||||
:row="child"
|
||||
:row-index="`${rowIndex}-${index}`"
|
||||
v-bind="$attrs"
|
||||
v-on="$listeners"
|
||||
ref="childEditors"
|
||||
ref-in-for
|
||||
:viewFlag="viewFlag"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "EditorItem",
|
||||
props: {
|
||||
row: Object,
|
||||
rowIndex: [String, Number],
|
||||
viewFlag: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isCollapsed: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
indentLevel() {
|
||||
return String(this.rowIndex).split("-").length - 1;
|
||||
},
|
||||
indentStyle() {
|
||||
return {
|
||||
paddingLeft: this.indentLevel * 20 + "px",
|
||||
};
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
const refName = "contentEditor" + this.row.column_name + this.rowIndex;
|
||||
const editor = this.$refs[refName];
|
||||
// 确保 editor 是 DOM 元素而非 undefined/数组
|
||||
if (Array.isArray(editor)) {
|
||||
if (editor.length > 0) {
|
||||
this.$emit("register-editor", refName, editor[0]);
|
||||
}
|
||||
} else if (editor) {
|
||||
this.$emit("register-editor", refName, editor);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 获取当前组件及子组件的内容,递归返回数据
|
||||
getEditorContent() {
|
||||
// 当前编辑器 DOM 引用
|
||||
const refName = "contentEditor" + this.row.column_name + this.rowIndex;
|
||||
const editor = this.$refs[refName];
|
||||
|
||||
// 取当前编辑器内容
|
||||
let html_label = "";
|
||||
let whereCondition = "";
|
||||
|
||||
if (editor) {
|
||||
html_label = editor.innerHTML.trim();
|
||||
|
||||
editor.childNodes.forEach((node) => {
|
||||
if (node.nodeType === Node.TEXT_NODE) {
|
||||
whereCondition += node.textContent;
|
||||
} else if (node.nodeType === Node.ELEMENT_NODE) {
|
||||
whereCondition += node.getAttribute("data-token-text") || "";
|
||||
}
|
||||
});
|
||||
|
||||
// 替换中文符号为英文符号
|
||||
whereCondition = whereCondition
|
||||
.replace(/,/g, ",")
|
||||
.replace(/(/g, "(")
|
||||
.replace(/)/g, ")");
|
||||
}
|
||||
|
||||
// 递归收集子组件的内容
|
||||
let children = [];
|
||||
if (this.$refs.childEditors && this.$refs.childEditors.length > 0) {
|
||||
children = this.$refs.childEditors.map((childComp) =>
|
||||
childComp.getEditorContent()
|
||||
);
|
||||
}
|
||||
return {
|
||||
character_maximum_length: this.row.character_maximum_length,
|
||||
column_comment: this.row.column_comment,
|
||||
column_name: this.row.column_name,
|
||||
data_type: this.row.data_type,
|
||||
html_label: this.row.html_label,
|
||||
is_nullable: this.row.is_nullable,
|
||||
fieldName: this.row.column_name,
|
||||
whereCondition,
|
||||
html_label,
|
||||
children,
|
||||
};
|
||||
},
|
||||
toggleCollapse() {
|
||||
this.isCollapsed = !this.isCollapsed;
|
||||
},
|
||||
// 直接复用父组件的事件,父组件传入逻辑无变化
|
||||
handleKeyDown(e, columnName, rowIndex) {
|
||||
this.$emit("handle-keydown", e, columnName, rowIndex);
|
||||
},
|
||||
handleInput(e, columnName, rowIndex) {
|
||||
this.$emit("handle-input", e, columnName, rowIndex);
|
||||
},
|
||||
handleEditorClick(e, columnName, rowIndex) {
|
||||
this.$emit("handle-editor-click", e, columnName, rowIndex);
|
||||
},
|
||||
handlePaste(e, columnName, rowIndex) {
|
||||
this.$emit("handle-paste", e, columnName, rowIndex);
|
||||
},
|
||||
handleEditorFocus(e, columnName, rowIndex) {
|
||||
this.$emit("handle-editor-focus", e, columnName, rowIndex);
|
||||
},
|
||||
handleEditorBlur(e, columnName, rowIndex) {
|
||||
this.$emit("handle-editor-blur", e, columnName, rowIndex);
|
||||
},
|
||||
handleAddNodeToEditor(columnName, rowIndex) {
|
||||
this.$emit("handle-add-node", columnName, rowIndex);
|
||||
},
|
||||
handleClearNodeToEditor(columnName, rowIndex) {
|
||||
this.$emit("handle-clear-node", columnName, rowIndex);
|
||||
},
|
||||
},
|
||||
components: {
|
||||
EditorItem: () => import("./EditorItem.vue"),
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// ------------------------
|
||||
.editor-container {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
.editorIcon {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 0;
|
||||
font-size: 20px;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.clearIcon {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 35px;
|
||||
font-size: 20px;
|
||||
color: #999999;
|
||||
}
|
||||
.editor-container:hover .clearIcon {
|
||||
display: block;
|
||||
}
|
||||
/* hover 时显示 close-icon */
|
||||
.editor-container:hover .close-icon {
|
||||
display: inline-flex; /* 或 block,根据你的布局 */
|
||||
}
|
||||
.content-editor {
|
||||
border: 1px solid #e5e7eb;
|
||||
border-radius: 4px;
|
||||
min-height: 40px;
|
||||
padding: 0 50px 0 10px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
font-size: 12px;
|
||||
// line-height: 1.6;
|
||||
overflow-y: auto;
|
||||
outline: none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.content-editor:focus {
|
||||
border-color: #409eff;
|
||||
}
|
||||
|
||||
.content-editor:empty:before {
|
||||
content: attr(data-placeholder);
|
||||
color: #9ca3af;
|
||||
font-style: italic;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.content-editor:focus:empty:before {
|
||||
content: "";
|
||||
}
|
||||
|
||||
/* 确保空编辑器也能显示光标 */
|
||||
.content-editor:empty {
|
||||
min-height: 40px;
|
||||
}
|
||||
|
||||
.content-editor:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
// --------------------------------
|
||||
::v-deep .content-token {
|
||||
display: unset !important;
|
||||
padding: 3px 4px !important;
|
||||
border-radius: 3px;
|
||||
margin: 0 2px !important;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
vertical-align: middle;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
user-select: none;
|
||||
}
|
||||
::v-deep .token-function {
|
||||
background: #ecfdf5;
|
||||
color: #047857;
|
||||
border: 1px solid #10b981;
|
||||
}
|
||||
|
||||
::v-deep .repContainer {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #f5f5f5;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
}
|
||||
.treeNodeBox {
|
||||
height: calc(100% - 50px);
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.closeRepContainer {
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
right: 12px;
|
||||
font-size: 14px;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
i {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
.closeRepContainer:hover {
|
||||
color: #409eff;
|
||||
}
|
||||
|
||||
.repItem {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 8px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.repItem:hover .repItemValue {
|
||||
color: #409eff;
|
||||
}
|
||||
|
||||
.repItemValue {
|
||||
color: #6b7280;
|
||||
font-size: 13px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.token-editable-content {
|
||||
display: inline-block;
|
||||
min-width: 1em;
|
||||
padding: 0 2px;
|
||||
border-bottom: 1px dashed #aaa;
|
||||
cursor: text;
|
||||
outline: none;
|
||||
}
|
||||
::v-deep .content-token.token-edit {
|
||||
display: inline-flex !important;
|
||||
color: #5b21b6;
|
||||
font-weight: bold;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.Columnsbtn {
|
||||
margin: 10px 0;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
.fixedChildTable {
|
||||
height: calc(100vh - 360px);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.drawParent {
|
||||
position: relative;
|
||||
}
|
||||
.TestResultDisplayArea {
|
||||
width: 400px;
|
||||
height: calc(100% - 10px);
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 5px;
|
||||
background-color: #fff;
|
||||
box-sizing: border-box;
|
||||
box-shadow: 0 0 8px #0000001a;
|
||||
border-radius: 4px;
|
||||
z-index: 100;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.testResultBoxTitle {
|
||||
display: flex;
|
||||
padding: 15px 10px;
|
||||
background: #333333;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
justify-content: space-between;
|
||||
border-radius: 4px 4px 0 0;
|
||||
|
||||
.closeTextBox {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.jsonTestResultBox {
|
||||
height: calc(100% - 90px);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
::v-deep .el-alert {
|
||||
padding: 10px !important;
|
||||
}
|
||||
|
||||
.editor-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 5px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.toggle-btn {
|
||||
cursor: pointer;
|
||||
margin-right: 8px;
|
||||
color: #606266;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.column-title {
|
||||
font-size: 14px;
|
||||
color: #333;
|
||||
display: flex;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
</style>
|
|
@ -12,16 +12,16 @@
|
|||
title="新增账号"
|
||||
>
|
||||
<template #addButton>
|
||||
<el-button type="primary" v-if="!submitShow" @click="VerifyAccount">验证账号</el-button>
|
||||
<el-button type="primary" @click="VerifyAccount">验证账号</el-button>
|
||||
</template>
|
||||
<div class="rightDialogClass_main" style="background: #fff; padding: 10px">
|
||||
<base-form
|
||||
style="padding-top: 0 !important"
|
||||
spanWidth="80px"
|
||||
ref="customForm"
|
||||
:formRow="currentForm"
|
||||
:formRow="accountFormRow"
|
||||
:isFunBtn="false"
|
||||
:rules="currentRules"
|
||||
:rules="accountRules"
|
||||
alignAt="block"
|
||||
:span="24"
|
||||
>
|
||||
|
@ -62,8 +62,6 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
currentForm: [],
|
||||
currentRules: {},
|
||||
accountFormRow: [
|
||||
{
|
||||
elCol: [
|
||||
|
@ -190,161 +188,26 @@ export default {
|
|||
},
|
||||
],
|
||||
},
|
||||
accountOtherFormRow: [
|
||||
{
|
||||
elCol: [
|
||||
{
|
||||
label: "账号名称",
|
||||
prop: "name",
|
||||
tag: "elInput",
|
||||
span: 24,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
elCol: [
|
||||
{
|
||||
label: "ip地址",
|
||||
prop: "ipAddress",
|
||||
tag: "elInput",
|
||||
span: 24,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
elCol: [
|
||||
{
|
||||
label: "端口",
|
||||
prop: "port",
|
||||
tag: "elInput",
|
||||
span: 24,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
elCol: [
|
||||
{
|
||||
label: "应用Key",
|
||||
prop: "appKey",
|
||||
tag: "elInput",
|
||||
span: 24,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
elCol: [
|
||||
{
|
||||
label: "应用密钥",
|
||||
prop: "appSecret",
|
||||
tag: "elInput",
|
||||
span: 24,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
elCol: [
|
||||
{
|
||||
label: "企业ID",
|
||||
prop: "corpid",
|
||||
tag: "elInput",
|
||||
span: 24,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
elCol: [
|
||||
{
|
||||
label: "应用ID",
|
||||
prop: "agentid",
|
||||
tag: "elInput",
|
||||
span: 24,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
accountOtherRules: {
|
||||
name: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入",
|
||||
trigger: "change, blur",
|
||||
},
|
||||
],
|
||||
ipAddress: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入",
|
||||
trigger: "change, blur",
|
||||
},
|
||||
],
|
||||
port: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入",
|
||||
trigger: "change, blur",
|
||||
},
|
||||
],
|
||||
appKey: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入",
|
||||
trigger: "change, blur",
|
||||
},
|
||||
],
|
||||
appSecret: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入",
|
||||
trigger: "change, blur",
|
||||
},
|
||||
],
|
||||
corpid: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入",
|
||||
trigger: "change, blur",
|
||||
},
|
||||
],
|
||||
agentid: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入",
|
||||
trigger: "change, blur",
|
||||
},
|
||||
],
|
||||
},
|
||||
appID: "",
|
||||
sceneID: "",
|
||||
stepID: "",
|
||||
accountType: "",
|
||||
submitShow: false, //是否显示查看按钮
|
||||
message: "",
|
||||
appType: "",
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
openDialog(appID, sceneID, stepID, appType) {
|
||||
this.appType = appType;
|
||||
openDialog(appID, sceneID, stepID) {
|
||||
this.submitShow = false;
|
||||
this.message = "";
|
||||
this.queryDictionaryList();
|
||||
this.appID = appID;
|
||||
this.sceneID = sceneID;
|
||||
this.stepID = stepID;
|
||||
this.submitShow = false;
|
||||
if (appType == "9") {
|
||||
this.currentForm = this.accountFormRow;
|
||||
this.currentRules = this.accountRules;
|
||||
this.queryDictionaryList();
|
||||
} else {
|
||||
this.submitShow = true;
|
||||
this.currentForm = this.accountOtherFormRow;
|
||||
this.currentRules = this.accountOtherRules;
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
this.dialogVisible = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.customForm?.resetFields("ruleForm");
|
||||
});
|
||||
});
|
||||
},
|
||||
async queryDictionaryList() {
|
||||
let params = {
|
||||
|
@ -367,7 +230,6 @@ export default {
|
|||
if (valid) {
|
||||
let params = {
|
||||
...this.$refs.customForm.ruleForm,
|
||||
appType: this.appType,
|
||||
};
|
||||
this.verifyDataBase(params);
|
||||
} else {
|
||||
|
@ -395,7 +257,6 @@ export default {
|
|||
}
|
||||
},
|
||||
handleConfirmClick() {
|
||||
this.openLoading("保存")
|
||||
this.$refs.customForm.$refs["ruleForm"].validate((valid) => {
|
||||
if (valid) {
|
||||
let params = {
|
||||
|
@ -404,7 +265,6 @@ export default {
|
|||
status: 1,
|
||||
flowId: this.sceneID,
|
||||
stepId: this.stepID,
|
||||
appType: this.appType,
|
||||
};
|
||||
this.SaveAccountData(params);
|
||||
} else {
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
style="background: #fff"
|
||||
>
|
||||
<!-- 步骤画布 -->
|
||||
<div class="drawCanvas drawParent" v-show="!representation">
|
||||
<div class="drawCanvas" v-show="!representation">
|
||||
<div
|
||||
class="drawItem"
|
||||
v-for="(ele, index) in drawShowList"
|
||||
|
@ -120,41 +120,6 @@
|
|||
<div @click="addDrwaItem" class="drawItem drawItemBtn">
|
||||
添加新步骤
|
||||
</div>
|
||||
|
||||
<!-- 测试结果展示区 -->
|
||||
<div class="TestResultDisplayArea" v-if="TestResultDisplayArea">
|
||||
<div class="testResultBoxTitle">
|
||||
测试结果输出
|
||||
<div class="closeTextBox" @click="closeTestResultArea">
|
||||
<i class="el-icon-close"></i> 关闭
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="testSuccessTip"
|
||||
v-if="jsonTestResultData && jsonTestResultData.flag"
|
||||
>
|
||||
<el-alert
|
||||
title="测试成功"
|
||||
type="success"
|
||||
show-icon
|
||||
:closable="false"
|
||||
>
|
||||
</el-alert>
|
||||
</div>
|
||||
<div class="testFailTip" v-else>
|
||||
<el-alert
|
||||
title="测试失败"
|
||||
type="error"
|
||||
:description="jsonTestResultData.msg"
|
||||
show-icon
|
||||
:closable="false"
|
||||
>
|
||||
</el-alert>
|
||||
</div>
|
||||
<div class="jsonTestResultBox" v-if="jsonTestResultData.attribute">
|
||||
<json-view :data="jsonTestResultData.attribute" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 动态内容及其表达式 -->
|
||||
<div
|
||||
|
@ -556,7 +521,6 @@
|
|||
label-width="80px"
|
||||
label-position="top"
|
||||
style="margin-bottom: 10px"
|
||||
v-if="currentRowData.options.appType == '9'"
|
||||
>
|
||||
<el-form-item label="选择表">
|
||||
<el-select
|
||||
|
@ -564,7 +528,6 @@
|
|||
placeholder="请选择表"
|
||||
@change="outsideSelectChange"
|
||||
style="width: 100%"
|
||||
filterable
|
||||
>
|
||||
<el-option
|
||||
v-for="(el, index) in outsideOptions"
|
||||
|
@ -575,62 +538,9 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div
|
||||
class="tabs"
|
||||
v-if="
|
||||
currentRowData.options &&
|
||||
currentRowData.options.appType != '9'
|
||||
"
|
||||
>
|
||||
<div
|
||||
class="tabsItem"
|
||||
:class="{ active: parameterType === 'header' }"
|
||||
@click="switchTabs('header')"
|
||||
>
|
||||
Headers入参
|
||||
</div>
|
||||
<div
|
||||
class="tabsItem"
|
||||
:class="{ active: parameterType === 'query' }"
|
||||
@click="switchTabs('query')"
|
||||
>
|
||||
Query入参
|
||||
</div>
|
||||
<div
|
||||
class="tabsItem"
|
||||
:class="{ active: parameterType === 'body' }"
|
||||
@click="switchTabs('body')"
|
||||
>
|
||||
Body入参
|
||||
</div>
|
||||
</div>
|
||||
<div class="Columnsbtn" v-if="outsideColumns.length > 0">
|
||||
<div class="Columnsbtn">
|
||||
<el-button @click="saveTestTableEvent">暂存</el-button>
|
||||
<el-button @click="saveTestTableEvent('hit')"
|
||||
>点击测试</el-button
|
||||
>
|
||||
</div>
|
||||
<div
|
||||
v-if="
|
||||
currentRowData.options &&
|
||||
currentRowData.options.appType == '9' &&
|
||||
currentRowData.options.apiName.includes('查询')
|
||||
"
|
||||
>
|
||||
<el-form
|
||||
ref="pegeForm"
|
||||
:model="pageFormData"
|
||||
label-width="80px"
|
||||
label-position="top"
|
||||
style="margin-bottom: 10px"
|
||||
>
|
||||
<el-form-item label="页码">
|
||||
<el-input v-model="pageFormData.rowNum"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="每页条数">
|
||||
<el-input v-model="pageFormData.pageLimit"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-button @click="hitTesting">点击测试</el-button>
|
||||
</div>
|
||||
<div class="fixedChildTable">
|
||||
<!-- 表字段 -->
|
||||
|
@ -646,29 +556,91 @@
|
|||
style="margin: 0 10px"
|
||||
>
|
||||
<div id="editorContainer">
|
||||
<EditorItem
|
||||
v-for="(row, index) in outsideColumns"
|
||||
:key="index"
|
||||
:row="row"
|
||||
:row-index="index"
|
||||
@register-editor="registerEditorRef"
|
||||
@handle-keydown="handleKeyDown"
|
||||
@handle-input="handleInput"
|
||||
@handle-editor-click="handleEditorClick"
|
||||
@handle-paste="handlePaste"
|
||||
@handle-editor-focus="handleEditorFocus"
|
||||
@handle-editor-blur="handleEditorBlur"
|
||||
@handle-add-node="handleAddNodeToEditor"
|
||||
@handle-clear-node="handleClearNodeToEditor"
|
||||
ref="editorRefs"
|
||||
ref-in-for
|
||||
/>
|
||||
<div
|
||||
v-for="(row, rowIndex) in outsideColumns"
|
||||
:key="rowIndex"
|
||||
class="editorItem"
|
||||
>
|
||||
<el-form-item :label="row.column_name">
|
||||
<div class="editor-container">
|
||||
<div
|
||||
class="content-editor"
|
||||
:ref="
|
||||
'contentEditor' + row.column_name + rowIndex
|
||||
"
|
||||
contenteditable="true"
|
||||
@keydown="
|
||||
handleKeyDown(
|
||||
$event,
|
||||
row.column_name,
|
||||
rowIndex
|
||||
)
|
||||
"
|
||||
@input="
|
||||
handleInput(
|
||||
$event,
|
||||
row.column_name,
|
||||
rowIndex
|
||||
)
|
||||
"
|
||||
@click="
|
||||
handleEditorClick(
|
||||
$event,
|
||||
row.column_name,
|
||||
rowIndex
|
||||
)
|
||||
"
|
||||
@paste="
|
||||
handlePaste(
|
||||
$event,
|
||||
row.column_name,
|
||||
rowIndex
|
||||
)
|
||||
"
|
||||
@focus="
|
||||
handleEditorFocus(
|
||||
$event,
|
||||
row.column_name,
|
||||
rowIndex
|
||||
)
|
||||
"
|
||||
@blur="
|
||||
handleEditorBlur(
|
||||
$event,
|
||||
row.column_name,
|
||||
rowIndex
|
||||
)
|
||||
"
|
||||
></div>
|
||||
<div
|
||||
class="editorIcon"
|
||||
@click.stop="
|
||||
handleAddNodeToEditor(
|
||||
row.column_name,
|
||||
rowIndex
|
||||
)
|
||||
"
|
||||
>
|
||||
<i class="el-icon-circle-plus"></i>
|
||||
</div>
|
||||
<div
|
||||
class="clearIcon"
|
||||
@click.stop="
|
||||
handleClearNodeToEditor(
|
||||
row.column_name,
|
||||
rowIndex
|
||||
)
|
||||
"
|
||||
>
|
||||
<i class="el-icon-circle-close"></i>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
</el-form>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
|
||||
<el-empty v-else description="暂无数据"></el-empty>
|
||||
</div>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
|
@ -698,8 +670,6 @@ import addAccount from "./addAccount.vue";
|
|||
import baseForm from "@/components/base/baseNewForm";
|
||||
import treeNode from "./TreeNode";
|
||||
import IconsDialog from "../../tool/build/IconsDialog.vue";
|
||||
import jsonView from "vue-json-views";
|
||||
import EditorItem from "./EditorItem.vue";
|
||||
export default {
|
||||
components: {
|
||||
editSence,
|
||||
|
@ -709,8 +679,6 @@ export default {
|
|||
baseForm,
|
||||
treeNode,
|
||||
IconsDialog,
|
||||
jsonView,
|
||||
EditorItem,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -782,75 +750,65 @@ export default {
|
|||
representation: false,
|
||||
selectedNode: "",
|
||||
representationActiveName: "first",
|
||||
treeData: {},
|
||||
treeData: {
|
||||
user: {
|
||||
id: 1001,
|
||||
profile: {
|
||||
name: "李四",
|
||||
email: "lisi@example.com",
|
||||
settings: {
|
||||
theme: "dark",
|
||||
notifications: {
|
||||
email: true,
|
||||
sms: false,
|
||||
push: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
permissions: ["read", "write", "admin"],
|
||||
metadata: {
|
||||
created_at: "2023-01-15T10:30:00Z",
|
||||
updated_at: "2024-03-20T15:45:30Z",
|
||||
version: 2.1,
|
||||
},
|
||||
},
|
||||
config: {
|
||||
database: {
|
||||
host: "localhost",
|
||||
port: 5432,
|
||||
ssl: false,
|
||||
},
|
||||
features: {
|
||||
experimental: ["ai_assist", "real_time_sync"],
|
||||
stable: ["user_management", "data_export"],
|
||||
},
|
||||
},
|
||||
},
|
||||
currenrActiveNodeRef: "",
|
||||
lastSelectedTokenIndex: -1,
|
||||
representationData: representationData,
|
||||
savedRange: null, // ⬅️ 用于存储当前 range
|
||||
TestResultDisplayArea: false, //测试结果展示区
|
||||
jsonTestResultData: {},
|
||||
pageFormData: {
|
||||
rowNum: "1",
|
||||
pageLimit: "100",
|
||||
},
|
||||
|
||||
parameterType: "body", //参数类型
|
||||
|
||||
editorRefs: {}, // 用来保存所有子组件的 editor DOM
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
switchTabs(val) {
|
||||
this.parameterType = val;
|
||||
// 非数据库应用
|
||||
if (this.currentRowData.options.appType != "9") {
|
||||
this.queryApiConfig("tab");
|
||||
}
|
||||
},
|
||||
async saveTestTableEvent(type) {
|
||||
if (
|
||||
this.currentRowData.options.appType == "9" &&
|
||||
!this.outsideFormData.tableName
|
||||
) {
|
||||
async saveTestTableEvent() {
|
||||
if (!this.outsideFormData.tableName) {
|
||||
this.$vmNews("请先选择表");
|
||||
return;
|
||||
}
|
||||
this.openLoading("暂存");
|
||||
// 使用示例:传入你这段 HTML 所在的 DOM 根节点
|
||||
const parsed = this.extractEditorItems();
|
||||
const root = document.querySelector("#editorContainer");
|
||||
const parsed = this.extractEditorItems(root);
|
||||
let data = this.currentRowData.options;
|
||||
let params = {};
|
||||
if (data && data.appType == "9") {
|
||||
params = {
|
||||
let params = {
|
||||
detailList: parsed,
|
||||
flowId: this.sceneID,
|
||||
stepID: data.stepID,
|
||||
stepAccountId: data.step_acc_id,
|
||||
actionName: data.apiName || data.plugName,
|
||||
tableName: this.outsideFormData.tableName,
|
||||
appType: data.appType,
|
||||
};
|
||||
if (data.apiName.includes("查询")) {
|
||||
params.rowNum = this.pageFormData.rowNum;
|
||||
params.pageLimit = this.pageFormData.pageLimit;
|
||||
}
|
||||
} else {
|
||||
params = {
|
||||
flowId: this.sceneID,
|
||||
stepID: data.stepID,
|
||||
headerIn: "", //请求头入参
|
||||
queryIn: "", //query入参
|
||||
bodyIn: "", //bodyIn入参
|
||||
};
|
||||
if (this.parameterType == "body") {
|
||||
params.bodyIn = parsed;
|
||||
} else if (this.parameterType == "header") {
|
||||
params.headerIn = parsed;
|
||||
} else if (this.parameterType == "query") {
|
||||
params.queryIn = parsed;
|
||||
}
|
||||
}
|
||||
|
||||
let res = await authApi(
|
||||
"sysFlowStepConfigService",
|
||||
"",
|
||||
|
@ -858,55 +816,42 @@ export default {
|
|||
"",
|
||||
params
|
||||
);
|
||||
if (res.status == "200") {
|
||||
if (type == "hit") {
|
||||
this.hitTesting();
|
||||
} else {
|
||||
this.$vmNews("暂存成功!", "success");
|
||||
}
|
||||
if(res.status == "200"){
|
||||
this.$vmNews("暂存成功!","success")
|
||||
}
|
||||
},
|
||||
extractEditorItems() {
|
||||
if (!this.$refs.editorRefs) return [];
|
||||
extractEditorItems(rootElement) {
|
||||
const result = [];
|
||||
const items = rootElement.querySelectorAll(".editorItem");
|
||||
items.forEach((item) => {
|
||||
const fieldName =
|
||||
item.querySelector(".el-form-item__label")?.innerText.trim() || "";
|
||||
const editor = item.querySelector(".content-editor");
|
||||
if (!editor) return;
|
||||
|
||||
return this.$refs.editorRefs.map((editorComp) =>
|
||||
editorComp.getEditorContent()
|
||||
);
|
||||
const html_label = editor.innerHTML.trim(); // 保留标签结构
|
||||
|
||||
let whereCondition = "";
|
||||
editor.childNodes.forEach((node) => {
|
||||
if (node.nodeType === Node.TEXT_NODE) {
|
||||
whereCondition += node.textContent;
|
||||
} else if (node.nodeType === Node.ELEMENT_NODE) {
|
||||
whereCondition += node.getAttribute("data-token-text") || "";
|
||||
}
|
||||
});
|
||||
// 替换中文符号为英文符号
|
||||
whereCondition = whereCondition
|
||||
.replace(/,/g, ",")
|
||||
.replace(/(/g, "(")
|
||||
.replace(/)/g, ")");
|
||||
|
||||
result.push({ fieldName, whereCondition, html_label });
|
||||
});
|
||||
|
||||
return result;
|
||||
},
|
||||
async hitTesting() {
|
||||
if (
|
||||
this.currentRowData.options.appType == "9" &&
|
||||
!this.outsideFormData.tableName
|
||||
) {
|
||||
this.$vmNews("请先选择表");
|
||||
return;
|
||||
}
|
||||
this.openLoading("测试");
|
||||
this.representation = false;
|
||||
let data = this.currentRowData.options;
|
||||
let params = {
|
||||
stepID: data.stepID,
|
||||
tableName: this.outsideFormData.tableName,
|
||||
appType: this.currentRowData.options.appType,
|
||||
};
|
||||
if (this.currentRowData.options.appType == "9") {
|
||||
delete params.tableName;
|
||||
}
|
||||
let res = await authApi(
|
||||
"sysFlowStepConfigService",
|
||||
"",
|
||||
"testSql",
|
||||
"",
|
||||
params
|
||||
);
|
||||
if (res.status == "200") {
|
||||
this.TestResultDisplayArea = true;
|
||||
this.jsonTestResultData = res || {};
|
||||
}
|
||||
},
|
||||
closeTestResultArea() {
|
||||
this.TestResultDisplayArea = false;
|
||||
this.jsonTestResultData = {};
|
||||
hitTesting(){
|
||||
|
||||
},
|
||||
/**
|
||||
* 打开弹窗
|
||||
|
@ -926,10 +871,6 @@ export default {
|
|||
this.triggerMode = triggerMode;
|
||||
// 显示审核操作弹窗
|
||||
this.examineOperateDialog = true;
|
||||
this.representation = false;
|
||||
this.TestResultDisplayArea = false;
|
||||
this.jsonTestResultData = {};
|
||||
this.parameterType = "body";
|
||||
// 显示场景加载状态
|
||||
this.sceneLoading = true;
|
||||
// 5 秒后隐藏场景加载状态
|
||||
|
@ -1147,10 +1088,6 @@ export default {
|
|||
this.apiIDActiv = "";
|
||||
this.userActivId = "";
|
||||
this.CurrentAppRow = {};
|
||||
// 用来保存所有子组件的 editor DOM
|
||||
this.editorRefs = {};
|
||||
this.parameterType= "body"
|
||||
|
||||
if (index === 0) {
|
||||
this.activeTabName = "选择操作";
|
||||
} else {
|
||||
|
@ -1160,30 +1097,9 @@ export default {
|
|||
// 获取应用列表
|
||||
await this.getAppList();
|
||||
// 获取场景步骤数据
|
||||
await this.queryNodeList();
|
||||
// 步骤详情
|
||||
await this.GetSceneStepData();
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 获取场景映射动态关系
|
||||
*/
|
||||
async queryNodeList() {
|
||||
let params = {
|
||||
flowId: this.sceneID,
|
||||
stepId: this.currentRowData.options.stepID,
|
||||
};
|
||||
let res = await authApi(
|
||||
"sysFlowStepConfigService",
|
||||
"",
|
||||
"queryNodeList",
|
||||
"",
|
||||
params
|
||||
);
|
||||
if (res.status == "200") {
|
||||
this.treeData = res.attribute || {};
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 获取场景步骤数据
|
||||
*/
|
||||
|
@ -1223,8 +1139,6 @@ export default {
|
|||
this.pluginList = [];
|
||||
// 清空用户列表
|
||||
this.userList = [];
|
||||
// 清空表字段
|
||||
this.outsideColumns = [];
|
||||
if (this.currentRowData.options.appId) {
|
||||
// 更新当前选中的应用 ID
|
||||
this.appActivIndex = this.currentRowData.options.appId;
|
||||
|
@ -1252,10 +1166,6 @@ export default {
|
|||
if (this.currentRowData.options.apiId) {
|
||||
// 更新选择的 API ID
|
||||
this.apiIdActiv = this.currentRowData.options.apiId;
|
||||
// 非数据库应用
|
||||
if (this.currentRowData.options.appType != "9") {
|
||||
this.queryApiConfig();
|
||||
}
|
||||
} else {
|
||||
// 重置选择的 API ID
|
||||
this.apiIdActiv = "";
|
||||
|
@ -1275,10 +1185,8 @@ export default {
|
|||
// 更新当前选择的应用账号名称
|
||||
this.CurrentAppRow.step_acc_name =
|
||||
this.currentRowData.options.step_acc_name;
|
||||
if (this.currentRowData.options.appType == "9") {
|
||||
// 获取表数据
|
||||
this.queryTables(this.userActivId);
|
||||
}
|
||||
} else {
|
||||
// 重置选择的用户 ID
|
||||
this.userActivId = "";
|
||||
|
@ -1416,21 +1324,18 @@ export default {
|
|||
* @param {any} value 标签页值
|
||||
*/
|
||||
handleOtherTabClick(value) {
|
||||
console.log(
|
||||
this.activeOtherTabName,
|
||||
this.userActivId,
|
||||
this.outsideFormData.tableName
|
||||
);
|
||||
if (
|
||||
this.activeOtherTabName == "配置应用" &&
|
||||
this.userActivId &&
|
||||
this.outsideFormData.tableName &&
|
||||
this.currentRowData.options.appType == "9"
|
||||
this.outsideFormData.tableName
|
||||
) {
|
||||
this.queryColumns(this.outsideFormData.tableName);
|
||||
}
|
||||
if (
|
||||
this.activeOtherTabName == "配置应用" &&
|
||||
this.apiIdActiv &&
|
||||
this.currentRowData.options.appType != "9"
|
||||
) {
|
||||
this.getStepConfig();
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 应用搜索
|
||||
|
@ -1527,8 +1432,6 @@ export default {
|
|||
this.pluginList = [];
|
||||
this.userActivId = "";
|
||||
this.userList = [];
|
||||
this.jsonTestResultData = {};
|
||||
this.TestResultDisplayArea = false;
|
||||
// 保存应用信息
|
||||
this.matchAppData(row);
|
||||
// 清空步骤配置
|
||||
|
@ -1630,7 +1533,7 @@ export default {
|
|||
this.activeApiPliginTabName = e;
|
||||
},
|
||||
// 选择API
|
||||
async hangleApiClickEvent(item) {
|
||||
hangleApiClickEvent(item) {
|
||||
this.pluginActiv = "";
|
||||
this.currentRowData.options.plugId = "";
|
||||
this.currentRowData.options.plugName = "";
|
||||
|
@ -1645,11 +1548,7 @@ export default {
|
|||
// 更新当前步骤的资源类型
|
||||
this.currentRowData.options.actionType = this.activeApiPliginTabName;
|
||||
// 切换到选择账号标签页
|
||||
if (this.userActivId) {
|
||||
this.activeOtherTabName = "配置应用";
|
||||
} else {
|
||||
this.activeOtherTabName = "选择账号";
|
||||
}
|
||||
let params = {
|
||||
flowId: this.sceneID,
|
||||
id: this.currentRowData.options.stepID,
|
||||
|
@ -1660,39 +1559,7 @@ export default {
|
|||
apiName: item.apiName,
|
||||
};
|
||||
// 保存场景步骤数据
|
||||
await this.SaveSceneStepData(params);
|
||||
// 非数据库应用
|
||||
if (this.currentRowData.options.appType != "9") {
|
||||
this.queryApiConfig();
|
||||
}
|
||||
},
|
||||
// 获取表字段
|
||||
async queryApiConfig(type) {
|
||||
if (!this.currentRowData.options.apiId) {
|
||||
return;
|
||||
}
|
||||
this.outsideColumns = [];
|
||||
let params = {
|
||||
stepId: this.currentRowData.options.stepID, //账户id
|
||||
apiId: this.currentRowData.options.apiId,
|
||||
type: this.parameterType,
|
||||
};
|
||||
let res = await authApi(
|
||||
"sysFlowStepApiConfigService",
|
||||
"",
|
||||
"queryApiConfig",
|
||||
"",
|
||||
params
|
||||
);
|
||||
this.drawMask = false;
|
||||
if (res.status == "200") {
|
||||
this.outsideColumns = res.attribute || [];
|
||||
this.$nextTick(() => {
|
||||
if (type == "tab") {
|
||||
this.getStepConfig();
|
||||
}
|
||||
});
|
||||
}
|
||||
this.SaveSceneStepData(params);
|
||||
},
|
||||
// 选择插件
|
||||
hanglePluginClickEvent(item) {
|
||||
|
@ -1735,8 +1602,7 @@ export default {
|
|||
this.$refs.addAccount.openDialog(
|
||||
this.appActivIndex,
|
||||
this.sceneID,
|
||||
this.currentRowData.options.stepID,
|
||||
this.currentRowData.options.appType
|
||||
this.currentRowData.options.stepID
|
||||
);
|
||||
},
|
||||
/**
|
||||
|
@ -1770,19 +1636,17 @@ export default {
|
|||
id: this.currentRowData.options.stepID,
|
||||
step_acc_name: item.name,
|
||||
step_acc_id: item.id,
|
||||
tableName: "-1",
|
||||
tableName: "",
|
||||
};
|
||||
// 保存场景步骤数据
|
||||
await this.SaveSceneStepData(params);
|
||||
// 切换到配置应用
|
||||
this.activeOtherTabName = "配置应用";
|
||||
if (this.currentRowData.options.appType == "9") {
|
||||
// 获取表数据
|
||||
await this.queryTables(item.id);
|
||||
this.$nextTick(() => {
|
||||
this.resetForm("outsideForm");
|
||||
});
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 重置表单
|
||||
|
@ -1866,77 +1730,30 @@ export default {
|
|||
params
|
||||
);
|
||||
if (res.status == "200") {
|
||||
let detailList = [];
|
||||
const root = document.querySelector("#editorContainer");
|
||||
if (
|
||||
this.currentRowData.options.appType &&
|
||||
this.currentRowData.options.appType == "9"
|
||||
res.attribute &&
|
||||
res.attribute.detailList &&
|
||||
res.attribute.detailList.length > 0
|
||||
) {
|
||||
detailList = res.attribute?.detailList || [];
|
||||
} else {
|
||||
if (this.parameterType == "body") {
|
||||
detailList = res.attribute?.bodyIn
|
||||
? JSON.parse(res.attribute.bodyIn)
|
||||
: [];
|
||||
} else if (this.parameterType == "header") {
|
||||
detailList = res.attribute?.headerIn
|
||||
? JSON.parse(res.attribute.headerIn)
|
||||
: [];
|
||||
} else if (this.parameterType == "query") {
|
||||
detailList = res.attribute?.queryIn
|
||||
? JSON.parse(res.attribute.queryIn)
|
||||
: [];
|
||||
}
|
||||
}
|
||||
if (detailList.length > 0) {
|
||||
this.recursivelyApplyHtmlLabel(this.outsideColumns, detailList);
|
||||
}
|
||||
if (
|
||||
this.currentRowData.options &&
|
||||
this.currentRowData.options.appType == "9" &&
|
||||
this.currentRowData.options.apiName.includes("查询")
|
||||
) {
|
||||
this.pageFormData.rowNum = res.attribute.rowNum || "1";
|
||||
this.pageFormData.pageLimit = res.attribute.pageLimit || "100";
|
||||
res.attribute.detailList.forEach((item) => {
|
||||
this.matchEditorItems(root, item.fieldName, item.html_label);
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
// 匹配数据
|
||||
recursivelyApplyHtmlLabel(columns, detailList, path = []) {
|
||||
columns.forEach((col, index) => {
|
||||
const match = detailList.find(
|
||||
(item) => item.fieldName === col.column_name
|
||||
);
|
||||
if (match && match.html_label) {
|
||||
this.matchEditorItems(match, index, path);
|
||||
}
|
||||
if (
|
||||
col.children &&
|
||||
col.children.length > 0 &&
|
||||
match.children &&
|
||||
match.children.length > 0
|
||||
) {
|
||||
this.recursivelyApplyHtmlLabel(col.children, match.children, [
|
||||
...path,
|
||||
index,
|
||||
]);
|
||||
matchEditorItems(rootElement, rootName, rootHtml) {
|
||||
const items = rootElement.querySelectorAll(".editorItem");
|
||||
items.forEach((item) => {
|
||||
const fieldName =
|
||||
item.querySelector(".el-form-item__label")?.innerText.trim() || "";
|
||||
const editor = item.querySelector(".content-editor");
|
||||
if (!editor) return;
|
||||
if (rootName == fieldName) {
|
||||
editor.innerHTML = rootHtml;
|
||||
}
|
||||
});
|
||||
},
|
||||
// 回显
|
||||
matchEditorItems(match, index, path = []) {
|
||||
const refName =
|
||||
"contentEditor" + match.fieldName + [...path, index].join("-");
|
||||
// 这里获取ref
|
||||
const refEl = this.editorRefs[refName];
|
||||
if (match && match.html_label && refEl) {
|
||||
// 可能refEl是数组,取第一个元素
|
||||
if (Array.isArray(refEl)) {
|
||||
refEl[0].innerHTML = match.html_label;
|
||||
} else if (refEl instanceof HTMLElement) {
|
||||
refEl.innerHTML = match.html_label;
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 获取插件列表
|
||||
* @param {string} appId 应用 ID
|
||||
|
@ -2021,7 +1838,7 @@ export default {
|
|||
editSceneName() {
|
||||
// 编辑场景名称的参数
|
||||
let row = {
|
||||
id: this.sceneID,
|
||||
flowId: this.sceneID,
|
||||
};
|
||||
// 在下一个 DOM 更新周期后打开编辑场景名称的弹窗
|
||||
this.$nextTick(() => {
|
||||
|
@ -2088,20 +1905,10 @@ export default {
|
|||
// 清空用户列表
|
||||
this.userList = [];
|
||||
this.representation = false;
|
||||
this.TestResultDisplayArea = false;
|
||||
// 重置分页
|
||||
this.pageFormData = {
|
||||
rowNum: "1",
|
||||
pageLimit: "100",
|
||||
};
|
||||
},
|
||||
|
||||
registerEditorRef(refName, dom) {
|
||||
this.$set(this.editorRefs, refName, dom);
|
||||
},
|
||||
representationChange() {
|
||||
if (!this.currenrActiveNodeRef) return;
|
||||
const editor = this.editorRefs[this.currenrActiveNodeRef];
|
||||
const editor = this.$refs[this.currenrActiveNodeRef][0];
|
||||
if (!editor) return;
|
||||
// 创建 range 和 selection
|
||||
const range = document.createRange();
|
||||
|
@ -2118,9 +1925,8 @@ export default {
|
|||
this.saveRange();
|
||||
},
|
||||
handleKeyDown(e, columnName, rowIndex) {
|
||||
const refName = "contentEditor" + columnName + rowIndex;
|
||||
const editor = this.editorRefs[refName];
|
||||
if (!editor) return;
|
||||
const editor = this.$refs["contentEditor" + columnName + rowIndex][0];
|
||||
|
||||
if (e.key === "Backspace") {
|
||||
// 检查是否在光标前有token需要删除
|
||||
const selection = window.getSelection();
|
||||
|
@ -2157,12 +1963,22 @@ export default {
|
|||
},
|
||||
// 处理编辑器点击
|
||||
handleEditorClick(e, columnName, rowIndex) {
|
||||
const refName = "contentEditor" + columnName + rowIndex;
|
||||
const editor = this.editorRefs[refName];
|
||||
if (!editor) return;
|
||||
this.currenrActiveNodeRef = refName;
|
||||
const editor = this.$refs["contentEditor" + columnName + rowIndex][0];
|
||||
this.currenrActiveNodeRef = "contentEditor" + columnName + rowIndex;
|
||||
|
||||
// // 如果点击的不是token,清除选中状态
|
||||
// if (
|
||||
// !e.target.classList.contains("content-token") &&
|
||||
// !e.target.closest(".content-token")
|
||||
// ) {
|
||||
// this.clearTokenSelection(columnName, rowIndex);
|
||||
// }
|
||||
|
||||
// // 确保编辑器获得焦点
|
||||
// if (e.target === editor || editor.contains(e.target)) {
|
||||
editor.focus();
|
||||
this.saveRange();
|
||||
// }
|
||||
},
|
||||
// 处理粘贴事件
|
||||
handlePaste(e, columnName, rowIndex) {
|
||||
|
@ -2171,9 +1987,7 @@ export default {
|
|||
},
|
||||
// 处理编辑器获得焦点
|
||||
handleEditorFocus(e, columnName, rowIndex) {
|
||||
const refName = "contentEditor" + columnName + rowIndex;
|
||||
const editor = this.editorRefs[refName];
|
||||
if (!editor) return;
|
||||
const editor = this.$refs["contentEditor" + columnName + rowIndex][0];
|
||||
// 如果编辑器为空,设置光标到开始位置
|
||||
if (this.isEmpty(columnName, rowIndex)) {
|
||||
setTimeout(() => {
|
||||
|
@ -2188,8 +2002,7 @@ export default {
|
|||
},
|
||||
// 判断当前编辑器是否为空
|
||||
isEmpty(columnName, rowIndex) {
|
||||
const refName = "contentEditor" + columnName + rowIndex;
|
||||
const editor = this.editorRefs[refName];
|
||||
const editor = this.$refs["contentEditor" + columnName + rowIndex][0];
|
||||
if (!editor) return true;
|
||||
const content = editor.textContent.trim();
|
||||
const hasTokens = editor.querySelectorAll(".content-token").length > 0;
|
||||
|
@ -2200,10 +2013,10 @@ export default {
|
|||
// 可以在这里处理失去焦点的逻辑
|
||||
},
|
||||
handleClearNodeToEditor(columnName, rowIndex) {
|
||||
const refName = "contentEditor" + columnName + rowIndex;
|
||||
const editor = this.editorRefs[refName];
|
||||
const editor = this.$refs["contentEditor" + columnName + rowIndex][0];
|
||||
if (!editor) return;
|
||||
this.currenrActiveNodeRef = refName;
|
||||
let nodeRef = "contentEditor" + columnName + rowIndex;
|
||||
this.currenrActiveNodeRef = nodeRef;
|
||||
|
||||
editor.innerHTML = ""; // 先清空内容
|
||||
this.$forceUpdate();
|
||||
|
@ -2226,14 +2039,14 @@ export default {
|
|||
|
||||
//添加节点
|
||||
handleAddNodeToEditor(columnName, rowIndex) {
|
||||
const refName = "contentEditor" + columnName + rowIndex;
|
||||
const editor = this.editorRefs[refName];
|
||||
if (!editor) return;
|
||||
this.currenrActiveNodeRef = refName;
|
||||
let nodeRef = "contentEditor" + columnName + rowIndex;
|
||||
this.currenrActiveNodeRef = nodeRef;
|
||||
this.representation = true;
|
||||
this.TestResultDisplayArea = false;
|
||||
this.representationActiveName = "first";
|
||||
|
||||
// 这段代码的目的是 让光标停留在最后一个span标签后面
|
||||
const editor = this.$refs[this.currenrActiveNodeRef][0];
|
||||
if (!editor) return;
|
||||
// 创建 range 和 selection
|
||||
const range = document.createRange();
|
||||
const selection = window.getSelection();
|
||||
|
@ -2259,7 +2072,7 @@ export default {
|
|||
insertToken(text, type) {
|
||||
if (!this.currenrActiveNodeRef) return;
|
||||
|
||||
const editor = this.editorRefs[this.currenrActiveNodeRef];
|
||||
const editor = this.$refs[this.currenrActiveNodeRef][0];
|
||||
if (!editor) return;
|
||||
|
||||
// 确保编辑器有焦点
|
||||
|
@ -2327,7 +2140,7 @@ export default {
|
|||
setCursorToEnd() {
|
||||
if (!this.currenrActiveNodeRef) return;
|
||||
|
||||
const editor = this.editorRefs[this.currenrActiveNodeRef];
|
||||
const editor = this.$refs[this.currenrActiveNodeRef][0];
|
||||
if (!editor) return;
|
||||
|
||||
const range = document.createRange();
|
||||
|
@ -2372,7 +2185,7 @@ export default {
|
|||
setCursorToEnd() {
|
||||
// 清除之前的选中状态
|
||||
if (!this.currenrActiveNodeRef) return;
|
||||
const editor = this.editorRefs[this.currenrActiveNodeRef];
|
||||
const editor = this.$refs[this.currenrActiveNodeRef][0];
|
||||
if (!editor) return;
|
||||
|
||||
const range = document.createRange();
|
||||
|
@ -2391,7 +2204,7 @@ export default {
|
|||
},
|
||||
mounted() {
|
||||
// 绑定事件监听器
|
||||
const editor = this.editorRefs[this.currenrActiveNodeRef];
|
||||
const editor = this.$refs[this.currenrActiveNodeRef]?.[0];
|
||||
if (editor) {
|
||||
editor.addEventListener("mouseup", this.saveRange);
|
||||
editor.addEventListener("keyup", this.saveRange);
|
||||
|
@ -3144,7 +2957,6 @@ export default {
|
|||
::v-deep .el-collapse-item__header {
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
|
||||
// ------------------------
|
||||
.editor-container {
|
||||
flex: 1;
|
||||
|
@ -3301,74 +3113,6 @@ export default {
|
|||
height: calc(100vh - 360px);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.drawParent {
|
||||
position: relative;
|
||||
}
|
||||
.TestResultDisplayArea {
|
||||
width: 400px;
|
||||
height: calc(100% - 10px);
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 5px;
|
||||
background-color: #fff;
|
||||
box-sizing: border-box;
|
||||
box-shadow: 0 0 8px #0000001a;
|
||||
border-radius: 4px;
|
||||
z-index: 100;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.testResultBoxTitle {
|
||||
display: flex;
|
||||
padding: 15px 10px;
|
||||
background: #333333;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
justify-content: space-between;
|
||||
border-radius: 4px 4px 0 0;
|
||||
|
||||
.closeTextBox {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.jsonTestResultBox {
|
||||
height: calc(100% - 90px);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
::v-deep .el-alert {
|
||||
padding: 10px !important;
|
||||
}
|
||||
|
||||
.tabs {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 32px;
|
||||
background: #fff;
|
||||
border-radius: 4px;
|
||||
padding: 2px;
|
||||
width: fit-content;
|
||||
margin-top: 10px;
|
||||
|
||||
.tabsItem {
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
background: #fff;
|
||||
border-radius: 3px;
|
||||
font-size: 14px;
|
||||
color: #999;
|
||||
padding: 0 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.active {
|
||||
background: #f5f5f5;
|
||||
color: #333;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
|
|
@ -170,8 +170,8 @@ export default {
|
|||
params
|
||||
);
|
||||
if (res.status == "200") {
|
||||
this.$refs.senceForm.choiceAssignment(res.attribute[0]);
|
||||
this.triggerModeId = res.attribute[0].triggerMode;
|
||||
this.$refs.senceForm.choiceAssignment(res.data[0]);
|
||||
this.triggerModeId = res.data[0].triggerMode;
|
||||
}
|
||||
},
|
||||
choseType(row) {
|
||||
|
|
|
@ -44,17 +44,23 @@
|
|||
</div>
|
||||
</div>
|
||||
</base-dialog>
|
||||
<!-- <addDialogChunk
|
||||
ref="addDialogChunk"
|
||||
@examineHandleClose="examineHandleClose"
|
||||
></addDialogChunk> -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import baseDialog from "@/components/base/BaseNewDialog/index.vue";
|
||||
// import addDialogChunk from "./addDialogChunk";
|
||||
import { authApi } from "@/api/apis/auth";
|
||||
import baseForm from "@/components/base/baseNewForm";
|
||||
export default {
|
||||
components: {
|
||||
baseDialog,
|
||||
baseForm,
|
||||
// addDialogChunk,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -69,7 +75,6 @@ export default {
|
|||
options: [],
|
||||
optionValue: "id",
|
||||
optionLabel: "name",
|
||||
disabled:true
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -164,8 +169,8 @@ export default {
|
|||
params
|
||||
);
|
||||
if (res.status == "200") {
|
||||
this.$refs.senceForm.choiceAssignment(res.attribute[0]);
|
||||
this.triggerModeId = res.attribute[0].triggerMode;
|
||||
this.$refs.senceForm.choiceAssignment(res.data[0]);
|
||||
this.triggerModeId = res.data[0].triggerMode;
|
||||
}
|
||||
},
|
||||
handleConfirmClick() {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -358,10 +358,6 @@
|
|||
ref="addDialogChunk"
|
||||
@examineHandleClose="resetTable"
|
||||
></addDialogChunk>
|
||||
<viewDialogChunk
|
||||
ref="viewDialogChunk"
|
||||
@examineHandleClose="resetTable"
|
||||
></viewDialogChunk>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -376,7 +372,6 @@ import addSence from "@/views/LinkUp/compoment/addSence.vue";
|
|||
import projectClassificationRightDialog from "@/views/projectClassification/rightDialog.vue";
|
||||
import authorizationDialog from "@/views/projectClassification/authorizationDialog.vue";
|
||||
import addDialogChunk from "./compoment/addDialogChunk.vue";
|
||||
import viewDialogChunk from "./compoment/viewDialogChunk.vue";
|
||||
export default {
|
||||
components: {
|
||||
baseLayout,
|
||||
|
@ -386,7 +381,6 @@ export default {
|
|||
projectClassificationRightDialog,
|
||||
authorizationDialog,
|
||||
addDialogChunk,
|
||||
viewDialogChunk
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -530,9 +524,17 @@ export default {
|
|||
// 按钮点击事件
|
||||
getFuncBtn(btnEven) {
|
||||
if (btnEven.menuName == "新增") {
|
||||
// this.$refs.addDialogChunk.openDialog(
|
||||
// "-4252471217359269890",
|
||||
// "3-33003",
|
||||
// "add",
|
||||
// 3
|
||||
// );
|
||||
|
||||
this.$refs.addSence.openDialog("", "add", this.projectClassificationID);
|
||||
}
|
||||
},
|
||||
//hyt 2024/08/14 切换豆腐块
|
||||
onFixedBtn(flag) {
|
||||
this.$refs.layoutNew.pageClear();
|
||||
this.pageModel.page = 1;
|
||||
|
|
|
@ -1025,7 +1025,7 @@ export default {
|
|||
'nameEn': 'delOperate',
|
||||
'menuId': '936df6d1cd7e4f9ba4c972e0f84b5ab4',
|
||||
'iconName': 'el-icon-delete',
|
||||
'style': 'danger',
|
||||
'styles': 'danger',
|
||||
'btnFunction': 'delOperate',
|
||||
'remark': null,
|
||||
'userId': null,
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<template>
|
||||
<div>
|
||||
<base-dialog :dialogVisible.sync="dialogVisible" :closeModal="false" :footerShow="true" :title="'查看分录信息'"
|
||||
width="90%" top="10vh">
|
||||
width="800px" top="15vh">
|
||||
<div class="rightDialogClass_main" style="background-color: #fff;">
|
||||
<base-table ref="assistTable" :showIndex="false" :slotrow="false" tableHeight="calc(75vh - 80px)"
|
||||
<base-table ref="assistTable" :showIndex="false" :slotrow="false" tableHeight="calc(60vh - 80px)"
|
||||
:tableData="tableData" :tableColumn="tableColumn" id="printMe">
|
||||
|
||||
</base-table>
|
||||
|
|
|
@ -1,86 +0,0 @@
|
|||
<template>
|
||||
<div>
|
||||
<base-dialog :dialogVisible.sync="dialogVisible" :closeModal="false" :footerShow="true" :title="'选择生成日期'"
|
||||
width="300px" top="10vh"
|
||||
@handleConfirmClick="handleConfirmClick"
|
||||
>
|
||||
<div class="rightDialogClass_main" style="background-color: #fff;">
|
||||
<el-date-picker v-model="date" align="right" type="date" placeholder="选择日期"
|
||||
value-format="yyyy-MM-dd"
|
||||
>
|
||||
</el-date-picker>
|
||||
|
||||
</div>
|
||||
</base-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import baseDialog from '@/components/base/BaseNewDialog/index.vue'
|
||||
import baseTable from '@/components/base/baseTable/index.vue'
|
||||
import { queryDetailsByBillCodeAPI } from '@/api/apis/businessVoucher'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
baseDialog,
|
||||
baseTable
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
date: '',
|
||||
dialogVisible: false,
|
||||
tableData: [],
|
||||
tableColumn: [{
|
||||
label: '摘要',
|
||||
prop: 'abstractStr'
|
||||
},
|
||||
{
|
||||
label: '会计科目',
|
||||
prop: 'subjdispname'
|
||||
},
|
||||
{
|
||||
label: '辅助核算',
|
||||
prop: 'assist'
|
||||
},
|
||||
{
|
||||
label: '币种编码',
|
||||
prop: 'currencyCode'
|
||||
},
|
||||
{
|
||||
label: '币种名称',
|
||||
prop: 'currencyName'
|
||||
},
|
||||
{
|
||||
label: '借方原币',
|
||||
prop: 'jybSum'
|
||||
},
|
||||
{
|
||||
label: '借方本币',
|
||||
prop: 'jbbSum'
|
||||
},
|
||||
{
|
||||
label: '贷方原币',
|
||||
prop: 'dybSum'
|
||||
},
|
||||
{
|
||||
label: '贷方本币',
|
||||
prop: 'dbbSum'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async openDialog() {
|
||||
this.dialogVisible = true
|
||||
this.date = ''
|
||||
},
|
||||
handleConfirmClick() {
|
||||
this.$emit('pickDateHandle', this.date)
|
||||
this.dialogVisible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
|
@ -1,31 +1,22 @@
|
|||
<script src="../../api/apis/operationalModule.js"></script>
|
||||
<template>
|
||||
<div class="recordContrast">
|
||||
<!-- <div class="left">-->
|
||||
<!-- <div class="leftTitle" style="display: flex;align-items: center;justify-content: space-between">-->
|
||||
<!-- <div>单据列表</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="showList">-->
|
||||
<!-- <base-tree ref="baseTree" :isCenter="false" :isSaveBtn="false" :Allshow="false" :showCheckbox="false"-->
|
||||
<!-- :menuData="billTypeList" @handleNodeClick="billTypeClickHandle" :treeProps="treeProps"-->
|
||||
<!-- ></base-tree>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<div class="left">
|
||||
<div class="leftTitle" style="display: flex;align-items: center;justify-content: space-between">
|
||||
<div>单据列表</div>
|
||||
</div>
|
||||
<div class="showList">
|
||||
<base-tree ref="baseTree" :isCenter="false" :isSaveBtn="false" :Allshow="false" :showCheckbox="false"
|
||||
:menuData="billTypeList" @handleNodeClick="billTypeClickHandle" :treeProps="treeProps"
|
||||
></base-tree>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right" v-loading="tableLoading">
|
||||
<div class="topBox" style="margin-bottom: 10px">
|
||||
<div class="searchBox">
|
||||
<div style="margin-left: 5px;display: flex;align-items: center;">
|
||||
<div style="width: 100px">单据列表:</div>
|
||||
<el-cascader
|
||||
v-model="searchObjTable.billTypeClickID"
|
||||
:options="billTypeList"
|
||||
:props="treeProps"
|
||||
@change="billTypeListChangeHandle"
|
||||
></el-cascader>
|
||||
</div>
|
||||
<div style="margin-left: 5px;display: flex;align-items: center;">
|
||||
<div style="width: 100px">单据号:</div>
|
||||
<el-input v-model="searchObjTable.bill_code" clearable></el-input>
|
||||
<el-input v-model="searchObjTable.billCode" clearable></el-input>
|
||||
</div>
|
||||
<div style="margin-left: 5px;display: flex;align-items: center">
|
||||
<div>单据日期起:</div>
|
||||
|
@ -54,10 +45,7 @@
|
|||
</el-select>
|
||||
</div>
|
||||
<div>
|
||||
<el-button type="primary" size="small" @click="resetTable">查询</el-button>
|
||||
</div>
|
||||
<div>
|
||||
<el-button type="primary" size="small" @click="coreDataOpenDialog">生成凭证</el-button>
|
||||
<el-button type="primary" size="small" @click="getTableData">查询</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex;align-items: center;justify-content: flex-end;">
|
||||
|
@ -67,31 +55,30 @@
|
|||
<div>分录信息</div>
|
||||
</div>
|
||||
<div class="table">
|
||||
<base-table ref="customtable" :showIndex="false" :slotrow="true" :showSelect="true"
|
||||
<base-table ref="customtable" :showIndex="false" :slotrow="true"
|
||||
tableHeight="calc(50vh - 100px)" :tableData="tableData" :tableColumn="tableColumn"
|
||||
@radioChange="radioChange" id="printMe" @onSelectionChange="onSelectionChange"
|
||||
@radioChange="radioChange" id="printMe"
|
||||
>
|
||||
<template #billStatus="{row}">
|
||||
<div>{{ row.billStatus === 'Y' ? '已生成' : '未生成' }}</div>
|
||||
<div>{{ row.row.billStatus === 'Y' ? '已生成' : '未生成' }}</div>
|
||||
</template>
|
||||
<template #operation="{row}">
|
||||
<div @click="generateHandle(row)" style="cursor: pointer;color: #4876ed">
|
||||
{{ row.billStatus === 'Y' ? '查看' : '生成' }}
|
||||
<div @click="generateHandle(row.row)" style="cursor: pointer">
|
||||
{{row.row.billStatus === 'Y' ? '查看' : '生成'}}
|
||||
</div>
|
||||
</template>
|
||||
</base-table>
|
||||
<base-page :pageModel.sync="pageModel" @onPageChange="pageChange"></base-page>
|
||||
</div>
|
||||
<!-- 辅助核算-->
|
||||
<template v-if="this.selected.length">
|
||||
<div class="table">
|
||||
<base-table ref="assistTable" :showIndex="false" :slotrow="false"
|
||||
tableHeight="calc(50vh - 150px)" :tableData="assistTableData"
|
||||
tableHeight="calc(50vh - 100px)" :tableData="assistTableData"
|
||||
:tableColumn="assistTableColumn"
|
||||
id="printMe"
|
||||
>
|
||||
<template #operate="{row}">
|
||||
<div @click="expandOperate(row)" style="cursor: pointer;color: #4876ed">
|
||||
<div @click="expandOperate(row)" style="cursor: pointer">
|
||||
查看凭证明细
|
||||
</div>
|
||||
</template>
|
||||
|
@ -102,14 +89,11 @@
|
|||
</div>
|
||||
<customFormDialog ref="customFormDialog"></customFormDialog>
|
||||
<assistTableDialog ref="assistTableDialog"></assistTableDialog>
|
||||
<datePickDialog ref="datePickDialog" @pickDateHandle="coreData"></datePickDialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
import datePickDialog from '@/views/businessVoucher/compoments/datePickDialog.vue'
|
||||
import baseTree from '@/components/base/BaseMenuTree/index.vue'
|
||||
import basePage from '@/components/base/basePage/index.vue'
|
||||
import baseChoice from '@/components/base/baseChoice/index.vue'
|
||||
|
@ -145,32 +129,14 @@ import {
|
|||
tempupdateAPI, typeDeleteAPI, typeSaveAPI, typeUpdateAPI
|
||||
} from '@/api/apis/ItemEntryTemplate'
|
||||
import { subjectClassificationqueryAllAPI } from '@/api/apis/classifyDefinition'
|
||||
import {
|
||||
logqueryBillAPI,
|
||||
coreGenerateAPI,
|
||||
queryDetailsByBillCodeAPI,
|
||||
queryBillFiledsAPI, queryBillPageddsAPI, queryBillPagedAPI, queryDetailsByBillCodeAndMdmIdAPI
|
||||
} from '@/api/apis/businessVoucher'
|
||||
import { logqueryBillAPI,coreGenerateAPI,queryDetailsByBillCodeAPI } from '@/api/apis/businessVoucher'
|
||||
import customFormDialog from './compoments/customFormDialog'
|
||||
import assistTableDialog from './compoments/assistTableDialog'
|
||||
|
||||
export default {
|
||||
name: 'recordContrast',
|
||||
components: {
|
||||
baseDialog,
|
||||
baseChoice,
|
||||
basePage,
|
||||
baseTable,
|
||||
baseRightDialog,
|
||||
baseForm,
|
||||
baseTree,
|
||||
customFormDialog,
|
||||
assistTableDialog,
|
||||
datePickDialog
|
||||
},
|
||||
components: { baseDialog, baseChoice, basePage, baseTable, baseRightDialog, baseForm, baseTree,customFormDialog,assistTableDialog },
|
||||
data() {
|
||||
return {
|
||||
checkBoxList: [],
|
||||
searchObjTable: {},
|
||||
addTableColumn2: [],
|
||||
addTableData2: [],
|
||||
|
@ -224,7 +190,7 @@ export default {
|
|||
clickRowKey: '',
|
||||
activeTabs: '元数据属性',
|
||||
tabItem: ['元数据属性', '固定值'],
|
||||
arithmeticArr: ['+', '-', '*', '/', '->', '==', '(', ')', '<', '>', '<=', '>=', 'substr(,,)','if(*?:)'],
|
||||
arithmeticArr: ['+', '-', '*', '/', '->', '==', '(', ')', '<', '>', '<=', '>=', 'substr(,,)'],
|
||||
//公式text
|
||||
textarea: '',
|
||||
textareaEn: '',
|
||||
|
@ -251,42 +217,26 @@ export default {
|
|||
prop: 'voucherNo',
|
||||
width: 100
|
||||
},
|
||||
{
|
||||
label: '会计科目',
|
||||
prop: 'subjdispname',
|
||||
width: 100
|
||||
},
|
||||
{
|
||||
label: '辅助核算',
|
||||
prop: 'assist',
|
||||
width: 100
|
||||
},
|
||||
{
|
||||
label: '摘要',
|
||||
prop: 'abstractStr',
|
||||
width: 100
|
||||
width: 160
|
||||
},
|
||||
{
|
||||
label: '借方本币金额',
|
||||
prop: 'jbbSum',
|
||||
width: 100
|
||||
label: '借方',
|
||||
prop: 'jYbSum',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
label: '借方原币金额',
|
||||
prop: 'jybSum',
|
||||
width: 100
|
||||
label: '贷方',
|
||||
prop: 'dYbSum',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
label: '贷方本币金额',
|
||||
prop: 'dbbSum',
|
||||
width: 100
|
||||
label: '操作',
|
||||
prop: 'operate',
|
||||
width: 160
|
||||
},
|
||||
{
|
||||
label: '贷方原币金额',
|
||||
prop: 'dybSum',
|
||||
width: 100
|
||||
},
|
||||
|
||||
],
|
||||
billTypeClickCode: '',
|
||||
masterTableData: [],
|
||||
|
@ -542,14 +492,17 @@ export default {
|
|||
pageModel: {
|
||||
page: 1, //当前页码
|
||||
limit: 20, //每页显示多少
|
||||
total: 0
|
||||
prop7: '',
|
||||
propValue7: '',
|
||||
prop8: '',
|
||||
propValue8: ''
|
||||
},
|
||||
selected: [],
|
||||
treeSelect: [],
|
||||
tableColumn: [
|
||||
{
|
||||
label: '单据号',
|
||||
prop: 'bill_code'
|
||||
prop: 'billCode'
|
||||
},
|
||||
{
|
||||
label: '单据日期',
|
||||
|
@ -560,17 +513,17 @@ export default {
|
|||
label: '生成状态',
|
||||
prop: 'billStatus',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
label: '推送信息',
|
||||
prop: 'pushInfo',
|
||||
width: 250
|
||||
},
|
||||
{
|
||||
label: '操作',
|
||||
prop: 'operation',
|
||||
width: '100'
|
||||
}
|
||||
// {
|
||||
// label: '推送信息',
|
||||
// prop: 'pushInfo',
|
||||
// width: 250
|
||||
// },
|
||||
// {
|
||||
// label: '操作',
|
||||
// prop: 'operation',
|
||||
// width: '100'
|
||||
// }
|
||||
],
|
||||
tableData: [],
|
||||
tableLoading: false,
|
||||
|
@ -598,8 +551,7 @@ export default {
|
|||
billTreeActiveFather: {},
|
||||
treeProps: {
|
||||
children: 'mdmModuleEntity',
|
||||
label: 'name',
|
||||
value: 'id'
|
||||
label: 'name'
|
||||
},
|
||||
billTreeProps: {
|
||||
children: 'sublistMdmModuleDbFileds',
|
||||
|
@ -609,61 +561,67 @@ export default {
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
coreDataOpenDialog() {
|
||||
if (this.checkBoxList.length === 0) {
|
||||
this.$vmNews('请选择单据')
|
||||
return
|
||||
}
|
||||
let flag = this.checkBoxList.some((item, index) => {
|
||||
if (item.billStatus == 'Y') {
|
||||
this.$vmNews('已生成的单据不能生成')
|
||||
return true
|
||||
}
|
||||
})
|
||||
if (flag) {
|
||||
return
|
||||
}
|
||||
this.$refs.datePickDialog.openDialog()
|
||||
},
|
||||
billTypeListChangeHandle() {
|
||||
if (this.searchObjTable.billTypeClickID) {
|
||||
console.log(this.searchObjTable.billTypeClickID, '?')
|
||||
this.billTypeClickID = this.searchObjTable.billTypeClickID[this.searchObjTable.billTypeClickID.length - 1]
|
||||
}
|
||||
},
|
||||
onSelectionChange(val) {
|
||||
this.checkBoxList = val
|
||||
},
|
||||
//生成方法
|
||||
async generateHandle(row) {
|
||||
if (row.billStatus == 'Y') {
|
||||
if(row.billStatus == 'Y'){
|
||||
this.$refs.customFormDialog.openDialog(row)
|
||||
} else {
|
||||
}else{
|
||||
this.coreData(row)
|
||||
}
|
||||
},
|
||||
async expandOperate(row) {
|
||||
async expandOperate(row){
|
||||
this.$refs.assistTableDialog.openDialog(row)
|
||||
// let res= await queryDetailsByBillCodeAPI({id:row.id})
|
||||
// console.log(res)
|
||||
},
|
||||
async coreData(date) {
|
||||
let arr = []
|
||||
this.checkBoxList.forEach(item => {
|
||||
arr.push(item.bill_code)
|
||||
})
|
||||
async coreData(row){
|
||||
let params = {
|
||||
mdmId: this.billTypeClickID,
|
||||
bill_code: arr.join(','),
|
||||
targetDate: date
|
||||
billCode:row.billCode
|
||||
}
|
||||
this.openLoading()
|
||||
let res = await coreGenerateAPI(params)
|
||||
if (res.status == '200') {
|
||||
if(res.status == '200'){
|
||||
this.$vmNews('生成成功', 'success')
|
||||
this.resetTable()
|
||||
}
|
||||
},
|
||||
async ixedValueFormelDialogClick(row) {
|
||||
if (row.label === '参照') {
|
||||
this.fixedValuelDialogClick(false)
|
||||
} else {
|
||||
if (!this.fixedValueClickRow.namefieldname) {
|
||||
this.$vmNews('请选择参照值')
|
||||
return
|
||||
}
|
||||
|
||||
this.addTableColumn2 = [
|
||||
{
|
||||
label: '名称',
|
||||
prop: this.fixedValueClickRow.namefieldname
|
||||
},
|
||||
{
|
||||
label: '编码',
|
||||
prop: this.fixedValueClickRow.codefieldname
|
||||
}
|
||||
|
||||
]
|
||||
this.addDialog = true
|
||||
this.addTiTle = this.fixedValueClickRow.dbName
|
||||
this.pageModel.propValue7 = ''
|
||||
this.pageModel.propValue8 = ''
|
||||
this.pageModel.prop7 = ''
|
||||
this.pageModel.prop8 = ''
|
||||
this.getAddTableData()
|
||||
}
|
||||
},
|
||||
getTableAddList(val) {
|
||||
// console.log(val, 'val', this.fixedValueClickRow)
|
||||
this.pageModel.propValue7 = val
|
||||
this.pageModel.propValue8 = val
|
||||
this.pageModel.prop7 = this.fixedValueClickRow.codefieldname
|
||||
this.pageModel.prop8 = this.fixedValueClickRow.namefieldname
|
||||
this.getAddTableData()
|
||||
},
|
||||
addPickDialog() {
|
||||
if (!this.$refs.baseChoice2.optionData[this.fixedValueClickRow.namefieldname]) {
|
||||
this.$vmNews('请选择一条数据')
|
||||
|
@ -678,6 +636,21 @@ export default {
|
|||
// console.log(this.clickRow, 'this.clickRow')
|
||||
this.addDialog = false
|
||||
},
|
||||
async getAddTableData() {
|
||||
const res = await queryDataPagedByMapAPI({
|
||||
...this.pageModel,
|
||||
pageNum: this.pageModel.page,
|
||||
pageSize: this.pageModel.limit,
|
||||
tablename: this.fixedValueClickRow.tablename,
|
||||
pkentityorg: this.pkglbookClickObj.pkentityorg
|
||||
})
|
||||
this.$refs.baseChoice2.pageModel.total = res.attribute.total
|
||||
this.addTableData2 = res.attribute.list
|
||||
},
|
||||
addonQuery(res, pageModel) {
|
||||
this.pageModel = pageModel
|
||||
this.getAddTableData()
|
||||
},
|
||||
//超级转换器!
|
||||
transitionRowHandle(item) {
|
||||
let obj = item
|
||||
|
@ -1387,43 +1360,23 @@ export default {
|
|||
|
||||
},
|
||||
pageChange(model) {
|
||||
console.log(model, 'model')
|
||||
// this.pageModel.page = model.page
|
||||
// this.pageModel.limit = model.limit
|
||||
this.pageModel.page = model.page
|
||||
this.pageModel.limit = model.limit
|
||||
this.getTableData()
|
||||
},
|
||||
async getTableData() {
|
||||
this.assistTableData = []
|
||||
if (!this.billTypeClickID) return
|
||||
const res2 = await queryBillFiledsAPI({
|
||||
const res = await logqueryBillAPI({
|
||||
...this.searchObjTable,
|
||||
mdmId: this.billTypeClickID
|
||||
})
|
||||
this.tableColumn = []
|
||||
res2.attribute.listList.forEach(item => {
|
||||
item.label = item.chName
|
||||
item['prop'] = item.enName
|
||||
item.ruleList.forEach(ele => {
|
||||
item[ele.ruleCode] = ele.ruleValue
|
||||
})
|
||||
})
|
||||
this.tableColumn = res2.attribute.listList
|
||||
console.log(this.tableColumn, 'this.tableColumn')
|
||||
const res = await queryBillPagedAPI({
|
||||
...this.searchObjTable,
|
||||
mdmId: this.billTypeClickID,
|
||||
pageNum: this.pageModel.page,
|
||||
pageSize: this.pageModel.limit
|
||||
})
|
||||
console.log(res, '?')
|
||||
this.tableData = res.attribute.list
|
||||
this.pageModel.total = res.attribute.total
|
||||
this.tableData = res.attribute
|
||||
this.$nextTick(() => {
|
||||
this.$refs.customtable.clearRadioIndex()
|
||||
this.$refs.customtable.clearSelect()
|
||||
// this.$refs.customtable.clearSelection()
|
||||
this.selected = []
|
||||
this.checkBoxList = []
|
||||
})
|
||||
|
||||
},
|
||||
resetTable() {
|
||||
this.tableData = []
|
||||
|
@ -1432,20 +1385,10 @@ export default {
|
|||
this.getTableData()
|
||||
},
|
||||
// 点击某条数据
|
||||
async radioChange(val) {
|
||||
console.log(val, '?')
|
||||
this.openLoading()
|
||||
const res = await queryDetailsByBillCodeAndMdmIdAPI({
|
||||
mdmId: this.billTypeClickID,
|
||||
bill_code: val.bill_code
|
||||
})
|
||||
this.$set(val, 'logList', res.attribute)
|
||||
// console.log(res, '?')
|
||||
radioChange(val) {
|
||||
this.selected = []
|
||||
this.selected.push(val)
|
||||
|
||||
console.log(val.logList, '?val.assistEntityList')
|
||||
|
||||
let row = {
|
||||
props: {
|
||||
children: 'sublistMdmModuleDbFileds',
|
||||
|
@ -1666,7 +1609,7 @@ export default {
|
|||
'nameEn': 'delOperate',
|
||||
'menuId': '936df6d1cd7e4f9ba4c972e0f84b5ab4',
|
||||
'iconName': 'el-icon-delete',
|
||||
'style': 'danger',
|
||||
'styles': 'danger',
|
||||
'btnFunction': 'delOperate',
|
||||
'remark': null,
|
||||
'userId': null,
|
||||
|
@ -1767,7 +1710,7 @@ export default {
|
|||
'nameEn': 'delOperateAssist',
|
||||
'menuId': '936df6d1cd7e4f9ba4c972e0f84b5ab4',
|
||||
'iconName': 'el-icon-delete',
|
||||
'style': 'danger',
|
||||
'styles': 'danger',
|
||||
'btnFunction': 'delOperate',
|
||||
'remark': null,
|
||||
'userId': null,
|
||||
|
@ -1830,10 +1773,6 @@ export default {
|
|||
|
||||
|
||||
<style scoped lang="scss">
|
||||
::v-deep .el-table__body-wrapper {
|
||||
height: 100% !important;
|
||||
}
|
||||
|
||||
.tabs {
|
||||
width: 200px;
|
||||
display: flex;
|
||||
|
@ -1950,8 +1889,7 @@ export default {
|
|||
margin-right: 5px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
> div {
|
||||
>div{
|
||||
width: 140px;
|
||||
text-align: right;
|
||||
}
|
||||
|
|
|
@ -987,7 +987,7 @@ export default {
|
|||
'nameEn': 'delOperate',
|
||||
'menuId': '936df6d1cd7e4f9ba4c972e0f84b5ab4',
|
||||
'iconName': 'el-icon-delete',
|
||||
'style': 'danger',
|
||||
'styles': 'danger',
|
||||
'btnFunction': 'delOperate',
|
||||
'remark': null,
|
||||
'userId': null,
|
||||
|
|
|
@ -387,7 +387,6 @@ export default {
|
|||
})
|
||||
})
|
||||
this.tableColumn = res.attribute.listList
|
||||
console.log(this.tableColumn,'this.tableColumn')
|
||||
this.initTableData(this.mainTableName)
|
||||
this.mainLoading = false
|
||||
},
|
||||
|
|
|
@ -3,26 +3,10 @@
|
|||
<div class="loginBg">
|
||||
<main>
|
||||
<div class="left">
|
||||
<img src="../assets/images/login1.png" alt="" />
|
||||
<img src="../assets/images/login-page.png" alt="" />
|
||||
</div>
|
||||
<div class="right">
|
||||
<div
|
||||
style="
|
||||
width: 60%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
"
|
||||
>
|
||||
<div class="imgBox">
|
||||
<img src="../assets/images/left1.png" alt="" />
|
||||
<img
|
||||
src="../assets/images/right1.png"
|
||||
style="border-left: 1px solid #eee; width: 200px;"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<div class="title">您好!欢迎来到 用安数智中台</div>
|
||||
<div class="login">
|
||||
<el-form
|
||||
:hide-required-asterisk="true"
|
||||
|
@ -78,7 +62,6 @@
|
|||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -276,6 +259,7 @@ export default {
|
|||
this.$store
|
||||
.dispatch("Login", this.loginForm)
|
||||
.then(() => {
|
||||
console.log(123,'123')
|
||||
this.loading = false;
|
||||
this.$router
|
||||
.push({
|
||||
|
@ -334,7 +318,7 @@ export default {
|
|||
|
||||
<style lang="scss" scoped>
|
||||
.loginBg {
|
||||
background: linear-gradient(to bottom right, #519af6, #84d3e5);
|
||||
background: url("../assets/images/login.png") no-repeat;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
main {
|
||||
|
@ -351,30 +335,28 @@ export default {
|
|||
border-radius: 3vw;
|
||||
margin: auto;
|
||||
> .left {
|
||||
width: 55%;
|
||||
background-size: cover;
|
||||
background-position: center center;
|
||||
width: 38vw;
|
||||
height: 56vh;
|
||||
min-height: 450px;
|
||||
margin: 7vh 6.8vw 0 4.2vw;
|
||||
> img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
> .right {
|
||||
width: 45%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
.imgBox {
|
||||
display: flex;
|
||||
margin-bottom: 10px;
|
||||
|
||||
img {
|
||||
width: 160px;
|
||||
height: 100px;
|
||||
}
|
||||
margin-top: 158px;
|
||||
> .title {
|
||||
width: 228px;
|
||||
height: 9vh;
|
||||
font-size: 36px;
|
||||
font-family: PingFangSC-Medium, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #1478f6;
|
||||
line-height: 50px;
|
||||
}
|
||||
> .login {
|
||||
// width: 60%;
|
||||
margin-top: 6vh;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,172 +0,0 @@
|
|||
/**
|
||||
desc 业务中心
|
||||
*/
|
||||
<template>
|
||||
<div class="workbench">
|
||||
<h3 class="workbench-title">全部应用</h3>
|
||||
<el-tabs>
|
||||
<el-tab-pane
|
||||
v-for="(item, index) in routeData"
|
||||
:key="index"
|
||||
:label="item.meta ? item.meta.title : ''"
|
||||
v-if="item.meta"
|
||||
>
|
||||
<div class="menuContainer">
|
||||
<div
|
||||
v-for="(list, listIndex) in item.children"
|
||||
class="menuBox"
|
||||
@click="goRoute(item, list)"
|
||||
v-if="!list.meta.hidden"
|
||||
>
|
||||
<img class="menuIcon" :src="list.meta.icon" v-if="list.meta.icon" />
|
||||
<img class="menuIcon" src="../logo1.png" v-else />
|
||||
<p class="menuContent">{{ list.meta.title }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { TagsView } from "@/layout/components";
|
||||
import request from "@/utils/request";
|
||||
|
||||
export default {
|
||||
name: "ApplicationCenter",
|
||||
components: {
|
||||
TagsView,
|
||||
},
|
||||
created() {
|
||||
this.$store.dispatch("settings/changeSetting", {
|
||||
key: "showTagsView",
|
||||
value: true,
|
||||
});
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
routeData: [], //菜单数据
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
let routeList = localStorage.getItem("routeList")
|
||||
? JSON.parse(localStorage.getItem("routeList"))
|
||||
: [];
|
||||
this.routeData = this.OrganizeMenus(routeList);
|
||||
},
|
||||
methods: {
|
||||
goRoute(val, item) {
|
||||
let routeData = this.$router.resolve({
|
||||
path: item.path,
|
||||
name: item.name,
|
||||
query: { mdmCode: item.meta.mdmCode, viewType: item.meta.viewType },
|
||||
});
|
||||
window.open(routeData.href, "_self");
|
||||
},
|
||||
// 处理icon
|
||||
handlerIcon(item) {
|
||||
let str = "";
|
||||
if (item.includes("?")) {
|
||||
str = item.split("?")[1];
|
||||
} else {
|
||||
str = item;
|
||||
}
|
||||
return str;
|
||||
},
|
||||
handlerIconColor(item) {
|
||||
let color = "";
|
||||
if (item.includes("?")) {
|
||||
color = item.split("?")[0];
|
||||
} else {
|
||||
color = "#1478F6";
|
||||
}
|
||||
return color;
|
||||
},
|
||||
// 整理菜单数据
|
||||
OrganizeMenus(data) {
|
||||
let arrData = [];
|
||||
// 会计事项平台
|
||||
let arrID = ["688293d5d76e432487f7516bf969a822"];
|
||||
arrID.forEach((a) => {
|
||||
data.forEach((b) => {
|
||||
if (a === b.id) {
|
||||
arrData.push(b);
|
||||
}
|
||||
});
|
||||
});
|
||||
arrData.forEach((bItem) => {
|
||||
if (bItem.children && bItem.children.length > 0) {
|
||||
bItem.children.forEach((cItem) => {
|
||||
if (cItem.meta.icon) {
|
||||
this.getLogoUrl(cItem.meta.icon).then((res) => {
|
||||
let imageUrl =
|
||||
"data:image/png/jpg;base64," +
|
||||
btoa(
|
||||
new Uint8Array(res).reduce(
|
||||
(el, byte) => el + String.fromCharCode(byte),
|
||||
""
|
||||
)
|
||||
);
|
||||
this.$set(cItem.meta, "icon", imageUrl);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
return arrData;
|
||||
},
|
||||
getLogoUrl(id) {
|
||||
return request({
|
||||
url:
|
||||
"/kangarooDataCenterV3/entranceController/fileDownloadNew?id=" + id,
|
||||
method: "get",
|
||||
responseType: "arraybuffer",
|
||||
}).then((res) => {
|
||||
return res;
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.workbench {
|
||||
background: #fff;
|
||||
padding: 15px;
|
||||
//margin: 0 10px;
|
||||
}
|
||||
|
||||
.workbench-title {
|
||||
margin: 15px 0;
|
||||
}
|
||||
|
||||
.menuContainer {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.menuBox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background: #fafafa;
|
||||
padding: 10px 15px;
|
||||
border-radius: 10px;
|
||||
width: 200px;
|
||||
margin: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.menuIcon {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
line-height: 36px;
|
||||
border-radius: 12px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.menuContent {
|
||||
font-size: 14px;
|
||||
color: #333333;
|
||||
}
|
||||
</style>
|
|
@ -551,7 +551,7 @@ export default {
|
|||
'nameEn': 'delOperate',
|
||||
'menuId': '936df6d1cd7e4f9ba4c972e0f84b5ab4',
|
||||
'iconName': 'el-icon-delete',
|
||||
'style': 'danger',
|
||||
'styles': 'danger',
|
||||
'btnFunction': 'delOperate',
|
||||
'remark': null,
|
||||
'userId': null,
|
||||
|
|
|
@ -421,7 +421,7 @@ export default {
|
|||
clickRowKey: '',
|
||||
activeTabs: '元数据属性',
|
||||
tabItem: ['元数据属性', '固定值'],
|
||||
arithmeticArr: ['+', '-', '*', '/', '->', '==', '(', ')', '<', '>', '<=', '>=', 'substr(,,)','if(*?:)'],
|
||||
arithmeticArr: ['+', '-', '*', '/', '->', '==', '(', ')', '<', '>', '<=', '>=', 'substr(,,)'],
|
||||
fixedValueForm: [
|
||||
{
|
||||
elCol: [
|
||||
|
@ -579,7 +579,7 @@ export default {
|
|||
}
|
||||
let obj = this.$refs.baseChoice2.optionData
|
||||
this.$set(this.$refs.fixedValueFormRefsName.ruleForm, 'recordData', obj[this.fixedValueClickRow.namefieldname])
|
||||
this.textarea += `@@$${this.fixedValueClickRow.dbName}:id=${obj.id}`
|
||||
this.textarea += `@@$${this.fixedValueClickRow.dbName}:${this.fixedValueClickRow.tablepkname}=${obj[this.fixedValueClickRow.tablepkname]}`
|
||||
// this.$set(this.clickRow, `factorid${this.clickNum}`, this.$refs.baseChoice.optionData[this.clickObj.key])
|
||||
// this.$set(this.clickRow, `factorname${this.clickNum}`, this.$refs.baseChoice.optionData[this.clickObj.labelKey])
|
||||
// this.$set(this.clickRow, `factorpk${this.clickNum}`, this.$refs.baseChoice.optionData['id'])
|
||||
|
@ -985,7 +985,7 @@ export default {
|
|||
'nameEn': 'delOperate',
|
||||
'menuId': '936df6d1cd7e4f9ba4c972e0f84b5ab4',
|
||||
'iconName': 'el-icon-delete',
|
||||
'style': 'danger',
|
||||
'styles': 'danger',
|
||||
'btnFunction': 'delOperate',
|
||||
'remark': null,
|
||||
'userId': null,
|
||||
|
|
|
@ -595,7 +595,7 @@ export default {
|
|||
'nameEn': 'delOperate',
|
||||
'menuId': '936df6d1cd7e4f9ba4c972e0f84b5ab4',
|
||||
'iconName': 'el-icon-delete',
|
||||
'style': 'danger',
|
||||
'styles': 'danger',
|
||||
'btnFunction': 'delOperate',
|
||||
'remark': null,
|
||||
'userId': null,
|
||||
|
|
|
@ -43,7 +43,6 @@ module.exports = {
|
|||
// target: `http://127.0.0.1:9081/`,
|
||||
target: `http://192.168.2.189:10086`,//一凡
|
||||
// target: `http://192.168.2.78:8080`,
|
||||
// target: `http://b8bc6e8e.natappfree.cc`,
|
||||
changeOrigin: true,
|
||||
pathRewrite: {
|
||||
['^' + process.env.VUE_APP_BASE_API]: ''
|
||||
|
|
Loading…
Reference in New Issue