803 lines
31 KiB
Plaintext
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;
|
|
}
|
|
}
|
|
}
|
|
} |