|
|
|
@ -5,8 +5,8 @@ |
|
|
|
--> |
|
|
|
<script lang='ts' setup> |
|
|
|
import { ElTable } from 'element-plus' |
|
|
|
|
|
|
|
import { attrButton,tableButton,tableButtonList,tableLogButtonList,tableAttrLogButtonList } from '@/api/DesignForm/tableButton' |
|
|
|
import { Hide, View } from '@element-plus/icons-vue' |
|
|
|
import { attrButton,tableButton,tableButtonList,tableLogButtonList,tableAttrLogButtonList,diaOrDrawer } from '@/api/DesignForm/tableButton' |
|
|
|
|
|
|
|
import { json2string,objToStringify,string2json,stringToObj } from '@/utils/DesignForm/form' |
|
|
|
import { analysisForm,setFlowFormKeyPower } from '@/api/workflowapi/index' |
|
|
|
@ -21,6 +21,9 @@ import Sortable from 'sortablejs' |
|
|
|
import PageListHeadTools from '@/views/sysworkflow/lowcodepage/pageListHeadTools.vue' |
|
|
|
import ControlSetup from '@/views/sysworkflow/lowcodepage/pageSetUpDialog/controlSetup.vue' |
|
|
|
import FieldSetUp from '@/views/sysworkflow/lowcodepage/pageSetUpDialog/fieldSetUp.vue' |
|
|
|
import SearchField from '@/views/sysworkflow/lowcodepage/pageSetUpDialog/searchField.vue' |
|
|
|
import PreviewPage from '@/views/sysworkflow/lowcodepage/pageSetUpDialog/previewPage.vue' |
|
|
|
import CodePage from '@/views/sysworkflow/lowcodepage/pageSetUpDialog/codePage.vue' |
|
|
|
|
|
|
|
|
|
|
|
const props = defineProps({ |
|
|
|
@ -73,10 +76,14 @@ const state = reactive({ |
|
|
|
controlBtn:[], |
|
|
|
operateBtn:[] |
|
|
|
}, |
|
|
|
searchData: {}, |
|
|
|
searchData: [], |
|
|
|
loading: false, |
|
|
|
attrObj: {}, |
|
|
|
config: {}, |
|
|
|
config: { |
|
|
|
searchIsShow:true, |
|
|
|
searchFormIsShow:true, |
|
|
|
openPageMode:"drawer" |
|
|
|
}, |
|
|
|
tagList: {}, |
|
|
|
formId: props.formKey || '', |
|
|
|
formList: [], // 所有可选表单数据源 |
|
|
|
@ -85,6 +92,12 @@ const state = reactive({ |
|
|
|
previewVisible: false, |
|
|
|
tabsName: 'second', |
|
|
|
formFieldList: [], // 表单数据源所有可选字段 |
|
|
|
formApi:{ |
|
|
|
type:"1", |
|
|
|
addApiUrl:"", |
|
|
|
editApiUrl:"", |
|
|
|
delApiUrl:"", |
|
|
|
}, |
|
|
|
dict: {}, |
|
|
|
refreshTable: true |
|
|
|
}) |
|
|
|
@ -180,6 +193,8 @@ onMounted(()=>{ |
|
|
|
}) |
|
|
|
const setUpFieldInfo = ref<tableButton>() |
|
|
|
const setUpFieldIsOpen= ref(false) |
|
|
|
|
|
|
|
const tableAttrBut = ref<InstanceType<typeof ElTable>>() |
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2024-03-25 11:51:46 |
|
|
|
@ -356,7 +371,7 @@ const columnDrop = () => { |
|
|
|
animation: 180, |
|
|
|
delay: 0, |
|
|
|
onEnd: (evt: any) => { |
|
|
|
// console.log("evt",evt.oldIndex,evt.newIndex) |
|
|
|
console.log("evt",evt.oldIndex,evt.newIndex) |
|
|
|
const oldItem = state.tableData.columns[evt.oldIndex] |
|
|
|
state.tableData.columns.splice(evt.oldIndex, 1) |
|
|
|
state.tableData.columns.splice(evt.newIndex, 0, oldItem) |
|
|
|
@ -374,6 +389,7 @@ const columnDrop = () => { |
|
|
|
|
|
|
|
const tableFieldList = ref<InstanceType<typeof ElTable>>() |
|
|
|
const tableFieldAttrBut = ref<InstanceType<typeof ElTable>>() |
|
|
|
|
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2024-03-27 08:27:22 |
|
|
|
@ -387,7 +403,7 @@ const delCol = (val:any) => { |
|
|
|
state.tableData.columns.forEach((item: any, index: number) => { |
|
|
|
if (item.id === val.id) { |
|
|
|
state.tableData.columns.splice(index, 1) |
|
|
|
if(item.types == "-"){ |
|
|
|
if(item.attribute == "-"){ |
|
|
|
delInfoBut.push(item) |
|
|
|
}else{ |
|
|
|
delInfo.push(item) |
|
|
|
@ -436,14 +452,148 @@ const updataLogBut = (val:attrButton[]) => { |
|
|
|
// console.log("更新列表记录操作按钮------1------->",state.tableData.operateBtn) |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2024-03-28 15:00:12 |
|
|
|
@ 功能: 处理查询条件 |
|
|
|
*/ |
|
|
|
const addOrDelSearchField = (val:attrButton,isTrue:boolean) => { |
|
|
|
if(isTrue){ |
|
|
|
if(state.searchData.length>0){ |
|
|
|
let isWrite = true; |
|
|
|
state.searchData.forEach((item:attrButton,index:number)=>{ |
|
|
|
if(item.id==val.id){ |
|
|
|
isWrite = false; |
|
|
|
} |
|
|
|
}) |
|
|
|
if(isWrite){ |
|
|
|
state.searchData.push(val) |
|
|
|
} |
|
|
|
}else{ |
|
|
|
state.searchData.push(val) |
|
|
|
} |
|
|
|
}else{ |
|
|
|
if(state.searchData.length>0){ |
|
|
|
state.searchData.forEach((item:attrButton,index:number)=>{ |
|
|
|
if(item.id==val.id){ |
|
|
|
state.searchData.splice(index,1) |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 定义自定义表头 |
|
|
|
const readerColumn = (column:any) => { |
|
|
|
// console.log(column) |
|
|
|
let labelLong = column.label.length // 表头label长度 |
|
|
|
if(column.label.length < 3) { |
|
|
|
labelLong = 3 |
|
|
|
} |
|
|
|
let size = 30 // 根据需求定义一个字体的标尺 |
|
|
|
// column.minWidth = labelLong * size |
|
|
|
//@ts-ignore |
|
|
|
return labelLong * size |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const adaptiveWidth = (colName: any) =>{ |
|
|
|
if (!colName) { |
|
|
|
return |
|
|
|
} |
|
|
|
colName += '' |
|
|
|
const english = /\w+/ |
|
|
|
let colWidth = 0 |
|
|
|
for (const char of colName) { |
|
|
|
if (english.test(char)) { |
|
|
|
colWidth += 30 |
|
|
|
} else { |
|
|
|
colWidth += 30 |
|
|
|
} |
|
|
|
} |
|
|
|
return colWidth |
|
|
|
} |
|
|
|
const codeIsShow = ref(false) |
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2024-03-29 11:12:26 |
|
|
|
@ 功能: 列表头部按钮操作 |
|
|
|
*/ |
|
|
|
const listPageTools = (type: string) => { |
|
|
|
console.log("列表头部操作--》",type) |
|
|
|
switch(type){ |
|
|
|
case "del": |
|
|
|
clearData() |
|
|
|
break; |
|
|
|
case "eye": |
|
|
|
clearData() |
|
|
|
break; |
|
|
|
case "json": |
|
|
|
drawer.title = "查看表格列表结构" |
|
|
|
dialogOpen(state, { direction: 'ltr', type: 'json' }) |
|
|
|
break; |
|
|
|
case "save": |
|
|
|
clearData() |
|
|
|
break; |
|
|
|
default: |
|
|
|
} |
|
|
|
} |
|
|
|
const drawer = reactive({ |
|
|
|
visible: false, |
|
|
|
title: '', |
|
|
|
direction: 'ltr', |
|
|
|
content: '', |
|
|
|
codeType: '' |
|
|
|
}) |
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2024-03-29 14:08:49 |
|
|
|
@ 功能: 数据格式处理 |
|
|
|
*/ |
|
|
|
const dialogOpen = (obj: any, params: any = {}) => { |
|
|
|
drawer.visible = true |
|
|
|
Object.assign(drawer, { direction: 'ltr' }, params) |
|
|
|
let editData = objToStringify(obj, true) |
|
|
|
switch (params.type) { |
|
|
|
case 'dict': |
|
|
|
editData = json2string(obj, true) |
|
|
|
break |
|
|
|
case 'beforeRequest': |
|
|
|
case 'beforeDelete': |
|
|
|
case 'treeBeforeRequest': |
|
|
|
if (!obj) { |
|
|
|
editData = beforeRequest |
|
|
|
} |
|
|
|
break |
|
|
|
case 'afterResponse': |
|
|
|
case 'treeAfterResponse': |
|
|
|
if (!obj) { |
|
|
|
editData = afterResponse |
|
|
|
} |
|
|
|
break |
|
|
|
} |
|
|
|
drawer.content = editData |
|
|
|
} |
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2024-03-29 11:02:51 |
|
|
|
@ 功能: 清空数据 |
|
|
|
*/ |
|
|
|
const clearData = () => { |
|
|
|
tableFieldList.value!.clearSelection() |
|
|
|
tableFieldAttrBut.value!.clearSelection() |
|
|
|
tableAttrBut.value!.clearSelection() |
|
|
|
state.searchData = [] |
|
|
|
// state.tableData.controlBtn = [] |
|
|
|
// state.tableData.columns = [] |
|
|
|
state.tableData.operateBtn = [] |
|
|
|
state.tableData.config = {} |
|
|
|
if(formTableField.masterTable){ |
|
|
|
formTableField.masterTable.forEach((item)=>{ |
|
|
|
item.isSearch = false; |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -452,7 +602,7 @@ const updataLogBut = (val:attrButton[]) => { |
|
|
|
|
|
|
|
</script> |
|
|
|
<template> |
|
|
|
<div ref="container" class="design-containers design-table" v-loading="pageLoading"> |
|
|
|
<div class="design-containers design-table" v-loading="pageLoading"> |
|
|
|
<!-- <div class="components-list"> |
|
|
|
<el-divider content-position="left">表格列字段</el-divider> |
|
|
|
<el-table |
|
|
|
@ -471,20 +621,19 @@ const updataLogBut = (val:attrButton[]) => { |
|
|
|
<div class="header"> |
|
|
|
<div class="field"> |
|
|
|
</div> |
|
|
|
<PageListHeadTools /> |
|
|
|
<PageListHeadTools @clearData="listPageTools" /> |
|
|
|
</div> |
|
|
|
<div class="table_box main_table"> |
|
|
|
<div ref="container" class="table_box main_table"> |
|
|
|
|
|
|
|
<div |
|
|
|
class="search-box" |
|
|
|
> |
|
|
|
<div class="tipBox" >条件查询搜索区域,单击可编辑</div> |
|
|
|
<div class="search-box" > |
|
|
|
<SearchField v-if="state.searchData.length>0&&state.config.searchIsShow" v-model:searchData="state.searchData" /> |
|
|
|
<div v-else class="tipBox" >条件查询搜索区域</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="operateButArea"> |
|
|
|
<div> |
|
|
|
<div class="operatLeft"> |
|
|
|
<el-text v-if="state.tableData.controlBtn.length === 0" class="mx-1 tipBox" type="info">操作按钮区域</el-text> |
|
|
|
<el-button |
|
|
|
v-for="item in state.tableData.controlBtn" |
|
|
|
@ -494,7 +643,17 @@ const updataLogBut = (val:attrButton[]) => { |
|
|
|
{{ item.label }} |
|
|
|
</el-button> |
|
|
|
</div> |
|
|
|
<div>2</div> |
|
|
|
<div> |
|
|
|
<el-tooltip |
|
|
|
v-if="state.config.searchFormIsShow" |
|
|
|
class="box-item" |
|
|
|
effect="dark" |
|
|
|
content="折叠查询表单" |
|
|
|
placement="bottom" |
|
|
|
> |
|
|
|
<el-icon @click="state.config.searchIsShow=!state.config.searchIsShow"><Search /></el-icon> |
|
|
|
</el-tooltip> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="operateButArea tipBox" v-if="!state.tableData.columns?.length"> |
|
|
|
@ -505,30 +664,19 @@ const updataLogBut = (val:attrButton[]) => { |
|
|
|
:data="[{}]" |
|
|
|
v-bind="state.tableData.tableProps || {}" |
|
|
|
ref="tableEl" |
|
|
|
v-if="state.refreshTable && state.tableData.columns?.length" |
|
|
|
|
|
|
|
> |
|
|
|
<template |
|
|
|
v-for="item in state.tableData.columns" |
|
|
|
:key="item.prop || item.label" |
|
|
|
> |
|
|
|
|
|
|
|
<el-table-column v-if="item.id == 'checkbox'" fixed type="selection" width="40" align="center" /> |
|
|
|
<el-table-column v-else-if="item.field == 'index'" type="index" width="80" align="center"> |
|
|
|
<template #header="scope"> |
|
|
|
<div class="field_close"> |
|
|
|
{{item.name}} |
|
|
|
<i class="field_close fa fa-close" @click="delCol(item)"></i> |
|
|
|
</div> |
|
|
|
|
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
<el-table-column v-else v-bind="item"> |
|
|
|
<template #header="scope"> |
|
|
|
<el-table-column v-bind="item" :width="readerColumn(item)"> |
|
|
|
|
|
|
|
<template #header="scope"> |
|
|
|
<div class="field_close"> |
|
|
|
{{item.name}} |
|
|
|
<i class="field_close fa fa-close" @click="delCol(item)"></i> |
|
|
|
<el-text>{{ item.label }}</el-text> |
|
|
|
<i ><el-icon @click="delCol(item)"><Close /></el-icon></i> |
|
|
|
</div> |
|
|
|
<el-tooltip placement="top" v-if="item.help"> |
|
|
|
<template #content> |
|
|
|
@ -537,14 +685,12 @@ const updataLogBut = (val:attrButton[]) => { |
|
|
|
<i class="icon-help"></i> |
|
|
|
</el-tooltip> |
|
|
|
</template> |
|
|
|
<template #default> |
|
|
|
<span v-if="item.fieldClass=='__control'">操作</span> |
|
|
|
<span v-else>数据</span> |
|
|
|
<template #default v-if="item.field !== 'index'"> |
|
|
|
<el-checkbox v-if="item.field === 'checkbox'" /> |
|
|
|
<span v-if="item.field === 'operate'">操作</span> |
|
|
|
<span v-if="item.field !== 'checkbox'&&item.field !== 'operate'" >数据</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</template> |
|
|
|
</el-table> |
|
|
|
<div class="table-tip"> |
|
|
|
@ -552,7 +698,8 @@ const updataLogBut = (val:attrButton[]) => { |
|
|
|
*从数据列表配置中选择 所属表单<br /> |
|
|
|
*从左上角 添加表格字段 选择预设字段<br /> |
|
|
|
*可拖动表头字段移动调整表头字段排列顺序<br /> |
|
|
|
*可通过顶部工具栏 生成脚本预览 查看或编辑添加自定义字段 |
|
|
|
*可通过顶部工具栏 生成脚本预览 查看或编辑添加自定义字段<br /> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -562,7 +709,7 @@ const updataLogBut = (val:attrButton[]) => { |
|
|
|
<el-divider content-position="left">功能字段</el-divider> |
|
|
|
<el-table ref="tableFieldAttrBut" :data="tableAttrLogButtonList" border style="width: 100%" @selection-change="tableFieldAttrButClick"> |
|
|
|
<el-table-column fixed type="selection" width="40" align="center" /> |
|
|
|
<el-table-column prop="name" label="字段" /> |
|
|
|
<el-table-column prop="label" label="字段" /> |
|
|
|
<el-table-column fixed="right" label="设置" width="55" align="center"> |
|
|
|
<template #default="scope"> |
|
|
|
<el-icon v-if="scope.row.fieldClass=='__control'" title="设置" @click="setUpFieldBut(scope.row)"><Setting /></el-icon> |
|
|
|
@ -572,26 +719,92 @@ const updataLogBut = (val:attrButton[]) => { |
|
|
|
<el-divider content-position="left">列表字段</el-divider> |
|
|
|
<el-table ref="tableFieldList" :data="formTableField.masterTable" border @selection-change="tableListFieldClick" style="width: 100%"> |
|
|
|
<el-table-column fixed type="selection" width="40" align="center" /> |
|
|
|
<el-table-column prop="name" label="字段"> |
|
|
|
<el-table-column prop="label" label="字段"> |
|
|
|
<template #default="scope"> |
|
|
|
{{scope.row.name}}({{scope.row.fieldClass}}[{{scope.row.pattern}}]) |
|
|
|
{{scope.row.label}}({{scope.row.fieldClass}}[{{scope.row.pattern}}]) |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column fixed="right" label="设置" width="55" align="center"> |
|
|
|
<el-table-column fixed="right" label="查询" width="55" align="center"> |
|
|
|
<template #default="scope"> |
|
|
|
<el-icon title="设置" @click="setUpField(scope.row)"><Setting /></el-icon> |
|
|
|
<el-switch |
|
|
|
v-model="scope.row.isSearch" |
|
|
|
:active-action-icon="View" |
|
|
|
:inactive-action-icon="Hide" |
|
|
|
style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949" |
|
|
|
@change="addOrDelSearchField(scope.row, $event)" |
|
|
|
/> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<!-- <el-table-column fixed="right" label="设置" width="55" align="center"> |
|
|
|
<template #default="scope"> |
|
|
|
<el-icon title="设置" @click="setUpField(scope.row)"><Setting /></el-icon> |
|
|
|
</template> |
|
|
|
</el-table-column> --> |
|
|
|
</el-table> |
|
|
|
<el-divider content-position="left">查询条件</el-divider> |
|
|
|
</el-tab-pane> |
|
|
|
<el-tab-pane label="列表设置" :name="2"> |
|
|
|
<el-divider content-position="left">批量操作</el-divider> |
|
|
|
|
|
|
|
<el-divider content-position="left">功能按钮</el-divider> |
|
|
|
<el-table ref="tableAttrBut" :data="tableButtonList" border style="width: 100%" @selection-change="tableAttrButClick"> |
|
|
|
<el-table-column fixed type="selection" width="40" align="center" /> |
|
|
|
<el-table-column prop="label" label="字段" /> |
|
|
|
</el-table> |
|
|
|
<el-divider content-position="left">基本功能设置</el-divider> |
|
|
|
<el-form :model="state.config" label-width="auto" style="width: 96%; margin-left:2%;"> |
|
|
|
<el-form-item label="数据添加编辑打开方式"> |
|
|
|
|
|
|
|
<el-select |
|
|
|
v-model="state.config.openPageMode" |
|
|
|
clearable |
|
|
|
placeholder="请选择" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="itemOpt in diaOrDrawer" |
|
|
|
:key="itemOpt.value" |
|
|
|
:label="itemOpt.label" |
|
|
|
:value="itemOpt.value" |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="可折叠查询表单"> |
|
|
|
<el-switch |
|
|
|
v-model="state.config.searchFormIsShow" |
|
|
|
:active-action-icon="View" |
|
|
|
:inactive-action-icon="Hide" |
|
|
|
style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949" |
|
|
|
/> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
<el-divider content-position="left">数据处理事件</el-divider> |
|
|
|
<el-form :model="state.formApi" label-width="auto" style="width: 96%; margin-left:2%;"> |
|
|
|
<el-form-item label="数据处理方式"> |
|
|
|
<el-switch |
|
|
|
v-model="state.formApi.type" |
|
|
|
active-text="默认" |
|
|
|
inactive-text="第三方API" |
|
|
|
active-value="1" |
|
|
|
inactive-value="2" |
|
|
|
style="--el-switch-on-color: #13ce66; --el-switch-off-color: #409EFF" |
|
|
|
/> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item v-if="state.formApi.type!=1" label="填加APIUrl"> |
|
|
|
<el-input v-model="state.formApi.addApiUrl" placeholder="请输入接口地址"> |
|
|
|
<template #prefix>http://</template> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item v-if="state.formApi.type!=1" label="编辑APIUrl"> |
|
|
|
<el-input v-model="state.formApi.editApiUrl" placeholder="请输入接口地址"> |
|
|
|
<template #prefix>http://</template> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item v-if="state.formApi.type!=1" label="删除APIUrl"> |
|
|
|
<el-input v-model="state.formApi.delApiUrl" placeholder="请输入接口地址"> |
|
|
|
<template #prefix>http://</template> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
|
|
|
|
</el-tab-pane> |
|
|
|
</el-tabs> |
|
|
|
<!-- {{props.formKey}} |
|
|
|
@ -602,14 +815,21 @@ const updataLogBut = (val:attrButton[]) => { |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<ace-drawer |
|
|
|
v-model="drawer.visible" |
|
|
|
:title="drawer.title" |
|
|
|
:direction="drawer.direction" |
|
|
|
:content="drawer.content" |
|
|
|
:code-type="drawer.codeType" |
|
|
|
@before-close="drawerBeforeClose" |
|
|
|
@confirm="dialogConfirm" |
|
|
|
/> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<FieldSetUp v-model:is-open="setUpFieldIsOpen" :setup-field-info="setUpFieldInfo" /> |
|
|
|
|
|
|
|
|
|
|
|
<ControlSetup v-model:is-show="listButtonIsShow" v-model:contbutary:="state.tableData.operateBtn" @updata-log-but="updataLogBut" /> |
|
|
|
<CodePage v-model:is-show="codeIsShow" :list-data="state" /> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
<style lang='scss' scoped> |
|
|
|
@ -648,18 +868,25 @@ const updataLogBut = (val:attrButton[]) => { |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
justify-content: space-between; |
|
|
|
margin-top:15px; |
|
|
|
.operatLeft{ |
|
|
|
padding-bottom: 2px; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
.main_table{ |
|
|
|
padding: 10px 20px; |
|
|
|
|
|
|
|
} |
|
|
|
.cell{ |
|
|
|
min-width:120px; |
|
|
|
} |
|
|
|
.field_close{ |
|
|
|
i{ |
|
|
|
|
|
|
|
display: none; |
|
|
|
cursor: pointer; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
.field_close:hover{ |
|
|
|
i{ |
|
|
|
@ -675,6 +902,5 @@ const updataLogBut = (val:attrButton[]) => { |
|
|
|
color: #999; |
|
|
|
text-align: center; |
|
|
|
cursor: pointer; |
|
|
|
margin-top: 15px; |
|
|
|
} |
|
|
|
</style> |
|
|
|
|