服务器维修工单,运维工单--服务器申请工单

0575d95a7a43e7b754f97566f781f367.png

服务器申请工单,遇到三个困难点

第一个是前端页面的新建工单,服务器申请,不一定只申请一台,有可能是两台,三台,每台服务器的配置要求也有可能是不一样的,所以需要动态的添加服务器工单,如图,我实现的是点击按钮Add row 会增加一行新的服务器表格,点击Remove就删除一行服务器表格

前端html:

设备类型硬盘内存cpu数量操作

windows

linux

jquery:

function removeRow(r)

{

var root = r.parentNode;

var allRows = root.getElementsByTagName('tr')

if(allRows.length>1)

root.removeChild(r);

else

alert("only one row left, you not need to remove it.");

}

function addRow(){

$("#tbody").append('

windowslinux');

}

一开始的思路是克隆代码,后来测试发现,克隆代码会连第一行服务器表格的内容都克隆到新加的服务器表格中,所以改为直接添加代码了,在addRow()中直接append写好的代码,测试效果还不错

第二个后端数据的获取以及数据的存取,如果服务器创建工单的时候,申请了一个以上的服务器,那么name属性 memory,disk,nmuber等在后端都会获取到一个字典格式的数据,如下图后端获得的

request.POST:

所以需要循环取出,重新组成列表,再存入数据库中:

后端view:

if request.method == 'POST':

req_dic={}

for k in request.POST:

req_dic[k]=request.POST.getlist(k)#取数据

note=req_dic['note'][0]

note=note.encode('utf-8')

title=req_dic['title'][0]

title=title.encode('utf-8')

number=[] #将内存,硬盘,cpu,数量,设备类型取出,组成列表

disk=[]

memory=[]

cpu=[]

device_type=[]

for i in range(len(req_dic['disk'])):

number.append(req_dic['number'][i].encode("utf-8"))

disk.append(req_dic['disk'][i].encode("utf-8"))

memory.append(req_dic['memory'][i].encode("utf-8"))

cpu.append(req_dic['cpu'][i].encode("utf-8"))

device_type.append(req_dic['device_type'][i].encode("utf-8"))

d=Task(number=number,note=note,disk=disk,memory=memory,device_type=device_type,title=title,approveuser=approveuser,approveuser_id=approveuser_id,cpu=cpu,type=type_id,creator=name,state='待审批',state_id=1)

d.save()

data=Task.objects.filter(creator=name).order_by('-id')[0:1]

#send_email_server.delay(subject='工单消息通知',content=data,to_name_list=leader_ename_mail_list)

return HttpResponseRedirect('/index/')

else:

pass

return render_to_response('add_server_b.html',{'name':name,'task_type':task_type,'approveuser':approveuser})

第三个困难,前端服务器申请工单,详情展示页面,前端无法判断要展示的服务器申请数据中有几台服务器,所以没办法在前端写死代码,需要后端来判断要服务器申请工单中服务器的数量,组成代码,传到前端

后端展示view:

if table == 'details_worklist':

pass

elif table == 'details_server':

all_data=Task.objects.filter(id=id).all()

for i in all_data:

number=eval(i.number)#列表存入数据库后再读取出来,类型其实已经不是列表类型了,需要重新转化成列表类型

device_type=eval(i.device_type)

memory=eval(i.memory)

disk=eval(i.disk)

cpu=eval(i.cpu)

create_time=i.create_time.strftime("%Y-%m-%d %H:%I:%S")

html_list=[]

for i in range(len(cpu)):

prev='

%s%s%s%s%s%s' % (device_type[i],disk[i],memory[i],cpu[i],number[i],create_time)

html_list.append(prev)

html_list=mark_safe(''.join(html_list))

return render_to_response('details_server.html',{'result':all_data,'name':name,'html_list':html_list })

elif table == 'details_task':

pass

前端html:

设备类型硬盘内存cpu数量创建时间

{{ html_list }}

展示:

40a36db954da1bf4038e17cdea365946.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值