Browse Source

增加创建人和创建时间

lwx_v12
超级管理员 1 year ago
parent
commit
6f5867bfd5
  1. 16
      src/api/hr/people/index.ts
  2. 10
      src/components/DesignForm/assembly/index.ts
  3. 101
      src/components/DesignForm/formControlAttr.vue
  4. 71
      src/components/DesignForm/public/form/formGroup.vue
  5. 5
      src/widget/index.ts
  6. 202
      src/widget/systemunit/founder.vue
  7. 185
      src/widget/systemunit/founderTime.vue

16
src/api/hr/people/index.ts

@ -657,3 +657,19 @@ export function editCertificatesContState(data?: delJjlxr) {
}) })
} }
//获取人员信息
export function getPeopleKey(data?: any) {
return request({
url: '/hrapi/staff/getPeopleKey',
method: 'post',
data: data
})
}
//获取人员信息
export function getUserCont(data?: any) {
return request({
url: '/systemapi/user/get_user_cont',
method: 'get',
data: data
})
}

10
src/components/DesignForm/assembly/index.ts

@ -810,7 +810,7 @@ export default [
icon: 'number', icon: 'number',
iconFont: 'fa-user-circle-o', iconFont: 'fa-user-circle-o',
control: { control: {
modelValue: 0 modelValue: ""
}, },
config: {}, config: {},
styles: { styles: {
@ -825,7 +825,7 @@ export default [
icon: 'number', icon: 'number',
iconFont: 'fa-clock-o', iconFont: 'fa-clock-o',
control: { control: {
modelValue: 0 modelValue: ""
}, },
config: {}, config: {},
styles: { styles: {
@ -840,7 +840,7 @@ export default [
icon: 'number', icon: 'number',
iconFont: 'fa-clock-o', iconFont: 'fa-clock-o',
control: { control: {
modelValue: 0 modelValue: ""
}, },
config: {}, config: {},
styles: { styles: {
@ -855,7 +855,7 @@ export default [
icon: 'number', icon: 'number',
iconFont: 'fa-user-circle', iconFont: 'fa-user-circle',
control: { control: {
modelValue: 0 modelValue: ""
}, },
config: {}, config: {},
styles: { styles: {
@ -870,7 +870,7 @@ export default [
icon: 'number', icon: 'number',
iconFont: 'fa-group', iconFont: 'fa-group',
control: { control: {
modelValue: 0 modelValue: ""
}, },
config: {}, config: {},
styles: { styles: {

101
src/components/DesignForm/formControlAttr.vue

@ -208,7 +208,7 @@
selectvalue = "default", selectvalue = "default",
mathFormula = {} mathFormula = {}
}: { control: any;type:any;name:any;item:any;attr:any; config: any,selectvalue:any,mathFormula:any } = controlData.value }: { control: any;type:any;name:any;item:any;attr:any; config: any,selectvalue:any,mathFormula:any } = controlData.value
// console.log("controlData.value--->",controlData.value) console.log("controlData.value--->",controlData.value)
// console.log("controlData.value-1-->",control,selectvalue) // console.log("controlData.value-1-->",control,selectvalue)
let columnIndex = false // let columnIndex = false //
if (type === 'table') { if (type === 'table') {
@ -1047,43 +1047,49 @@
break break
case 'labelNameVal': case 'labelNameVal':
if(val != ""){ if(val != ""){
chineseToPinyin({title:val,types:8,connector:"",formJson:JSON.stringify(props.formInfo)}) let ary = ["founder","founderTime","editTime","owner","deptOrg"]
.then((data:any)=>{ if (!ary.includes(controlData.value.type)){
if(data.code == 0){
if(data.data != ""){
if(!fileSignAry.includes(data.data)){ chineseToPinyin({title:val,types:8,connector:"",formJson:JSON.stringify(props.formInfo)})
controlData.value.name = data.data .then((data:any)=>{
fileSignAry.push(data.data) if(data.code == 0){
}else{ if(data.data != ""){
let isEnd = true; if(!fileSignAry.includes(data.data)){
do{ controlData.value.name = data.data
let titleVal = data.data + Rand(10000000,99999999) fileSignAry.push(data.data)
if(!fileSignAry.includes(titleVal)){ }else{
controlData.value.name = titleVal; let isEnd = true;
fileSignAry.push(titleVal); do{
isEnd=false; let titleVal = data.data + Rand(10000000,99999999)
} if(!fileSignAry.includes(titleVal)){
}while(isEnd); controlData.value.name = titleVal;
} fileSignAry.push(titleVal);
}else{ isEnd=false;
if(!fileSignAry.includes(val)){ }
controlData.value.name = val }while(isEnd);
fileSignAry.push(val) }
}else{ }else{
let titleVal = val + Rand(10000000,99999999) if(!fileSignAry.includes(val)){
if(!fileSignAry.includes(titleVal)){ controlData.value.name = val
controlData.value.name = titleVal; fileSignAry.push(val)
fileSignAry.push(titleVal); }else{
} let titleVal = val + Rand(10000000,99999999)
} if(!fileSignAry.includes(titleVal)){
controlData.value.name = titleVal;
} fileSignAry.push(titleVal);
}
} }
})
} }
}
console.log("字段编辑--fileSignAry-111-》",fileSignAry)
})
}
}
// console.log("--fileSignAry--",fileSignAry) console.log("字段编辑--fileSignAry--》",controlData.value)
break break
} }
if (obj.path) { if (obj.path) {
@ -1488,7 +1494,7 @@
const subUnit = ref<any>() const subUnit = ref<any>()
// //
const digitPageSub = (val:any,envt:any) => { const digitPageSub = (val:any,envt:any) => {
// console.log("--->",val.value,envt,props.formData) console.log("默认值处理--->",val.value,envt,props.formData)
// console.log("-1-->",props.formList) // console.log("-1-->",props.formList)
// console.log("-2-->",props.formConfig) // console.log("-2-->",props.formConfig)
@ -2612,7 +2618,19 @@ const loadNextPage = () => {
} }
} }
/**
@ 作者: 秦东
@ 时间: 2024-06-22 13:57:55
@ 功能: 判断该输入框是否不可编辑
*/
const disabledIstrue = (val:string) => {
let ary = ["creater","creater_time","edit_time","owner","org"]
if (ary.includes(val)){
return true;
}else{
return false;
}
}
</script> </script>
<template> <template>
<div class="sidebar-tools"> <div class="sidebar-tools">
@ -2622,8 +2640,8 @@ const loadNextPage = () => {
<!-- <div class=""><h3>通用属性</h3></div> --> <!-- <div class=""><h3>通用属性</h3></div> -->
<el-divider content-position="left">通用属性</el-divider> <el-divider content-position="left">通用属性</el-divider>
<template v-for="(item, index) in attrList" :key="index"> <template v-for="(item, index) in attrList" :key="index">
<el-form-item :label="item.label" class="form_cont"> <el-form-item :label="item.label" class="form_cont">
<el-select <el-select
v-if="item.type === 'select'" v-if="item.type === 'select'"
@ -2962,6 +2980,7 @@ const loadNextPage = () => {
v-else v-else
:type="item.inputStyle" :type="item.inputStyle"
v-model="item.value" v-model="item.value"
:disabled="disabledIstrue(item.value)"
:placeholder="item.placeholder" :placeholder="item.placeholder"
@input="controlChange(item, $event)" @input="controlChange(item, $event)"
/> />

71
src/components/DesignForm/public/form/formGroup.vue

@ -154,17 +154,52 @@ const draggableAdd = (evt: any) => {
'div', 'div',
'card' 'card'
] ]
if (!notNeedName.includes(obj.type) && !obj.name) { switch(obj.type){
nameObj = { case "founder":
name: obj.type + key nameObj = {
} name: "creater"
} }
// console.log("founder--->creater",nameObj)
break
case "founderTime":
nameObj = {
name: "creater_time"
}
// console.log("founderTime-->creater_time",nameObj)
break
case "editTime":
nameObj = {
name: "edit_time"
}
// console.log("editTime--->edit_time",nameObj)
break
case "owner":
nameObj = {
name: "owner"
}
// console.log("owner------>owner",nameObj)
break
case "deptOrg":
nameObj = {
name:"org"
}
// console.log("deptOrg---->org",nameObj)
break
default:
if (!notNeedName.includes(obj.type) && !obj.name) {
nameObj = {
name: obj.type + key
}
}
}
// console.log("-----5------->",obj) // console.log("-----5------->",obj)
// console.log("-----6------->",nameObj) // console.log("-----6------->",nameObj)
// console.log("-----7------->",objectItem) // console.log("-----7------->",objectItem)
Object.assign(obj, nameObj, objectItem) Object.assign(obj, nameObj, objectItem)
// console.log("-----8------->",obj)
groupClick(obj) groupClick(obj)
} }
const getGroupName = (item: any) => { const getGroupName = (item: any) => {
@ -240,7 +275,7 @@ const linksShow = (el: FormList, index: number) => {
const linkResult = el.config.linkResult const linkResult = el.config.linkResult
if (key && value && type.value !== 5) { if (key && value && type.value !== 5) {
const Fn = new Function('$', `return (${value})`) const Fn = new Function('$', `return (${value})`)
console.log(Fn) // console.log(Fn)
const pass = Fn(formProps.value.model) const pass = Fn(formProps.value.model)
if (linkResult === 'disabled') { if (linkResult === 'disabled') {
// disabled // disabled
@ -298,12 +333,12 @@ onUnmounted(() => {
store.setControlAttr({}) store.setControlAttr({})
}) })
onMounted(()=>{ onMounted(()=>{
console.log('formGroup onMounted',props.data,dataList.value,props.tableinfo) // console.log('formGroup onMounted',props.data,dataList.value,props.tableinfo)
}) })
const getFormItemLableStyle = (ele: any) => { const getFormItemLableStyle = (ele: any) => {
if(ele?.labelStyle){ if(ele?.labelStyle){
console.log("返回栅格宽度3",AnalysisCss(ele?.labelStyle)) // console.log("3",AnalysisCss(ele?.labelStyle))
return AnalysisCss(ele?.labelStyle) return AnalysisCss(ele?.labelStyle)
} }
} }
@ -482,8 +517,24 @@ const getFormItemLableStyle = (ele: any) => {
</div> </div>
</template> </template>
<!--创建人-->
<FounderForm v-else-if="element.type === 'founder'" :data="element" :tablekey="props.tableinfo" :numrun="props.numrun" />
<!--创建时间-->
<FounderTime v-else-if="element.type === 'founderTime'" :data="element" :tablekey="props.tableinfo" :numrun="props.numrun" />
<!--修改时间-->
<template v-else-if="element.type === 'editTime'">
{{element}}
</template>
<!--拥有者-->
<template v-else-if="element.type === 'owner'">
{{element}}
</template>
<!--所属部门-->
<template v-else-if="element.type === 'deptOrg'">
{{element}}
</template>
<DigitPage v-else-if="element.type === 'digitpage'" :data="element" /> <DigitPage v-else-if="element.type === 'digitpage'" :data="element" />

5
src/widget/index.ts

@ -16,6 +16,8 @@ import lowcodeTransfer from './lowcodetransfer/index.vue'
import lowcodeImage from './lowcodeimage/index.vue' import lowcodeImage from './lowcodeimage/index.vue'
import associatedForms from './associatedforms/index.vue' import associatedForms from './associatedforms/index.vue'
import FounderForm from './systemunit/founder.vue'
import FounderTime from './systemunit/founderTime.vue'
export default (app: any) => { export default (app: any) => {
app.component('SerialNumber', serialNumber) app.component('SerialNumber', serialNumber)
@ -32,4 +34,7 @@ export default (app: any) => {
app.component('LowcodeTransfer',lowcodeTransfer) app.component('LowcodeTransfer',lowcodeTransfer)
app.component('LowcodeImage',lowcodeImage) app.component('LowcodeImage',lowcodeImage)
app.component('AssociatedForms',associatedForms) app.component('AssociatedForms',associatedForms)
app.component('FounderForm',FounderForm) //创建人组件
app.component('FounderTime',FounderTime) //创建时间主键
} }

202
src/widget/systemunit/founder.vue

@ -0,0 +1,202 @@
<!--
@ 作者: 秦东
@ 时间: 2024-06-21 13:06:34
@ 备注: 创建人
-->
<script lang='ts' setup>
import { AnalysisCss,AnalysisInputCss } from '@/components/DesignForm/public/form/calculate/cssInfo'
import { constControlChange,constFormProps } from '@/api/DesignForm/utils'
import { FormItem, FormList } from '@/api/DesignForm/types'
import validate from '@/api/DesignForm/validate'
import { getPeopleKey,getUserCont } from '@/api/hr/people/index'
import Tooltips from '@/components/DesignForm/tooltip.vue'
const props = withDefaults(
defineProps<{
data: FormList
tablekey: any
numrun?: number
modelValue?: any //
tProp?: string // form-itemprop
}>(),
{}
)
const formProps = inject(constFormProps, {}) as any
const config = computed(() => {
return props.data.config || {}
})
const type = computed(() => {
return formProps.value.type
})
// item
const itemRules = computed(() => {
let temp
const itemR: any = props.data.item?.rules || []
const customR = formatCustomRules()
// undefined
if (itemR?.length || customR?.length) {
temp = [...customR, ...itemR]
}
return temp
})
// customRulesrules
const formatCustomRules = () => {
const rulesReg: any = {}
validate &&
validate.forEach(item => {
rulesReg[item.type] = item.regExp
})
// 使provide
const temp: any = []
props.data.customRules?.forEach((item: any) => {
if (!item.message && item.type !== 'methods') {
return //
}
let obj = {}
if (item.type === 'required') {
obj = { required: true }
} else if (item.type === 'rules') {
//
obj = { pattern: item.rules }
} else if (item.type === 'methods') {
//
const methods: any = item.methods
if (methods) {
obj = { validator: inject(methods, {}) }
}
} else if (item.type) {
obj = { pattern: rulesReg[item.type as string] }
}
// push
let message: any = { message: item.message }
if (!item.message) {
// 使validatormessage使 callback(new Error('x'));
message = {}
}
temp.push(
Object.assign(
{
trigger: item.trigger || 'blur'
},
obj,
message
)
)
})
return temp
}
const getLabel = (ele: FormItem) => {
const showColon = formProps.value.showColon ? ':' : ''
if (ele) {
return ele.showLabel ? '' : ele.label + showColon
} else {
return ''
}
}
//css
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)
}
}
const msg = ref("")
const value = computed({
get() {
let zhiVal = props.modelValue
if (props.tProp) {
} else {
zhiVal = formProps.value.model[props.data.name]
}
if(zhiVal && zhiVal != ""){
getPeopleKey({id:zhiVal})
.then((data:any)=>{
if(data.code == 0){
msg.value = data.data.Name + "(" + data.data.Number + ")"
}
})
}else{
getUserCont()
.then((data:any)=>{
console.log("获取人员信息",data)
if(data.code == 0){
msg.value = data.data.nickname + "(" + data.data.number + ")"
}
})
}
return msg.value
},
set(newVal: any) {
if(newVal != null && newVal != "") {
newVal=newVal*1
}
if (props.tProp) {
emits('update:modelValue', newVal)
}
console.log("设置初始值-----》",newVal)
updateModel(newVal*1)
}
})
/**
@ 作者: 秦东
@ 时间: 2024-06-21 14:11:15
@ 功能: 获取表单创建人
*/
const getFormFounder = (val: any) => {
console.log("获取表单创建人",val)
getPeopleKey({id:val})
.then((data:any)=>{
console.log("获取初始值-----》",data)
return data
})
}
</script>
<template>
<div>
<el-form-item
v-bind="data.item"
:prop="tProp || data.name"
:class="config.className"
:label="getLabel(data.item as FormItem)"
:rules="itemRules as any"
>
<template v-if="config.help" #label >
<span :style="getFormItemLableStyle(configStyle)">{{ getLabel(data.item) }}</span>
<Tooltips :content="config.help" />
</template>
<template #label v-else>
<span :style="getFormItemLableStyle(configStyle)" >{{ getLabel(data.item) }}</span>
</template>
<div v-if="type === 4" class="form-value" v-html="value"></div>
<template v-else>
<el-input v-model="value" :style="getFormItemInputStyle(configStyle,2)" :input-style="getFormItemInputStyle(configStyle,3)" placeholder="系统自动生成" disabled></el-input>
</template>
</el-form-item>
</div>
</template>
<style lang='scss' scoped>
</style>

185
src/widget/systemunit/founderTime.vue

@ -0,0 +1,185 @@
<!--
@ 作者: 秦东
@ 时间: 2024-06-22 14:35:29
@ 备注: 创建时间
-->
<script lang='ts' setup>
import { AnalysisCss,AnalysisInputCss } from '@/components/DesignForm/public/form/calculate/cssInfo'
import { constControlChange,constFormProps } from '@/api/DesignForm/utils'
import { FormItem, FormList } from '@/api/DesignForm/types'
import validate from '@/api/DesignForm/validate'
import { getPeopleKey,getUserCont } from '@/api/hr/people/index'
import Tooltips from '@/components/DesignForm/tooltip.vue'
const props = withDefaults(
defineProps<{
data: FormList
tablekey: any
numrun?: number
modelValue?: any //
tProp?: string // form-itemprop
}>(),
{}
)
const formProps = inject(constFormProps, {}) as any
const config = computed(() => {
return props.data.config || {}
})
const type = computed(() => {
return formProps.value.type
})
// item
const itemRules = computed(() => {
let temp
const itemR: any = props.data.item?.rules || []
const customR = formatCustomRules()
// undefined
if (itemR?.length || customR?.length) {
temp = [...customR, ...itemR]
}
return temp
})
// customRulesrules
const formatCustomRules = () => {
const rulesReg: any = {}
validate &&
validate.forEach(item => {
rulesReg[item.type] = item.regExp
})
// 使provide
const temp: any = []
props.data.customRules?.forEach((item: any) => {
if (!item.message && item.type !== 'methods') {
return //
}
let obj = {}
if (item.type === 'required') {
obj = { required: true }
} else if (item.type === 'rules') {
//
obj = { pattern: item.rules }
} else if (item.type === 'methods') {
//
const methods: any = item.methods
if (methods) {
obj = { validator: inject(methods, {}) }
}
} else if (item.type) {
obj = { pattern: rulesReg[item.type as string] }
}
// push
let message: any = { message: item.message }
if (!item.message) {
// 使validatormessage使 callback(new Error('x'));
message = {}
}
temp.push(
Object.assign(
{
trigger: item.trigger || 'blur'
},
obj,
message
)
)
})
return temp
}
const getLabel = (ele: FormItem) => {
const showColon = formProps.value.showColon ? ':' : ''
if (ele) {
return ele.showLabel ? '' : ele.label + showColon
} else {
return ''
}
}
//css
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)
}
}
const value = computed({
get() {
let zhiVal = ""
if (props.tProp) {
//
zhiVal = props.modelValue
} else {
zhiVal = formProps.value.model[props.data.name]
}
if(zhiVal != null && zhiVal != "") {
return zhiVal
}else{
return getCurrentTime()
}
},
set(newVal: any) {
if(newVal != null && newVal != "") {
newVal=newVal*1
}
if (props.tProp) {
emits('update:modelValue', newVal)
}
updateModel(newVal*1)
}
})
//
const getCurrentTime = () => {
const now = new Date();
const year = now.getFullYear();
const month = now.getMonth() + 1; // 0
const day = now.getDate();
const hours = now.getHours();
const minutes = now.getMinutes();
const seconds = now.getSeconds();
return `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')} ${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
}
</script>
<template>
<el-form-item
v-bind="data.item"
:prop="tProp || data.name"
:class="config.className"
:label="getLabel(data.item as FormItem)"
:rules="itemRules as any"
>
<template v-if="config.help" #label >
<span :style="getFormItemLableStyle(configStyle)">{{ getLabel(data.item) }}</span>
<Tooltips :content="config.help" />
</template>
<template #label v-else>
<span :style="getFormItemLableStyle(configStyle)" >{{ getLabel(data.item) }}</span>
</template>
<div v-if="type === 4" class="form-value" v-html="value"></div>
<template v-else>
<el-input v-model="value" :style="getFormItemInputStyle(configStyle,2)" :input-style="getFormItemInputStyle(configStyle,3)" placeholder="系统自动生成" disabled></el-input>
</template>
</el-form-item>
</template>
<style lang='scss' scoped>
</style>
Loading…
Cancel
Save