Files
tnb.server/apihost/Tnb.API.Entry/wwwroot/Template/WorkflowForm.vue.vm
2023-03-13 15:00:34 +08:00

1121 lines
36 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div :style="{margin: '0 auto',width:'@(Model.FullScreenWidth)'}">
<el-row :gutter="15" class="@(Model.FormStyle) main">
<el-form ref="@(Model.FormRef)" :model="@(Model.FormModel)" :rules="dataRule" size="@(Model.Size)" label-width="@(Model.LabelWidth)px" label-position="@(Model.LabelPosition)" :disabled="setting.readonly">
@{ GenerateFlowflowFormControls(); }
@if(Model.IsChildDataTransfer)
{
<SelectDialog v-if="selectDialogVisible" :config="currTableConf" :formData="dataForm" ref="selectDialog" @@select="addForSelect" />
}
</el-form>
</el-row>
<UserBox v-if="userBoxVisible" ref="userBox" @@submit="submit" />
</div>
</template>
<script>
import comMixin from '@@/views/workFlow/workFlowForm/mixin'
import request from '@@/utils/request'
@if(Model.IsChildDataTransfer)
{
@:import SelectDialog from '@@/components/SelectDialog'
}
import { getDictionaryDataSelector } from '@@/api/systemData/dictionary'
import { getDataInterfaceRes } from '@@/api/systemData/dataInterface'
export default {
mixins: [comMixin],
components: { @(Model.IsChildDataTransfer ? "SelectDialog" : "") },
mixins: [comMixin],
data(){
return {
@if(Model.IsChildDataTransfer)
{
@:selectDialogVisible: false,
@:currTableConf:{},
@:addTableConf:{
@foreach(var item in Model.FormList)
{
@switch(item.jnpfKey)
{
case "table":
@if(item.IsDataTransfer)
{
@:@(item.OriginalName):@(item.AddTableConf),
}
break;
}
}
@:},
@:tableRows:{
@foreach(var item in Model.FormList)
{
@switch(item.jnpfKey)
{
case "table":
@if(item.IsDataTransfer)
{
@:@(item.OriginalName):{
@:enabledmark:undefined,
@:},
}
break;
}
}
@:},
@:currVmodel:'',
}
visible: false,
setting:{},
eventType: '',
formRef: '@(Model.FormRef)',
userBoxVisible:false,
dataForm: {
@(Model.PrimaryKey):'',
flowId:'',
@foreach(var children in Model.FormList)
{
@switch(children.jnpfKey)
{
case "checkbox":
case "cascader":
case "uploadImg":
case "uploadFz":
case "address":
case "comSelect":
@if(children.DefaultValue == null || children.DefaultValue.ToString() == "")
{
@:@(children.LowerName):[],
}else{
@:@(children.LowerName):@(children.DefaultValue),
}
break;
case "select":
case "userSelect":
case "usersSelect":
case "treeSelect":
case "depSelect":
case "posSelect":
case "popupTableSelect":
case "roleSelect":
case "groupSelect":
@if(children.Multiple)
{
if(@children.DefaultValue == null || @children.DefaultValue.ToString() == "")
{
@:@(children.LowerName):[],
}else{
@:@(children.LowerName):@(children.DefaultValue),
}
}else{
if(@children.DefaultValue == null || @children.DefaultValue.ToString() == "")
{
@:@(children.LowerName):undefined,
}else{
@:@(children.LowerName):"@(children.DefaultValue)",
}
}
break;
case "numInput":
case "date":
case "rate":
case "slider":
if(@children.DefaultValue == null || @children.DefaultValue.ToString() == "")
{
@:@(children.LowerName):undefined,
}else{
@:@(children.LowerName):@(children.DefaultValue),
}
break;
case "switch":
@:@(children.LowerName):@(children.DefaultValue ? "1" : "0"),
break;
case "table":
@:@(children.OriginalName):[],
break;
default:
if(@children.DefaultValue == null || @children.DefaultValue.ToString() == "")
{
@:@(children.LowerName):undefined,
}else{
@:@(children.LowerName):"@(children.DefaultValue)",
}
break;
}
}
},
dataRule: {
@foreach(var item in Model.FormList)
{
@switch(item.jnpfKey)
{
case "table":
break;
default:
@if(item.Required || (item.RegList!=null && item.RegList.Count > 0))
{
@:@(item.LowerName):[
@if(item.Required)
{
@:{
@:required:true,
@:message:'请输入@(item.Placeholder)',
@if(item.Trigger.Contains("["))
{
@:trigger:@(item.Trigger)
}
else
{
@:trigger:'@(item.Trigger)'
}
@:},
}
@if(item.RegList!=null && item.RegList.Count > 0)
{
@foreach(var items in item.RegList)
{
@:{
@:pattern:@(items.pattern),
@:message:'@(items.message)',
if(item.Trigger.Contains("["))
{
@:trigger:@(item.Trigger)
}
else
{
@:trigger:'@(item.Trigger)'
}
@:},
}
}
@:],
}
break;
}
}
},
tableRequiredData:{},
@foreach(var item in Model.OptionsList)
{
@switch(item.jnpfKey)
{
case "collapse":
@:@(item.Name):@(item.Content),
break;
case "tab":
@:@(item.Name):"@(item.Content)",
break;
case "popupTableSelect":
case "popupSelect":
@:@(item.Name)TemplateJson : @(item.TemplateJson == "" ? "[]" : item.TemplateJson),
@:@(item.Content)
break;
default:
@if(item.IsProps)
{
@:@(item.LowerName)Props:@(item.Props),
}
@if(!item.IsLinkage)
{
@:@(item.Content)
}
break;
}
}
}
},
computed: {
formOperates() {
return this.setting.formOperates
}
},
watch: {},
created() {
@foreach(var item in @Model.OptionsList)
{
@if(!item.IsStatic && !item.IsLinkage && (item.IsChildren || item.IsIndex))
{
@:this.get@(item.LowerName)Options();
}
}
},
mounted() {},
methods: {
@if(Model.IsChildDataTransfer)
{
@:openSelectDialog(key) {
@:this.currTableConf=this.addTableConf[key]
@:this.currVmodel=key
@:this.selectDialogVisible = true
@:this.$nextTick(() => {
@:this.$refs.selectDialog.init()
@:})
@:},
@:addForSelect(data) {
@:for (let i = 0; i < data.length; i++) {
@:let item={...this.tableRows[this.currVmodel],...data[i]}
@:this.dataForm[this.currVmodel].push(item)
@:}
@:},
}
@if(Model.IsDetail)
{
@:goDetail(id){
@:this.detailVisible = true
@:this.$nextTick(() => {
@:this.$refs.Detail.init(id)
@:})
@:},
}
@foreach(var item in Model.FormList)
{
@switch(item.jnpfKey)
{
case "table":
@if(item.Required)
{
@:@(item.LowerName)Exist(){
@:let isOk = true;
@:for (let i = 0; i < this.dataForm.@(item.OriginalName).length; i++) {
@:const e = this.dataForm.@(item.LowerName)List[i];
@foreach(var children in item.ChildrenList)
{
@if(children.Required)
{
@switch(children.jnpfKey)
{
case "checkbox":
case "cascader":
case "uploadImg":
case "uploadFz":
case "address":
case "comSelect":
@:if(!e.@(children.LowerName).length) {
@:this.$message({
@:message: '@(children.Placeholder)不能为空',
@:type: 'error',
@:duration: 1000
@:});
@:isOk = false
@:break
@:}
break;
case "select":
case "userSelect":
case "treeSelect":
case "depSelect":
case "posSelect":
case "popupTableSelect":
case "roleSelect":
case "groupSelect":
@if(children.Multiple)
{
@:if(!e.@(children.LowerName).length) {
@:this.$message({
@:message: '@(children.Placeholder)不能为空',
@:type: 'error',
@:duration: 1000
@:});
@:isOk = false
@:break
@:}
}else{
@:if(!e.@(children.LowerName)) {
@:this.$message({
@:message: '@(children.Placeholder)不能为空',
@:type: 'error',
@:duration: 1000
@:});
@:isOk = false
@:break
@:}
}
break;
case "switch":
break;
default:
@:if(!e.@(children.LowerName)) {
@:this.$message({
@:message: '@(children.Placeholder)不能为空',
@:type: 'error',
@:duration: 1000
@:});
@:isOk = false
@:break
@:}
break;
}
}
}
@:}
@:return isOk;
@:},
}
break;
}
}
@foreach(var item in @Model.OptionsList)
{
@if(!item.IsStatic && item.DictionaryType != null)
{
@:get@(item.LowerName)Options(@(item.IsChildren ? "i" :"")){
switch(@item.DataType)
{
case "dictionary":
@:getDictionaryDataSelector('@(item.DictionaryType)').then(res => {
@:this.@(item.LowerName)Options = res.data.list
break;
case "dynamic":
@:let templateJson = @(item.TemplateJson == "" ? "[]" : item.TemplateJson)
@:let query = {
@:paramList: this.getParamList(templateJson, this.dataForm@(item.IsChildren ? " , i" :""))
@:}
@if(item.IsChildren){
@if(item.IsLinkage){
@:this.@(item.OptionsName)Options = []
}else{
@:this.@(item.LowerName)Options = []
}
}else{
@:this.@(item.LowerName)Options = []
}
@:getDataInterfaceRes('@(item.DictionaryType)', query).then(res => {
@:let data = res.data
@if(item.IsChildren){
@if(item.IsLinkage){
@:this.@(item.OptionsName)Options = Array.isArray(data) ? data : []
}else{
@:this.@(item.LowerName)Options = Array.isArray(data) ? data : []
}
}else{
@:this.@(item.LowerName)Options = Array.isArray(data) ? data : []
}
break;
}
@:});
@:},
}
}
goBack() {
this.$emit('refresh')
},
exist() {
let isOk = true
for (let key in this.tableRequiredData) {
if (this.dataForm[key] && Array.isArray(this.dataForm[key])) {
for (let i = 0; i < this.dataForm[key].length; i++) {
let item = this.dataForm[key][i]
inner: for (let id in item) {
let arr = this.tableRequiredData[key].filter(o => o.id === id) || []
if (!arr.length) continue inner
if (arr[0].required) {
let msg = `${arr[0].name}不能为空`
let boo = true
if (arr[0].dataType === 'array') {
boo = !this.jnpf.isEmptyArray(item[id])
} else {
boo = !this.jnpf.isEmpty(item[id])
}
if (!boo) {
this.$message({
message: msg,
type: 'error',
duration: 1000
})
isOk = false
break
}
}
}
}
}
}
return isOk
},
/**
* 获取参数列表
*/
getParamList(templateJson, formData, index) {
for (let i = 0; i < templateJson.length; i++) {
if (templateJson[i].relationField) {
//区分是否子表
if (templateJson[i].relationField.includes('-')) {
let tableVModel = templateJson[i].relationField.split('-')[0]
let childVModel = templateJson[i].relationField.split('-')[1]
templateJson[i].defaultValue = formData[tableVModel] && formData[tableVModel][index] && formData[tableVModel][index][childVModel] || ''
} else {
templateJson[i].defaultValue = formData[templateJson[i].relationField] || ''
}
}
}
return templateJson
},
@foreach(var item in Model.FormList)
{
@if(item.IsLinked && item.jnpfKey != "table")
{
@:@(item.LowerName)Change(){
@foreach(var linkage in item.LinkageRelationship)
{
@switch(linkage.jnpfKey)
{
case "popupSelect":
case "popupTableSelect":
break;
default:
@*主表联动子表控件*@
@if(linkage.isChildren)
{
@:if(this.dataForm.@(linkage.fieldName).length){
@:this.dataForm.@(linkage.fieldName).forEach((ele, index) => {
@:this.get@(linkage.fieldName)_@(linkage.field)Options(index)
@:})
@:}
}else{
@:this.dataForm.@(linkage.field) = @(linkage.IsMultiple ? "[]" : "undefined")
@:this.get@(linkage.fieldName)Options()
}
break;
}
}
@:},
}
@switch(item.jnpfKey)
{
case "table":
@*子表内有控件联动*@
@if(item.IsLinked)
{
@foreach(var children in item.ChildrenList)
{
@*子表内具体某个控件*@
@if(children.IsLinked)
{
@:@(children.LowerName)TableChange(i){
@foreach(var linkage in children.LinkageRelationship)
{
@:this.dataForm.@(item.OriginalName)[i].@(linkage.field) = @(linkage.IsMultiple ? "[]" : "undefined");
@switch(linkage.jnpfKey)
{
case "popupSelect":
case "popupTableSelect":
break;
default:
@:this.get@(item.OriginalName)_@(linkage.field)Options(i);
break;
}
}
@:},
}
}
}
@switch(item.AddType)
{
case 0:
@:addHandle@(item.Name)EntityList() {
@:let item = {
@foreach(var children in item.ChildrenList)
{
@switch(children.jnpfKey)
{
case "checkbox":
case "cascader":
case "uploadImg":
case "uploadFz":
case "address":
case "comSelect":
@if(children.DefaultValue == null || children.DefaultValue.ToString() == "")
{
@:@(children.LowerName):[],
}else{
@:@(children.LowerName):@(children.DefaultValue),
}
break;
case "select":
case "userSelect":
case "usersSelect":
case "treeSelect":
case "depSelect":
case "posSelect":
case "popupTableSelect":
case "roleSelect":
case "groupSelect":
@if(children.Multiple)
{
if(@children.DefaultValue == null || @children.DefaultValue.ToString() == "")
{
@:@(children.LowerName):[],
}else{
@:@(children.LowerName):@(children.DefaultValue),
}
}else{
if(@children.DefaultValue == null || @children.DefaultValue.ToString() == "")
{
@:@(children.LowerName):undefined,
}else{
@:@(children.LowerName):"@(children.DefaultValue)",
}
}
break;
case "numInput":
case "date":
case "rate":
case "slider":
if(@children.DefaultValue == null || @children.DefaultValue.ToString() == "")
{
@:@(children.LowerName):undefined,
}else{
@:@(children.LowerName):@(children.DefaultValue),
}
break;
case "switch":
@:@(children.LowerName):@(children.DefaultValue ? "1" : "0"),
break;
default:
if(@children.DefaultValue == null || @children.DefaultValue.ToString() == "")
{
@:@(children.LowerName):undefined,
}else{
@:@(children.LowerName):"@(children.DefaultValue)",
}
break;
}
}
@foreach(var children in item.ChildrenList)
{
@if(children.IsLinkage)
{
@switch(children.jnpfKey)
{
case "radio":
case "checkbox":
case "select":
case "cascader":
case "treeSelect":
case "popupTableSelect":
case "popupSelect":
@:@(children.LowerName)Options:[],
break;
}
}
}
@:}
@:this.dataForm.@(item.OriginalName).push(item)
@*循环出主表联动子表控件的事件*@
@foreach(var primaryTableLinkage in Model.FormList)
{
@if(primaryTableLinkage.IsLinked && primaryTableLinkage.jnpfKey != "table")
{
@foreach(var linkage in primaryTableLinkage.LinkageRelationship)
{
if(linkage.fieldName == item.OriginalName)
{
@switch(linkage.isChildren)
{
case true:
@switch(linkage.jnpfKey)
{
case "popupSelect":
case "popupTableSelect":
break;
default:
@:this.get@(linkage.fieldName)_@(linkage.field)Options(this.dataForm.@(linkage.fieldName).length - 1)
break;
}
break;
}
}
}
}
}
@:},
@:handleDel@(item.Name)EntityList(index) {
@:this.dataForm.@(item.OriginalName).splice(index, 1);
@:},
break;
case 1:
@:openSelectDialog(key) {
@:this.currTableConf=this.addTableConf[key]
@:this.currVmodel=key
@:this.selectDialogVisible = true
@:this.$nextTick(() => {
@:this.$refs.selectDialog.init()
@:})
@:},
@:addForSelect(data) {
@:for (let i = 0; i < data.length; i++) {
@:let item={...this.tableRows[this.currVmodel],...data[i]}
@:this.dataForm[this.currVmodel].push(item)
@:}
@:},
break;
}
if(item.ShowSummary)
{
@:get@(item.Name)(param) {
@:const summaryField = @(item.SummaryField)
@:const { columns, data } = param;
@:const sums = [];
@:columns.forEach((column, index) => {
@:if (index === 0) {
@:sums[index] = '合计';
@:return;
@:}
@:if (!summaryField.includes(column.property)) {
@:sums[index] = '';
@:return;
@:}
@:const values = data.map(item => Number(item[column.property]));
@:if (!values.every(value => isNaN(value))) {
@:sums[index] = values.reduce((prev, curr) => {
@:const value = Number(curr);
@:if (!isNaN(value)) {
@:return prev + curr;
@:} else {
@:return prev;
@:}
@:}, 0);
@:} else {
@:sums[index] = '';
@:}
@:});
@:return sums
@:},
}
break;
}
}
}
}
</script>
@{
void GenerateFlowflowFormControls()
{
@foreach(var item in Model.FormAllContols)
{
@switch(item.jnpfKey)
{
@*栅格布局*@
case "row":
@:<el-col :span="@(item.Span)">
@:<el-row :gutter="@(item.Gutter)">
@{ GenerateFlowflowFormChildrenControls(item.Children,item.Gutter); }
@:</el-row>
@:</el-col>
break;
@*子表*@
case "table":
@:<el-col :span="@(item.Span)" v-if="judgeShow('@(item.Name)') && formOperates">
@:<el-form-item label-width="0" prop="">
@if(item.ShowText)
{
@:<div class="JNPF-common-title">
@:<h2>@(item.Label)</h2>
@:</div>
}
@:<el-table :data="dataForm.@(item.Name)" size='mini' @(item.ShowSummary ? "show-summary :summary-method='get" + @item.ChildTableName + "'" :"")>
@:<el-table-column type="index" width="50" label="序号" align="center" />
@foreach(var childrens in item.Children)
{
@:<el-table-column prop="@(childrens.LowerName)" @(childrens.ColumnWidth)label="@(childrens.Label)"@(childrens.LowerName != null ? " v-if=\"judgeShow('"+ @item.Name + "-" + @childrens.LowerName + "')\"" : "")>
@if(childrens.LowerName != null)
{
@:<template slot="header" v-if="judgeRequired('@(item.Name)-@(childrens.LowerName)')">
@:<span class="required-sign">*</span>@(childrens.Label)
@:</template>
}
@:<template slot-scope="scope">
@switch(childrens.jnpfKey)
{
case "relationFormAttr":
case "popupAttr":
@:<@childrens.Tag @(childrens.Style):relationField="'@(childrens.RelationField)'+scope.$index" isStorage="@(childrens.IsStorage)" @(childrens.vModel) showField="@(childrens.ShowField)"></@childrens.Tag>
break;
default:
@:<@(childrens.Tag) v-model="scope.row.@(childrens.LowerName)" @(childrens.Field)@(childrens.Style)@(childrens.Placeholder)@(childrens.Clearable)@(childrens.Readonly)@(childrens.IsDisabled)@(childrens.ShowWordLimit)@(childrens.Format)@(childrens.ValueFormat)@(childrens.AutoSize)@(childrens.Multiple)@(childrens.Size)@(childrens.PrefixIcon)@(childrens.SuffixIcon)@(childrens.MaxLength)@(childrens.ShowPassword)@(childrens.Filterable)@(childrens.MainProps)@(childrens.Options)@(childrens.ShowAllLevels)@(childrens.Separator)@(childrens.RangeSeparator)@(childrens.StartPlaceholder)@(childrens.EndPlaceholder)@(childrens.PickerOptions)@(childrens.Required)@(childrens.Step)@(childrens.StepStrictly)@(childrens.Max)@(childrens.Min)@(childrens.ColumnWidth)@(childrens.ModelId != ""? "modelId='"+ childrens.ModelId +"' " :"")@(childrens.RelationField)@(childrens.ColumnOptions)@(childrens.HasPage)@(childrens.PageSize)@(childrens.PropsValue)@(childrens.InterfaceId)@(childrens.Precision)@(childrens.ActiveText)@(childrens.InactiveText)@(childrens.ActiveColor)@(childrens.InactiveColor)@(childrens.IsSwitch)@(childrens.ShowStops)@(childrens.Accept)@(childrens.ShowTip)@(childrens.FileSize)@(childrens.SizeUnit)@(childrens.Limit)@(childrens.ButtonText)@(childrens.Level)@(childrens.Type)@(childrens.PopupType)@(childrens.PopupTitle)@(childrens.PopupWidth)@(childrens.SelectType != "" ? "selectType='" + childrens.SelectType + "' " : "")@(childrens.IsCustomSelect ? @childrens.AbleIds + @childrens.AbleDepIds + @childrens.AblePosIds + @childrens.AbleUserIds + @childrens.AbleRoleIds + @childrens.AbleGroupIds : "")@(childrens.UserRelationAttr)@(childrens.TemplateJson)@(childrens.IsLinkage ? ":formData='dataForm' :rowIndex='scope.$index' ": "")@(childrens.IsLinked ? "@change='"+ @childrens.LowerName +"TableChange(scope.$index)'":"")>
@switch(childrens.jnpfKey)
{
case "select":
@:<el-option v-for="(item, index) in @(childrens.IsLinkage ? "dataForm." + item.Name + "[scope.$index]." + childrens.LowerName + "Options" : item.Name + "_" + childrens.LowerName + "Options")" :key="index" :label="item.@(childrens.Props.label)" :value="item.@(childrens.Props.value)" :disabled="item.disabled"></el-option>
break;
case "comInput":
@if(childrens.Prepend != null)
{
@:<template slot="prepend">@(childrens.Prepend)</template>
}
@if(childrens.Append != null)
{
@:<template slot="append">@(childrens.Append)</template>
}
break;
}
@:</@(childrens.Tag)>
break;
}
@:</template>
@:</el-table-column>
}
@:<el-table-column label="操作" width="50" v-if="!setting.readonly && !judgeWrite('@(item.Name)')">
@:<template slot-scope="scope">
@:<el-button size="mini" type="text" class="JNPF-table-delBtn" @@click="handleDel@(item.ChildTableName)EntityList(scope.$index)">删除</el-button>
@:</template>
@:</el-table-column>
@:</el-table>
@switch(item.AddType)
{
case 0:
@:<div class="table-actions" @@click="addHandle@(item.ChildTableName)EntityList()" v-if="!setting.readonly && !judgeWrite('@(item.Name)')">
@:<el-button type="text" icon="el-icon-plus">新增</el-button>
@:</div>
break;
case 1:
@:<div class="table-actions" @@click="openSelectDialog('@(item.Name)')" v-if="!setting.readonly && !judgeWrite('@(item.Name)')">
@:<el-button type="text" icon="el-icon-plus">添加</el-button>
@:</div>
break;
}
@:</el-form-item>
@:</el-col>
break;
@*卡片*@
case "card":
@:<el-col :span="@(item.Span)">
@:<el-card class="mb-20" shadow="@(item.Shadow)">
@{ GenerateFlowflowFormChildrenControls(item.Children,item.Gutter); }
@:</el-card>
@:</el-col>
break;
@*折叠面板*@
case "collapse":
@:<el-col :span="@(item.Span)">
@:<el-collapse :accordion="@(item.Accordion)" v-model="@(item.Name)" class="mb-20">
@foreach(var collapse in item.Children)
{
@:<el-collapse-item title="@(collapse.Title)" name="@(collapse.Name)">
@{GenerateFlowflowFormChildrenControls(collapse.Children,item.Gutter);}
@:</el-collapse-item>
}
@:</el-collapse>
@:</el-col>
break;
case "tab":
@:<el-col :span="@(item.Span)">
@:<el-tabs type="@(item.Type)" tab-position="@(item.TabPosition)" v-model="@(item.Name)" class="mb-10">
@foreach(var collapse in item.Children)
{
@:<el-tab-pane label="@(collapse.Title)">
@{GenerateFlowflowFormChildrenControls(collapse.Children,item.Gutter);}
@:</el-tab-pane>
}
@:</el-tabs>
@:</el-col>
break;
case "divider":
@:<el-col :span="@(item.Span)">
@:<el-form-item label-width="0">
@:<el-divider content-position="@(item.Contentposition)">@(item.Default)</el-divider>
@:</el-form-item>
@:</el-col>
break;
case "groupTitle":
@:<el-col :span="@(item.Span)">
@:<el-form-item label-width="0">
@:<groupTitle content-position="@(item.Contentposition)" content="@(item.Content)"></groupTitle>
@:</el-form-item>
@:</el-col>
break;
case "button":
@:<el-col :span="@(item.Span)">
@:<el-form-item label-width="0">
@:<jnpf-button align="@(item.Align)" buttonText="@(item.ButtonText)" type="@(item.Type)"></jnpf-button>
@:</el-form-item>
@:</el-col>
break;
case "link":
@:<el-col :span="@(item.Span)">
@:<el-form-item label-width="0">
@:<jnpf-link content="@(item.Content)" href="@(item.Href)" target="@(item.Target)" :textStyle='@(item.TextStyle)'></jnpf-link>
@:</el-form-item>
@:</el-col>
break;
case "alert":
@:<el-col :span="@(item.Span)">
@:<el-form-item label-width="0">
@:<el-alert title="@(item.Title)" type="@(item.Type)" :closable="false" :show-icon="@(item.ShowIcon)"></el-alert>
@:</el-form-item>
@:</el-col>
break;
case "JNPFText":
@:<el-col :span="@(item.Span)">
@:<el-form-item label-width="0">
@:<JNPF-Text value="@(item.DefaultValue)" :textStyle='@(item.TextStyle)' :style='@(item.Style)' ></JNPF-Text>
@:</el-form-item>
@:</el-col>
break;
case "relationFormAttr":
case "popupAttr":
@if(item.NoShow == "")
{
@:<el-col :span="@(item.Span)" v-if="judgeShow('@(item.OriginalName)')">
}else{
@:<el-col :span="@(item.Span)" @(item.NoShow)>
}
@:<el-form-item label="@(item.Label)">
@:<@(item.Tag) @(item.Style)relationField="@(item.RelationField)" isStorage="@(item.IsStorage)" @(item.vModel) showField="@(item.ShowField)"></@(item.Tag)>
@:</el-form-item>
@:</el-col>
break;
default:
@if(item.NoShow == "")
{
@:<el-col :span="@(item.Span)" v-if="judgeShow('@(item.OriginalName)')">
}else
{
@:<el-col :span="@(item.Span)" @(item.NoShow)>
}
@:<el-form-item label="@(item.Label)" prop="@(item.LowerName)">
@:<@(item.Tag) v-model="dataForm.@(item.Name)" @(item.Field)@(item.Placeholder)@(item.Clearable)@(item.Readonly)@(item.MainProps)@(item.Required)@(item.IsDisabled)@(item.ShowWordLimit)@(item.IsRange)@(item.Style)@(item.Type)@(item.Format)@(item.ValueFormat)@(item.AutoSize)@(item.Multiple)@(item.Size)@(item.PrefixIcon)@(item.SuffixIcon)@(item.MaxLength)@(item.Step)@(item.StepStrictly)@(item.ControlsPosition)@(item.ShowChinese)@(item.ShowPassword)@(item.Filterable)@(item.ShowAllLevels)@(item.RangeSeparator)@(item.StartPlaceholder)@(item.EndPlaceholder)@(item.Separator)@(item.PickerOptions)@(item.Max)@(item.Min)@(item.AllowHalf)@(item.ShowTexts)@(item.ShowScore)@(item.ShowAlpha)@(item.ColorFormat)@(item.ActiveText)@(item.InactiveText)@(item.ActiveColor)@(item.IsSwitch)@(item.ShowStops)@(item.Range)@(item.Accept)@(item.ShowTip)@(item.FileSize)@(item.SizeUnit)@(item.Limit)@(item.Contentposition)@(item.ButtonText)@(item.Level)@(item.ActionText)@(item.Shadow)@(item.Content)@(item.Options)@(item.ModelId != ""? "modelId='"+ item.ModelId +"' " :"")@(item.RelationField)@(item.ColumnOptions)@(item.HasPage)@(item.PageSize)@(item.PropsValue)@(item.InterfaceId)@(item.Precision)@(item.ShowLevel)@(item.PopupType)@(item.PopupTitle)@(item.PopupWidth)@(item.SelectType != "" ? "selectType='" + item.SelectType + "' " : "")@(item.IsCustomSelect ? @item.AbleIds + @item.AbleDepIds + @item.AblePosIds + @item.AbleUserIds + @item.AbleRoleIds + @item.AbleGroupIds : "")@(item.UserRelationAttr)@(item.TemplateJson)@(item.IsLinkage ? ":formData='dataForm' ": "")@(item.IsLinked ? "@change='"+ @item.LowerName +"Change'":"")>
@switch(item.jnpfKey)
{
case "select":
@:<el-option v-for="(item, index) in @(item.LowerName)Options" :key="index" :label="item.@(item.Props.label)" :value="item.@(item.Props.value)" ></el-option>
break;
case "radio":
@:<el-radio@(item.OptionType) v-for="(item, index) in @(item.LowerName)Options" :key="index" :label="item.@(item.Props.value)" @(item.Border)>{{item.@(item.Props.label)}}</el-radio@(item.OptionType)>
break;
case "checkbox":
@:<el-checkbox@(item.OptionType) v-for="(item, index) in @(item.LowerName)Options" :key="index" :label="item.@(item.Props.value)" @(item.Border)>{{item.@(item.Props.label)}}</el-checkbox@(item.OptionType)>
break;
case "comInput":
@if(item.Prepend != null)
{
@:<template slot="prepend">@(item.Prepend)</template>
}
@if(item.Append != null)
{
@:<template slot="append">@(item.Append)</template>
}
break;
}
@:</@(item.Tag)>
@:</el-form-item>
@:</el-col>
break;
}
}
}
}
@{
void GenerateFlowflowFormChildrenControls(ICollection<FormControlDesignModel> childrenList, int gutter)
{
@foreach(var item in childrenList)
{
@switch(item.jnpfKey)
{
case "row":
@:<el-col :span="@(item.Span)">
@:<el-row :gutter="@(gutter)">
@{ GenerateFlowflowFormChildrenControls(item.Children,item.Gutter); }
@:</el-row>
@:</el-col>
break;
case "table":
@:<el-col :span="@(item.Span)" v-if="judgeShow('@(item.Name)') && formOperates">
@:<el-form-item label-width="0" prop="">
@if(item.ShowText)
{
@:<div class="JNPF-common-title">
@:<h2>@(item.Label)</h2>
@:</div>
}
@:<el-table :data="dataForm.@(item.Name)" size='mini' @(item.ShowSummary ? "show-summary :summary-method='get" + @item.ChildTableName + "'": "")>
@:<el-table-column type="index" width="50" label="序号" align="center" />
@foreach (var childrens in item.Children)
{
@:<el-table-column prop="@(childrens.LowerName)" @(childrens.ColumnWidth)label="@(childrens.Label)"@(childrens.LowerName != null ? " v-if=\"judgeShow('"+ @item.Name + "-" + @childrens.LowerName + "')\"" : "")>
@if(childrens.LowerName != null)
{
@:<template slot="header" v-if="judgeRequired('@(item.Name)-@(childrens.LowerName)')">
@:<span class="required-sign">*</span>@(childrens.Label)
@:</template>
}
@:<template slot-scope="scope">
@switch(childrens.jnpfKey)
{
case "relationFormAttr":
case "popupAttr":
@:<@childrens.Tag @(childrens.Style):relationField="'@(childrens.RelationField)'+scope.$index" isStorage="@(childrens.IsStorage)" @(childrens.vModel) showField="@(childrens.ShowField)"></@childrens.Tag>
break;
default:
@:<@(childrens.Tag) v-model="scope.row.@(childrens.LowerName)" @(childrens.Field)@(childrens.Style)@(childrens.Placeholder)@(childrens.Clearable)@(childrens.Readonly)@(childrens.IsDisabled)@(childrens.ShowWordLimit)@(childrens.Format)@(childrens.ValueFormat)@(childrens.AutoSize)@(childrens.Multiple)@(childrens.Size)@(childrens.PrefixIcon)@(childrens.SuffixIcon)@(childrens.MaxLength)@(childrens.ShowPassword)@(childrens.Filterable)@(childrens.MainProps)@(childrens.Options)@(childrens.ShowAllLevels)@(childrens.Separator)@(childrens.RangeSeparator)@(childrens.StartPlaceholder)@(childrens.EndPlaceholder)@(childrens.PickerOptions)@(childrens.Required)@(childrens.Step)@(childrens.StepStrictly)@(childrens.Max)@(childrens.Min)@(childrens.ColumnWidth)@(childrens.ModelId != ""? "modelId='"+ childrens.ModelId +"' " :"")@(childrens.RelationField)@(childrens.ColumnOptions)@(childrens.HasPage)@(childrens.PageSize)@(childrens.PropsValue)@(childrens.InterfaceId)@(childrens.Precision)@(childrens.ActiveText)@(childrens.InactiveText)@(childrens.ActiveColor)@(childrens.InactiveColor)@(childrens.IsSwitch)@(childrens.ShowStops)@(childrens.Accept)@(childrens.ShowTip)@(childrens.FileSize)@(childrens.SizeUnit)@(childrens.Limit)@(childrens.ButtonText)@(childrens.Level)@(childrens.Type)@(childrens.PopupType)@(childrens.PopupTitle)@(childrens.PopupWidth)@(childrens.SelectType != "" ? "selectType='" + childrens.SelectType + "' " : "")@(childrens.IsCustomSelect ? @childrens.AbleIds + @childrens.AbleDepIds + @childrens.AblePosIds + @childrens.AbleUserIds + @childrens.AbleRoleIds + @childrens.AbleGroupIds : "")@(childrens.UserRelationAttr)@(childrens.TemplateJson)@(childrens.IsLinkage ? ":formData='dataForm' :rowIndex='scope.$index' ": "")@(childrens.IsLinked ? "@change='"+ @childrens.LowerName +"TableChange(scope.$index)'":"")>
@switch(childrens.jnpfKey)
{
case "select":
@:<el-option v-for="(item, index) in @(childrens.IsLinkage ? "dataForm." + item.Name + "[scope.$index]." + childrens.LowerName + "Options" : item.Name + "_" + childrens.LowerName + "Options")" :key="index" :label="item.@(childrens.Props.label)" :value="item.@(childrens.Props.value)" :disabled="item.disabled"></el-option>
break;
case "comInput":
@if(childrens.Prepend != null)
{
@:<template slot="prepend">@(childrens.Prepend)</template>
}
@if(childrens.Append != null)
{
@:<template slot="append">@(childrens.Append)</template>
}
break;
}
@:</@(childrens.Tag)>
break;
}
@:</template>
@:</el-table-column>
}
@:<el-table-column label="操作" width="50" v-if="!setting.readonly && !judgeWrite('@(item.Name)')">
@:<template slot-scope="scope">
@:<el-button size="mini" type="text" class="JNPF-table-delBtn" @@click="handleDel@(item.ChildTableName)EntityList(scope.$index)">删除</el-button>
@:</template>
@:</el-table-column>
@:</el-table>
@switch(item.AddType)
{
case 0:
@:<div class="table-actions" @@click="addHandle@(item.ChildTableName)EntityList()" v-if="!setting.readonly && !judgeWrite('@(item.Name)')">
@:<el-button type="text" icon="el-icon-plus">新增</el-button>
@:</div>
break;
case 1:
@:<div class="table-actions" @@click="openSelectDialog('@(item.Name)')" v-if="!setting.readonly && !judgeWrite('@(item.Name)')">
@:<el-button type="text" icon="el-icon-plus">添加</el-button>
@:</div>
break;
}
@:</el-form-item>
@:</el-col>
break;
case "card":
@:<el-col :span="@(item.Span)">
@:<el-card class="mb-20" shadow="@(item.Shadow)">
@{GenerateFlowflowFormChildrenControls(item.Children,item.Gutter);}
@:</el-card>
@:</el-col>
break;
case "collapse":
@:<el-col :span="@(item.Span)">
@:<el-collapse :accordion="@(item.Accordion)" v-model="@(item.Name)" class="mb-20">
@foreach(var collapse in item.Children)
{
@:<el-collapse-item title="@(collapse.Title)" name="@(collapse.Name)">
@{GenerateFlowflowFormChildrenControls(collapse.Children,collapse.Gutter);}
@:</el-collapse-item>
}
@:</el-collapse>
@:</el-col>
break;
case "tab":
@:<el-col :span="@(item.Span)">
@:<el-tabs type="@(item.Type)" tab-position="@(item.TabPosition)" v-model="@(item.Name)" class="mb-10">
@foreach(var collapse in item.Children)
{
@:<el-tab-pane label="@(collapse.Title)">
@{GenerateFlowflowFormChildrenControls(collapse.Children,collapse.Gutter);}
@:</el-tab-pane>
}
@:</el-tabs>
@:</el-col>
break;
case "divider":
@:<el-col :span="@(item.Span)">
@:<el-form-item label-width="0">
@:<el-divider content-position="@(item.Contentposition)">@(item.Default)</el-divider>
@:</el-form-item>
@:</el-col>
break;
case "button":
@:<el-col :span="@(item.Span)">
@:<el-form-item label-width="0">
@:<jnpf-button align="@(item.Align)" buttonText="@(item.ButtonText)" type="@(item.Type)"></jnpf-button>
@:</el-form-item>
@:</el-col>
break;
case "groupTitle":
@:<el-col :span="@(item.Span)">
@:<el-form-item label-width="0">
@:<groupTitle content-position="@(item.Contentposition)" content="@(item.Content)"></groupTitle>
@:</el-form-item>
@:</el-col>
break;
case "link":
@:<el-col :span="@(item.Span)">
@:<el-form-item label-width="0">
@:<jnpf-link content="@(item.Content)" href="@(item.Href)" target="@(item.Target)" :textStyle='@(item.TextStyle)'></jnpf-link>
@:</el-form-item>
@:</el-col>
break;
case "alert":
@:<el-col :span="@(item.Span)">
@:<el-form-item label-width="0">
@:<el-alert title="@(item.Title)" type="@(item.Type)" :closable="false" :show-icon="@(item.ShowIcon)"></el-alert>
@:</el-form-item>
@:</el-col>
break;
case "JNPFText":
@:<el-col :span="@(item.Span)">
@:<el-form-item label-width="0">
@:<JNPF-Text value="@(item.DefaultValue)" :textStyle='@(item.TextStyle)' :style='@(item.Style)' ></JNPF-Text>
@:</el-form-item>
@:</el-col>
break;
case "relationFormAttr":
case "popupAttr":
@if(item.NoShow == "")
{
@:<el-col :span="@(item.Span)" v-if="judgeShow('@(item.OriginalName)')">
}else{
@:<el-col :span="@(item.Span)" @(item.NoShow)>
}
@:<el-form-item label="@(item.Label)">
@:<@(item.Tag) @(item.Style)relationField="@(item.RelationField)" isStorage="@(item.IsStorage)" @(item.vModel) showField="@(item.ShowField)"></@(item.Tag)>
@:</el-form-item>
@:</el-col>
break;
default:
@if(item.NoShow == "")
{
@:<el-col :span="@(item.Span)" v-if="judgeShow('@(item.OriginalName)')">
}else
{
@:<el-col :span="@(item.Span)" @(item.NoShow)>
}
@:<el-form-item label="@(item.Label)" prop="@(item.LowerName)">
@:<@(item.Tag) v-model="dataForm.@(item.Name)" @(item.Field)@(item.Placeholder)@(item.MainProps)@(item.Clearable)@(item.Readonly)@(item.Required)@(item.IsDisabled)@(item.ShowWordLimit)@(item.IsRange)@(item.Style)@(item.Type)@(item.Format)@(item.ValueFormat)@(item.AutoSize)@(item.Multiple)@(item.Size)@(item.PrefixIcon)@(item.SuffixIcon)@(item.MaxLength)@(item.Step)@(item.StepStrictly)@(item.ControlsPosition)@(item.ShowChinese)@(item.ShowPassword)@(item.Filterable)@(item.ShowAllLevels)@(item.RangeSeparator)@(item.StartPlaceholder)@(item.EndPlaceholder)@(item.Separator)@(item.PickerOptions)@(item.Max)@(item.Min)@(item.AllowHalf)@(item.ShowTexts)@(item.ShowScore)@(item.ShowAlpha)@(item.ColorFormat)@(item.ActiveText)@(item.InactiveText)@(item.ActiveColor)@(item.IsSwitch)@(item.ShowStops)@(item.Range)@(item.Accept)@(item.ShowTip)@(item.FileSize)@(item.SizeUnit)@(item.Limit)@(item.Contentposition)@(item.ButtonText)@(item.Level)@(item.ActionText)@(item.Shadow)@(item.Content)@(item.Options)@(item.ModelId != ""? "modelId='"+ item.ModelId +"' " :"")@(item.RelationField)@(item.ColumnOptions)@(item.HasPage)@(item.PageSize)@(item.PropsValue)@(item.InterfaceId)@(item.Precision)@(item.PopupType)@(item.PopupTitle)@(item.PopupWidth)@(item.SelectType != "" ? "selectType='" + item.SelectType + "' " : "")@(item.IsCustomSelect ? @item.AbleIds + @item.AbleDepIds + @item.AblePosIds + @item.AbleUserIds + @item.AbleRoleIds + @item.AbleGroupIds : "")@(item.UserRelationAttr)@(item.TemplateJson)@(item.IsLinkage ? ":formData='dataForm' ": "")@(item.IsLinked ? "@change='"+ @item.LowerName +"Change'":"")>
switch(item.jnpfKey)
{
case "select":
@:<el-option v-for="(item, index) in @(item.LowerName)Options" :key="index" :label="item.@(item.Props.label)" :value="item.@(item.Props.value)" ></el-option>
break;
case "radio":
@:<el-radio@(item.OptionType) v-for="(item, index) in @(item.LowerName)Options" :key="index" :label="item.@(item.Props.value)" @(item.Border)>{{item.@(item.Props.label)}}</el-radio@(item.OptionType)>
break;
case "checkbox":
@:<el-checkbox@(item.OptionType) v-for="(item, index) in @(item.LowerName)Options" :key="index" :label="item.@(item.Props.value)" @(item.Border)>{{item.@(item.Props.label)}}</el-checkbox@(item.OptionType)>
break;
case "comInput":
@if(item.Prepend != null)
{
@:<template slot="prepend">@(item.Prepend)</template>
}
@if(item.Append != null)
{
@:<template slot="append">@(item.Append)</template>
}
break;
}
@:</@(item.Tag)>
@:</el-form-item>
@:</el-col>
break;
}
}
}
}