You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							2473 lines
						
					
					
						
							63 KiB
						
					
					
				
			
		
		
	
	
							2473 lines
						
					
					
						
							63 KiB
						
					
					
				@@master_page.html | 
						|
<link | 
						|
	href="css/page_table_list.css" | 
						|
	rel="stylesheet" | 
						|
/> | 
						|
<link | 
						|
	href="css/page_interface_manager.css" | 
						|
	rel="stylesheet" | 
						|
/> | 
						|
<script src="js/ace/src-min/ace.js"></script> | 
						|
<script src="js/ace/src-min/ext-language_tools.js"></script> | 
						|
<div | 
						|
	id="apibox" | 
						|
	class="card" | 
						|
> | 
						|
	<!--主列表搜索--> | 
						|
	<div class="search-bar"> | 
						|
		<form | 
						|
			id="frmSearach" | 
						|
			action="lyear_forms_elements.html" | 
						|
			method="post" | 
						|
			onsubmit="return false;" | 
						|
		> | 
						|
			<div class="form-group"> | 
						|
				<div class="row"> | 
						|
					<div class="col-md-1"> | 
						|
						<label class="form-control">数据库:</label> | 
						|
					</div> | 
						|
					<div class="col-md-2"> | 
						|
						<select | 
						|
							@change="changeDatabase" | 
						|
							v-model="databaseId" | 
						|
							id="selDatabase" | 
						|
							class="form-control" | 
						|
						> | 
						|
							<option | 
						|
								v-for="item in database" | 
						|
								:value="item.Id" | 
						|
							> | 
						|
								{{item.Name}} | 
						|
							</option> | 
						|
						</select> | 
						|
					</div> | 
						|
					<div class="col-md-2"> | 
						|
						<input | 
						|
							class="form-control" | 
						|
							type="text" | 
						|
							id="txtName" | 
						|
							name="example-text-input" | 
						|
							placeholder="接口名 或者 URL" | 
						|
						/> | 
						|
					</div> | 
						|
					<div class="col-md-2"> | 
						|
						<select | 
						|
							id="selGroupName" | 
						|
							class="form-control" | 
						|
						> | 
						|
							<option value="">==分组==</option> | 
						|
							<option v-for="item in groupList">{{item.GroupName}}</option> | 
						|
						</select> | 
						|
					</div> | 
						|
					<div class="col-md-2"> | 
						|
						<select | 
						|
							id="selInterfaceCategoryId" | 
						|
							class="form-control" | 
						|
						> | 
						|
							<option value="">==分类==</option> | 
						|
							<option | 
						|
								v-for="item in interfaceCategroyList" | 
						|
								:value="item.Id" | 
						|
							> | 
						|
								{{item.Name}} | 
						|
							</option> | 
						|
						</select> | 
						|
					</div> | 
						|
					<div class="col-md-3"> | 
						|
						<button | 
						|
							@click="onSearch()" | 
						|
							id="btnSearch" | 
						|
							class="btn btn-secondary" | 
						|
						> | 
						|
							<i class="mdi mdi-magnify"></i>搜索 | 
						|
						</button> | 
						|
						<button | 
						|
							onclick="frmSearach.reset()" | 
						|
							class="btn btn-close m-l-15" | 
						|
							type="submit" | 
						|
						> | 
						|
							清空 | 
						|
						</button> | 
						|
					</div> | 
						|
				</div> | 
						|
			</div> | 
						|
		</form> | 
						|
	</div> | 
						|
	<!--主表列表操作按钮--> | 
						|
	<div class="card-toolbar clearfix"> | 
						|
		<div class="toolbar-btn-action"> | 
						|
			<a | 
						|
				class="btn btn-primary m-r-5" | 
						|
				@click="openNext()" | 
						|
				href="#!" | 
						|
				><i class="mdi mdi-plus"></i> 新增</a | 
						|
			> | 
						|
			<a | 
						|
				class="btn btn-success m-r-10" | 
						|
				@click="openGenerateCode()" | 
						|
				data-toggle="tooltip" | 
						|
				data-original-title="根据实体生成文件" | 
						|
				href="#!" | 
						|
				><i class="mdi mdi-web"></i> 生成前端调用</a | 
						|
			> | 
						|
		</div> | 
						|
	</div> | 
						|
	<!--主列表--> | 
						|
	<div class="card-body"> | 
						|
		<div class="table-responsive"> | 
						|
			<div class="master-table-container"> | 
						|
				<table class="table table-bordered"> | 
						|
					<thead> | 
						|
						<tr v-if="data && data.Columns && data.Columns.length > 0"> | 
						|
							<th class="width30"> | 
						|
								<label class="lyear-checkbox checkbox-primary"> | 
						|
									<input | 
						|
										type="checkbox" | 
						|
										@change="selectAll" | 
						|
										id="check-all" | 
						|
									/><span></span> | 
						|
								</label> | 
						|
							</th> | 
						|
							<th v-for="column in data.Columns"> | 
						|
								{{column.ColumnDescription}} | 
						|
							</th> | 
						|
							<th>操作</th> | 
						|
						</tr> | 
						|
					</thead> | 
						|
					<tbody v-if="data &&data.Data"> | 
						|
						<tr | 
						|
							v-if="data.Columns && data.Columns.length > 0" | 
						|
							v-for="item in data.Data" | 
						|
						> | 
						|
							<td> | 
						|
								<label class="lyear-checkbox checkbox-primary"> | 
						|
									<input | 
						|
										type="checkbox" | 
						|
										name="ids[]" | 
						|
										v-model="selectedItems" | 
						|
										:alt="item.Id" | 
						|
										:value="item.Id" | 
						|
									/><span></span> | 
						|
								</label> | 
						|
							</td> | 
						|
							<td v-for="column in data.Columns"> | 
						|
								{{ item[column.PropertyName] }} | 
						|
							</td> | 
						|
 | 
						|
							<td class="table_opt"> | 
						|
								<button | 
						|
									data-toggle="modal" | 
						|
									@click="openEdit(item)" | 
						|
									class="btn btn-link" | 
						|
									type="button" | 
						|
								> | 
						|
									<i class="mdi mdi-lead-pencil"></i> 修改 | 
						|
								</button> | 
						|
								<button | 
						|
									data-toggle="modal" | 
						|
									@click="deleteAndConfirm(item)" | 
						|
									data-target="#divDelBox" | 
						|
									class="btn btn-link" | 
						|
									type="button" | 
						|
								> | 
						|
									<i class="mdi mdi-do-not-disturb"></i> 删除 | 
						|
								</button> | 
						|
							</td> | 
						|
						</tr> | 
						|
					</tbody> | 
						|
				</table> | 
						|
			</div> | 
						|
		</div> | 
						|
	</div> | 
						|
	<!--分页局部视图--> | 
						|
	@@page_control.html | 
						|
	<!--创建接口第一步:选择接口分类--> | 
						|
	<div | 
						|
		class="modal fade" | 
						|
		tabindex="-1" | 
						|
		role="dialog" | 
						|
		aria-labelledby="gridSystemModalLabel" | 
						|
		id="divBefore" | 
						|
		style="display: none" | 
						|
	> | 
						|
		<button | 
						|
			id="btnNext" | 
						|
			type="button" | 
						|
			class="btn btn-primary hidden" | 
						|
			data-toggle="modal" | 
						|
			data-target="#divBefore" | 
						|
		></button> | 
						|
		<div | 
						|
			class="modal-dialog" | 
						|
			role="document" | 
						|
		> | 
						|
			<div class="modal-content"> | 
						|
				<div class="modal-header"> | 
						|
					<button | 
						|
						type="button" | 
						|
						class="close" | 
						|
						data-dismiss="modal" | 
						|
						aria-label="Close" | 
						|
					> | 
						|
						<span aria-hidden="true">×</span> | 
						|
					</button> | 
						|
					<h4 | 
						|
						class="modal-title" | 
						|
						id="exampleModalLabel" | 
						|
					> | 
						|
						接口类型 | 
						|
					</h4> | 
						|
				</div> | 
						|
				<div class="modal-body"> | 
						|
					<form id="frmEdit"> | 
						|
						<input | 
						|
							type="hidden" | 
						|
							v-model="formData.Id" | 
						|
							name="Id" | 
						|
						/> | 
						|
						<div class="form-group"> | 
						|
							<label class="control-label">数据库</label> | 
						|
							<select | 
						|
								v-model="databaseId" | 
						|
								readonly="readonly" | 
						|
								id="selDataBaseId" | 
						|
								class="form-control" | 
						|
							> | 
						|
								<option | 
						|
									v-for="item in  database" | 
						|
									v-bind:value="item.Id" | 
						|
								> | 
						|
									{{item.Name}} | 
						|
								</option> | 
						|
							</select> | 
						|
							<label class="control-label">分类</label> | 
						|
							<select | 
						|
								v-model="currentActionType" | 
						|
								id="selTextGroup" | 
						|
								class="form-control" | 
						|
							> | 
						|
								<option | 
						|
									v-for="item in actionList" | 
						|
									:value="item" | 
						|
								> | 
						|
									{{item.TextGroup}} | 
						|
								</option> | 
						|
							</select> | 
						|
						</div> | 
						|
					</form> | 
						|
				</div> | 
						|
				<div class="modal-footer"> | 
						|
					<button | 
						|
						type="button" | 
						|
						id="btnNextClose" | 
						|
						class="btn btn-default" | 
						|
						data-dismiss="modal" | 
						|
					> | 
						|
						关闭 | 
						|
					</button> | 
						|
					<button | 
						|
						type="button" | 
						|
						@click="openAdd()" | 
						|
						class="btn btn-primary" | 
						|
					> | 
						|
						下一步 | 
						|
					</button> | 
						|
				</div> | 
						|
			</div> | 
						|
		</div> | 
						|
	</div> | 
						|
	<!--创建接口主窗体:填写接口详细信息--> | 
						|
	<div | 
						|
		id="divSave" | 
						|
		class="modal fade bs-example-modal-lg" | 
						|
		tabindex="-1" | 
						|
		role="dialog" | 
						|
		aria-labelledby="myLargeModalLabel" | 
						|
		style="display: none" | 
						|
	> | 
						|
		<button | 
						|
			id="btnSave" | 
						|
			type="button" | 
						|
			class="btn btn-primary hidden" | 
						|
			data-toggle="modal" | 
						|
			data-target="#divSave" | 
						|
		></button> | 
						|
		<div | 
						|
			class="modal-dialog modal-lg width1200" | 
						|
			role="document" | 
						|
		> | 
						|
			<div class="modal-content"> | 
						|
				<div class="modal-header"> | 
						|
					<button | 
						|
						type="button" | 
						|
						class="close" | 
						|
						data-dismiss="modal" | 
						|
						aria-label="Close" | 
						|
					> | 
						|
						<span aria-hidden="true">×</span> | 
						|
					</button> | 
						|
					<h4 | 
						|
						class="modal-title" | 
						|
						id="myLargeModalLabel" | 
						|
					> | 
						|
						{{title}} | 
						|
					</h4> | 
						|
				</div> | 
						|
 | 
						|
				<div class="modal-body"> | 
						|
					<div class="table-container"> | 
						|
						<div class="card"> | 
						|
							<ul class="nav nav-tabs page-tabs"> | 
						|
								<li | 
						|
									v-for="(item,index) in currentActionType.Items" | 
						|
									@click="interfaceListTabClick(index,item)" | 
						|
									:class="index==tabIndex?'active':''" | 
						|
								> | 
						|
									<a href="#!">{{item.Text}}</a> | 
						|
								</li> | 
						|
							</ul> | 
						|
							<div class="tab-content tabbox"> | 
						|
								<div class="tab-pane active"> | 
						|
									<form | 
						|
										id="frmSave" | 
						|
										action="#!" | 
						|
										method="post" | 
						|
										name="edit-form" | 
						|
										class="edit-form" | 
						|
									> | 
						|
										<input | 
						|
											v-model="editId" | 
						|
											type="hidden" | 
						|
											value="0" | 
						|
										/> | 
						|
										<div | 
						|
											v-for="item in currentActionTypeContext.FormElements" | 
						|
											class="form-group col-md-12" | 
						|
										> | 
						|
											<label v-if="item.ElementType!=5" | 
						|
												>{{item.Text}}<span | 
						|
													class="red" | 
						|
													v-if="item.IsRequired" | 
						|
													>*</span | 
						|
												></label | 
						|
											> | 
						|
											<div class="form-controls"> | 
						|
												<!--text--> | 
						|
												<template v-if="item.ElementType==0"> | 
						|
													<input | 
						|
														:name="item.Name" | 
						|
														:placeholder="item.Placeholder" | 
						|
														v-model="item.Value" | 
						|
														:validate-data="JSON.stringify(item)" | 
						|
														class="form-control" | 
						|
													/> | 
						|
												</template> | 
						|
												<!--table--> | 
						|
												<template v-if="item.ElementType==1"> | 
						|
													<div class="input-group"> | 
						|
														<input | 
						|
															:name="item.Name" | 
						|
															:placeholder="item.Placeholder" | 
						|
															v-model="item.Value" | 
						|
															:validate-data="JSON.stringify(item)" | 
						|
															type="text" | 
						|
															readonly="readonly" | 
						|
															class="form-control" | 
						|
														/> | 
						|
														<span class="input-group-btn"> | 
						|
															<button | 
						|
																@click="openImportEntity(item)" | 
						|
																class="btn btn-default" | 
						|
																type="button" | 
						|
															> | 
						|
																选择表 | 
						|
															</button> | 
						|
														</span> | 
						|
													</div> | 
						|
												</template> | 
						|
												<!--Columns--> | 
						|
												<template v-if="item.ElementType==3"> | 
						|
													<span | 
						|
														@click="openAddColumn(item)" | 
						|
														class="btn btn-primary m-tb-10" | 
						|
													> | 
						|
														<i class="mdi mdi-settings"></i> 配置主表列 | 
						|
													</span> | 
						|
													<span | 
						|
														@click="openAddComplexityColumn(item)" | 
						|
														class="btn btn-success m-tb-10" | 
						|
													> | 
						|
														<i class="mdi mdi-plus"></i> 追加复杂列 | 
						|
													</span> | 
						|
													<span | 
						|
														@click="openOrderByColumn(item)" | 
						|
														class="btn btn-purple m-tb-10" | 
						|
													> | 
						|
														<i class="mdi mdi-settings"></i> 配置排序 | 
						|
													</span> | 
						|
													<span | 
						|
														@click="openWhere(item)" | 
						|
														class="btn btn-warning m-tb-10" | 
						|
													> | 
						|
														<i class="mdi mdi-settings"></i> 配置条件 | 
						|
													</span> | 
						|
													<p> | 
						|
														<code | 
						|
															>排序:{{selectedOrderByString}} {{ | 
						|
															selectedOrderBys_EnableSort==false ? "": | 
						|
															"["+selectedOrderBys_EnableSort+"]" }} | 
						|
														</code> | 
						|
													</p> | 
						|
													<p | 
						|
														v-if="selectedWheres.filter(item => item.PropertyName).length>0" | 
						|
													> | 
						|
														<code | 
						|
															>条件:{{selectedWheres.filter(item => | 
						|
															item.PropertyName ).length}} | 
						|
														</code> | 
						|
													</p> | 
						|
													<p | 
						|
														v-if="selectedWheres.filter(item => item.PropertyName).length==0" | 
						|
													> | 
						|
														<code>条件:{{selectedWhereString}}</code> | 
						|
													</p> | 
						|
													<table class="table table-bordered m-b-0"> | 
						|
														<thead> | 
						|
															<tr> | 
						|
																<th>列名</th> | 
						|
																<th>显示名称</th> | 
						|
																<th>排序号</th> | 
						|
																<th>删除</th> | 
						|
															</tr> | 
						|
														</thead> | 
						|
														<tbody> | 
						|
															<tr v-for="item in selectedColumns"> | 
						|
																<td>{{item.PropertyName}}</td> | 
						|
																<td>{{item.DbColumnName}}</td> | 
						|
																<td>{{item.SortId}}</td> | 
						|
																<td> | 
						|
																	<button | 
						|
																		@click="deleteSelectedColumn(item)" | 
						|
																		type="button" | 
						|
																		class="btn btn-link" | 
						|
																	> | 
						|
																		<i class="mdi mdi-do-not-disturb"></i> 删除 | 
						|
																	</button> | 
						|
																</td> | 
						|
															</tr> | 
						|
															<tr v-for="item in selectedComplexityColumns"> | 
						|
																<td>{{item.PropertyName}}</td> | 
						|
																<td>{{item.DbColumnName}}</td> | 
						|
																<td>{{item.SortId}}</td> | 
						|
																<td> | 
						|
																	<button | 
						|
																		@click="deleteComplexitySelectedColumn(item)" | 
						|
																		type="button" | 
						|
																		class="btn btn-link" | 
						|
																	> | 
						|
																		<i class="mdi mdi-do-not-disturb"></i> 删除 | 
						|
																	</button> | 
						|
																</td> | 
						|
															</tr> | 
						|
														</tbody> | 
						|
													</table> | 
						|
													<input | 
						|
														:name="item.Name" | 
						|
														type="hidden" | 
						|
														:placeholder="item.Placeholder" | 
						|
														v-model="item.Value" | 
						|
														:validate-data="JSON.stringify(item)" | 
						|
														class="form-control" | 
						|
													/> | 
						|
												</template> | 
						|
												<!--Select--> | 
						|
												<template v-if="item.ElementType==4"> | 
						|
													<select | 
						|
														:name="item.Name" | 
						|
														v-model="item.Value" | 
						|
														:validate-data="JSON.stringify(item)" | 
						|
														class="form-control" | 
						|
													> | 
						|
														<option | 
						|
															v-if="item.SelectDataSource" | 
						|
															v-for="o in item.SelectDataSource" | 
						|
															:value="o.Key" | 
						|
														> | 
						|
															{{o.Value}} | 
						|
														</option> | 
						|
													</select> | 
						|
												</template> | 
						|
												<!--Hidden--> | 
						|
												<template v-if="item.ElementType==5"> | 
						|
													<input | 
						|
														:name="item.Name" | 
						|
														v-model="item.Value" | 
						|
														type="hidden" | 
						|
														:validate-data="JSON.stringify(item)" | 
						|
														class="form-control" | 
						|
													/> | 
						|
												</template> | 
						|
												<!--Page--> | 
						|
												<template v-if="item.ElementType==6"> | 
						|
													<label class="lyear-checkbox t_a_l" | 
						|
														><input | 
						|
															v-model="item.Value" | 
						|
															:name="item.Name" | 
						|
															value="true" | 
						|
															type="checkbox" | 
						|
														/> | 
						|
														<span class="p-l-15">是否分页</span></label | 
						|
													> | 
						|
												</template> | 
						|
												<!--SqlTest--> | 
						|
												<template v-if="item.ElementType==7"> | 
						|
													<p> | 
						|
														<code | 
						|
															>接口参数:{string:name} 等于 | 
						|
															@name=string类型的参数 | 
						|
															,C#类型有string、int、DateTime等</code | 
						|
														> | 
						|
													</p> | 
						|
													<p> | 
						|
														<code | 
						|
															>授权参数:{ClaimKey:OrgId} 等于 | 
						|
															你授权的Claim[OrgId]</code | 
						|
														> | 
						|
													</p> | 
						|
													<textarea | 
						|
														rows="10" | 
						|
														style="display: none" | 
						|
														:placeholder="item.Placeholder" | 
						|
														:name="item.Name" | 
						|
														v-model="item.Value" | 
						|
														class="form-control" | 
						|
													></textarea> | 
						|
													<div | 
						|
														id="divAceEditor" | 
						|
														style="width: 100%; height: 300px" | 
						|
													></div> | 
						|
												</template> | 
						|
												<!--DefaultValueColumns--> | 
						|
												<template v-if="item.ElementType==8"> | 
						|
													<span | 
						|
														class="btn btn-primary m-b-10" | 
						|
														@click="openDefaultValue" | 
						|
														><i class="mdi-account-settings-variant mdi"></i> | 
						|
														配置 | 
						|
													</span> | 
						|
													<textarea | 
						|
														rows="5" | 
						|
														class="form-control" | 
						|
														readonly="readonly" | 
						|
													> | 
						|
{{saveDefaultValueColumns}}</textarea | 
						|
													> | 
						|
												</template> | 
						|
												<!--UpdateColumns--> | 
						|
												<template v-if="item.ElementType==9"> | 
						|
													<input | 
						|
														v-model="item.Value" | 
						|
														type="hidden" | 
						|
														:name="item.Name" | 
						|
													/> | 
						|
													<select | 
						|
														id="selUpdateColumns" | 
						|
														@change="setUpdateColums(item)" | 
						|
														multiple | 
						|
														class="form-control" | 
						|
													> | 
						|
														<option v-for="childItem in updateColumns"> | 
						|
															{{childItem.PropertyName}} | 
						|
														</option> | 
						|
													</select> | 
						|
												</template> | 
						|
												<!--UpdateResultType--> | 
						|
												<template v-if="item.ElementType==10"> | 
						|
													<select | 
						|
														v-model="item.Value" | 
						|
														:name="item.Name" | 
						|
														class="form-control" | 
						|
													> | 
						|
														<option | 
						|
															selected | 
						|
															value="1" | 
						|
														> | 
						|
															默认 | 
						|
														</option> | 
						|
														<option value="2">受影响行数</option> | 
						|
													</select> | 
						|
												</template> | 
						|
												<!--InsertResultType--> | 
						|
												<template v-if="item.ElementType==12"> | 
						|
													<select | 
						|
														v-model="item.Value" | 
						|
														:name="item.Name" | 
						|
														class="form-control" | 
						|
													> | 
						|
														<option | 
						|
															selected | 
						|
															value="1" | 
						|
														> | 
						|
															默认 | 
						|
														</option> | 
						|
														<option value="4">自增列(只支持int)</option> | 
						|
													</select> | 
						|
												</template> | 
						|
												<!--Where--> | 
						|
												<template v-if="item.ElementType==11"> | 
						|
													<div | 
						|
														v-if="item.Placeholder" | 
						|
														class="alert-success p-10" | 
						|
													> | 
						|
														{{item.Placeholder}} | 
						|
													</div> | 
						|
													<span | 
						|
														@click="openMiniWhere(item)" | 
						|
														class="btn btn-primary m-tb-10" | 
						|
													> | 
						|
														<i class="mdi mdi-settings"></i> 配置条件 | 
						|
													</span> | 
						|
													<span | 
						|
														@click="showWherePreview" | 
						|
														class="btn btn-info" | 
						|
													> | 
						|
														<i class="mdi mdi-refresh"></i> 刷新预览 | 
						|
													</span> | 
						|
													<span | 
						|
														@click="clearMiniWhere(item)" | 
						|
														class="btn btn-danger m-r-10" | 
						|
													> | 
						|
														<i class="mdi mdi-do-not-disturb"></i> 清空条件 | 
						|
													</span> | 
						|
													<div>{{selectdWherePreviewString}}</div> | 
						|
												</template> | 
						|
											</div> | 
						|
										</div> | 
						|
									</form> | 
						|
								</div> | 
						|
							</div> | 
						|
						</div> | 
						|
					</div> | 
						|
				</div> | 
						|
				<div class="modal-footer"> | 
						|
					<button | 
						|
						type="button" | 
						|
						id="btnAddOrUpdateColse" | 
						|
						class="btn btn-default" | 
						|
						data-dismiss="modal" | 
						|
					> | 
						|
						关闭 | 
						|
					</button> | 
						|
					<button | 
						|
						type="button" | 
						|
						@click="addOrUpdateInterfaceList()" | 
						|
						class="btn btn-primary" | 
						|
					> | 
						|
						点击保存 | 
						|
					</button> | 
						|
				</div> | 
						|
			</div> | 
						|
		</div> | 
						|
	</div> | 
						|
	<!--创建接口子窗体:选择表--> | 
						|
	<div | 
						|
		id="divImportEntity" | 
						|
		class="modal fade bs-example-modal-lg" | 
						|
		tabindex="-1" | 
						|
		role="dialog" | 
						|
		aria-labelledby="myLargeModalLabel" | 
						|
		style="display: none" | 
						|
	> | 
						|
		<button | 
						|
			id="btnImportEntity" | 
						|
			type="button" | 
						|
			class="btn btn-primary hidden" | 
						|
			data-toggle="modal" | 
						|
			data-target="#divImportEntity" | 
						|
		></button> | 
						|
		<div | 
						|
			class="modal-dialog modal-lg border3CCC" | 
						|
			role="document" | 
						|
		> | 
						|
			<div class="modal-content"> | 
						|
				<div class="modal-header"> | 
						|
					<button | 
						|
						type="button" | 
						|
						class="close" | 
						|
						data-dismiss="modal" | 
						|
						aria-label="Close" | 
						|
					> | 
						|
						<span aria-hidden="true">×</span> | 
						|
					</button> | 
						|
					<h4 | 
						|
						class="modal-title" | 
						|
						id="myLargeModalLabel" | 
						|
					> | 
						|
						选择表 | 
						|
					</h4> | 
						|
				</div> | 
						|
				<div class="modal-body"> | 
						|
					<div class="input-group width250 m-b-10"> | 
						|
						<input | 
						|
							id="txtTableName" | 
						|
							type="text" | 
						|
							class="form-control" | 
						|
						/> | 
						|
						<span class="input-group-btn"> | 
						|
							<button | 
						|
								type="button" | 
						|
								@click="bindImportTables()" | 
						|
								class="btn btn-default" | 
						|
							> | 
						|
								<i class="mdi mdi-magnify"></i>搜索 | 
						|
							</button> | 
						|
							<button | 
						|
								type="button" | 
						|
								onclick="txtTableName.value=''" | 
						|
								class="btn btn-default" | 
						|
							> | 
						|
								<i class="mdi mdi-refresh"></i>清空 | 
						|
							</button> | 
						|
						</span> | 
						|
					</div> | 
						|
					<div class="master-table-container"> | 
						|
						<table class="table table-bordered"> | 
						|
							<thead> | 
						|
								<tr> | 
						|
									<th class="width30"> | 
						|
										<label class="lyear-checkbox checkbox-primary"> | 
						|
											<input | 
						|
												type="checkbox" | 
						|
												@change="selectAllTables" | 
						|
												id="check-all2" | 
						|
											/><span></span> | 
						|
										</label> | 
						|
									</th> | 
						|
									<th>表名</th> | 
						|
									<th>描述</th> | 
						|
								</tr> | 
						|
							</thead> | 
						|
							<tbody v-if="tables"> | 
						|
								<tr v-for="item in tables"> | 
						|
									<td> | 
						|
										<input | 
						|
											type="checkbox" | 
						|
											name="ids[]" | 
						|
											v-model="selectedTables" | 
						|
											:alt="item.Name" | 
						|
											:value="item" | 
						|
										/> | 
						|
									</td> | 
						|
									<td>{{ item.Name }}</td> | 
						|
									<td>{{ item.Description }}</td> | 
						|
								</tr> | 
						|
							</tbody> | 
						|
						</table> | 
						|
					</div> | 
						|
				</div> | 
						|
				<div class="modal-footer"> | 
						|
					<button | 
						|
						type="button" | 
						|
						id="btnImportEntityClose" | 
						|
						class="btn btn-default" | 
						|
						data-dismiss="modal" | 
						|
					> | 
						|
						关闭 | 
						|
					</button> | 
						|
					<button | 
						|
						type="button" | 
						|
						@click="importEntitySubmit()" | 
						|
						class="btn btn-primary" | 
						|
					> | 
						|
						确定 | 
						|
					</button> | 
						|
				</div> | 
						|
			</div> | 
						|
		</div> | 
						|
	</div> | 
						|
	<!--创建接口子窗体:添加简单列--> | 
						|
	<div | 
						|
		class="modal fade" | 
						|
		tabindex="-1" | 
						|
		role="dialog" | 
						|
		aria-labelledby="gridSystemModalLabel" | 
						|
		id="divAddColumns" | 
						|
		style="display: none" | 
						|
	> | 
						|
		<button | 
						|
			id="btnDivAddColumns" | 
						|
			type="button" | 
						|
			class="btn btn-primary hidden" | 
						|
			data-toggle="modal" | 
						|
			data-target="#divAddColumns" | 
						|
		></button> | 
						|
		<div | 
						|
			class="modal-dialog width800 border3CCC" | 
						|
			role="document" | 
						|
		> | 
						|
			<div class="modal-content"> | 
						|
				<div class="modal-header"> | 
						|
					<button | 
						|
						type="button" | 
						|
						class="close" | 
						|
						data-dismiss="modal" | 
						|
						aria-label="Close" | 
						|
					> | 
						|
						<span aria-hidden="true">×</span> | 
						|
					</button> | 
						|
					<h4 | 
						|
						class="modal-title" | 
						|
						id="exampleModalLabel" | 
						|
					> | 
						|
						选择列 | 
						|
					</h4> | 
						|
				</div> | 
						|
				<div class="modal-body"> | 
						|
					<table class="table table-bordered"> | 
						|
						<thead> | 
						|
							<tr> | 
						|
								<th> | 
						|
									<input | 
						|
										@change="selectAllColumns" | 
						|
										type="checkbox" | 
						|
									/> | 
						|
								</th> | 
						|
								<th>列名</th> | 
						|
								<th>显示名称</th> | 
						|
								<th>排序号</th> | 
						|
							</tr> | 
						|
						</thead> | 
						|
						<tbody> | 
						|
							<tr v-for="item in columns"> | 
						|
								<th scope="row"> | 
						|
									<input | 
						|
										name="columnIds[]" | 
						|
										v-model="selectColumns" | 
						|
										:alt="item.Id" | 
						|
										:value="item.Id" | 
						|
										type="checkbox" | 
						|
									/> | 
						|
								</th> | 
						|
								<td>{{item.PropertyName}}</td> | 
						|
								<td> | 
						|
									<input | 
						|
										v-model="item.DbColumnName" | 
						|
										class="form-control" | 
						|
									/> | 
						|
								</td> | 
						|
								<td> | 
						|
									<input | 
						|
										v-model="item.SortId" | 
						|
										onchange="tools.ensureNumeric(this)" | 
						|
										class="form-control" | 
						|
									/> | 
						|
								</td> | 
						|
							</tr> | 
						|
						</tbody> | 
						|
					</table> | 
						|
				</div> | 
						|
				<div class="modal-footer"> | 
						|
					<button | 
						|
						type="button" | 
						|
						id="btnCloseAddColumns" | 
						|
						class="btn btn-default" | 
						|
						data-dismiss="modal" | 
						|
					> | 
						|
						关闭 | 
						|
					</button> | 
						|
					<button | 
						|
						type="button" | 
						|
						@click="saveColumns()" | 
						|
						class="btn btn-primary" | 
						|
					> | 
						|
						确定 | 
						|
					</button> | 
						|
				</div> | 
						|
			</div> | 
						|
		</div> | 
						|
	</div> | 
						|
	<!--创建接口子窗体:追加复杂列--> | 
						|
	<div | 
						|
		class="modal fade bs-example-modal-lg" | 
						|
		tabindex="-1" | 
						|
		role="dialog" | 
						|
		aria-labelledby="gridSystemModalLabel" | 
						|
		id="divAddComplexityColumns" | 
						|
		style="display: none" | 
						|
	> | 
						|
		<button | 
						|
			id="btnAddComplexityColumns" | 
						|
			type="button" | 
						|
			class="btn btn-primary hidden" | 
						|
			data-toggle="modal" | 
						|
			data-target="#divAddComplexityColumns" | 
						|
		></button> | 
						|
		<div | 
						|
			class="modal-dialog width800 border3CCC" | 
						|
			role="document" | 
						|
		> | 
						|
			<div class="modal-content"> | 
						|
				<div class="modal-header"> | 
						|
					<button | 
						|
						type="button" | 
						|
						class="close" | 
						|
						data-dismiss="modal" | 
						|
						aria-label="Close" | 
						|
					> | 
						|
						<span aria-hidden="true">×</span> | 
						|
					</button> | 
						|
					<h4 | 
						|
						class="modal-title" | 
						|
						id="exampleModalLabel" | 
						|
					> | 
						|
						追加列 | 
						|
					</h4> | 
						|
				</div> | 
						|
				<div class="modal-body"> | 
						|
					<div class="card p-b-0 m-b-0"> | 
						|
						<ul class="nav nav-tabs page-tabs"> | 
						|
							<li | 
						|
								id="liComplexityColumns" | 
						|
								class="active" | 
						|
								@click="tabClickComplexityColumns(1)" | 
						|
							> | 
						|
								<a href="#!">联表字段</a> | 
						|
							</li> | 
						|
							<li> | 
						|
								<a | 
						|
									href="#!" | 
						|
									@click="tabClickComplexityColumns(2)" | 
						|
									>函数字段</a | 
						|
								> | 
						|
							</li> | 
						|
							<li> | 
						|
								<a | 
						|
									href="#!" | 
						|
									@click="tabClickComplexityColumns(3)" | 
						|
									>导航对象</a | 
						|
								> | 
						|
							</li> | 
						|
							<li> | 
						|
								<a | 
						|
									href="#!" | 
						|
									@click="tabClickComplexityColumns(4)" | 
						|
									>更多开发中</a | 
						|
								> | 
						|
							</li> | 
						|
						</ul> | 
						|
					</div> | 
						|
					<div class="tab-content tabbox"> | 
						|
						<div class="tab-pane active"> | 
						|
							<div class="form-group"> | 
						|
								<label | 
						|
									>主表关联字段 (一般是外键) <span class="red">*</span></label | 
						|
								> | 
						|
								<select | 
						|
									v-model="copcol_MasterField" | 
						|
									name="MasterField" | 
						|
									class="form-control" | 
						|
								> | 
						|
									<option | 
						|
										v-if="columns&&columns.length>0" | 
						|
										v-for="item in columns" | 
						|
									> | 
						|
										{{item.PropertyName}} | 
						|
									</option> | 
						|
								</select> | 
						|
							</div> | 
						|
							<div class="form-group"> | 
						|
								<label>关联的表 <span class="red">*</span></label> | 
						|
								<input | 
						|
									v-model="copcol_JoinTable" | 
						|
									@change="changeJoinTable" | 
						|
									class="form-control" | 
						|
									list="browsers" | 
						|
									name="joinTable" | 
						|
								/> | 
						|
								<datalist id="browsers"> | 
						|
									<option | 
						|
										v-if="tables&&tables.length>0" | 
						|
										v-for="item in tables" | 
						|
										:value="item.Name" | 
						|
									> | 
						|
										{{item.Name}} | 
						|
									</option> | 
						|
								</datalist> | 
						|
								<button | 
						|
									class="btn btn-xs btn-primary removedatalist" | 
						|
									@click="clearJoinTable" | 
						|
								> | 
						|
									<i class="mdi mdi-do-not-disturb"></i>删除选定项 | 
						|
								</button> | 
						|
							</div> | 
						|
							<div class="form-group"> | 
						|
								<label>关联方式<span class="red">*</span></label> | 
						|
								<select | 
						|
									v-model="copcol_joinType" | 
						|
									name="joinType" | 
						|
									class="form-control" | 
						|
								> | 
						|
									<option value="LeftJoin">左链接 [存在相同关联会重复]</option> | 
						|
									<option value="InnerJoin"> | 
						|
										内链接 [存在相同关联会重复+子表不存在主表也不显示] | 
						|
									</option> | 
						|
									<option value="SubqueryJoin">子查询 [不会重复]</option> | 
						|
								</select> | 
						|
							</div> | 
						|
							<div class="form-group"> | 
						|
								<label>关联字段(一般主键) <span class="red">*</span></label> | 
						|
								<select | 
						|
									v-model="copcol_joinField" | 
						|
									name="joinField" | 
						|
									class="form-control" | 
						|
								> | 
						|
									<option | 
						|
										v-if="joinColumns&&joinColumns.length>0" | 
						|
										v-for="item in joinColumns" | 
						|
									> | 
						|
										{{item.PropertyName}} | 
						|
									</option> | 
						|
								</select> | 
						|
							</div> | 
						|
							<div class="form-group"> | 
						|
								<label | 
						|
									>关联显示字段 (一般是Name) <span class="red">*</span></label | 
						|
								> | 
						|
								<select | 
						|
									v-model="copcol_ShowFields" | 
						|
									multiple | 
						|
									@change="changeShowField" | 
						|
									name="joinField" | 
						|
									class="form-control" | 
						|
								> | 
						|
									<option | 
						|
										v-if="joinColumns&&joinColumns.length>0" | 
						|
										v-for="item in joinColumns" | 
						|
									> | 
						|
										{{item.PropertyName}} | 
						|
									</option> | 
						|
								</select> | 
						|
								<input | 
						|
									class="form-control" | 
						|
									readonly="readonly" | 
						|
									v-model="copcol_ShowField" | 
						|
								/> | 
						|
							</div> | 
						|
							<div class="form-group"> | 
						|
								<label>关联显示字段别名(AS 名称)</label> | 
						|
								<input | 
						|
									v-model="copcol_Name" | 
						|
									name="Name" | 
						|
									placeholder="默认:关联显示字段" | 
						|
									class="form-control" | 
						|
								/> | 
						|
							</div> | 
						|
							<div class="form-group"> | 
						|
								<label>排序号</label> | 
						|
								<input | 
						|
									v-model="copcol_SortId" | 
						|
									onchange="tools.ensureNumeric(this)" | 
						|
									name="Sort" | 
						|
									class="form-control" | 
						|
								/> | 
						|
							</div> | 
						|
						</div> | 
						|
						<div class="tab-pane"> | 
						|
							<div class="form-group">开发中</div> | 
						|
						</div> | 
						|
						<div class="tab-pane"> | 
						|
							<div class="form-group">开发中..</div> | 
						|
						</div> | 
						|
						<div class="tab-pane"> | 
						|
							<div class="form-group">开发中..</div> | 
						|
						</div> | 
						|
					</div> | 
						|
				</div> | 
						|
				<div class="modal-footer"> | 
						|
					<button | 
						|
						type="button" | 
						|
						id="btnCloseAddComplexityColumns" | 
						|
						class="btn btn-default" | 
						|
						data-dismiss="modal" | 
						|
					> | 
						|
						关闭 | 
						|
					</button> | 
						|
					<button | 
						|
						type="button" | 
						|
						@click="saveComplexityColumns" | 
						|
						class="btn btn-primary" | 
						|
					> | 
						|
						确定 | 
						|
					</button> | 
						|
				</div> | 
						|
			</div> | 
						|
		</div> | 
						|
	</div> | 
						|
	<!--创建接口子窗体:添加排序--> | 
						|
	<div | 
						|
		class="modal fade bs-example-modal-lg" | 
						|
		tabindex="-1" | 
						|
		role="dialog" | 
						|
		aria-labelledby="gridSystemModalLabel" | 
						|
		id="divAddOrderBy" | 
						|
		style="display: none" | 
						|
	> | 
						|
		<button | 
						|
			id="btnAddOrderBy" | 
						|
			type="button" | 
						|
			class="btn btn-primary hidden" | 
						|
			data-toggle="modal" | 
						|
			data-target="#divAddOrderBy" | 
						|
		></button> | 
						|
		<div | 
						|
			class="modal-dialog width800 border3CCC" | 
						|
			role="document" | 
						|
		> | 
						|
			<div class="modal-content"> | 
						|
				<div class="modal-header"> | 
						|
					<button | 
						|
						type="button" | 
						|
						class="close" | 
						|
						data-dismiss="modal" | 
						|
						aria-label="Close" | 
						|
					> | 
						|
						<span aria-hidden="true">×</span> | 
						|
					</button> | 
						|
					<h4 | 
						|
						class="modal-title" | 
						|
						id="exampleModalLabel" | 
						|
					> | 
						|
						添加排序 | 
						|
					</h4> | 
						|
				</div> | 
						|
				<div class="modal-body"> | 
						|
					<div class="card-body tabbox"> | 
						|
						<table class="table table-bordered"> | 
						|
							<thead> | 
						|
								<tr> | 
						|
									<th>列名</th> | 
						|
									<th>排序方式</th> | 
						|
									<th>排序号</th> | 
						|
								</tr> | 
						|
							</thead> | 
						|
							<tbody> | 
						|
								<tr v-for="item in selectedOrderBys"> | 
						|
									<td> | 
						|
										{{item.Name}}<input | 
						|
											type="hidden" | 
						|
											v-model="item.Name" | 
						|
										/> | 
						|
									</td> | 
						|
									<td> | 
						|
										<select | 
						|
											v-model="item.OrderByType" | 
						|
											class="form-control" | 
						|
										> | 
						|
											<option></option> | 
						|
											<option value="ASC">正序</option> | 
						|
											<option value="DESC">倒序</option> | 
						|
										</select> | 
						|
									</td> | 
						|
									<td> | 
						|
										<input | 
						|
											v-model="item.SortId" | 
						|
											onchange="tools.ensureNumeric(this)" | 
						|
											class="form-control" | 
						|
										/> | 
						|
									</td> | 
						|
								</tr> | 
						|
							</tbody> | 
						|
						</table> | 
						|
						<div> | 
						|
							<div> | 
						|
								<p class="example-box"> | 
						|
									<label class="lyear-checkbox"> | 
						|
										<input | 
						|
											v-model="selectedOrderBys_EnableSort" | 
						|
											type="checkbox" | 
						|
										/> | 
						|
										<span class="p-l-15">允许URL覆盖上面排序</span> | 
						|
									</label> | 
						|
								</p> | 
						|
								<p> | 
						|
									<code>参数OrderByName生效:值为上面列名或者为空</code> | 
						|
								</p> | 
						|
								<p> | 
						|
									<code>参数OrderByType生效:值为ASC或者DESC</code> | 
						|
								</p> | 
						|
							</div> | 
						|
						</div> | 
						|
					</div> | 
						|
				</div> | 
						|
				<div class="modal-footer"> | 
						|
					<button | 
						|
						type="button" | 
						|
						id="btnCloseAddOrderBy" | 
						|
						class="btn btn-default" | 
						|
						data-dismiss="modal" | 
						|
					> | 
						|
						关闭 | 
						|
					</button> | 
						|
					<button | 
						|
						type="button" | 
						|
						@click="saveBtnOrderBy" | 
						|
						class="btn btn-primary" | 
						|
					> | 
						|
						确定 | 
						|
					</button> | 
						|
				</div> | 
						|
			</div> | 
						|
		</div> | 
						|
	</div> | 
						|
	<!--创建接口子窗体:添加条件--> | 
						|
	<div | 
						|
		class="modal fade bs-example-modal-lg" | 
						|
		tabindex="-1" | 
						|
		role="dialog" | 
						|
		aria-labelledby="gridSystemModalLabel" | 
						|
		id="divAddWhere" | 
						|
		style="display: none" | 
						|
	> | 
						|
		<button | 
						|
			id="btnAddWhere" | 
						|
			type="button" | 
						|
			class="btn btn-primary hidden" | 
						|
			data-toggle="modal" | 
						|
			data-target="#divAddWhere" | 
						|
		></button> | 
						|
		<div | 
						|
			class="modal-dialog width1000 border3CCC" | 
						|
			role="document" | 
						|
		> | 
						|
			<div class="modal-content"> | 
						|
				<div class="modal-header"> | 
						|
					<button | 
						|
						type="button" | 
						|
						class="close" | 
						|
						data-dismiss="modal" | 
						|
						aria-label="Close" | 
						|
					> | 
						|
						<span aria-hidden="true">×</span> | 
						|
					</button> | 
						|
					<h4 | 
						|
						class="modal-title" | 
						|
						id="exampleModalLabel" | 
						|
					> | 
						|
						添加条件 | 
						|
					</h4> | 
						|
				</div> | 
						|
				<div class="modal-body"> | 
						|
					<div class="card-body tabbox"> | 
						|
						<table class="table table-bordered"> | 
						|
							<thead> | 
						|
								<tr> | 
						|
									<th class="w-15">条件编号</th> | 
						|
									<th class="w-15">条件列</th> | 
						|
									<th class="w-15">条件关系</th> | 
						|
									<th>条件值</th> | 
						|
									<th class="w-20">操作</th> | 
						|
								</tr> | 
						|
							</thead> | 
						|
							<tbody> | 
						|
								<tr | 
						|
									v-for="(item, index) in selectedWheres" | 
						|
									:key="item.Id" | 
						|
								> | 
						|
									<td>{{item.Id}}</td> | 
						|
									<td> | 
						|
										<select | 
						|
											v-model="item.PropertyName" | 
						|
											class="form-control" | 
						|
										> | 
						|
											<option></option> | 
						|
											<option v-for="item in selectedColumns"> | 
						|
												{{item.PropertyName}} | 
						|
											</option> | 
						|
											<option v-for="item in selectedComplexityColumns"> | 
						|
												{{item.DbColumnName}} | 
						|
											</option> | 
						|
										</select> | 
						|
									</td> | 
						|
									<td> | 
						|
										<select | 
						|
											v-model="item.WhereType" | 
						|
											class="form-control" | 
						|
										> | 
						|
											<option></option> | 
						|
											<option v-for="item in whereTypeList"> | 
						|
												{{item.Key}} | 
						|
											</option> | 
						|
										</select> | 
						|
									</td> | 
						|
									<td> | 
						|
										<div class="row"> | 
						|
											<div class="col-md-6"> | 
						|
												<select | 
						|
													v-model="item.ValueType" | 
						|
													id="selectOption" | 
						|
													class="form-control" | 
						|
												> | 
						|
													<option value="0">固定值</option> | 
						|
													<option value="1">参数名</option> | 
						|
													<option class="2">ClaimKey</option> | 
						|
												</select> | 
						|
											</div> | 
						|
											<div class="col-md-6"> | 
						|
												<input | 
						|
													v-model="item.Value" | 
						|
													id="inputValue" | 
						|
													class="form-control" | 
						|
													type="text" | 
						|
												/> | 
						|
											</div> | 
						|
										</div> | 
						|
									</td> | 
						|
									<td> | 
						|
										<span | 
						|
											class="pointer m-r-10" | 
						|
											@click="addWhereItem(selectedWheres[selectedWheres.length - 1].Id)" | 
						|
											><i class="mdi mdi-plus"></i> 添加</span | 
						|
										> | 
						|
										<span | 
						|
											class="pointer" | 
						|
											@click="deleteWhereItem(item.Id)" | 
						|
											><i class="mdi mdi-window-close"></i> 删除</span | 
						|
										> | 
						|
									</td> | 
						|
								</tr> | 
						|
							</tbody> | 
						|
						</table> | 
						|
						<div class="form-group"> | 
						|
							<p><code>条件关系:</code></p> | 
						|
							<select | 
						|
								v-model="selectedWheresConditionalRelation" | 
						|
								@change="showWherePreview" | 
						|
								class="form-control" | 
						|
							> | 
						|
								<option value="And">And:并且-带OR参数NULL</option> | 
						|
								<option value="AndAll">AndAll:并且</option> | 
						|
								<option value="Or">Or:或者-带OR参数NULL</option> | 
						|
								<option value="OrAll">OrAll: 或者</option> | 
						|
								<option value="Custom">Custom :自定义-带OR参数NULL</option> | 
						|
								<option value="CustomAll">CustomAll:自定义</option> | 
						|
							</select> | 
						|
						</div> | 
						|
						<div | 
						|
							v-if="selectedWheresConditionalRelation=='Custom'||selectedWheresConditionalRelation=='CustomAll'" | 
						|
							class="form-group" | 
						|
						> | 
						|
							<textarea | 
						|
								rows="5" | 
						|
								v-model="selectedWhereRelationTemplate" | 
						|
								class="form-control" | 
						|
							> | 
						|
							</textarea> | 
						|
							<p> | 
						|
								<code>{1}表示编号为1的条件,{2}表示编号为2的条件 </code> | 
						|
							</p> | 
						|
						</div> | 
						|
						<div class="form-group"> | 
						|
							<p><code>预览:</code></p> | 
						|
							<p style="white-space: pre-line">{{selectdWherePreviewString}}</p> | 
						|
							<button | 
						|
								@click="showWherePreview" | 
						|
								class="btn btn-info" | 
						|
							> | 
						|
								<i class="mdi mdi-refresh"></i> 刷新结果 | 
						|
							</button> | 
						|
						</div> | 
						|
					</div> | 
						|
					<div class="modal-footer"> | 
						|
						<button | 
						|
							type="button" | 
						|
							id="btnCloseAddWhere" | 
						|
							class="btn btn-default" | 
						|
							data-dismiss="modal" | 
						|
						> | 
						|
							关闭 | 
						|
						</button> | 
						|
						<button | 
						|
							type="button" | 
						|
							@click="saveBtnWhere" | 
						|
							class="btn btn-primary" | 
						|
						> | 
						|
							确定 | 
						|
						</button> | 
						|
					</div> | 
						|
				</div> | 
						|
			</div> | 
						|
		</div> | 
						|
	</div> | 
						|
	<!--创建接口子窗体:默认值--> | 
						|
	<div | 
						|
		class="modal fade bs-example-modal-lg" | 
						|
		tabindex="-1" | 
						|
		role="dialog" | 
						|
		aria-labelledby="gridSystemModalLabel" | 
						|
		id="divDefaultValue" | 
						|
		style="display: none" | 
						|
	> | 
						|
		<button | 
						|
			id="btnDafeultValue" | 
						|
			type="button" | 
						|
			class="btn btn-primary hidden" | 
						|
			data-toggle="modal" | 
						|
			data-target="#divDefaultValue" | 
						|
		></button> | 
						|
		<div | 
						|
			class="modal-dialog width800 border3CCC" | 
						|
			role="document" | 
						|
		> | 
						|
			<div class="modal-content"> | 
						|
				<div class="modal-header"> | 
						|
					<button | 
						|
						type="button" | 
						|
						class="close" | 
						|
						data-dismiss="modal" | 
						|
						aria-label="Close" | 
						|
					> | 
						|
						<span aria-hidden="true">×</span> | 
						|
					</button> | 
						|
					<h4 | 
						|
						class="modal-title" | 
						|
						id="exampleModalLabel" | 
						|
					> | 
						|
						配置列默认值 | 
						|
					</h4> | 
						|
				</div> | 
						|
				<div class="modal-body"> | 
						|
					<div class="card-body tabbox"> | 
						|
						<table class="table table-bordered"> | 
						|
							<thead> | 
						|
								<tr> | 
						|
									<th>列名</th> | 
						|
									<th width="300">默认值类型</th> | 
						|
									<th width="200">值</th> | 
						|
								</tr> | 
						|
							</thead> | 
						|
							<tbody> | 
						|
								<tr | 
						|
									v-if="selectDefaultValueColumns&&selectDefaultValueColumns.length>0" | 
						|
									v-for="x in  selectDefaultValueColumns" | 
						|
								> | 
						|
									<td>{{x.PropertyName}}</td> | 
						|
									<td> | 
						|
										<select | 
						|
											v-model="x.Type" | 
						|
											class="form-control" | 
						|
										> | 
						|
											<option value="0">无</option> | 
						|
											<option value="1">固定值</option> | 
						|
											<option value="2"> | 
						|
												默认值(int等于0,空字符串等于空等) | 
						|
											</option> | 
						|
											<option value="3">当前时间</option> | 
						|
											<option value="4">ClaimKey</option> | 
						|
										</select> | 
						|
									</td> | 
						|
									<td> | 
						|
										<input | 
						|
											v-model="x.Value" | 
						|
											:class="[x.Type != 1&&x.Type != 4 ? 'hidden' : '', 'form-control'].join(' ')" | 
						|
										/> | 
						|
									</td> | 
						|
								</tr> | 
						|
							</tbody> | 
						|
						</table> | 
						|
					</div> | 
						|
				</div> | 
						|
				<div class="modal-footer"> | 
						|
					<button | 
						|
						type="button" | 
						|
						id="btnDafeultValueClose" | 
						|
						class="btn btn-default" | 
						|
						data-dismiss="modal" | 
						|
					> | 
						|
						关闭 | 
						|
					</button> | 
						|
					<button | 
						|
						type="button" | 
						|
						@click="saveDefaultValue" | 
						|
						class="btn btn-primary" | 
						|
					> | 
						|
						确定 | 
						|
					</button> | 
						|
				</div> | 
						|
			</div> | 
						|
		</div> | 
						|
	</div> | 
						|
</div> | 
						|
<script> | 
						|
	var vueObj = new Vue({ | 
						|
		el: '#apibox', | 
						|
		data: { | 
						|
			data: null, | 
						|
			error: null, | 
						|
			addTitle: '添加接口', | 
						|
			editTitle: '修改接口', | 
						|
			title: '', | 
						|
			tabIndex: 0, | 
						|
			formData: {}, | 
						|
			selectedItems: [], | 
						|
			groupList: [], | 
						|
			whereTypeList: [], | 
						|
			interfaceCategroyList: [], | 
						|
			actionList: [], | 
						|
			currentActionType: [], | 
						|
			currentActionTypeContext: [], | 
						|
			tables: [], | 
						|
			selectedTables: [], | 
						|
			databaseId: 0, | 
						|
			database: [], | 
						|
			editId: 0, | 
						|
			columns: [], | 
						|
			joinColumns: [], | 
						|
			selectColumns: [], | 
						|
			selectColumnsTabIndex: 1, | 
						|
			selectedColumns: [], | 
						|
			selectedOrderBys: [], | 
						|
			selectedOrderByString: '-', | 
						|
			selectedOrderBys_EnableSort: false, | 
						|
			selectedComplexityColumns: [], | 
						|
			selectedWhereString: '-', | 
						|
			selectedWheres: [], | 
						|
			selectedWhereRelationTemplate: '( {1} and {2} ) ', | 
						|
			selectedWheresConditionalRelation: 'AND', | 
						|
			selectdWherePreviewString: null, | 
						|
			selectDefaultValueColumns: [], | 
						|
			saveDefaultValueColumns: [], | 
						|
			//ComplexityColumn | 
						|
			copcol_JoinTable: null, | 
						|
			copcol_MasterField: null, | 
						|
			copcol_joinType: null, | 
						|
			copcol_joinField: null, | 
						|
			copcol_SortId: null, | 
						|
			copcol_Name: null, | 
						|
			copcol_ShowField: null, | 
						|
			copcol_ShowFields: [], | 
						|
			//update | 
						|
			updateColumns: [], | 
						|
		}, | 
						|
		mounted() { | 
						|
			this.fetchData('') | 
						|
			this.bindGroupListSelect() | 
						|
			this.bindInterfaceCategroySelect() | 
						|
			this.bindActionLists() | 
						|
			this.bindDatabaseSelect() | 
						|
			this.bindWhereType() | 
						|
		}, | 
						|
		methods: { | 
						|
			/* | 
						|
               主列表逻辑 | 
						|
            */ | 
						|
			fetchData(append) { | 
						|
				var url = | 
						|
					'/PrivateReZeroRoute/100003/GetDynamicInterfacePageList' + append | 
						|
				axios | 
						|
					.get(url, jwHeader) | 
						|
					.then(response => { | 
						|
						this.data = response.data | 
						|
						this.error = null | 
						|
					}) | 
						|
					.catch(error => { | 
						|
						this.error = error.message | 
						|
						this.data = null | 
						|
					}) | 
						|
			}, | 
						|
			onSearch: function (page) { | 
						|
				var urlParameters = | 
						|
					'?' + | 
						|
					tools.objectToQueryString({ | 
						|
						__pageNumber: page, | 
						|
						__pageSize: tools.getValue('selPageSize'), | 
						|
						Name: txtName.value, | 
						|
						GroupName: selGroupName.value, | 
						|
						DataBaseId: selDatabase.value, | 
						|
						InterfaceCategoryId: selInterfaceCategoryId.value, | 
						|
					}) | 
						|
				this.fetchData(urlParameters) | 
						|
			}, | 
						|
			changeDatabase: function () { | 
						|
				this.onSearch(1) | 
						|
			}, | 
						|
			selectAll(event) { | 
						|
				if (event.target.checked) { | 
						|
					// 全选 | 
						|
					this.selectedItems = this.data.Data.map(item => item.Id) | 
						|
				} else { | 
						|
					// 全不选 | 
						|
					this.selectedItems = [] | 
						|
				} | 
						|
			}, | 
						|
			deleteAndConfirm: function (item) { | 
						|
				if (item == null) { | 
						|
					var url = | 
						|
						'/PrivateReZeroRoute/100003/DeleteDynamicInterface?IsDeleted=true&Id=' + | 
						|
						localStorage.delId | 
						|
					axios | 
						|
						.get(url, jwHeader) | 
						|
						.then(response => { | 
						|
							this.data = response.data | 
						|
							this.error = null | 
						|
							this.onSearch() | 
						|
							btnDelClose.click() | 
						|
						}) | 
						|
						.catch(error => { | 
						|
							this.error = error.message | 
						|
							this.data = null | 
						|
						}) | 
						|
				} else { | 
						|
					localStorage.delId = item.Id | 
						|
				} | 
						|
			}, | 
						|
			enable: function () { | 
						|
				alert('开发中') | 
						|
			}, | 
						|
			disable: function () { | 
						|
				alert('开发中') | 
						|
			}, | 
						|
			openGenerateCode: function () { | 
						|
				tools.alert('功能开发中..') | 
						|
			}, | 
						|
 | 
						|
			/* | 
						|
               编辑接口 | 
						|
            */ | 
						|
			openEdit: function (item) { | 
						|
				var th = this | 
						|
				var title = th.editTitle | 
						|
				var urlById = | 
						|
					'/PrivateReZeroRoute/100003/GetInternalDetail?id=' + item.Id | 
						|
				if (item.Id) { | 
						|
					axios | 
						|
						.get(urlById, jwHeader) | 
						|
						.then(response => { | 
						|
							var oldData = JSON.parse(JSON.stringify(th.$data)) | 
						|
							var oldDatabase = th.database | 
						|
							var data = JSON.parse(response.data.DataModel.CurrentDataString) | 
						|
							tools.assignValuesToObject(data, th) | 
						|
							th.title = title | 
						|
							th.editId = response.data.Id | 
						|
							th.data = oldData.data | 
						|
							th.interfaceCategroyList = oldData.interfaceCategroyList | 
						|
							th.actionList = oldData.actionList | 
						|
							th.database = oldDatabase | 
						|
							if (th.currentActionTypeContext) { | 
						|
								if (th.currentActionTypeContext.FormElements) { | 
						|
									if ( | 
						|
										th.currentActionTypeContext.FormElements[1].SelectDataSource | 
						|
									) { | 
						|
										th.currentActionTypeContext.FormElements[1].SelectDataSource = | 
						|
											oldData.actionList[0].Items[1].FormElements[1].SelectDataSource | 
						|
									} | 
						|
								} | 
						|
							} | 
						|
							btnSave.click() | 
						|
							this.showEditSql() | 
						|
							setTimeout(function () { | 
						|
								th.setSelectedOptions() | 
						|
							}, 500) | 
						|
						}) | 
						|
						.catch(error => { | 
						|
							this.error = error.message | 
						|
							this.data = null | 
						|
						}) | 
						|
				} | 
						|
			}, | 
						|
 | 
						|
			/* | 
						|
                添加接口 | 
						|
            */ | 
						|
			//1.打开和保存-添加接口 | 
						|
			openNext: function () { | 
						|
				this.title = this.addTitle | 
						|
				btnNext.click() | 
						|
				this.currentActionTypeContext = [] | 
						|
				this.selectDefaultValueColumns = [] | 
						|
				this.saveDefaultValueColumns = [] | 
						|
				this.selectdWherePreviewString = null | 
						|
				this.editId = 0 | 
						|
			}, | 
						|
			openAdd: function (item) { | 
						|
				if (this.currentActionType.length == 0) { | 
						|
					tools.alert('请选择类型') | 
						|
					return | 
						|
				} | 
						|
				btnNextClose.click() | 
						|
				btnSave.click() | 
						|
				this.currentActionTypeContext = this.currentActionType.Items[0] | 
						|
				this.currentActionTypeContext.FormElements[0].Value = | 
						|
					this.currentActionTypeContext.Text | 
						|
				this.showEditSql() | 
						|
			}, | 
						|
			addOrUpdateInterfaceList: function () { | 
						|
				var elementsWithValidateData = | 
						|
					document.querySelectorAll('[validate-data]') | 
						|
				var isSuccess = true | 
						|
				var th = this | 
						|
				elementsWithValidateData.forEach(function (element) { | 
						|
					var attributeName = 'validate-data' | 
						|
					var attributeValue = JSON.parse(element.getAttribute(attributeName)) | 
						|
 | 
						|
					if (isSuccess) { | 
						|
						isSuccess = th.validateElement(element, attributeValue) | 
						|
					} | 
						|
				}) | 
						|
 | 
						|
				if (isSuccess) { | 
						|
					this.setValueEditSql() | 
						|
					var formData = tools.formToJson('frmSave') | 
						|
					formData.DatabaseId = this.DatabaseId | 
						|
					var vueData = this.$data | 
						|
					vueData.data = [] | 
						|
					var oldActionList = vueData.actionList | 
						|
					vueData.actionList = null | 
						|
					var currentString = JSON.stringify(vueData) | 
						|
					vueData.actionList = oldActionList | 
						|
					formData.Json = { | 
						|
						Id: this.editId, | 
						|
						Columns: this.selectedColumns, | 
						|
						ComplexityColumns: this.selectedComplexityColumns, | 
						|
						Where: this.selectedWheres, | 
						|
						WhereRelation: this.selectedWheresConditionalRelation, | 
						|
						WhereRelationTemplate: this.selectedWhereRelationTemplate, | 
						|
						OrderBys: this.selectedOrderBys, | 
						|
						OrderBysEnableSort: this.selectedOrderBys_EnableSort, | 
						|
						CurrentDataString: currentString, | 
						|
						DataBaseId: this.databaseId, | 
						|
						DefaultValueColumns: this.saveDefaultValueColumns, | 
						|
					} | 
						|
					var url = '/PrivateReZeroRoute/100003/SaveInterfaceList' | 
						|
					axios | 
						|
						.post(url, formData, jwHeader) | 
						|
						.then(response => { | 
						|
							if (response.data == true) { | 
						|
								tools.alert('保存成功') | 
						|
								btnAddOrUpdateColse.click() | 
						|
								this.error = null | 
						|
								th.onSearch() | 
						|
							} else { | 
						|
								tools.alert(response.data.message) | 
						|
							} | 
						|
						}) | 
						|
						.catch(error => { | 
						|
							this.error = error.message | 
						|
						}) | 
						|
				} | 
						|
			}, | 
						|
			interfaceListTabClick: function (index, item) { | 
						|
				this.tabIndex = index | 
						|
				this.currentActionTypeContext = this.currentActionType.Items[index] | 
						|
				if (this.currentActionTypeContext.FormElements.length > 0) | 
						|
					this.currentActionTypeContext.FormElements[0].Value = item.Text | 
						|
				this.showEditSql() | 
						|
			}, | 
						|
			//2.选择表逻辑-添加接口 | 
						|
			openImportEntity: function () { | 
						|
				btnImportEntity.click() | 
						|
				this.bindImportTables() | 
						|
			}, | 
						|
			importEntitySubmit: function () { | 
						|
				var th = this | 
						|
				this.currentActionType.Items.forEach(item => { | 
						|
					item.FormElements.forEach(element => { | 
						|
						element.Value = | 
						|
							element.ElementType == '1' | 
						|
								? this.selectedTables[0].Name | 
						|
								: element.Value | 
						|
					}) | 
						|
				}) | 
						|
				this.columns = [] | 
						|
				btnImportEntityClose.click() | 
						|
				this.bindUpdates() | 
						|
			}, | 
						|
			bindImportTables: function () { | 
						|
				var url = | 
						|
					'/PrivateReZeroRoute/100004/GetAllTables?databaseId=' + | 
						|
					this.databaseId + | 
						|
					'&tableName=' + | 
						|
					txtTableName.value | 
						|
				axios | 
						|
					.get(url, jwHeader) | 
						|
					.then(response => { | 
						|
						this.tables = response.data | 
						|
						this.error = null | 
						|
					}) | 
						|
					.catch(error => { | 
						|
						this.error = error.message | 
						|
					}) | 
						|
			}, | 
						|
			selectAllTables(event) { | 
						|
				if (event.target.checked) { | 
						|
					// 全选 | 
						|
					this.selectedTables = this.tables.map(item => item) | 
						|
				} else { | 
						|
					// 全不选 | 
						|
					this.selectedTables = [] | 
						|
				} | 
						|
			}, | 
						|
			//3.添加简单列逻辑-添加接口 | 
						|
			openAddColumn: function (item) { | 
						|
				var tableValue = document.querySelectorAll('[name=TableId]')[0].value | 
						|
				if (!tableValue) { | 
						|
					tools.alert('请先选择主表') | 
						|
					return | 
						|
				} | 
						|
				var th = this | 
						|
				btnDivAddColumns.click() | 
						|
				this.setColumns() | 
						|
			}, | 
						|
			saveColumns: function () { | 
						|
				var th = this | 
						|
				this.selectedColumns = this.columns.filter(it => | 
						|
					th.selectColumns.includes(it.Id) | 
						|
				) | 
						|
				btnCloseAddColumns.click() | 
						|
				this.clearOrderBy() | 
						|
			}, | 
						|
			selectAllColumns(event) { | 
						|
				if (event.target.checked) { | 
						|
					// 全选 | 
						|
					this.selectColumns = this.columns.map(item => item.Id) | 
						|
				} else { | 
						|
					// 全不选 | 
						|
					this.selectColumns = [] | 
						|
				} | 
						|
			}, | 
						|
			//4.追加复杂列逻辑-添加接口 | 
						|
			openAddComplexityColumn: function (item) { | 
						|
				var tableValue = document.querySelectorAll('[name=TableId]')[0].value | 
						|
				if (!tableValue) { | 
						|
					tools.alert('请先选择主表') | 
						|
					return | 
						|
				} | 
						|
				var th = this | 
						|
				this.setColumns() | 
						|
				btnAddComplexityColumns.click() | 
						|
				this.clearComplexityColumns() | 
						|
			}, | 
						|
			changeJoinTable: function () { | 
						|
				this.setJoinColumns() | 
						|
			}, | 
						|
			clearJoinTable: function () { | 
						|
				this.copcol_JoinTable = null | 
						|
				this.joinColumns = [] | 
						|
			}, | 
						|
			saveComplexityColumns: function () { | 
						|
				// 封装以 this.copcol_ 开头的属性到 json 对象中 | 
						|
				var json = { | 
						|
					ShowField: this.copcol_ShowField, | 
						|
					Name: this.copcol_Name, | 
						|
					joinType: this.copcol_joinType, | 
						|
					JoinTable: this.copcol_JoinTable, | 
						|
					MasterField: this.copcol_MasterField, | 
						|
					joinField: this.copcol_joinField, | 
						|
					SortId: this.copcol_SortId, | 
						|
				} | 
						|
				if (json.ShowField) { | 
						|
					if (!this.checkCommas(json.ShowField, json.Name)) { | 
						|
						return | 
						|
					} | 
						|
				} else { | 
						|
					tools.alert('带*的请填写完整') | 
						|
					return | 
						|
				} | 
						|
				if (!json.Name) { | 
						|
					json.Name = json.ShowField | 
						|
				} | 
						|
				var newJsons = this.splitJsonByTwoKeys(json, 'ShowField', 'Name') | 
						|
				var isOk = true | 
						|
				newJsons.forEach(copcolJson => { | 
						|
					if (!isOk) { | 
						|
						return | 
						|
					} | 
						|
					if (this.selectColumnsTabIndex != 1) { | 
						|
						tools.alert('开发中..') | 
						|
						isOk = false | 
						|
						return | 
						|
					} | 
						|
 | 
						|
					if (!this.validateComplexityColumns(copcolJson)) { | 
						|
						tools.alert('带*的请填写完整') | 
						|
						isOk = false | 
						|
						return | 
						|
					} | 
						|
 | 
						|
					var asName = copcolJson.Name || copcolJson.ShowField | 
						|
 | 
						|
					var addItem = { | 
						|
						PropertyName: | 
						|
							document.querySelectorAll('[name=TableId]')[0].value + | 
						|
							' ' + | 
						|
							copcolJson.joinType + | 
						|
							' ' + | 
						|
							copcolJson.JoinTable + | 
						|
							' ON ' + | 
						|
							document.querySelectorAll('[name=TableId]')[0].value + | 
						|
							'.' + | 
						|
							copcolJson.MasterField + | 
						|
							'=' + | 
						|
							copcolJson.JoinTable + | 
						|
							'.' + | 
						|
							copcolJson.joinField, | 
						|
						DbColumnName: | 
						|
							copcolJson.JoinTable + | 
						|
							'.' + | 
						|
							copcolJson.ShowField + | 
						|
							' AS ' + | 
						|
							asName, | 
						|
						SortId: 1, | 
						|
						Json: { | 
						|
							JoinInfo: { | 
						|
								MasterField: copcolJson.MasterField, | 
						|
								JoinTable: copcolJson.JoinTable, | 
						|
								JoinType: copcolJson.joinType, | 
						|
								JoinField: copcolJson.joinField, | 
						|
								ShowField: copcolJson.ShowField, | 
						|
								Name: copcolJson.Name, | 
						|
								SortId: copcolJson.SortId, | 
						|
							}, | 
						|
						}, | 
						|
					} | 
						|
 | 
						|
					if ( | 
						|
						this.selectedColumns.some(column => column.DbColumnName == asName) | 
						|
					) { | 
						|
						tools.alert( | 
						|
							'【关联显示字段】与主表重复,可以设置【关联显示字段别名】来定义显示名' | 
						|
						) | 
						|
						isOk = false | 
						|
						return | 
						|
					} | 
						|
 | 
						|
					this.selectedComplexityColumns.push(addItem) | 
						|
					btnCloseAddComplexityColumns.click() | 
						|
					this.clearOrderBy() | 
						|
				}) | 
						|
			}, | 
						|
			deleteSelectedColumn: function (item) { | 
						|
				this.selectedColumns.removeArrayItem(item) | 
						|
			}, | 
						|
			deleteComplexitySelectedColumn: function (item) { | 
						|
				this.selectedComplexityColumns.removeArrayItem(item) | 
						|
			}, | 
						|
			tabClickComplexityColumns: function (index) { | 
						|
				if (index != 1) liComplexityColumns.className = '' | 
						|
				var $tabs = $('#divAddComplexityColumns  .tab-pane') | 
						|
				$tabs.hide() | 
						|
				$tabs.eq(index - 1).show() | 
						|
				this.selectColumnsTabIndex = index | 
						|
			}, | 
						|
			//5.添加排序逻辑-添加接口 | 
						|
			openOrderByColumn: function () { | 
						|
				if (!this.validateColumsAny()) { | 
						|
					tools.alert('请选择列后在选择排序') | 
						|
					return | 
						|
				} | 
						|
				if (this.selectedOrderBys.length == 0) { | 
						|
					this.selectedOrderBys = this.selectedColumns.map(it => ({ | 
						|
						Name: it.DbColumnName, | 
						|
					})) | 
						|
					var selectComplexityColumnOrderBys = | 
						|
						this.selectedComplexityColumns.map(it => ({ | 
						|
							Name: it.DbColumnName, | 
						|
						})) | 
						|
					this.selectedOrderBys = this.selectedOrderBys.concat( | 
						|
						selectComplexityColumnOrderBys | 
						|
					) | 
						|
				} | 
						|
				btnAddOrderBy.click() | 
						|
			}, | 
						|
			saveBtnOrderBy: function () { | 
						|
				btnCloseAddOrderBy.click() | 
						|
				this.selectedOrderByString = this.selectedOrderBys | 
						|
					.filter(it => it.OrderByType == 'ASC' || it.OrderByType == 'DESC') | 
						|
					.sort(function (a, b) { | 
						|
						return a.SortId - b.SortId | 
						|
					}) | 
						|
					.map(it => it.Name + ' ' + it.OrderByType) | 
						|
					.join(',') | 
						|
			}, | 
						|
			//6.添加条件逻辑-添加接口 | 
						|
			openWhere: function () { | 
						|
				if (!this.validateColumsAny()) { | 
						|
					tools.alert('请选择列后在选择条件') | 
						|
					return | 
						|
				} | 
						|
				if (this.selectedWheres.length == 0) { | 
						|
					this.selectedWheres.push(this.getWhereModel()) | 
						|
				} | 
						|
				btnAddWhere.click() | 
						|
			}, | 
						|
			openMiniWhere: function () { | 
						|
				var tableValue = document.querySelectorAll('[name=TableId]')[0].value | 
						|
				if (!tableValue) { | 
						|
					tools.alert('请先选择主表') | 
						|
					return | 
						|
				} | 
						|
				if (this.selectedWheres.length == 0) { | 
						|
					this.selectedWheres.push(this.getWhereModel()) | 
						|
				} | 
						|
				var th = this | 
						|
				var url = | 
						|
					'/PrivateReZeroRoute/100003/GetEntityColuminsByEntityId?TableId=' + | 
						|
					this.selectedTables[0].Id | 
						|
				axios | 
						|
					.get(url, jwHeader) | 
						|
					.then(response => { | 
						|
						th.columns = response.data | 
						|
						th.selectedColumns = th.columns | 
						|
					}) | 
						|
					.catch(error => { | 
						|
						this.error = error.message | 
						|
					}) | 
						|
				btnAddWhere.click() | 
						|
			}, | 
						|
			clearMiniWhere: function () { | 
						|
				this.selectedColumns = [] | 
						|
				this.selectedWheres = [] | 
						|
				this.selectdWherePreviewString = null | 
						|
			}, | 
						|
			saveBtnWhere: function () { | 
						|
				btnCloseAddWhere.click() | 
						|
			}, | 
						|
			addWhereItem: function (id) { | 
						|
				var model = this.getWhereModel() | 
						|
				model.Id = id + 1 | 
						|
				this.selectedWheres.push(model) | 
						|
			}, | 
						|
			deleteWhereItem: function (id) { | 
						|
				if (this.selectedWheres.length == 1) { | 
						|
					this.selectedWheres = [] | 
						|
					btnCloseAddWhere.click() | 
						|
				} else { | 
						|
					this.selectedWheres.removeArrayItem( | 
						|
						this.selectedWheres.find(it => it.Id == id) | 
						|
					) | 
						|
				} | 
						|
			}, | 
						|
			showWherePreview: function () { | 
						|
				var cr = this.selectedWheresConditionalRelation | 
						|
				var isAndAll = cr == 'AndAll' | 
						|
				var isOrAll = cr == 'OrAll' | 
						|
				var isAnd = cr == 'And' | 
						|
				var isOr = cr == 'Or' | 
						|
				var isCustom = cr == 'Custom' | 
						|
				var isCustomAll = cr == 'CustomAll' | 
						|
				var andStr = 'AND' | 
						|
				var orStr = 'Or' | 
						|
				var empStr = '' | 
						|
				if (isCustom || isCustomAll) { | 
						|
					var template = this.selectedWhereRelationTemplate + '' | 
						|
					this.selectedWheres.forEach(function (it) { | 
						|
						var value = ` (${it.PropertyName} ${it.WhereType} ${ | 
						|
							it.ValueType == 0 | 
						|
								? it.Value | 
						|
								: `@${it.Value} OR (@${it.Value} IS NULL)` | 
						|
						}) ` | 
						|
						if (isCustomAll) { | 
						|
							value = `(${it.PropertyName} ${it.WhereType} ${ | 
						|
								it.ValueType == 0 ? it.Value : `@${it.Value}` | 
						|
							}) ` | 
						|
						} | 
						|
						var regex = new RegExp('\\{' + it.Id + '\\}', 'g') | 
						|
						template = template.replace(regex, value) | 
						|
					}) | 
						|
					this.selectdWherePreviewString = template | 
						|
				} | 
						|
				if (isAnd || isOr) { | 
						|
					var type = isAnd ? andStr : orStr | 
						|
					var wheres = this.selectedWheres | 
						|
						.map( | 
						|
							it => | 
						|
								`${type} (${it.PropertyName} ${it.WhereType} ${ | 
						|
									it.ValueType == 0 | 
						|
										? it.Value | 
						|
										: `@${it.Value} OR (@${it.Value} IS NULL)` | 
						|
								})\r\n` | 
						|
						) | 
						|
						.join(empStr) | 
						|
					this.selectdWherePreviewString = wheres | 
						|
				} else if (isAndAll || isOrAll) { | 
						|
					var type = isAndAll ? andStr : orStr | 
						|
					var wheres = this.selectedWheres | 
						|
						.map( | 
						|
							it => | 
						|
								`${type} (${it.PropertyName} ${it.WhereType} ${ | 
						|
									it.ValueType == 0 ? it.Value : `@${it.Value}` | 
						|
								})\r\n ` | 
						|
						) | 
						|
						.join(empStr) | 
						|
					this.selectdWherePreviewString = wheres | 
						|
				} | 
						|
			}, | 
						|
			//7.配置插入或者更新默认值 | 
						|
			saveDefaultValue: function () { | 
						|
				var th = this | 
						|
				th.saveDefaultValueColumns = [] | 
						|
				th.selectDefaultValueColumns.forEach(function (item) { | 
						|
					th.saveDefaultValueColumns.push({ | 
						|
						PropertyName: item.PropertyName, | 
						|
						Type: item.Type, | 
						|
						Value: item.Value, | 
						|
					}) | 
						|
				}) | 
						|
				btnDafeultValueClose.click() | 
						|
			}, | 
						|
			openDefaultValue: function () { | 
						|
				var tableValue = document.querySelectorAll('[name=TableId]')[0].value | 
						|
				if (!tableValue) { | 
						|
					tools.alert('请先选择主表') | 
						|
					return | 
						|
				} | 
						|
				var th = this | 
						|
				var url = | 
						|
					'/PrivateReZeroRoute/100003/GetEntityColuminsByEntityId?TableId=' + | 
						|
					this.selectedTables[0].Id | 
						|
				axios | 
						|
					.get(url, jwHeader) | 
						|
					.then(response => { | 
						|
						th.selectDefaultValueColumns = [] | 
						|
						response.data | 
						|
							.filter(it => !it.IsPrimarykey) | 
						|
							.forEach(function (item) { | 
						|
								if ( | 
						|
									th.saveDefaultValueColumns.some( | 
						|
										it => it.PropertyName == item.PropertyName | 
						|
									) | 
						|
								) { | 
						|
									var match = th.saveDefaultValueColumns.find( | 
						|
										it => it.PropertyName == item.PropertyName | 
						|
									) | 
						|
									th.selectDefaultValueColumns.push({ | 
						|
										PropertyName: match.PropertyName, | 
						|
										Value: match.Value, | 
						|
										Type: match.Type, | 
						|
									}) | 
						|
								} else { | 
						|
									th.selectDefaultValueColumns.push({ | 
						|
										PropertyName: item.PropertyName, | 
						|
										Type: 0, | 
						|
										Value: null, | 
						|
									}) | 
						|
								} | 
						|
							}) | 
						|
						btnDafeultValue.click() | 
						|
					}) | 
						|
					.catch(error => { | 
						|
						this.error = error.message | 
						|
					}) | 
						|
			}, | 
						|
 | 
						|
			/* | 
						|
                  次要方法 | 
						|
            */ | 
						|
			bindGroupListSelect: function () { | 
						|
				axios | 
						|
					.get('/PrivateReZeroRoute/100004/GetDynamicGroupNameList', jwHeader) | 
						|
					.then(response => { | 
						|
						this.groupList = response.data | 
						|
					}) | 
						|
					.catch(error => { | 
						|
						this.error = error.message | 
						|
						this.data = null | 
						|
					}) | 
						|
			}, | 
						|
			bindInterfaceCategroySelect: function () { | 
						|
				axios | 
						|
					.get( | 
						|
						'/PrivateReZeroRoute/100004/GetDynamicInterfaceCategoryList', | 
						|
						jwHeader | 
						|
					) | 
						|
					.then(response => { | 
						|
						this.interfaceCategroyList = response.data | 
						|
					}) | 
						|
					.catch(error => { | 
						|
						this.error = error.message | 
						|
						this.data = null | 
						|
					}) | 
						|
			}, | 
						|
			bindActionLists: function () { | 
						|
				axios | 
						|
					.get('/PrivateReZeroRoute/100004/GetActionType', jwHeader) | 
						|
					.then(response => { | 
						|
						this.actionList = response.data | 
						|
					}) | 
						|
					.catch(error => { | 
						|
						this.error = error.message | 
						|
					}) | 
						|
			}, | 
						|
			bindDatabaseSelect: function () { | 
						|
				axios | 
						|
					.get('/PrivateReZeroRoute/100004/GetDatabaseInfoAllList', jwHeader) | 
						|
					.then(response => { | 
						|
						this.database = response.data | 
						|
						this.databaseId = this.database[0].Id | 
						|
						var th = this | 
						|
						setTimeout(function () { | 
						|
							th.onSearch() | 
						|
						}, 50) | 
						|
					}) | 
						|
					.catch(error => { | 
						|
						this.error = error.message | 
						|
						this.data = null | 
						|
					}) | 
						|
			}, | 
						|
			bindWhereType: function () { | 
						|
				axios | 
						|
					.get('/PrivateReZeroRoute/100004/GetWhereTypeList', jwHeader) | 
						|
					.then(response => { | 
						|
						this.whereTypeList = response.data | 
						|
					}) | 
						|
					.catch(error => { | 
						|
						this.error = error.message | 
						|
					}) | 
						|
			}, | 
						|
			setColumns: function () { | 
						|
				var th = this | 
						|
				if (this.selectedTables.length > 0) { | 
						|
					var url = | 
						|
						'/PrivateReZeroRoute/100003/GetEntityColuminsByEntityId?TableId=' + | 
						|
						this.selectedTables[0].Id | 
						|
					axios | 
						|
						.get(url, jwHeader) | 
						|
						.then(response => { | 
						|
							th.columns = response.data | 
						|
						}) | 
						|
						.catch(error => { | 
						|
							this.error = error.message | 
						|
						}) | 
						|
				} | 
						|
			}, | 
						|
			setJoinColumns: function () { | 
						|
				var th = this | 
						|
				var tableId = this.copcol_JoinTable | 
						|
				tableId = this.tables.find(function (item) { | 
						|
					return item.Name === tableId | 
						|
				}).Id | 
						|
				if (this.selectedTables.length > 0) { | 
						|
					var url = | 
						|
						'/PrivateReZeroRoute/100003/GetEntityColuminsByEntityId?TableId=' + | 
						|
						tableId | 
						|
					axios | 
						|
						.get(url, jwHeader) | 
						|
						.then(response => { | 
						|
							th.joinColumns = response.data | 
						|
						}) | 
						|
						.catch(error => { | 
						|
							this.error = error.message | 
						|
						}) | 
						|
				} | 
						|
			}, | 
						|
			validateElement: function (element, attributeValue) { | 
						|
				if (attributeValue.IsRequired && !element.value) { | 
						|
					tools.alert(attributeValue.Text + '不能为空') | 
						|
					return false | 
						|
				} | 
						|
				if ( | 
						|
					attributeValue.Name === 'Url' && | 
						|
					element.value && | 
						|
					!tools.isValidURLPattern(element.value) | 
						|
				) { | 
						|
					tools.alert('Url格式不正确,应该是/xxx/yyy 或者 /xx.xx') | 
						|
					return false | 
						|
				} | 
						|
				return true | 
						|
			}, | 
						|
			validateColumsAny: function () { | 
						|
				return ( | 
						|
					this.selectedColumns.length + this.selectedComplexityColumns.length > | 
						|
					0 | 
						|
				) | 
						|
			}, | 
						|
			clearOrderBy: function () { | 
						|
				this.selectedOrderBys = [] | 
						|
				this.selectedOrderBys_EnableSort = false | 
						|
			}, | 
						|
			clearComplexityColumns: function () { | 
						|
				this.copcol_joinField = null | 
						|
				this.copcol_Name = null | 
						|
				this.copcol_SortId = null | 
						|
				this.copcol_ShowField = null | 
						|
				this.copcol_MasterField = null | 
						|
				this.copcol_JoinTable = null | 
						|
				this.copcol_joinType = null | 
						|
				this.copcol_ShowFields = [] | 
						|
			}, | 
						|
			validateComplexityColumns: function () { | 
						|
				if ( | 
						|
					this.copcol_joinField == null || | 
						|
					this.copcol_ShowField == null || | 
						|
					this.copcol_joinType == null || | 
						|
					this.copcol_MasterField == null || | 
						|
					this.copcol_JoinTable == null | 
						|
				) { | 
						|
					return false | 
						|
				} | 
						|
				return true | 
						|
			}, | 
						|
			getWhereModel: function () { | 
						|
				return { | 
						|
					Id: 1, | 
						|
					PropertyName: null, | 
						|
					WhereType: 'Equal', | 
						|
					ValueType: 0, | 
						|
					Value: null, | 
						|
				} | 
						|
			}, | 
						|
			checkCommas: function (str1, str2) { | 
						|
				if (!str2) { | 
						|
					return true | 
						|
				} | 
						|
 | 
						|
				// 计算两个字符串中的逗号数量 | 
						|
				var commasInStr1 = (str1.match(/,/g) || []).length | 
						|
				if (commasInStr1 == 0) { | 
						|
					return true | 
						|
				} | 
						|
				var commasInStr2 = (str2.match(/,/g) || []).length | 
						|
 | 
						|
				// 比较两个字符串中的逗号数量是否相等 | 
						|
				if (commasInStr1 === commasInStr2) { | 
						|
					return true | 
						|
				} else { | 
						|
					tools.alert( | 
						|
						'【关联显示字段别名】存在多个要用 “,” 分割开,数量要一样。' | 
						|
					) | 
						|
					return false | 
						|
				} | 
						|
			}, | 
						|
			changeShowField: function () { | 
						|
				this.copcol_ShowField = this.copcol_ShowFields.join(',') | 
						|
			}, | 
						|
			splitJsonByTwoKeys: function (jsonObj, key1, key2) { | 
						|
				// 验证输入对象是否有效 | 
						|
				if (typeof jsonObj !== 'object' || jsonObj === null) { | 
						|
					throw new Error('Invalid input: jsonObj must be an object.') | 
						|
				} | 
						|
 | 
						|
				// 验证key1和key2是否存在于jsonObj中且为字符串类型 | 
						|
				if (!(key1 in jsonObj) || typeof jsonObj[key1] !== 'string') { | 
						|
					throw new Error( | 
						|
						`Invalid input: ${key1} must be a string property of jsonObj.` | 
						|
					) | 
						|
				} | 
						|
				if (!(key2 in jsonObj) || typeof jsonObj[key2] !== 'string') { | 
						|
					throw new Error( | 
						|
						`Invalid input: ${key2} must be a string property of jsonObj.` | 
						|
					) | 
						|
				} | 
						|
 | 
						|
				// 分割key1和key2对应的值 | 
						|
				const values1 = jsonObj[key1].split(',') | 
						|
				const values2 = jsonObj[key2].split(',') | 
						|
 | 
						|
				// 验证两个键的值分割后长度是否一致 | 
						|
				if (values1.length !== values2.length) { | 
						|
					throw new Error( | 
						|
						`The number of elements in ${key1} and ${key2} must be the same.` | 
						|
					) | 
						|
				} | 
						|
 | 
						|
				// 创建结果数组 | 
						|
				const result = [] | 
						|
 | 
						|
				// 遍历分割后的值,构建新的对象并添加到结果数组中 | 
						|
				for (let i = 0; i < values1.length; i++) { | 
						|
					const newObj = Object.assign({}, jsonObj) // 复制原始对象 | 
						|
					newObj[key1] = values1[i].trim() // 替换key1的值 | 
						|
					newObj[key2] = values2[i].trim() // 替换key2的值 | 
						|
					result.push(newObj) | 
						|
				} | 
						|
 | 
						|
				return result | 
						|
			}, | 
						|
			showEditSql: function () { | 
						|
				setTimeout(function () { | 
						|
					var $sql = $("[name='Sql']") | 
						|
					if ($sql.size() > 0) { | 
						|
						var editor = ace.edit('divAceEditor') | 
						|
						editor.setOption('showPrintMargin', false) | 
						|
						editor.setTheme('ace/theme/twilight') // 设置主题 | 
						|
						editor.getSession().setMode('ace/mode/sql') // 设置语言模式为SQL | 
						|
						editor.setOption('enableBasicAutocompletion', true) | 
						|
						editor.setOption('enableSnippets', true) | 
						|
						editor.setOption('enableLiveAutocompletion', true) | 
						|
						editor.setValue($sql.val()) | 
						|
						editor.selection.clearSelection() | 
						|
					} | 
						|
				}, 100) | 
						|
			}, | 
						|
			setValueEditSql: function () { | 
						|
				var $sql = $("[name='Sql']") | 
						|
				if ($sql.size() > 0) { | 
						|
					var editor = ace.edit('divAceEditor') | 
						|
					this.currentActionTypeContext.FormElements[3].Value = | 
						|
						editor.getValue() | 
						|
					$sql.val(editor.getValue()) | 
						|
				} | 
						|
			}, | 
						|
			closeEditSql: function () { | 
						|
				var editor = ace.edit('divAceEditor') | 
						|
				editor.destroy() | 
						|
			}, | 
						|
			bindUpdates: function () { | 
						|
				var th = this | 
						|
				var url = | 
						|
					'/PrivateReZeroRoute/100003/GetEntityColuminsByEntityId?TableId=' + | 
						|
					this.selectedTables[0].Id | 
						|
				axios | 
						|
					.get(url, jwHeader) | 
						|
					.then(response => { | 
						|
						th.updateColumns = response.data | 
						|
					}) | 
						|
					.catch(error => { | 
						|
						this.error = error.message | 
						|
					}) | 
						|
			}, | 
						|
			setUpdateColums: function (item) { | 
						|
				// 初始化一个空数组来存储选中的值 | 
						|
				var selectedValues = [] | 
						|
 | 
						|
				// 遍历 <select> 元素的所有 <option> 子元素 | 
						|
				for (var i = 0; i < selUpdateColumns.options.length; i++) { | 
						|
					// 检查 <option> 是否被选中 | 
						|
					if (selUpdateColumns.options[i].selected) { | 
						|
						// 如果被选中,则将其值添加到 selectedValues 数组中 | 
						|
						selectedValues.push(selUpdateColumns.options[i].value) | 
						|
					} | 
						|
				} | 
						|
				// 将选中的值转换为逗号分隔的字符串 | 
						|
				var valueStr = selectedValues.join(',') | 
						|
				item.Value = valueStr | 
						|
			}, | 
						|
			setSelectedOptions: function () { | 
						|
				var id = 'selUpdateColumns' | 
						|
				var selectElement = document.getElementById(id) | 
						|
				if (selectElement == null) return | 
						|
				var valueStr = $(selectElement).prev().val() | 
						|
				// 清空当前select的所有选中项 | 
						|
				for (var i = 0; i < selectElement.options.length; i++) { | 
						|
					selectElement.options[i].selected = false | 
						|
				} | 
						|
 | 
						|
				// 将传入的逗号分隔字符串分割成数组 | 
						|
				var values = valueStr.split(',') | 
						|
 | 
						|
				// 遍历数组中的每一个值 | 
						|
				for (var j = 0; j < values.length; j++) { | 
						|
					// 去除值两边的空格 | 
						|
					var value = values[j].trim() | 
						|
 | 
						|
					// 遍历<select>的所有<option>,查找匹配的项并选中 | 
						|
					for (var k = 0; k < selectElement.options.length; k++) { | 
						|
						if (selectElement.options[k].value === value) { | 
						|
							selectElement.options[k].selected = true | 
						|
							break // 找到匹配项后跳出内层循环 | 
						|
						} | 
						|
					} | 
						|
				} | 
						|
			}, | 
						|
		}, | 
						|
	}) | 
						|
</script>
 | 
						|
 |