1、构造菜单项
sidemenu = {
‘transportanalysis’: {
‘text’: ‘待处理投诉迁徙分析’,
‘href’: ‘javascript:;’,
‘icon’: ‘icon-home’,
‘submenu’: {}
},
‘sourceanalysis’: {
‘text’: ‘待处理投诉资源分析’,
‘href’: ‘javascript:;’,
‘icon’: ‘icon-home’,
‘submenu’: {},
},
‘three’: {
‘href’: ‘forwordanalysis’,
‘icon’: ‘icon-home’,
‘text’: ‘已处理投诉分析’,
‘submenu’: {}
},
‘four’: {
‘href’: ‘suggestion’,
‘icon’: ‘icon-home’,
‘text’: ‘优化建议’,
‘submenu’: {}
},
‘five’: {
‘href’: ‘upload’,
‘icon’: ‘icon-home’,
‘text’: ‘外部文件输入’,
‘submenu’: {}
},
}
def creatmeanu():
ticklist = pd.read_sql_table(‘大服务投诉单明细表’,con=engineCustomerService)
tickcurrent = ticklist[ticklist.处理状态 == '待处理']
for tickid in tickcurrent['工单号'].values.tolist():
sidemenu['sourceanalysis']['submenu'][tickid] = {
'name':'currentanalysis',
'text': tickid,
'href': tickid,
'icon': 'icon-home'}
sidemenu['transportanalysis']['submenu'][tickid] = {
'name':'transportanalysis',
'text': tickid,
'href': tickid,
'icon': 'icon-home'}
return sidemenu
以上菜单项通过字典建立,包含主菜单和子菜单,其中name用于做属性标识,text用于显示,href用于传参(并非网址链接)
2、在html中通过flask jinjia语句构造菜单并定于href链接对应或后端的函数,通过菜单字典查询赋值传递参数
placeid:传参
url_for(‘CustomRequest.transportanalysis’:后端函数
3、后端接收参数进行分析运算,再传回html页面,这个页面可以和传参html用同一个模板,也可独立制作html模版
@CustomRequest.route(‘/transportanalysis’, methods=[‘GET’])
@login_required
def transportanalysis():
tickid = request.args.get(‘placeid’)
# 获取工单对应的投诉工单及地址列表,并转成json格式
needplace = gpd.read_postgis(“大服务投诉单位置明细表”, con=engineCustomerService)
del needplace[‘编码’]
needplace[‘投诉地址’] = needplace.投诉地址.apply(lambda x: x.replace(’ ', ‘’))
needplace[‘color’] = ‘#ffa022’
needplace[‘pointrange’] = 300
needplacecu = needplace[needplace.工单号 == tickid]
print(needplacecu)
needplacejson = json.loads(needplacecu.to_json())
# for i in range(len(needplacejson[‘features’])):
# lonlat = needplacejson[‘features’][i][‘geometry’][‘coordinates’]
# needplacejson[‘features’][i][‘geometry’][‘coordinates’] = ModifyLonlat().wgs84_to_gcj02(lonlat[0], lonlat[1])
needplacejson = pd.io.json.dumps(needplacejson)
print(needplacejson)
# 库存表数据
intablereport=pd.read_sql_table('大服务投诉单明细表',con=engineCustomerService)
# 待处理数据表
reportnow=intablereport[intablereport.工单号==tickid]
nowtickid=reportnow['工单号'].values.tolist()
print(nowtickid)
webreportnowcolumns = reportnow.columns.tolist()
webreportnow = reportnow.values.tolist()
#待处理用户投诉地址
needplace=gpd.read_postgis(‘大服务投诉单位置明细表’,con=engineCustomerService, geom_col=‘geom’)
needplace=needplace[needplace.工单号.isin(nowtickid)]
# needplace=needplace[needplace.工单号=='TS2018032301167']
# for i in range(len(placegis)):
# placegis.iloc[i]['color']=randomcolor()
#
# needplace['pointrange']=500
# print(needplace)
# print('-------------')
# needplace['投诉地址']=needplace['投诉地址'].apply(lambda x:x.replace(' ',''))
# del needplace['编码']
# needplacejson = json.loads(needplace.to_json())
# needplacejson=pd.io.json.dumps(needplacejson)
# print(needplacejson)
用户迁徙数据
customsession.query(‘CustomPlaceReport’).fi
sql=customsession.query(CustomPlaceReport).filter(CustomPlaceReport.ticketid==tickid)
sql=sql.statement
print(sql)
loctionall= gpd.GeoDataFrame.from_postgis(sql, con=engineCustomerService, geom_col='geom')
del loctionall['编码']
# loctionall=loctionall[loctionall.ticketid.isin(nowtickid)]
transportjson = json.loads(loctionall[
['Ci', '小区名称', '用户号码', 'ticketid', 'timelong', 'geom']].to_json())
transportjson=pd.io.json.dumps(transportjson)
print(transportjson)
生成迁徙点的唯一性列表用于作图的字典
placelist = loctionall[['Ci', '小区名称', 'geom']].drop_duplicates()
placelistjson=json.loads(placelist.to_json())
placelistjson=pd.io.json.dumps(placelistjson)
return render_template('custom_transport_analysis.html', sidemenu=sidemenu,tickid=tickid,
webreportnowcolumns=webreportnowcolumns,webreportnow=webreportnow,
transportjson=transportjson,placelistjson=placelistjson,needplacejson=needplacejson)