#!/bin/python #coding: utf-8 # +------------------------------------------------------------------- # | version:1.5 # +------------------------------------------------------------------- # | Date:2023-11-29 # +------------------------------------------------------------------- # | django-vue-lyadmin 专业版 # +------------------------------------------------------------------- # | Author: lybbn # +------------------------------------------------------------------- # | QQ: 1042594286 # +------------------------------------------------------------------- # | EditDate: 2024-05-03 # +------------------------------------------------------------------- # ------------------------------ # 代码生成-- index.vue 前端页面(lytable版) # ------------------------------ import json from django.template import Template,Context from utils.common import ast_convert def lyGenerateIndexVue(object,VueIndexName): #导出 canExport = False #外键筛选处理 ForeignKeyList = [] #表单默认字段 formData = {} column = object['column'] other_config = object.get('other_config',{}) #日期范围过滤处理 date_range_filter_list = [] #范围输入过滤处理 input_range_filter_list = [] input_range_form_type = ['input','number'] for c in column: defaultValue = c.get('default',None) field_name = c['field_name'] foreign_key = c['foreign_key'] field_type = c['field_type'] can_export = c.get('can_export',False) can_search = c.get('can_search',False) form_type = c['form_type'] if can_search and c['search_type'] == 'range' and form_type in ['time','date']: search_data = '%sTimers'%field_name search_data_beginAt = '%s_beginAt'%field_name search_data_endAt = '%s_endAt'%field_name search_data_funcion = '%sTimeChange'%field_name search_range_type = form_type if form_type == 'date': search_format = 'yyyy-MM-dd' search_item = f"""""" else: search_format = 'yyyy-MM-dd hh:mm:ss' search_item = f"""""" d_f_data = { 'search_data':search_data, 'search_data_beginAt':search_data_beginAt, 'search_data_endAt':search_data_endAt, 'search_item':search_item, 'search_range_type':search_range_type, 'search_data_funcion':search_data_funcion, 'search_format':search_format } date_range_filter_list.append(d_f_data) c['date_range_filter_list'] = d_f_data elif can_search and c['search_type'] == 'range' and form_type in input_range_form_type: search_data = '%sDatas'%field_name search_data_min = '%s_min'%field_name search_data_max = '%s_max'%field_name search_data_funcion = '%sDatasChange'%field_name search_range_type = form_type search_item = f"""""" d_f_data = { 'search_data':search_data, 'search_data_min':search_data_min, 'search_data_max':search_data_max, 'search_item':search_item, 'search_range_type':search_range_type, 'search_data_funcion':search_data_funcion, } input_range_filter_list.append(d_f_data) c['input_range_filter_list'] = d_f_data if can_export: canExport = True if c['can_edit']: #处理数字型默认值的问题 if field_type in ['SmallIntegerField','PositiveIntegerField','PositiveSmallIntegerField','DecimalField','FloatField','BigIntegerField']: if not defaultValue: if defaultValue == 0: pass else: defaultValue = None if form_type in ['checkbox'] or field_type in ['ManyToManyField']: if not defaultValue: defaultValue = [] else: defaultValue = ast_convert(defaultValue) formData[field_name] = defaultValue if field_type == 'ForeignKey' or field_type == 'ManyToManyField' or field_type == 'OneToOneField': f_class_name = foreign_key['class_name'] f_value = foreign_key['value'] f_label = foreign_key['label'] f_api_path = foreign_key['api_path'] if f_class_name and f_value and f_label and f_api_path: const_cl = 'params' gname_data = "%sLyAudoCodeAPIList"%field_name gname = "%sLyAudoCodeAPI"%field_name gname_function = "%sLyAudoCodeAPIFunction"%field_name gname_params = '{url: `%s`,%s}'%(f_api_path,const_cl) import_data = f"""const {gname} = {const_cl} => ajaxGet({gname_params})""" s_data = { 'name':gname, 'data':gname_data, 'import':import_data, 'function':gname_function, 'value':f_value, 'label':f_label } ForeignKeyList.append(s_data) c['ForeignKeyList'] = s_data object['column'] = column formData = json.dumps(formData) apps_code = """ """ context = Context({'object': object,'VueIndexName':VueIndexName,'ForeignKeyList':ForeignKeyList,'formData':formData,'canExport':canExport,'other_config':other_config,'date_range_filter_list':date_range_filter_list,'input_range_filter_list':input_range_filter_list,'input_range_form_type':input_range_form_type}) return Template(apps_code).render(context)