Files
2023-03-13 15:00:34 +08:00

803 lines
31 KiB
Plaintext

<template>
<div class="JNPF-common-layout">
<div class="JNPF-common-layout-center">
<el-row class="JNPF-common-search-box" :gutter="16">
<el-form @@submit.native.prevent="">
@foreach (var item in @Model.SearchColumnDesign)
{
@if(item.Index == 3)
{
@:<template v-if="showAll">
}
@:<el-col :span="6">
@:<el-form-item label="@(@item.Label)">
@if(item.QueryControlsKey != null)
{
@switch(item.QueryControlsKey)
{
case "inputList":
@:<el-input v-model="query.@(@item.Name)" placeholder="@(@item.Label)" @(@item.Clearable)/>
break;
case "dateList":
@:<el-date-picker v-model="query.@(@item.Name)" start-placeholder="开始日期" end-placeholder="结束日期" value-format="timestamp" format="yyyy-MM-dd" type="daterange" />
break;
case "selectList":
@:<el-select v-model="query.@(@item.Name)" placeholder="@(@item.Label)" @(@item.Clearable)>
@:<el-option v-for="(item, index) in @(@item.OriginalName)Options" :key="index" :label="item.@(@item.Props.label)" :value="item.@(item.Props.value)" />
@:</el-select>
break;
case "timePickerList":
@:<el-time-picker v-model="query.@(@item.Name)" start-placeholder="开始时间" end-placeholder="结束时间" @(@item.Clearable)value-format="@(@item.ValueFormat)" format="@(@item.Format)" is-range />
break;
case "numRangeList":
@:<num-range v-model="query.@(@item.Name)"></num-range>
break;
case "datePickerList":
@:<el-date-picker v-model="query.@(@item.Name)" type="@(@item.Type)range" value-format="@(@item.ValueFormat)" format="@(@item.Format)" start-placeholder="开始日期" end-placeholder="结束日期">
@:</el-date-picker>
break;
case "userSelectList":
@:<userSelect v-model="query.@(@item.Name)" placeholder="请选择@(@item.Label)" @(@item.SelectType)@(@item.IsCustomSelect ? @item.AbleDepIds + @item.AblePosIds + @item.AbleUserIds + @item.AbleRoleIds + @item.AbleGroupIds : "")/>
break;
case "usersSelectList":
@:<usersSelect v-model="query.@(@item.Name)" placeholder="请选择@(@item.Label)" @(@item.SelectType)@(@item.IsCustomSelect ? @item.AbleIds : "")/>
break;
case "organizeList":
@:<depSelect v-model="query.@(@item.Name)" placeholder="请选择@(@item.Label)" :lastLevel="false" />
break;
case "comSelectList":
@:<comSelect v-model="query.@(@item.Name)" placeholder="请选择@(@item.Label)" />
break;
case "depSelectList":
@:<depSelect v-model="query.@(@item.Name)" placeholder="请选择@(@item.Label)" @(@item.SelectType)@(@item.IsCustomSelect ? @item.AbleDepIds + @item.AblePosIds + @item.AbleUserIds + @item.AbleRoleIds + @item.AbleGroupIds : "")/>
break;
case "posSelectList":
@:<posSelect v-model="query.@(@item.Name)" placeholder="请选择@(@item.Label)" @(@item.SelectType)@(@item.IsCustomSelect ? @item.AbleDepIds + @item.AblePosIds + @item.AbleUserIds + @item.AbleRoleIds + @item.AbleGroupIds : "")/>
break;
case "useCascaderList":
@:<el-cascader v-model="query.@(@item.Name)" :options="@(@item.OriginalName)Options" @(@item.Clearable):show-all-levels="@(@item.ShowAllLevels)" :props="@(@item.OriginalName)Props" placeholder="请选择@(@item.Label)"></el-cascader>
break;
case "JNPFAddressList":
@:<JNPFAddress v-model="query.@(@item.Name)" placeholder="请选择@(@item.Label)" :level="@(@item.Level)" @(@item.Clearable)/>
break;
case "treeSelectList":
@:<JNPF-TreeSelect v-model="query.@(@item.Name)" placeholder="请选择@(@item.Label)" :options="@(@item.OriginalName)Options" :props='@(@item.OriginalName)Props' @(@item.Clearable)/>
break;
}
}
else
{
@:<@(@item.Tag) v-model="query.@(@item.Name)" placeholder="@(@item.Label)" @(@item.Clearable)/>
}
@:</el-form-item>
@:</el-col>
}
@if(Model.SearchColumnDesign.Count >= 4)
{
@:</template>
}
<el-col :span="6">
<el-form-item>
<el-button type="primary" icon="el-icon-search" @@click="search()">查询</el-button>
<el-button icon="el-icon-refresh-right" @@click="reset()">重置</el-button>
@if(Model.SearchColumnDesign.Count >= 4)
{
@:<el-button type="text" icon="el-icon-arrow-down" @@click="showAll=true" v-if="!showAll">展开</el-button>
@:<el-button type="text" icon="el-icon-arrow-up" @@click="showAll=false" v-else>收起</el-button>
}
</el-form-item>
</el-col>
</el-form>
</el-row>
<div class="JNPF-common-layout-main JNPF-flex-main">
<div class="JNPF-common-head">
<div>
@foreach (var item in @Model.TopButtonDesign)
{
@:<el-button type="@(@item.Type)" icon="@(@item.Icon)" @@click="@(@item.Method)"@(@Model.UseBtnPermission ? " v-has=\"'btn_" + @item.Value + "'\"":"")>@(@item.Label)</el-button>
}
</div>
<div class="JNPF-common-head-right">
@if(Model.HasSuperQuery)
{
@:<el-tooltip content="高级查询" placement="top" >
@:<el-link icon="icon-ym icon-ym-filter JNPF-common-head-icon" :underline="false" @@click="openSuperQuery()" />
@:</el-tooltip>
}
<el-tooltip effect="dark" content="刷新" placement="top">
<el-link icon="icon-ym icon-ym-Refresh JNPF-common-head-icon" :underline="false" @@click="reset()" />
</el-tooltip>
</div>
</div>
<JNPF-table v-loading="listLoading" :data="list" @(@Model.IsSort ? "@sort-change='sortChange' ":"")@(@Model.IsBatchRemoveDel ? "has-c @selection-change='handleSelectionChange' ":"")>
@{ GenerateFormControls(); }
<el-table-column label="操作" fixed="right" width="@(@Model.ColumnButtonDesign.Count * 50)">
<template slot-scope="scope">
<template v-if="scope.row.rowEdit">
<el-button size="mini" type="text" @@click="saveForRowEdit(scope.row)">保存</el-button>
<el-button size="mini" type="text" class="JNPF-table-delBtn" @@click="cancelRowEdit(scope.row,scope.$index)">取消</el-button>
</template>
<template v-else>
@foreach (var item in @Model.ColumnButtonDesign)
{
@:<el-button type="text" @@click="@(@item.Method)" @(@item.Type)@(@Model.UseBtnPermission ? " v-has=\"'btn_" + @item.Value + "'\"":"")>@(@item.Label)</el-button>
}
</template>
</template>
</el-table-column>
</JNPF-table>
@if(Model.HasPage)
{
@:<pagination :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize" @@pagination="initData" />
}
</div>
</div>
<ExportBox v-if="exportBoxVisible" ref="ExportBox" @@download="download" />
@if(Model.IsUpload)
{
@:<ImportBox v-if="uploadBoxVisible" ref="UploadBox" @@refresh="initData" />
}
@if(Model.IsDetail)
{
@:<Detail v-if="detailVisible" ref="Detail" @@refresh="detailVisible=false"/>
}
@if(Model.HasSuperQuery)
{
@:<SuperQuery v-if="superQueryVisible" ref="SuperQuery" :columnOptions="superQueryJson" @@superQuery="superQuery" />
}
</div>
</template>
<script>
import request from '@@/utils/request'
import columnList from './columnList'
import { getDictionaryDataSelector } from '@@/api/systemData/dictionary'
import { getDataInterfaceRes } from '@@/api/systemData/dataInterface'
@if(Model.IsDownload)
{
@:import ExportBox from '@@/components/ExportBox'
}
@if(Model.IsDetail){
@:import Detail from './Detail'
}
@if(Model.HasSuperQuery)
{
@:import SuperQuery from '@@/components/SuperQuery'
@:import superQueryJson from './superQueryJson'
}
export default {
components: { @(@Model.IsDownload ? "ExportBox, ":"")@(@Model.IsDetail ? "Detail, ":"")@(@Model.HasSuperQuery ? "SuperQuery, " : "") },
data() {
return {
columnList,
cacheList: [],
@if(Model.IsUpload)
{
@:uploadBoxVisible:false,
}
@if(Model.IsDetail)
{
@:detailVisible: false,
}
@if(Model.HasSuperQuery)
{
@:superQueryVisible: false,
@:superQueryJson,
}
@if(Model.SearchColumnDesign.Count >= 3)
{
@:showAll: false,
}
query: {
@foreach (var item in @Model.SearchColumnDesign)
{
@:@(@item.Name) : undefined,
}
},
list: [],
listLoading: true,
multipleSelection: [],
total: 0,
listQuery: {
@if(Model.HasPage)
{
@:currentPage: 1,
@:pageSize: @(@Model.PageSize),
}
sort: "desc",
sidx: "",
@if(Model.HasSuperQuery)
{
@:superQueryJson: ''
}
},
formVisible: false,
exportBoxVisible: false,
@foreach(var item in Model.OptionsList)
{
@switch(item.jnpfKey)
{
case "collapse":
case "tab":
break;
default:
@if(item.IsProps)
{
@:@(@item.LowerName)Props:@(item.Props),
}
@:@item.Content
break;
}
}
}
},
computed: {
menuId() {
return this.$route.meta.modelId || ''
}
},
created() {
this.initData()
@foreach(var item in @Model.OptionsList)
{
@if(!item.IsStatic && (item.IsChildren || item.IsIndex))
{
@:this.get@(@item.LowerName)Options();
}
}
},
methods: {
@if(Model.IsUpload)
{
@:handelUpload(){
@:this.uploadBoxVisible = true
@:this.$nextTick(() => {
@:this.$refs.UploadBox.init("",'@(@Model.NameSpace)/@(@Model.ClassName)')
@:})
@:},
}
@if(Model.IsDetail)
{
@:goDetail(id){
@:this.detailVisible = true
@:this.$nextTick(() => {
@:this.$refs.Detail.init(id)
@:})
@:},
}
@if(Model.HasSuperQuery)
{
@:openSuperQuery() {
@:this.superQueryVisible = true
@:this.$nextTick(() => {
@:this.$refs.SuperQuery.init()
@:})
@:},
@:superQuery(queryJson) {
@:this.listQuery.superQueryJson = this.getSuperQueryJson(queryJson)
@:this.listQuery.currentPage = 1
@:this.initData()
@:},
@:getSuperQueryJson(queryJson){
@:if (!queryJson) return ''
@:let queryJsonObj=JSON.parse(queryJson)
@:let conditionJsonObj=JSON.parse(queryJsonObj.conditionJson)
@:let newConditionJsonObj=conditionJsonObj.map(o=>{
@:o.multiple=o.attr.multiple
@:delete o.attr
@:return o
@:})
@:queryJsonObj.conditionJson=newConditionJsonObj
@:return JSON.stringify(queryJsonObj)
@:},
}
@foreach(var item in @Model.OptionsList)
{
@if(!item.IsStatic && item.DictionaryType != null)
{
@:get@(@item.LowerName)Options(){
switch(@item.DataType)
{
case "dictionary":
@:getDictionaryDataSelector('@(@item.DictionaryType)').then(res => {
@:this.@(@item.LowerName)Options = res.data.list
break;
case "dynamic":
@:getDataInterfaceRes('@(@item.DictionaryType)').then(res => {
@:let data = res.data
@:this.@(@item.LowerName)Options = data
break;
}
@:});
@:},
}
}
@if(Model.IsSort)
{
@:sortChange({ column, prop, order }) {
@:this.listQuery.sort = order == 'ascending' ? 'asc' : 'desc'
@:this.listQuery.sidx = !order ? '' : prop
@:this.initData()
@:},
}
initData() {
this.listLoading = true;
let _query = {
...this.listQuery,
...this.query,
menuId : this.menuId,
};
let query = {}
for (let key in _query) {
if (Array.isArray(_query[key])) {
query[key] = _query[key].join()
} else {
query[key] = _query[key]
}
}
request({
url: `/api/@(@Model.NameSpace)/@(@Model.ClassName)/List`,
method: 'POST',
data: query
}).then(res => {
this.list = @(Model.HasPage ? "res.data.list" : "res.data").map(o =>({
...o,
rowEdit: false
}));
this.cacheList = JSON.parse(JSON.stringify(this.list))
@if(Model.HasPage)
{
@:this.total = res.data.pagination.total
}
this.listLoading = false
})
},
@if(Model.IsRemoveDel)
{
@:handleDel(id) {
@:this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
@:type: 'warning'
@:}).then(() => {
@:request({
@:url: `/api/@(@Model.NameSpace)/@(@Model.ClassName)/${id}`,
@:method: 'DELETE'
@:}).then(res => {
@:this.$message({
@:type: 'success',
@:message: res.msg,
@:onClose: () => {
@:this.initData()
@:}
@:});
@:})
@:}).catch(() => {
@:});
@:},
}
@if(Model.IsBatchRemoveDel)
{
@:handleSelectionChange(val) {
@:const res = val.map(item => item.@(@Model.PrimaryKey))
@:this.multipleSelection = res
@:},
@:handleBatchRemoveDel() {
@:if (!this.multipleSelection.length) {
@:this.$message({
@:type: 'error',
@:message: '请选择一条数据',
@:duration: 1500,
@:})
@:return
@:}
@:const ids = this.multipleSelection
@:this.$confirm('您确定要删除这些数据吗, 是否继续?', '提示', {
@:type: 'warning'
@:}).then(() => {
@:request({
@:url: `/api/@(@Model.NameSpace)/@(@Model.ClassName)/batchRemove`,
@:method: 'POST',
@:data: ids ,
@:}).then(res => {
@:this.$message({
@:type: 'success',
@:message: res.msg,
@:onClose: () => {
@:this.initData()
@:}
@:});
@:})
@:}).catch(() => { })
@:},
}
addOrUpdateHandle() {
let item = {
rowEdit: true,
@foreach(var children in Model.FormList)
{
@switch(children.jnpfKey)
{
case "checkbox":
case "cascader":
case "uploadImg":
case "uploadFz":
case "address":
case "comSelect":
@if(children.IsInlineEditor)
{
@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.IsInlineEditor)
{
@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.IsInlineEditor)
{
if(@children.DefaultValue == null || @children.DefaultValue.ToString() == "")
{
@:@(@children.LowerName):undefined,
}else{
@:@(@children.LowerName):@(@children.DefaultValue),
}
}
break;
case "switch":
@if(children.IsInlineEditor)
{
@:@(@children.LowerName):@(@children.DefaultValue ? "1" : "0"),
}
break;
default:
@if(children.IsInlineEditor)
{
if(@children.DefaultValue == null || @children.DefaultValue.ToString() == "")
{
@:@(@children.LowerName):undefined,
}else{
@:@(@children.LowerName):"@(@children.DefaultValue)",
}
}
break;
}
}
}
this.list.unshift(item)
},
@if(Model.IsDownload)
{
@:exportData() {
@:this.exportBoxVisible = true
@:this.$nextTick(() => {
@:this.$refs.ExportBox.init(this.columnList)
@:})
@:},
@:download(data) {
@:let query = {dataType:data.dataType, selectKey:data.selectKey.join(','), ...this.listQuery, ...this.query, menuId:this.menuId}
@:request({
@:url: `/api/@(@Model.NameSpace)/@(@Model.ClassName)/Actions/Export`,
@:method: 'GET',
@:data: query
@:}).then(res => {
@:if (!res.data.url) return
@:this.jnpf.downloadFile(res.data.url)
@:this.$refs.ExportBox.visible = false
@:this.exportBoxVisible = false
@:})
@:},
}
search() {
this.listQuery = {
currentPage: 1,
pageSize: @(@Model.PageSize),
sort: "@(@Model.Sort)",
sidx: "@(@Model.DefaultSidx)",
}
this.initData()
},
refresh(isrRefresh) {
this.formVisible = false
if (isrRefresh) this.reset()
},
reset() {
for (let key in this.query) {
this.query[key] = undefined
}
this.listQuery = {
currentPage: 1,
pageSize: @(@Model.PageSize),
sort: "@(@Model.Sort)",
sidx: "@(@Model.DefaultSidx)",
@if(Model.HasSuperQuery)
{
@:superQueryJson: this.listQuery.superQueryJson
}
}
this.initData()
},
cancelRowEdit(row, index) {
if (!row.id) return this.list.splice(index, 1)
row.rowEdit = false
let item = JSON.parse(JSON.stringify(this.cacheList[index]))
this.$set(this.list, index, item)
},
saveForRowEdit(row) {
if (!row.id) {
request({
url: '/api/@(@Model.NameSpace)/@(@Model.ClassName)',
method: 'post',
data: row
}).then((res) => {
this.$message({
message: res.msg,
type: 'success',
duration: 1000,
onClose: () => {
this.initData()
}
})
})
}else{
request({
url: '/api/@(@Model.NameSpace)/@(@Model.ClassName)/' + row.id,
method: 'PUT',
data: row
}).then((res) => {
this.$message({
message: res.msg,
type: 'success',
duration: 1000,
onClose: () => {
this.initData()
}
})
})
}
},
}
}
</script>
@{
void GenerateFormControls()
{
@foreach(var item in Model.FormAllContols)
{
@switch(item.jnpfKey)
{
@*栅格布局*@
case "row":
@{GenerateFormChildrenControls(item.Children,item.Gutter);}
break;
@*卡片*@
case "card":
@{GenerateFormChildrenControls(item.Children,item.Gutter);}
break;
@*折叠面板*@
case "collapse":
@foreach(var collapse in item.Children)
{
@{GenerateFormChildrenControls(collapse.Children,item.Gutter);}
}
break;
case "tab":
@foreach(var collapse in item.Children)
{
@{GenerateFormChildrenControls(collapse.Children,item.Gutter);}
}
break;
@*无法在行内编辑生成控件*@
case "uploadFz":
case "uploadImg":
case "colorPicker":
case "editor":
case "table":
case "divider":
case "groupTitle":
case "button":
case "link":
case "alert":
case "JNPFText":
break;
@*系统自动生成控件*@
case "createUser":
case "createTime":
case "modifyUser":
case "modifyTime":
case "currOrganize":
case "currPosition":
case "billRule":
@if(item.IsInlineEditor){
@:<el-table-column prop="@(@item.LowerName)" label="@(@item.Label)" width="@(@item.IndexWidth)" align="@(@item.IndexAlign)" @(@Model.UseColumnPermission ? "v-if=\"jnpf.hasP('" + item.Name + "')\" " : "")@(@item.IsSort ? "sortable='custom'":"")>
@:<template slot-scope="scope">
@:{{scope.row.@(@item.LowerName)_name}}
@:</template>
@:</el-table-column>
}
break;
@*其他控件*@
default:
@if(item.IsInlineEditor && item.IsStorage != 1){
@:<el-table-column prop="@(@item.LowerName)" label="@(@item.Label)" width="@(@item.IndexWidth)" align="@(@item.IndexAlign)" @(@Model.UseColumnPermission ? "v-if=\"jnpf.hasP('" + item.Name + "')\" " : "")@(@item.IsSort ? "sortable='custom'":"")>
@:<template slot-scope="scope">
@:<template v-if="scope.row.rowEdit">
@switch(item.jnpfKey)
{
case "checkbox":
case "radio":
@:<el-select @(@item.jnpfKey == "checkbox" ? "multiple " : "")@(@item.vModel)@(@item.Field)@(@item.Placeholder)@(@item.Clearable)@(@item.Readonly)@(@item.MainProps)@(@item.Required)@(@item.Disabled)@(@item.ShowWordLimit)@(@item.IsRange)@(@item.Style)@(@item.Type)@(@item.Format)@(@item.ValueFormat)@(@item.AutoSize)@(@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.AbleDepIds + @item.AblePosIds + @item.AbleUserIds + @item.AbleRoleIds + @item.AbleGroupIds : "")>
@:<el-option v-for="(item, index) in @(@item.LowerName)Options" :key="index" :label="item.@(@item.Props.label)" :value="item.@(@item.Props.value)" ></el-option>
@:</el-select>
break;
case "textarea":
@:<el-input @(@item.vModel)@(@item.Readonly)@(@item.Placeholder)@(@item.Clearable)@(@item.Disabled)@(@item.MaxLength)@(@item.Style)@(@item.ShowWordLimit)/>
break;
default:
@:<@(@item.Tag) @(@item.vModel)@(@item.Field)@(@item.Placeholder)@(@item.Clearable)@(@item.Readonly)@(@item.MainProps)@(@item.Disabled)@(@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.AbleDepIds + @item.AblePosIds + @item.AbleUserIds + @item.AbleRoleIds + @item.AbleGroupIds : "")>
@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 "comInput":
@if(item.Prepend != null)
{
@:<template slot="prepend">@(@item.Prepend)</template>
}
@if(item.Append != null)
{
@:<template slot="append">@(@item.Append)</template>
}
break;
}
@:</@(@item.Tag)>
break;
}
@:</template>
@:<template v-else>
@:{{scope.row.@(@item.LowerName)_name}}
@:</template>
@:</template>
@:</el-table-column>
}
break;
}
}
}
void GenerateFormChildrenControls(ICollection<FormControlDesignModel> childrenList, int gutter)
{
@foreach(var item in childrenList)
{
@switch(item.jnpfKey)
{
@*栅格布局*@
case "row":
@{GenerateFormChildrenControls(item.Children,gutter);}
break;
@*卡片*@
case "card":
@{GenerateFormChildrenControls(item.Children,gutter);}
break;
@*折叠面板*@
case "collapse":
@foreach(var collapse in item.Children)
{
@{GenerateFormChildrenControls(collapse.Children,gutter);}
}
break;
case "tab":
@foreach(var collapse in item.Children)
{
@{GenerateFormChildrenControls(collapse.Children,gutter);}
}
break;
@*无法在行内编辑控件*@
case "uploadFz":
case "uploadImg":
case "colorPicker":
case "editor":
case "table":
case "divider":
case "groupTitle":
case "button":
case "link":
case "alert":
case "JNPFText":
break;
@*系统自动生成控件*@
case "createUser":
case "createTime":
case "modifyUser":
case "modifyTime":
case "currOrganize":
case "currPosition":
case "billRule":
@if(item.IsInlineEditor){
@:<el-table-column prop="@(@item.LowerName)" label="@(@item.Label)" width="@(@item.IndexWidth)" align="@(@item.IndexAlign)" @(@Model.UseColumnPermission ? "v-if=\"jnpf.hasP('" + item.Name + "')\" " : "")@(@item.IsSort ? "sortable='custom'":"")>
@:<template slot-scope="scope">
@:{{scope.row.@(@item.LowerName)_name}}
@:</template>
@:</el-table-column>
}
break;
@*其他控件*@
default:
@if(item.IsInlineEditor && item.IsStorage != 1){
@:<el-table-column prop="@(@item.LowerName)" label="@(@item.Label)" width="@(@item.IndexWidth)" align="@(@item.IndexAlign)" @(@Model.UseColumnPermission ? "v-if=\"jnpf.hasP('" + item.Name + "')\" " : "")@(@item.IsSort ? "sortable='custom'":"")>
@:<template slot-scope="scope">
@:<template v-if="scope.row.rowEdit">
@switch(item.jnpfKey)
{
case "checkbox":
case "radio":
@:<el-select @(@item.jnpfKey == "checkbox" ? "multiple " : "")@(@item.vModel)@(@item.Field)@(@item.Placeholder)@(@item.Clearable)@(@item.Readonly)@(@item.MainProps)@(@item.Required)@(@item.Disabled)@(@item.ShowWordLimit)@(@item.IsRange)@(@item.Style)@(@item.Type)@(@item.Format)@(@item.ValueFormat)@(@item.AutoSize)@(@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.AbleDepIds + @item.AblePosIds + @item.AbleUserIds + @item.AbleRoleIds + @item.AbleGroupIds : "")>
@:<el-option v-for="(item, index) in @(@item.LowerName)Options" :key="index" :label="item.@(@item.Props.label)" :value="item.@(@item.Props.value)" ></el-option>
@:</el-select>
break;
case "textarea":
@:<el-input @(@item.vModel)@(@item.Readonly)@(@item.Placeholder)@(@item.Clearable)@(@item.Disabled)@(@item.MaxLength)@(@item.Style)@(@item.ShowWordLimit)/>
break;
default:
@:<@(@item.Tag) @(@item.vModel)@(@item.Field)@(@item.Placeholder)@(@item.Clearable)@(@item.Readonly)@(@item.MainProps)@(@item.Required)@(@item.Disabled)@(@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.AbleDepIds + @item.AblePosIds + @item.AbleUserIds + @item.AbleRoleIds + @item.AbleGroupIds : "")>
@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 "comInput":
@if(item.Prepend != null)
{
@:<template slot="prepend">@(@item.Prepend)</template>
}
@if(item.Append != null)
{
@:<template slot="append">@(@item.Append)</template>
}
break;
}
@:</@(@item.Tag)>
break;
}
@:</template>
@:<template v-else>
@:{{scope.row.@(@item.LowerName)_name}}
@:</template>
@:</template>
@:</el-table-column>
}
break;
}
}
}
}