Browse Source

修改2024.11发现的bug。已全部完成

qin_v3
hreenshan112 12 months ago
parent
commit
dcf7f2475b
  1. 21
      src/api/common/cssInfo.ts
  2. 4
      src/assets/css/public.css
  3. 1
      src/assets/icons/ditu.svg
  4. 1
      src/assets/icons/gantetu.svg
  5. 1
      src/assets/icons/kapian.svg
  6. 1
      src/assets/icons/liebiao.svg
  7. 1
      src/assets/icons/rili.svg
  8. 1
      src/assets/icons/shijianzhou.svg
  9. 221
      src/components/formTable/formItemGroup - 副本.vue
  10. 80
      src/components/formTable/formItemGroup.vue
  11. 80
      src/components/formTable/index.vue
  12. 33
      src/components/lowCode/assistant/datePicker.vue
  13. 58
      src/components/lowCode/assistant/digitpage.vue
  14. 71
      src/components/lowCode/assistant/org.vue
  15. 2
      src/components/lowCode/assistant/user.vue
  16. 15
      src/components/lowCode/assistant/userDrawer.vue
  17. 23
      src/components/lowCode/formItem.vue
  18. 388
      src/utils/lowCode/const.ts
  19. 13
      src/views/common/header/formTable/header.vue
  20. 2
      src/views/common/user/visitingCard.vue
  21. 2
      src/views/formTable/index.vue
  22. 66
      src/views/formTable/taskListPage.vue
  23. 5
      src/views/news/index.vue

21
src/api/common/cssInfo.ts

@ -110,7 +110,12 @@ export const AnalysisCss = (ele:any) =>{
if(ele['width']){ if(ele['width']){
if(ele['width'] != ""){ if(ele['width'] != ""){
styleObject['width'] = ele['width'].toString()+"px"; if(ele['width'].includes('%')){
styleObject['width'] = ele['width']
}else{
styleObject['width'] = ele['width'].toString()+"px";
}
} }
} }
if(ele['widthMax'] && ele['widthMax'] != ""){ if(ele['widthMax'] && ele['widthMax'] != ""){
@ -312,7 +317,12 @@ export const AnalysisInputCss = (ele:any,sty:number) =>{
} }
if(ele['width']){ if(ele['width']){
if(ele['width'] != ""){ if(ele['width'] != ""){
styleObject['width'] = ele['width'].toString()+"px"; if(ele['width'].includes('%')){
styleObject['width'] = ele['width']
}else{
styleObject['width'] = ele['width'].toString()+"px";
}
} }
} }
if(ele['widthMax'] && ele['widthMax'] != ""){ if(ele['widthMax'] && ele['widthMax'] != ""){
@ -481,7 +491,12 @@ export const AnalysisInputCss = (ele:any,sty:number) =>{
} }
if(ele['width']){ if(ele['width']){
if(ele['width'] != ""){ if(ele['width'] != ""){
styleObject['width'] = ele['width'].toString()+"px"; if(ele['width'].includes('%')){
styleObject['width'] = ele['width']
}else{
styleObject['width'] = ele['width'].toString()+"px";
}
} }
} }
if(ele['widthMax'] && ele['widthMax'] != ""){ if(ele['widthMax'] && ele['widthMax'] != ""){

4
src/assets/css/public.css

@ -41,4 +41,8 @@ body{
} }
.el-overlay .el-drawer__body{ .el-overlay .el-drawer__body{
padding: 0px; padding: 0px;
}
.drag {
display: flex;
} }

1
src/assets/icons/ditu.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1733453886306" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="15695" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M307.904 95.296C229.888 173.312 201.984 282.432 224.064 382.72a309.376 309.376 0 0 0 83.84 152.768l220.096 220.096 220.096-220.096c43.52-43.52 71.488-96.768 83.84-152.768 22.144-100.288-5.824-209.408-83.84-287.424C626.56-26.24 429.44-26.24 307.904 95.296z m408.576 171.968c16.384 64.32-0.576 135.36-50.944 185.664-75.968 75.968-199.168 75.968-275.136 0-50.304-50.304-67.328-121.344-50.944-185.664 8.32-32.768 25.28-63.808 50.944-89.472s56.64-42.624 89.472-50.944a194.5152 194.5152 0 0 1 96.256 0A193.536 193.536 0 0 1 665.6 177.792c25.6 25.664 42.56 56.704 50.88 89.472z" fill="" p-id="15696"></path><path d="M528 315.392m-116.736 0a116.736 116.736 0 1 0 233.472 0 116.736 116.736 0 1 0-233.472 0Z" fill="" p-id="15697"></path><path d="M612.8 1019.264c-6.08 0-12.224-1.728-17.536-5.248l-260.352-170.368-209.536 125.696c-9.856 5.952-22.208 6.08-32.256 0.384a32.0064 32.0064 0 0 1-16.256-27.84V478.336c0-17.664 14.336-32 32-32s32 14.336 32 32v407.04l178.304-106.944a31.936 31.936 0 0 1 33.984 0.64l260.096 170.24 269.76-166.4v-304.64c0-17.664 14.336-32 32-32s32 14.336 32 32v322.496c0 11.072-5.76 21.376-15.232 27.264l-302.272 186.432c-5.056 3.2-10.88 4.8-16.704 4.8z" fill="" p-id="15698"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

1
src/assets/icons/gantetu.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1733453851954" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14588" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M1012.622222 500.622222V250.311111H557.511111V68.266667h-159.288889V0H11.377778v204.8h386.844444V136.533333h91.022222v113.777778h-182.044444v250.311111h182.044444v68.266667h-182.044444v182.044444h409.6v-45.511111h68.266667v113.777778h-182.044445v204.8h409.6v-204.8h-159.288889v-182.044444h-136.533333v-68.266667h-159.288889v-68.266667z m-68.266666 386.844445v68.266666H671.288889v-68.266666zM375.466667 432.355556v-113.777778h568.888889v113.777778z" fill="" p-id="14589"></path></svg>

After

Width:  |  Height:  |  Size: 818 B

1
src/assets/icons/kapian.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1733453608125" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5763" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M383.935495 479.919368 191.967747 479.919368c-52.980346 0-95.983874-43.003528-95.983874-95.983874L95.983874 191.967747c0-52.980346 43.003528-95.983874 95.983874-95.983874l191.967747 0c52.980346 0 95.983874 43.003528 95.983874 95.983874l0 191.967747C479.919368 436.915841 436.915841 479.919368 383.935495 479.919368zM191.967747 159.973123c-17.545439 0-31.994625 14.449185-31.994625 31.994625l0 191.967747c0 17.545439 14.449185 31.994625 31.994625 31.994625l191.967747 0c17.545439 0 31.994625-14.449185 31.994625-31.994625L415.930119 191.967747c0-17.545439-14.449185-31.994625-31.994625-31.994625L191.967747 159.973123 191.967747 159.973123z" fill="" p-id="5764"></path><path d="M383.935495 928.016126 191.967747 928.016126c-52.980346 0-95.983874-43.003528-95.983874-95.983874L95.983874 639.892491c0-52.980346 43.003528-95.983874 95.983874-95.983874l191.967747 0c52.980346 0 95.983874 43.003528 95.983874 95.983874l0 191.967747C479.919368 884.840585 436.915841 928.016126 383.935495 928.016126zM191.967747 607.897867c-17.545439 0-31.994625 14.277171-31.994625 31.994625l0 191.967747c0 17.717453 14.449185 31.994625 31.994625 31.994625l191.967747 0c17.545439 0 31.994625-14.277171 31.994625-31.994625L415.930119 639.892491c0-17.717453-14.449185-31.994625-31.994625-31.994625L191.967747 607.897867 191.967747 607.897867z" fill="" p-id="5765"></path><path d="M832.032253 928.016126 639.892491 928.016126c-52.980346 0-95.983874-43.003528-95.983874-95.983874l0-63.989249c0-52.980346 43.003528-95.983874 95.983874-95.983874l191.967747 0c52.980346 0 95.983874 43.003528 95.983874 95.983874l0 63.989249C928.016126 884.840585 884.840585 928.016126 832.032253 928.016126zM639.892491 736.048379c-17.717453 0-31.994625 14.277171-31.994625 31.994625l0 63.989249c0 17.717453 14.277171 31.994625 31.994625 31.994625l191.967747 0c17.717453 0 31.994625-14.277171 31.994625-31.994625l0-63.989249c0-17.717453-14.277171-31.994625-31.994625-31.994625L639.892491 736.048379 639.892491 736.048379z" fill="" p-id="5766"></path><path d="M832.032253 607.897867 639.892491 607.897867c-52.980346 0-95.983874-43.003528-95.983874-95.983874l0-319.946246c0-52.980346 43.003528-95.983874 95.983874-95.983874l191.967747 0c52.980346 0 95.983874 43.003528 95.983874 95.983874l0 319.946246C928.016126 564.894339 884.840585 607.897867 832.032253 607.897867zM639.892491 159.973123c-17.717453 0-31.994625 14.449185-31.994625 31.994625l0 319.946246c0 17.545439 14.277171 31.994625 31.994625 31.994625l191.967747 0c17.717453 0 31.994625-14.449185 31.994625-31.994625l0-319.946246c0-17.545439-14.277171-31.994625-31.994625-31.994625L639.892491 159.973123 639.892491 159.973123z" fill="" p-id="5767"></path></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

1
src/assets/icons/liebiao.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1733453379151" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4544" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M187.392 70.656q28.672 0 48.64 19.456t19.968 48.128l0 52.224q0 28.672-19.968 48.64t-48.64 19.968l-54.272 0q-27.648 0-47.616-19.968t-19.968-48.64l0-52.224q0-28.672 19.968-48.128t47.616-19.456l54.272 0zM889.856 70.656q27.648 0 47.616 19.456t19.968 48.128l0 52.224q0 28.672-19.968 48.64t-47.616 19.968l-437.248 0q-28.672 0-48.64-19.968t-19.968-48.64l0-52.224q0-28.672 19.968-48.128t48.64-19.456l437.248 0zM187.392 389.12q28.672 0 48.64 19.968t19.968 48.64l0 52.224q0 27.648-19.968 47.616t-48.64 19.968l-54.272 0q-27.648 0-47.616-19.968t-19.968-47.616l0-52.224q0-28.672 19.968-48.64t47.616-19.968l54.272 0zM889.856 389.12q27.648 0 47.616 19.968t19.968 48.64l0 52.224q0 27.648-19.968 47.616t-47.616 19.968l-437.248 0q-28.672 0-48.64-19.968t-19.968-47.616l0-52.224q0-28.672 19.968-48.64t48.64-19.968l437.248 0zM187.392 708.608q28.672 0 48.64 19.968t19.968 47.616l0 52.224q0 28.672-19.968 48.64t-48.64 19.968l-54.272 0q-27.648 0-47.616-19.968t-19.968-48.64l0-52.224q0-27.648 19.968-47.616t47.616-19.968l54.272 0zM889.856 708.608q27.648 0 47.616 19.968t19.968 47.616l0 52.224q0 28.672-19.968 48.64t-47.616 19.968l-437.248 0q-28.672 0-48.64-19.968t-19.968-48.64l0-52.224q0-27.648 19.968-47.616t48.64-19.968l437.248 0z" p-id="4545"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

1
src/assets/icons/rili.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1733453746667" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12367" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M416.087 607.831l95.987 0 0-96-95.987 0L416.087 607.831zM544.078 735.828l96 0 0-95.994-96 0L544.078 735.828zM416.087 735.828l95.987 0 0-95.994-95.987 0L416.087 735.828zM288.084 607.831l96 0 0-96-96 0L288.084 607.831zM288.084 735.828l96 0 0-95.994-96 0L288.084 735.828zM544.078 607.831l96 0 0-96-96 0L544.078 607.831zM672.081 479.831l96 0 0-95.997-96 0L672.081 479.831zM832.078 191.833 224.077 191.833c-17.674 0-31.994 14.326-31.994 32.003l0 575.998c0 17.674 14.32 32 31.994 32l608.001 0c17.674 0 32.003-14.326 32.003-32L864.081 223.837C864.082 206.16 849.752 191.833 832.078 191.833zM832.082 767.832c0 17.674-14.326 32-32 32L256.08 799.832c-17.674 0-32-14.326-32-32L224.08 351.831c0-17.674 14.326-32 32-32l544.001 0c17.674 0 32 14.326 32 32L832.081 767.832zM672.081 607.831l96 0 0-96-96 0L672.081 607.831zM544.078 479.831l96 0 0-95.997-96 0L544.078 479.831z" p-id="12368"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

1
src/assets/icons/shijianzhou.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1733453803355" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13560" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M384 352c0-41.6-25.6-76.8-64-89.6V96c0-19.2-12.8-32-32-32s-32 12.8-32 32v166.4c-38.4 12.8-64 48-64 89.6s25.6 76.8 64 89.6v137.6c-38.4 12.8-64 48-64 89.6s25.6 76.8 64 89.6V928c0 19.2 12.8 32 32 32s32-12.8 32-32V761.6c38.4-12.8 64-48 64-89.6s-25.6-76.8-64-89.6V444.8c38.4-16 64-51.2 64-92.8z m-96 352c-19.2 0-32-12.8-32-32s12.8-32 32-32 32 12.8 32 32-12.8 32-32 32z m0-320c-19.2 0-32-12.8-32-32s12.8-32 32-32 32 12.8 32 32-12.8 32-32 32z m448 320H480c-16 0-32 12.8-32 32s12.8 32 32 32h256c16 0 32-12.8 32-32s-12.8-32-32-32z m64-448H480c-16 0-32 12.8-32 32s12.8 32 32 32h320c16 0 32-12.8 32-32s-12.8-32-32-32z m-64 192c16 0 32-12.8 32-32s-12.8-32-32-32H480c-16 0-32 12.8-32 32s12.8 32 32 32h256z m64 128H480c-16 0-32 12.8-32 32s12.8 32 32 32h320c16 0 32-12.8 32-32s-12.8-32-32-32z" fill="" p-id="13561"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

221
src/components/formTable/formItemGroup - 副本.vue

@ -0,0 +1,221 @@
<!--
@ 作者: 秦东
@ 时间: 2024-11-14 10:00:42
@ 备注: 组件集合
-->
<script lang='ts' setup>
import { onBeforeRouteLeave } from 'vue-router'
import { FormList } from "@/api/lowCode/form/type"
import { jsonParseStringify,getGroupName } from '@/utils/lowCode/item/index'
import { constFormBtnEvent,constFormProps } from '@/api/lowCode/utils';
import { useDesignFormStore } from '@/utils/pinia/stores/lowCode/designForm'
import { AnalysisCss,AnalysisInputCss } from '@/api/common/cssInfo'
const props = withDefaults(
defineProps<{
data: FormList[]
dataType?: String
tableinfo?:formTableInfo
alldata?:any
}>(),
{
data: () => {
return []
}
}
)
const store = useDesignFormStore() as any //
const formProps = inject(constFormProps, {}) as any
const type = computed(() => {
return formProps.value.type
})
const state = reactive({
clone: true, // clone
gridAdd: false
})
const dataList = ref(props.data)
const unWatch = watch(
() => props.data,
(v: FormList[]) => {
dataList.value = v
}
)
const activeKey = computed(() => {
return store.activeKey
})
onMounted(() => {
// console.log("", state)
// console.log("1", dataList.value)
})
watch(()=>dataList.value,(val:any) => {
// console.log("", val)
},{
deep: true,
})
onBeforeRouteLeave(() => {
unWatch() //
})
onUnmounted(() => {
// console.log('onUnmounted')
dataList.value = {}
store.setActiveKey('')
store.setControlAttr({})
})
const getFormItemLableStyle = (ele: any) => {
if(ele?.labelStyle){
// console.log("3",AnalysisCss(ele))
return AnalysisCss(ele?.labelStyle)
}
}
const injectBtnEvent:any = inject(constFormBtnEvent)
const clickBtn = (control: any) => {
console.log(control)
// 0: '',
// 1: '',
// 2: '',
// 3: '()'
if (type.value !== 15) {
//
injectBtnEvent && injectBtnEvent(control)
}
}
</script>
<template>
<div>
<div v-for="(element,index) in dataList" :key="index">
<template v-if="element.type === 'tabs'">
<!--选项卡-->
<el-tabs
v-bind="element.control"
:class="[element.config?.className]"
>
<el-tab-pane
v-for="(item, tIndex) in element.columns"
:label="item.label"
:key="tIndex"
>
<FormItemGroup :data="item.list" data-type="not-nested" />
</el-tab-pane>
</el-tabs>
</template>
<template v-if="element.type === 'title'">
<!--标题-->
<div
class="title"
:class="[element.config.className]"
v-bind="element.control"
:style="getFormItemLableStyle(element.styles)"
>
<span v-html="element.control.modelValue"></span>
<Tooltips
:content="element.config.help"
v-if="element.config.help"
/>
</div>
</template>
<template v-if="element.type === 'txt'">
<!--文字-->
<div
v-bind="element.control"
:class="[element.config.className]"
v-html="element.control.modelValue"
>
</div>
</template>
<template v-if="element.type === 'table'">
<el-text v-if="element.item&&element.item.name">{{element.item.name}}}</el-text>
<TablePage :data="element" :type="type" />
</template>
<template v-if="element.type === 'grid'">
<el-row class="form-row" :style="type === 15?'padding: 0 0 20px 0;':''" :class="[element.className]">
<el-col
class="form-col"
:class="{
'active-col': activeKey === getGroupName(col),
[col.className]: col.className
}"
v-bind="col.attr"
v-for="(col, i) in element.columns"
:key="i"
>
<FormItemGroup :data="col.list" data-type="not-nested" />
<div class="drag-control" v-if="type === 15">
<div class="item-control">
<i
class="icon-del"
@click.stop="click('delGridChild', i as number, element.columns)"
>
</i>
</div>
</div>
</el-col>
</el-row>
</template>
<template v-if="element.type === 'card'">
<el-collapse model-value="1">
<el-collapse-item :title="element.item.label" name="1">
<template #title v-if="element.help">
{{ element.item.label }}
<Tooltips :content="element.help" />
</template>
<FormItemGroup :data="element.list" data-type="not-nested" />
</el-collapse-item>
</el-collapse>
</template>
<template v-if="element.type === 'divider'">
<!--分割线-->
<el-divider v-bind="element.control">{{ element.item && element.item.label }}</el-divider>
</template>
<template v-if="element.type === 'div'">
<!--div容器-->
<div
class="div-layout"
v-bind="element.control"
:class="{
[element.className]: element.className,
inline: element.config?.inline,
[element.config?.textAlign]: element.config?.textAlign
}"
>
<FormItemGroup :data="element.list" data-type="not-nested" />
</div>
</template>
<template v-if="element.type === 'flex'">
<!---->
<FormItemGroup :tableinfo="props.tableinfo" :data="element.list" :alldata="props.alldata" data-type="not-flex" v-if="type === 15" />
<flex-box :data="element" v-else />
<el-button
style="position: relative; top: 0px; left: 10px"
v-if="element.config.addBtnText && type === 15"
size="small"
>
{{ element.config.addBtnText }}
</el-button>
</template>
<template v-if="element.type === 'button'">
<div
:class="[element.config?.className]"
:style="{ 'text-align': element.config?.textAlign }"
>
<el-button
v-bind="element.control"
@click="clickBtn(element.control)"
color="#626aef"
>
<td :style="getFormItemLableStyle(element.styles)">{{ element.control?.label }}</td>
</el-button>
</div>
</template>
<FormItem v-else :data="element" />
</div>
</div>
</template>
<style lang='scss' scoped>
</style>

80
src/components/formTable/formItemGroup.vue

@ -61,9 +61,24 @@ onUnmounted(() => {
store.setActiveKey('') store.setActiveKey('')
store.setControlAttr({}) store.setControlAttr({})
}) })
const getFormItemDivStyle = (ele: any) => {
// if(ele?.divStyle){
// console.log("---div----",ele?.divStyle)
// return AnalysisCss(ele?.divStyle)
// }
// console.log("---div----",ele)
if(["div","button"].includes(ele.type) && ele.styles?.divStyle){
// console.log("4",AnalysisCss(ele.styles?.divStyle))
return AnalysisCss(ele.styles?.divStyle)
}
}
const getFormItemLableStyle = (ele: any) => { const getFormItemLableStyle = (ele: any) => {
if(ele?.labelStyle){ if(ele?.labelStyle){
// console.log("3",AnalysisCss(ele)) console.log("返回栅格宽度3",AnalysisCss(ele))
return AnalysisCss(ele?.labelStyle) return AnalysisCss(ele?.labelStyle)
} }
} }
@ -81,24 +96,26 @@ const clickBtn = (control: any) => {
} }
</script> </script>
<template> <template>
<div>
<div v-for="(element,index) in dataList" :key="index"> <div v-for="(element,index) in dataList" :key="index" :style="getFormItemDivStyle(element)">
<template v-if="element.type === 'tabs'"> <template v-if="element.type === 'tabs'">
<!--选项卡--> <!--选项卡-->
<el-tabs <el-tabs
v-bind="element.control" v-bind="element.control"
:class="[element.config?.className]" :class="[element.config?.className]"
> >
<el-tab-pane <el-tab-pane
v-for="(item, tIndex) in element.columns" v-for="(item, tIndex) in element.columns"
:label="item.label" :label="item.label"
:key="tIndex" :key="tIndex"
> >
<FormItemGroup :data="item.list" data-type="not-nested" /> <FormItemGroup :data="item.list" data-type="not-nested" />
</el-tab-pane>
</el-tabs> </el-tab-pane>
</el-tabs>
</template> </template>
<template v-if="element.type === 'title'"> <template v-else-if="element.type === 'title'">
<!--标题--> <!--标题-->
<div <div
class="title" class="title"
@ -113,7 +130,7 @@ const clickBtn = (control: any) => {
/> />
</div> </div>
</template> </template>
<template v-if="element.type === 'txt'"> <template v-else-if="element.type === 'txt'">
<!--文字--> <!--文字-->
<div <div
v-bind="element.control" v-bind="element.control"
@ -122,19 +139,20 @@ const clickBtn = (control: any) => {
> >
</div> </div>
</template> </template>
<template v-if="element.type === 'table'"> <template v-else-if="element.type === 'table'">
<el-text v-if="element.item&&element.item.name">{{element.item.name}}}</el-text> <el-text v-if="element.item&&element.item.name">{{element.item.name}}}</el-text>
<TablePage :data="element" :type="type" /> <TablePage :data="element" :type="type" />
</template> </template>
<template v-if="element.type === 'grid'"> <template v-else-if="element.type === 'grid'">
<el-row class="form-row" :style="type === 15?'padding: 0 0 20px 0;':''" :class="[element.className]"> <el-row class="form-row" :style="type === 15?'padding: 0 0 20px 0;':''" :class="[element.className]">
<el-col <el-col
class="form-col" class="form-col"
:class="{ :class="{
'active-col': activeKey === getGroupName(col), 'active-col': activeKey === getGroupName(col),
[col.className]: col.className [col.className]: col.className
}" }"
v-bind="col.attr"
v-for="(col, i) in element.columns" v-for="(col, i) in element.columns"
:key="i" :key="i"
@ -152,7 +170,7 @@ const clickBtn = (control: any) => {
</el-col> </el-col>
</el-row> </el-row>
</template> </template>
<template v-if="element.type === 'card'"> <template v-else-if="element.type === 'card'">
<el-collapse model-value="1"> <el-collapse model-value="1">
<el-collapse-item :title="element.item.label" name="1"> <el-collapse-item :title="element.item.label" name="1">
<template #title v-if="element.help"> <template #title v-if="element.help">
@ -163,25 +181,27 @@ const clickBtn = (control: any) => {
</el-collapse-item> </el-collapse-item>
</el-collapse> </el-collapse>
</template> </template>
<template v-if="element.type === 'divider'"> <template v-else-if="element.type === 'divider'">
<!--分割线--> <!--分割线-->
<el-divider v-bind="element.control">{{ element.item && element.item.label }}</el-divider> <el-divider v-bind="element.control">{{ element.item && element.item.label }}</el-divider>
</template> </template>
<template v-if="element.type === 'div'"> <template v-else-if="element.type === 'div'">
<!--div容器--> <!--div容器-->
<div <div
class="div-layout" class="div-layout "
v-bind="element.control" v-bind="element.control"
:class="{ :class="{
[element.className]: element.className, [element.className]: element.className,
inline: element.config?.inline, inline: element.config?.inline,
[element.config?.textAlign]: element.config?.textAlign [element.config?.textAlign]: element.config?.textAlign
}" }"
> >
<FormItemGroup :data="element.list" data-type="not-nested" /> <div class="drag"><FormItemGroup :data="element.list" data-type="not-nested" /></div>
</div> </div>
</template> </template>
<template v-if="element.type === 'flex'"> <template v-else-if="element.type === 'flex'">
<!----> <!---->
<FormItemGroup :tableinfo="props.tableinfo" :data="element.list" :alldata="props.alldata" data-type="not-flex" v-if="type === 15" /> <FormItemGroup :tableinfo="props.tableinfo" :data="element.list" :alldata="props.alldata" data-type="not-flex" v-if="type === 15" />
@ -195,9 +215,10 @@ const clickBtn = (control: any) => {
</el-button> </el-button>
</template> </template>
<template v-if="element.type === 'button'"> <template v-else-if="element.type === 'button'">
<div <div
:class="[element.config?.className]" :class="[element.config?.className]"
:style="{ 'text-align': element.config?.textAlign }" :style="{ 'text-align': element.config?.textAlign }"
> >
@ -210,10 +231,9 @@ const clickBtn = (control: any) => {
</el-button> </el-button>
</div> </div>
</template> </template>
<FormItem v-else :data="element" />
<FormItem v-else :data="element" />
</div> </div>
</div>
</template> </template>
<style lang='scss' scoped> <style lang='scss' scoped>

80
src/components/formTable/index.vue

@ -249,7 +249,84 @@ const setValue = (obj: { [key: string]: any }, filter?: boolean) => {
//provide //provide
// tProp // tProp
provide(constControlChange, ({ key, value, data, tProp, label }: any) => { provide(constControlChange, ({ key, value, data, tProp,type,attribute, label }: any) => {
// console.log("----------1-----key---->",key)
// console.log("----------2-----value---->",value)
// console.log("----------3-----data---->",data)
// console.log("----------4-----tProp---->",tProp)
// console.log("----------5-----type---->",type)
// console.log("----------6------attribute--->",attribute)
// console.log("----------7------label--->",label)
// console.log("----------11-----model.value---->",model.value)
let fieldVal = {};
for (let i in model.value) {
if (i == key) {
fieldVal[i] = typeof value == "number" ? value.toString() : value;
} else {
fieldVal[i] =
typeof model.value[i] == "number" ? model.value[i].toString() : model.value[i];
}
// console.log("--constControlChange----------1--------->",i,model.value[i])
}
//
if (type == "digitpage") {
let oldFormConfig = props.formData.config;
let newFormConfig = props.formData.config.groupKey;
let odlHideField = props.formData.config.hideField;
delete props.formData.config.groupKey;
console.log(props.formData);
delete props.formData.config.hideField;
let sendInfo = {
fieldKey: key,
mathsFornula: props.formData.config,
keyVal: fieldVal,
};
// console.log("sendInfoe-2->",props.formData,props.formData)
currencyFormApiSubmit("/systemapi/maths/mathematicalCalculations", sendInfo)
.then((data: any) => {
// console.log("-->",data)
let formatRes: any = data.data;
//
const afterResponse = props.formData.events?.afterResponse;
if (typeof afterResponse === "string" && afterResponse) {
formatRes = formatResult(result, afterResponse);
} else if (typeof afterResponse === "function") {
formatRes = afterResponse(result) ?? result;
}
// vue
if (typeof props.afterResponse === "string" && props.afterResponse) {
formatRes = formatResult(result, props.afterResponse);
} else if (typeof props.afterResponse === "function") {
formatRes = props.afterResponse(result) ?? result;
}
if (formatRes === false) {
return;
}
// console.log("--->",formatRes)
setValue(formatRes.result || formatRes);
nextTick(() => {
// dictoptions
if (formatRes.dict && Object.keys(formatRes.dict).length) {
resultDict.value = formatRes.dict;
}
props.formData.config.groupKey = newFormConfig;
props.formData.config.hideField = odlHideField;
console.log(props.formData);
});
})
.finally(() => {
props.formData.config.groupKey = newFormConfig;
props.formData.config.hideField = odlHideField;
console.log(props.formData);
});
}
if (typeof props.changeKeyVal === "function") {
props.changeKeyVal(key, value, type, attribute);
}
if (key) { if (key) {
if (!tProp) { if (!tProp) {
// change // change
@ -267,6 +344,7 @@ const setValue = (obj: { [key: string]: any }, filter?: boolean) => {
// tProps // tProps
emits('change', { key, value, model: model.value, data, tProp, label }) emits('change', { key, value, model: model.value, data, tProp, label })
} }
}) })
// //
provide(constFormProps, formProps) provide(constFormProps, formProps)

33
src/components/lowCode/assistant/datePicker.vue

@ -4,10 +4,39 @@
@ 备注: 日期选择器 @ 备注: 日期选择器
--> -->
<script lang='ts' setup> <script lang='ts' setup>
const props = withDefaults(
defineProps<{
modelValue?: string
disabled?: boolean
data?:any
}>(),
{}
)
const emits = defineEmits<{
(e: 'update:modelValue', value: string): void
}>()
const value = computed({
get: () => {
return props.modelValue
},
set: (newVal: any) => {
emits('update:modelValue', newVal)
},
});
</script> </script>
<template> <template>
<div></div> <el-date-picker
align="left"
v-model="value"
:type="props.data.control.type"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
:teleported="true"
:placeholder="props.data.control.placeholder"
:value-format="props.data.valueFormat"
:format="props.data.control.format"
/>
</template> </template>
<style lang='scss' scoped> <style lang='scss' scoped>

58
src/components/lowCode/assistant/digitpage.vue

@ -0,0 +1,58 @@
<!--
@ 作者: 秦东
@ 时间: 2024-12-05 13:29:08
@ 备注: 数值控件
-->
<script lang='ts' setup>
import { AnalysisCss,AnalysisInputCss } from '@/api/common/cssInfo'
const props = withDefaults(
defineProps<{
data: FormList
tablekey: any
numrun?: number
modelValue?: any //
tProp?: string // form-itemprop
}>(),
{}
)
const type = computed(() => {
return formProps.value.type
})
const emits = defineEmits<{
(e: 'update:modelValue', value: string): void
}>()
const value = computed({
get: () => {
return props.modelValue
},
set: (newVal: any) => {
emits('update:modelValue', newVal)
},
});
const configStyle = computed(() => {
return props.data.styles || {}
})
/**
@ 作者: 秦东
@ 时间: 2024-03-01 09:07:11
@ 功能: 布局处理
*/
const getFormItemLableStyle = (ele: any) => {
if(ele?.labelStyle){
// console.log("3",AnalysisCss(ele?.labelStyle))
return AnalysisCss(ele?.labelStyle)
}
}
const getFormItemInputStyle = (ele: any,sty:number) => {
if(ele?.inputStyle){
//console.log("4",AnalysisInputCss(ele?.inputStyle,sty))
return AnalysisInputCss(ele?.inputStyle,sty)
}
}
</script>
<template>
<el-input v-bind="$props" v-model="value" :style="getFormItemInputStyle(configStyle,2)" :input-style="getFormItemInputStyle(configStyle,3)" oninput ="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^\./g, '')" placeholder="请输入"></el-input>
</template>
<style lang='scss' scoped>
</style>

71
src/components/lowCode/assistant/org.vue

@ -0,0 +1,71 @@
<!--
@ 作者: 秦东
@ 时间: 2024-12-05 16:20:59
@ 备注: 行政组织选择
-->
<script lang='ts' setup>
import { getOrgTreeList } from '@/api/hr/org/index'
const props = withDefaults(
defineProps<{
data: FormList
tablekey: any
numrun?: number
modelValue?: any //
tProp?: string // form-itemprop
}>(),
{}
)
const emits = defineEmits<{
(e: 'update:modelValue', numVal: any): void
}>()
const value = computed({
get: () => {
if (props.modelValue != "" && props.modelValue != undefined){
return props.modelValue*1
}else{
return props.modelValue
}
},
set: (newVal: any) => {
emits('update:modelValue', newVal)
},
});
const orgTreeList = ref<orgInfo[]>();
const orgTreeLoading = ref(false); //
const orgTreeProps ={
children: 'child',
label: 'name',
} //
/**
@ 作者: 秦东
@ 时间: 2024-12-05 16:23:01
@ 功能: 获取行政组织
*/
function haveOrgTreeInfo(){
orgTreeLoading.value = true;
getOrgTreeList({"orgid": 309})
.then(({ data })=>{
orgTreeList.value = data
}).finally(()=>{orgTreeLoading.value = false;})
}
onBeforeMount(() => {
haveOrgTreeInfo();
})
</script>
<template>
<el-tree-select
v-bind="$props"
v-model="value"
v-loading="orgTreeLoading"
node-key="id"
:props="orgTreeProps"
:data="orgTreeList"
check-strictly
:render-after-expand="false"
/>
</template>
<style lang='scss' scoped>
</style>

2
src/components/lowCode/assistant/user.vue

@ -19,7 +19,7 @@ const emits = defineEmits<{
const userDialogEl = ref() const userDialogEl = ref()
const value = computed({ const value = computed({
get: () => { get: () => {
// console.log("value-get",props.modelValue) console.log("value-get",props.modelValue)
// userlist.value = props.modelValue // userlist.value = props.modelValue
return props.modelValue return props.modelValue
}, },

15
src/components/lowCode/assistant/userDrawer.vue

@ -64,6 +64,7 @@ const getTreeData = () => {
onMounted(() => { onMounted(() => {
nextTick(() => { nextTick(() => {
// loading // loading
userCount.value = 0
getTreeData() getTreeData()
getUserList() getUserList()
}) })
@ -95,6 +96,12 @@ const getUserList = () => {
sertchData.total = data.total sertchData.total = data.total
// console.log("------total------->",data.total)
// console.log("------userCount------->",userCount.value)
// console.log("------pagenum------->",sertchData.pageSize - data.count)
if(data.total > 0){ if(data.total > 0){
if(userCount.value < data.total){ if(userCount.value < data.total){
let pagenum = sertchData.pageSize - data.count let pagenum = sertchData.pageSize - data.count
@ -109,10 +116,15 @@ const getUserList = () => {
loadText.value = "" loadText.value = ""
userLoad.value = true userLoad.value = true
} }
}else{ }else{
loadText.value = "此选项没有数据!" loadText.value = "此选项没有数据!"
userLoad.value = true userLoad.value = true
} }
// console.log("------userLoad------->",userLoad.value)
}) })
.finally(()=>{ .finally(()=>{
@ -124,7 +136,7 @@ const getUserList = () => {
@ 功能: 监听滚动条状态 @ 功能: 监听滚动条状态
*/ */
const onHandleUserScroll = (event:any) => { const onHandleUserScroll = (event:any) => {
// console.log("onHandleScroll", event) // console.log("onHandleScroll", event,userLoad.value)
if (userLoad.value === true) { if (userLoad.value === true) {
return return
} }
@ -222,6 +234,7 @@ watch(()=>sertchData.current,(val:number)=>{
@ 功能: 查询人员 @ 功能: 查询人员
*/ */
const queryUser = () => { const queryUser = () => {
userCount.value = 0
sertchData.current = 1 sertchData.current = 1
tableData.value = [] tableData.value = []
getUserList() getUserList()

23
src/components/lowCode/formItem.vue

@ -37,7 +37,9 @@ import SignatureMap from '@/components/lowCode/assistant/signatureMap.vue'
import AssociatedForms from '@/components/lowCode/assistant/associatedForms.vue' import AssociatedForms from '@/components/lowCode/assistant/associatedForms.vue'
import LowcodeTransfer from '@/components/lowCode/assistant/lowcodeTransfer.vue' import LowcodeTransfer from '@/components/lowCode/assistant/lowcodeTransfer.vue'
import UrlLink from '@/components/lowCode/assistant/urlLink.vue' import UrlLink from '@/components/lowCode/assistant/urlLink.vue'
import DepartmentOrg from '@/components/lowCode/assistant/departmentOrg.vue' import DepartmentOrg from '@/components/lowCode/assistant/departmentOrg.vue'
import DigitpagePage from '@/components/lowCode/assistant/digitpage.vue'
import OrgCentent from '@/components/lowCode/assistant/org.vue'
@ -460,6 +462,12 @@ const currentComponent = computed(() => {
if (props.data.type === "deptOrg") { if (props.data.type === "deptOrg") {
return markRaw(DepartmentOrg); return markRaw(DepartmentOrg);
} }
if (props.data.type === "digitpage") {
return markRaw(DigitpagePage);
}
if (props.data.type === "orgCentent") {
return markRaw(OrgCentent);
}
return `el-${props.data.type}` return `el-${props.data.type}`
}) })
</script> </script>
@ -468,9 +476,9 @@ const currentComponent = computed(() => {
<template class="form-value" v-if="type === 15"> <template class="form-value" v-if="type === 15">
2 2
</template> </template>
<template v-if="data.type=='index'"></template> <template v-if="data.type=='index'">
</template>
<template class="form-value" v-else> <template class="form-value" v-else>
<el-form-item <el-form-item
v-bind="data.item" v-bind="data.item"
:prop="tProp || data.name" :prop="tProp || data.name"
@ -485,6 +493,7 @@ const currentComponent = computed(() => {
<template #label v-else> <template #label v-else>
<span :style="getFormItemLableStyle(configStyle)" >{{ getLabel(data.item) }}</span> <span :style="getFormItemLableStyle(configStyle)" >{{ getLabel(data.item) }}</span>
</template> </template>
<el-input <el-input
v-bind="control" v-bind="control"
v-model="value" v-model="value"
@ -734,7 +743,7 @@ const currentComponent = computed(() => {
:form-table-set-up="props.alldata" :form-table-set-up="props.alldata"
v-model="value" v-model="value"
/> />
<!--编码创建人创建时间修改时间视频轮播图签名板链接--> <!--编码创建人创建时间修改时间视频轮播图签名板链接数值归属部门-->
<component <component
v-if="[ v-if="[
'serialNumber', 'serialNumber',
@ -745,7 +754,9 @@ const currentComponent = computed(() => {
'lowcodeCarsusel', 'lowcodeCarsusel',
'signaturemap', 'signaturemap',
'urllink', 'urllink',
'deptOrg' 'deptOrg',
'digitpage',
'orgCentent',
].includes(data.type)" ].includes(data.type)"
:is="currentComponent" :is="currentComponent"
:data="data" :data="data"
@ -788,7 +799,7 @@ const currentComponent = computed(() => {

388
src/utils/lowCode/const.ts

@ -103,66 +103,25 @@ export let submitButton = {
}, },
list: [ list: [
{ {
type: "grid", type: "button",
iconFont: "fa-th-large", iconFont: "fa-square-o",
columns: [ control:{
{ label: "确认提交",
attr:{ type: "primary",
span: 5 key: "submit"
}, },
list: [], config:{
type: "gridChild" span: 24,
}, textAlign: "center"
{ },
attr:{ styles:{
span: 14 divStyle:{
}, marginBot: "15",
list: [ width: "100%"
{
type: "button",
iconFont: "fa-square-o",
control:{
label: "确认提交",
type: "primary",
key: "submit"
},
config:{
textAlign: "center"
}
}
],
type: "gridChild"
}, },
//{ labelStyle:{},
// list: [ inputStyle:{}
// { }
// type: "button",
// iconFont: "fa-square-o",
// control:{
// label: "保存草稿",
// type: "warning",
// key: "saveDraft"
// },
// config:{
// textAlign: "center"
// }
// }
// ],
// attr:{
// span: 7
// },
// type: "gridChild"
// },
{
list: [],
attr:{
span: 5
},
type: "gridChild"
}
],
control:{},
config:{}
} }
] ]
} }
@ -178,67 +137,49 @@ export let afreshSubmitButton = {
}, },
list: [ list: [
{ {
type: "grid", type: "button",
iconFont: "fa-th-large", iconFont: "fa-square-o",
columns: [ control:{
{ label: "确认提交",
attr:{ type: "primary",
span: 5 key: "afreshSubmit"
}, },
list: [], config:{
type: "gridChild" span: 12,
}, textAlign: "center"
{ },
attr:{ styles:{
span: 7 divStyle:{
}, marginBot: "15",
list: [ width: "50%"
{
type: "button",
iconFont: "fa-square-o",
control:{
label: "确认提交",
type: "primary",
key: "afreshSubmit"
},
config:{
textAlign: "center"
}
}
],
type: "gridChild"
}, },
{ labelStyle:{},
list: [ inputStyle:{}
{ }
type: "button", },
iconFont: "fa-square-o", {
control:{ type: "button",
label: "保存草稿", iconFont: "fa-square-o",
type: "warning", control:{
key: "saveEditDraft" label: "保存1草稿",
}, type: "warning",
config:{ key: "saveEditDraft"
textAlign: "center" },
} config:{
} span: 12,
], textAlign: "center"
attr:{ },
span: 7 styles:{
}, divStyle:{
type: "gridChild" marginBot: "15",
width: "50%"
}, },
{ labelStyle:{},
list: [], inputStyle:{}
attr:{ }
span: 5
},
type: "gridChild"
}
],
control:{},
config:{}
} }
] ]
} }
@ -279,7 +220,16 @@ export let editFormCont = {
key: "submitEdit" key: "submitEdit"
}, },
config:{ config:{
span: 24,
textAlign: "center" textAlign: "center"
},
styles:{
divStyle:{
marginBot: "15",
width: "100%"
},
labelStyle:{},
inputStyle:{}
} }
} }
] ]
@ -296,66 +246,46 @@ export let draftSubmitButton = {
}, },
list: [ list: [
{ {
type: "grid", type: "button",
iconFont: "fa-th-large", iconFont: "fa-square-o",
columns: [ control:{
{ label: "确认提交",
attr:{ type: "primary",
span: 5 key: "draftSubmit"
}, },
list: [], config:{
type: "gridChild" span: 12,
}, textAlign: "center"
{ },
attr:{ styles:{
span: 7 divStyle:{
}, marginBot: "15",
list: [ width: "50%"
{
type: "button",
iconFont: "fa-square-o",
control:{
label: "确认提交",
type: "primary",
key: "draftSubmit"
},
config:{
textAlign: "center"
}
}
],
type: "gridChild"
}, },
{ labelStyle:{},
list: [ inputStyle:{}
{ }
type: "button", },
iconFont: "fa-square-o", {
control:{ type: "button",
label: "保存草稿", iconFont: "fa-square-o",
type: "warning", control:{
key: "saveEditDraft" label: "保存草稿",
}, type: "warning",
config:{ key: "saveEditDraft"
textAlign: "center" },
} config:{
} span: 12,
], textAlign: "center"
attr:{ },
span: 7 styles:{
}, divStyle:{
type: "gridChild" marginBot: "15",
width: "50%"
}, },
{ labelStyle:{},
list: [], inputStyle:{}
attr:{ }
span: 5
},
type: "gridChild"
}
],
control:{},
config:{}
} }
] ]
} }
@ -403,8 +333,17 @@ export const submitButtonEs = {
type: "primary", type: "primary",
key: "editSubmit" key: "editSubmit"
}, },
config:{ config:{
span: 24,
textAlign: "center" textAlign: "center"
},
styles:{
divStyle:{
marginBot: "15",
width: "100%"
},
labelStyle:{},
inputStyle:{}
} }
} }
] ]
@ -421,66 +360,47 @@ export let submitFlowButton = {
}, },
list: [ list: [
{ {
type: "grid", type: "button",
iconFont: "fa-th-large", iconFont: "fa-square-o",
columns: [ control:{
{ label: "确认提交",
attr:{ type: "primary",
span: 5 key: "submitFlow"
}, },
list: [], config:{
type: "gridChild" span: 12,
}, textAlign: "center"
{ },
attr:{ styles:{
span: 7 divStyle:{
}, marginBot: "15",
list: [ width: "50%"
{
type: "button",
iconFont: "fa-square-o",
control:{
label: "确认提交",
type: "primary",
key: "submitFlow"
},
config:{
textAlign: "center"
}
}
],
type: "gridChild"
}, },
{ labelStyle:{},
list: [ inputStyle:{}
{ }
type: "button", },
iconFont: "fa-square-o", {
control:{ type: "button",
label: "保存草稿", iconFont: "fa-square-o",
type: "warning", control:{
key: "saveDraftFlow" label: "保存草稿",
}, type: "warning",
config:{ key: "saveDraftFlow"
textAlign: "center" },
} config:{
} span: 12,
], textAlign: "center"
attr:{ },
span: 7 styles:{
}, divStyle:{
type: "gridChild" marginBot: "15",
width: "50%"
}, },
{ labelStyle:{},
list: [], inputStyle:{}
attr:{ }
span: 5
},
type: "gridChild"
}
],
control:{},
config:{}
} }
] ]
} }

13
src/views/common/header/formTable/header.vue

@ -64,12 +64,13 @@ const defaultProps = {
} }
// //
const callBackPage = () => { const callBackPage = () => {
if(props.appKey != ""){ // if(props.appKey != ""){
router.push({ path: "/form_table",query:{id: props.appKey}}); // router.push({ path: "/form_table",query:{id: props.appKey}});
}else{ // }else{
router.push({ path: "/"}); // router.push({ path: "/"});
} // }
// router.go(-1);
router.back();
} }
</script> </script>
<template> <template>

2
src/views/common/user/visitingCard.vue

@ -43,7 +43,7 @@ const orgCont = () => {
</template> </template>
<style lang='scss' scoped> <style lang='scss' scoped>
.maCarInfo{ .maCarInfo{
padding:0 10px; padding:0 0px;
margin-top: 5px; margin-top: 5px;
} }
.myCardBox{ .myCardBox{

2
src/views/formTable/index.vue

@ -321,7 +321,7 @@ const openApp = (val:sendAppTaskCount) => {
} }
.myTaskMenu{ .myTaskMenu{
width:100%; width:100%;
padding: 0 10px; padding: 0 0px;
margin: 10px 0 15px 0; margin: 10px 0 15px 0;
text-align: center; text-align: center;
:deep .el-card__body{ :deep .el-card__body{

66
src/views/formTable/taskListPage.vue

@ -499,14 +499,58 @@ const performAction = (val) => {}
{{ item.label }} {{ item.label }}
</el-button> </el-button>
</div> </div>
<SvgIcon icon-class="search" :size="20" @click="openSearch" /> <div class="listStely">
<el-space wrap>
<SvgIcon icon-class="search" :size="20" @click="openSearch" />
<el-dropdown>
<span class="el-dropdown-link">
视图<SvgIcon icon-class="arrow-down" :size="15" />
</span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item v-if="stateList.view.list.status" @click="switchTabs(1)">
<div :class="activeName=='1' ? 'pickMenu' : ''"><SvgIcon icon-class="liebiao" :size="15" />列表</div>
</el-dropdown-item>
<el-dropdown-item v-if="stateList.view.card.status" @click="switchTabs(2)">
<div :class="activeName=='2' ? 'pickMenu' : ''"><SvgIcon icon-class="kapian" :size="15" />卡片</div>
</el-dropdown-item>
<el-dropdown-item v-if="stateList.view.date.status" @click="switchTabs(3)">
<div :class="activeName=='3' ? 'pickMenu' : ''"><SvgIcon icon-class="rili" :size="15" />日历</div>
</el-dropdown-item>
<el-dropdown-item v-if="stateList.view.time.status" @click="switchTabs(4)">
<div :class="activeName=='4' ? 'pickMenu' : ''"><SvgIcon icon-class="shijianzhou" :size="15" />时间轴</div>
</el-dropdown-item>
<el-dropdown-item v-if="stateList.view.gantt.status" @click="switchTabs(5)">
<div :class="activeName=='5' ? 'pickMenu' : ''"><SvgIcon icon-class="gantetu" :size="15" />甘特图</div>
</el-dropdown-item>
<el-dropdown-item v-if="stateList.view.map.status" @click="switchTabs(6)">
<div :class="activeName=='6' ? 'pickMenu' : ''"><SvgIcon icon-class="ditu" :size="15" />地图</div>
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</el-space>
<!-- <el-button-group class="ml-4">
<el-button v-if="stateList.view.list.status" @click="switchTabs(1)" size="small" class="fa fa-table" :color="activeName=='1' ? '#a0cfff' : ''" />
<el-button v-if="stateList.view.card.status" @click="switchTabs(2)" size="small" class="fa fa-id-card-o" :color="activeName=='2' ? '#a0cfff' : ''"/>
<el-button v-if="stateList.view.date.status" @click="switchTabs(3)" size="small" class="fa fa-calendar" :color="activeName=='3' ? '#a0cfff' : ''"/>
<el-button v-if="stateList.view.time.status" @click="switchTabs(4)" size="small" class="fa fa-clock-o" :color="activeName=='4' ? '#a0cfff' : ''"/>
<el-button v-if="stateList.view.gantt.status" @click="switchTabs(5)" size="small" class="fa fa-bar-chart" :color="activeName=='5' ? '#a0cfff' : ''" />
<el-button v-if="stateList.view.map.status" @click="switchTabs(6)" size="small" class="fa fa-map-signs" :color="activeName=='6' ? '#a0cfff' : ''" />
</el-button-group> -->
</div>
<el-drawer <el-drawer
v-model="drawerOpen" v-model="drawerOpen"
title="查询" title="查询"
size="80%" size="100%"
> >
<el-form ref="ruleSearchForm"> <el-form ref="ruleSearchForm" style="padding: 0px 10px 0px 10px;">
<template v-for="(item, index) in stateList.searchData" :key="index"> <template v-for="(item, index) in stateList.searchData" :key="index">
<div class="group group-input"> <div class="group group-input">
<el-form-item :label="item.label" class="form_cont"> <el-form-item :label="item.label" class="form_cont">
@ -587,16 +631,7 @@ const performAction = (val) => {}
</el-drawer> </el-drawer>
</div> </div>
</div> </div>
<div class="listStely">
<el-button-group class="ml-4">
<el-button v-if="stateList.view.list.status" @click="switchTabs(1)" size="small" class="fa fa-table" :color="activeName=='1' ? '#a0cfff' : ''" />
<el-button v-if="stateList.view.card.status" @click="switchTabs(2)" size="small" class="fa fa-id-card-o" :color="activeName=='2' ? '#a0cfff' : ''"/>
<el-button v-if="stateList.view.date.status" @click="switchTabs(3)" size="small" class="fa fa-calendar" :color="activeName=='3' ? '#a0cfff' : ''"/>
<el-button v-if="stateList.view.time.status" @click="switchTabs(4)" size="small" class="fa fa-clock-o" :color="activeName=='4' ? '#a0cfff' : ''"/>
<el-button v-if="stateList.view.gantt.status" @click="switchTabs(5)" size="small" class="fa fa-bar-chart" :color="activeName=='5' ? '#a0cfff' : ''" />
<el-button v-if="stateList.view.map.status" @click="switchTabs(6)" size="small" class="fa fa-map-signs" :color="activeName=='6' ? '#a0cfff' : ''" />
</el-button-group>
</div>
<TabelFormList v-if="activeName=='1'" ref="cardPageRef" v-model:page-id-ary="pageIdAry" :app-key="appKey" :app-id="appId" :task-id="taskId" :task-key="taskKey" :task-title="taskTitle" :stateList-info="stateList" :state-form="stateForm" :app-flow-info="appFlowInfo" :form-table-str="formTableStr" /> <TabelFormList v-if="activeName=='1'" ref="cardPageRef" v-model:page-id-ary="pageIdAry" :app-key="appKey" :app-id="appId" :task-id="taskId" :task-key="taskKey" :task-title="taskTitle" :stateList-info="stateList" :state-form="stateForm" :app-flow-info="appFlowInfo" :form-table-str="formTableStr" />
<CardPage v-if="activeName=='2'" ref="cardPageRef" v-model:page-id-ary="pageIdAry" :app-key="appKey" :app-id="appId" :task-id="taskId" :task-key="taskKey" :task-title="taskTitle" :stateList-info="stateList" :state-form="stateForm" :app-flow-info="appFlowInfo" :form-table-str="formTableStr" /> <CardPage v-if="activeName=='2'" ref="cardPageRef" v-model:page-id-ary="pageIdAry" :app-key="appKey" :app-id="appId" :task-id="taskId" :task-key="taskKey" :task-title="taskTitle" :stateList-info="stateList" :state-form="stateForm" :app-flow-info="appFlowInfo" :form-table-str="formTableStr" />
<Calendar v-if="activeName=='3'" ref="cardPageRef" v-model:page-id-ary="pageIdAry" :app-key="appKey" :app-id="appId" :task-id="taskId" :task-key="taskKey" :task-title="taskTitle" :stateList-info="stateList" :state-form="stateForm" :app-flow-info="appFlowInfo" :form-table-str="formTableStr" /> <Calendar v-if="activeName=='3'" ref="cardPageRef" v-model:page-id-ary="pageIdAry" :app-key="appKey" :app-id="appId" :task-id="taskId" :task-key="taskKey" :task-title="taskTitle" :stateList-info="stateList" :state-form="stateForm" :app-flow-info="appFlowInfo" :form-table-str="formTableStr" />
@ -646,7 +681,7 @@ const performAction = (val) => {}
line-height: 40px; line-height: 40px;
} }
.listStely{ .listStely{
width: 100%;
padding: 5px 0px 0px 0px; padding: 5px 0px 0px 0px;
text-align: right; text-align: right;
} }
@ -657,4 +692,7 @@ const performAction = (val) => {}
text-align:left; text-align:left;
} }
} }
.pickMenu{
color: #a0cfff;
}
</style> </style>

5
src/views/news/index.vue

@ -11,6 +11,7 @@ import SvgIcon from '@/components/svgIcon/index.vue'
import Header from '@/views/common/header/formTable/header.vue' import Header from '@/views/common/header/formTable/header.vue'
import NewPageInfo from '@/views/news/pageInfo.vue' import NewPageInfo from '@/views/news/pageInfo.vue'
import BottomPage from '@/views/common/bottom/index.vue'
const route = useRoute() const route = useRoute()
const router = useRouter() const router = useRouter()
@ -166,7 +167,9 @@ const lookNewInfo = (val:any) => {
</li> </li>
<p v-loading="loadMore" element-loading-text="Loading..." class="jichuClass sizeLoadMove"></p> <p v-loading="loadMore" element-loading-text="Loading..." class="jichuClass sizeLoadMove"></p>
<p class="jichuClass sizeMove" v-if="noMore">数据已全部展示</p> <p class="jichuClass sizeMove" v-if="noMore">数据已全部展示</p>
<p class="jichuClass sizeLoadMove" v-if="noMore"></p>
</ul> </ul>
<BottomPage />
<NewPageInfo v-model:is-show="newIsShow" :new-info="newInfo" /> <NewPageInfo v-model:is-show="newIsShow" :new-info="newInfo" />
</div> </div>
</template> </template>
@ -179,7 +182,7 @@ const lookNewInfo = (val:any) => {
} }
ul{ ul{
height: calc(100vh - 45px); height: calc(100vh - 105px);
li{ li{
padding: 5px 5px; padding: 5px 5px;
border: 1px solid #E4E4E4; border: 1px solid #E4E4E4;

Loading…
Cancel
Save