Browse Source

Merge branch 'master' of http://39.104.94.153:3000/yf_zd/second

yf_ymm 5 years atrás
parent
commit
5b56f16ad0

File diff suppressed because it is too large
+ 2 - 20
apps/Equipment/urls.py


+ 62 - 27
apps/Equipment/views.py

@@ -1993,8 +1993,13 @@ class Park_Land(ListView):
         username = request.user.username
         print('username:',username)
         current_user = MyUser.objects.get(username=username)
-        art_list = GardenArea.objects.filter(user=current_user)
-        data=[]
+        data = []
+        if current_user.is_superuser != True and current_user.is_staff != True:
+            #用户
+            art_list = GardenArea.objects.filter(user=current_user)
+        else:
+            #管理员
+            art_list = GardenArea.objects.all()
         for i in art_list:
             data.append({"name":i.name,"id":i.id})
         data = json.dumps(data)
@@ -2119,18 +2124,21 @@ class Garden_Manage_View(ListView):
                 print(e)
                 data="0"
         else:
-            try:      
+            try:
                 gardens=GardenArea.objects.get(id=gardenid)
-                FarmList.objects.create(
-                    name=name,
-                    farm_desc=farm_desc,
-                    area=area,
-                    curr_var=curr_var,
-                    farm_img=farm_img,
-                    user=current_user,
-                    garden=gardens
-                )
-                data="1"
+                if  FarmList.objects.filter(name=name,user=current_user) :
+                    data = "0"
+                else:
+                    FarmList.objects.create(
+                        name=name,
+                        farm_desc=farm_desc,
+                        area=area,
+                        curr_var=curr_var,
+                        farm_img=farm_img,
+                        user=current_user,
+                        garden=gardens
+                    )
+                    data="1"
             except Exception as e:
                 print(e)
                 data="0"
@@ -2309,7 +2317,7 @@ class Repertory_New(ListView):
         except Exception as e:
             print(e)
             art_list = ""
-        nums = art_list.count()
+        nums = len(art_list)
         page = int(request.GET.get('page'))
         art = art_list[(9*(page-1)):(page*9)]
         return render(request, 'backstageNet/production/repertoryNew.html', context={"art":art,"nums":nums})
@@ -2371,23 +2379,47 @@ class Repertory_New_View(ListView):
                     data = "0"
             return HttpResponse(data)
 
-
+# 园区下地块
+class Sell_Land(ListView):
+    def get(self,request):
+        username = request.user.username
+        print('username:',username)
+        data = []
+        current_user = MyUser.objects.get(username=username)
+        if current_user.is_superuser != True and current_user.is_staff != True:
+            farm_l = GardenArea.objects.filter(user=current_user)
+        else:
+            farm_l = GardenArea.objects.all()
+        for i in farm_l:
+            print(i.id)
+            try:
+                farm_list  = FarmList.objects.get(garden=i.id)
+                # print(farm_list.name)
+                farm_list = farm_list.name
+            except:
+                farm_list = ''
+            data.append({"garden":i.name,"farm_name":farm_list})
+        data = json.dumps(data)
+        return HttpResponse(data)
 
 
 #  销售管理
 class Sell_View(ListView):
     def get(self,request):
-        username = request.user.username
-        print('username:',username)
-        current_user = MyUser.objects.get(username=username)
-        try:
-            # user_gar = GardenArea.objects.get(user=current_user)
-            farm_list = FarmList.objects.filter(garden__user=current_user)
-        except Exception as e:
-            print(e)
-            farm_list = ""
-        nums = farm_list.count()
-        return render(request, 'backstageNet/production/sellManage.html', context={"farm_list":farm_list,"nums":nums})
+        # username = request.user.username
+        # print('username:',username)
+        # current_user = MyUser.objects.get(username=username)
+        # if current_user.is_superuser != True and current_user.is_staff != True:
+        #     print("00000000000000")
+        #     farm_l = GardenArea.objects.filter(user=current_user)
+        # else:
+        #     print("iiiiiiiiiiiiiiii")
+        #     farm_l = GardenArea.objects.all()
+        # for i in farm_l:
+        #     farm_list  = FarmList.objects.get(garden=i.id)
+        # nums = len(farm_list)
+        # print("nums",nums)
+        return render(request, 'backstageNet/production/sellManage.html', context={})
     def post(self,request):
         username = request.user.username
         print('username:',username)
@@ -2397,7 +2429,10 @@ class Sell_View(ListView):
         try:
             # user_gar = GardenArea.objects.get(user=current_user)
             # farm_list = FarmList.objects.filter(garden=user_gar)
-            farm_list = FarmList.objects.filter(garden__user=current_user)
+            if current_user.is_superuser != True and current_user.is_staff != True:
+                farm_list = FarmList.objects.filter(garden__user=current_user)
+            else:
+                farm_list = FarmList.objects.all()
             for i in farm_list:
                 for x in Sell_Manage.objects.filter(farm=i):
                     dat.append({

+ 79 - 52
templates/backstageNet/production/cropcount.html

@@ -140,7 +140,6 @@
         .layui-col-xs6 {
             padding: 10px 10px 0 10px;
         }
-
     </style>
 </head>
 
@@ -170,9 +169,9 @@
                                 </select>
                             </div>
                         </div>
-                    </form> 
+                    </form>
                 </h2>
-                
+
             </div>
             <div class="">
                 <div class="layui-row" id="box">
@@ -293,13 +292,35 @@
                                     },
                                     dataType: 'json',
                                     success: function (data) {
-                                        if (data) {
+                                        if (data.nums !== 0) {
                                             //获取需要的数据
                                             var group = data.dat;
                                             //拼接字符串
                                             var str = '';
                                             //对数据做遍历,拼接到页面显示
                                             for (var i = 0; i < group.length; i++) {
+                                                var strSeparator = "-"; //日期分隔符
+                                                var oDate1
+                                                var oDate2
+                                                var strDateStart = new Date()
+                                                var Str = strDateStart.getFullYear() + '-' +
+                                                    (strDateStart.getMonth() + 1) + '-' +
+                                                    strDateStart.getDate() + ' '
+                                                var strDateEnd = group[i].data.upl_time
+                                                var iDays;
+                                                oDate1 = Str.split(strSeparator);
+                                                oDate2 = strDateEnd.split(strSeparator);
+                                                var strDateS = new Date(oDate1[0], oDate1[1] - 1, oDate1[2]);
+                                                var strDateE = new Date(oDate2[0], oDate2[1] - 1, oDate2[2]);
+                                                iDays = parseInt(Math.ceil(strDateS - strDateE) / 1000 / 60 / 60 / 24)//把相差的毫秒数转换为天数
+
+                                                if (iDays > 0) {
+                                                    //正数
+                                                    var dateNum = iDays
+                                                } else if (iDays < 0) {
+                                                    //负数
+                                                    var dateNum = 0
+                                                }
                                                 str += '<div class="layui-col-xs6 layui-col-sm6 layui-col-md4">' +
                                                     '<div class="userItem">' +
                                                     '<div class="userMsg">' +
@@ -308,18 +329,18 @@
                                                     '<p>' + group[i].data.cropname + '</p>' +
                                                     '</div>' +
                                                     '<div class="userInfo">' +
-                                                    '<p>当前阶段:' + group[i].curro + '</p>' +
+                                                    // '<p>当前阶段:' + group[i].curro + '</p>' +
                                                     '<p>所属农场:' + group[i].data.area + '</p>' +
                                                     '<p>规  模:' + group[i].data.crop_count + '</p>' +
                                                     '<p>种植日期:' + group[i].data.upl_time + '</p>' +
-                                                    '<p>已生长/天:' + group[i].data.time + '</p>' +
+                                                    '<p>已生长/天:' + dateNum + '</p>' +
                                                     '</div>' +
                                                     '</div>' +
                                                     '<div class="operateDiv">' +
                                                     '<button type="button" class="layui-btn layui-btn-sm layui-btn-normal" onclick="amend( ' + group[i].data.id + ' )">修改</button>' +
                                                     '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="del(' + group[i].data.id + ')">删除</button>' +
                                                     // '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="over(' + group[i].id + ')">结束</button>' +
-                                                    '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="over(\'' + group[i].data.id + '\',\'' + group[i].curro + '\')">结束</button>' +
+                                                    // '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="over(\'' + group[i].data.id + '\',\'' + group[i].curro + '\')">结束</button>' +
                                                     '</div>' +
                                                     '</div>' +
                                                     '</div>';
@@ -331,7 +352,7 @@
                                                 elem: 'page' //注意,这里的 test1 是 ID,不用加 # 号
                                                 , count: data.nums
                                                 , theme: '#2ca9f9'
-                                                ,limit: '9'
+                                                , limit: '9'
                                                 , layout: ['prev', 'page', 'next', 'skip']
                                                 , jump: function (obj, first) {
                                                     if (!first) {
@@ -342,7 +363,7 @@
                                                             dataType: 'html',
                                                             success: function (data) {
                                                                 //转换格式
-                                                               var res = JSON.parse(data)
+                                                                var res = JSON.parse(data)
                                                                 //获取需要的数据
                                                                 var group = res.dat;
                                                                 //拼接字符串
@@ -357,7 +378,7 @@
                                                                         '<p>' + group[i].data.cropname + '</p>' +
                                                                         '</div>' +
                                                                         '<div class="userInfo">' +
-                                                                        '<p>当前阶段:' + group[i].curro + '</p>' +
+                                                                        // '<p>当前阶段:' + group[i].curro + '</p>' +
                                                                         '<p>所属农场:' + group[i].data.area + '</p>' +
                                                                         '<p>规  模:' + group[i].data.crop_count + '</p>' +
                                                                         '<p>种植日期:' + group[i].data.upl_time + '</p>' +
@@ -368,7 +389,7 @@
                                                                         '<button type="button" class="layui-btn layui-btn-sm layui-btn-normal" onclick="amend( ' + group[i].data.id + ' )">修改</button>' +
                                                                         '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="del(' + group[i].data.id + ')">删除</button>' +
                                                                         // '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="over(' + group[i].id + ')">结束</button>' +
-                                                                        '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="over(\'' + group[i].data.id + '\',\'' + group[i].curro + '\')">结束</button>' +
+                                                                        // '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="over(\'' + group[i].data.id + '\',\'' + group[i].curro + '\')">结束</button>' +
                                                                         '</div>' +
                                                                         '</div>' +
                                                                         '</div>';
@@ -405,8 +426,8 @@
 
             //选择园区的下拉框监听回调
             form.on('select()', function (data) {
-                sessionStorage.setItem('seelectID', data.value)
-                sessionStorage.setItem('seelectName', $('#farmSelect option:selected').text())
+                // sessionStorage.setItem('seelectID', data.value)
+                // sessionStorage.setItem('seelectName', $('#farmSelect option:selected').text())
                 //页面数据渲染
                 gedata('cropcount_view', 1)
                 function gedata(url, page) {
@@ -434,7 +455,7 @@
                                         '<p>' + group[i].data.cropname + '</p>' +
                                         '</div>' +
                                         '<div class="userInfo">' +
-                                        '<p>当前阶段:' + group[i].curro + '</p>' +
+                                        // '<p>当前阶段:' + group[i].curro + '</p>' +
                                         '<p>所属农场:' + group[i].data.area + '</p>' +
                                         '<p>规  模:' + group[i].data.crop_count + '</p>' +
                                         '<p>种植日期:' + group[i].data.upl_time + '</p>' +
@@ -444,7 +465,7 @@
                                         '<div class="operateDiv">' +
                                         '<button type="button" class="layui-btn layui-btn-sm layui-btn-normal" onclick="amend( ' + group[i].data.id + ' )">修改</button>' +
                                         '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="del(' + group[i].data.id + ')">删除</button>' +
-                                        '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="over(\'' + group[i].data.id + '\',\'' + group[i].curro + '\')">结束</button>' +
+                                        // '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="over(\'' + group[i].data.id + '\',\'' + group[i].curro + '\')">结束</button>' +
                                         '</div>' +
                                         '</div>' +
                                         '</div>';
@@ -455,7 +476,7 @@
                                 laypage.render({
                                     elem: 'page' //注意,这里的 test1 是 ID,不用加 # 号
                                     , count: data.nums
-                                    ,limit: '9'
+                                    , limit: '9'
                                     , theme: '#2ca9f9'
                                     , layout: ['prev', 'page', 'next', 'skip']
                                     , jump: function (obj, first) {
@@ -463,11 +484,12 @@
                                             $.ajax({
                                                 url: 'cropcount_view',
                                                 type: 'get',
-                                                data: { page: obj.curr, ids: sessionStorage.getItem('seelectID') },
+                                                // data: { page: obj.curr, ids: sessionStorage.getItem('seelectID') },
+                                                data: { page: obj.curr, ids: $('#farmSelect').val() },
                                                 dataType: 'html',
                                                 success: function (data) {
-                                                     //转换格式
-                                                     var res = JSON.parse(data)
+                                                    //转换格式
+                                                    var res = JSON.parse(data)
                                                     //获取需要的数据
                                                     var group = res.dat;
                                                     //拼接字符串
@@ -482,7 +504,7 @@
                                                             '<p>' + group[i].data.cropname + '</p>' +
                                                             '</div>' +
                                                             '<div class="userInfo">' +
-                                                            '<p>当前阶段:' + group[i].curro + '</p>' +
+                                                            // '<p>当前阶段:' + group[i].curro + '</p>' +
                                                             '<p>所属农场:' + group[i].data.area + '</p>' +
                                                             '<p>规  模:' + group[i].data.crop_count + '</p>' +
                                                             '<p>种植日期:' + group[i].data.upl_time + '</p>' +
@@ -493,7 +515,7 @@
                                                             '<button type="button" class="layui-btn layui-btn-sm layui-btn-normal" onclick="amend( ' + group[i].data.id + ' )">修改</button>' +
                                                             '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="del(' + group[i].data.id + ')">删除</button>' +
                                                             // '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="over(' + group[i].id + ')">结束</button>' +
-                                                            '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="over(\'' + group[i].data.id + '\',\'' + group[i].curro + '\')">结束</button>' +
+                                                            // '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="over(\'' + group[i].data.id + '\',\'' + group[i].curro + '\')">结束</button>' +
                                                             '</div>' +
                                                             '</div>' +
                                                             '</div>';
@@ -524,8 +546,8 @@
             //监听用户是否刷新,刷新页面删除本地存储的ID
             $(function () {
                 $(window).on('beforeunload', function () {
-                    sessionStorage.removeItem('seelectID')
-                    sessionStorage.removeItem('seelectName')
+                    // sessionStorage.removeItem('seelectID')
+                    // sessionStorage.removeItem('seelectName')
                 });
             });
 
@@ -537,12 +559,12 @@
                     type: 'post',
                     success: function (res) {
                         clearForm()
-                        sessionStorage.removeItem('seelectID')
-                        sessionStorage.removeItem('seelectName')
+                        // sessionStorage.removeItem('seelectID')
+                        // sessionStorage.removeItem('seelectName')
                     },
                     error: function (type) {
-                        sessionStorage.removeItem('seelectID')
-                        sessionStorage.removeItem('seelectName')
+                        // sessionStorage.removeItem('seelectID')
+                        // sessionStorage.removeItem('seelectName')
                     }
                 })
                 return false;
@@ -552,7 +574,9 @@
 
         //修改
         function amend(id) {
-            if (sessionStorage.getItem('seelectID') !== null) {
+            var idData = $('#farmSelect').val()
+            var nameData = $('#farmSelect option:selected').text()
+            if (idData !== '' && nameData !== '') {
                 $.ajax({
                     url: 'cropcount_view',
                     type: 'post',
@@ -602,26 +626,26 @@
         }
 
         //结束
-        function over(id,curro) {
-            if (curro !== '') {
-                layer.msg("当前阶段已结束,不可重复操作!", { time: 1000, icon: 5 })
-            } else {
-                layer.confirm('确定要结束吗?', { title: '结束' }, function (index) {
-                    $.ajax({
-                        url: 'cropcount_view',
-                        type: 'post',
-                        data: {
-                            id: id,
-                            req: 'end',
-                        },
-                        dataType: 'json',
-                        success: function (data) {
-                            location.reload();
-                        }
-                    })
-                });
-            }
-        }
+        // function over(id,curro) {
+        //     if (curro !== '') {
+        //         layer.msg("当前阶段已结束,不可重复操作!", { time: 1000, icon: 5 })
+        //     } else {
+        //         layer.confirm('确定要结束吗?', { title: '结束' }, function (index) {
+        //             $.ajax({
+        //                 url: 'cropcount_view',
+        //                 type: 'post',
+        //                 data: {
+        //                     id: id,
+        //                     req: 'end',
+        //                 },
+        //                 dataType: 'json',
+        //                 success: function (data) {
+        //                     location.reload();
+        //                 }
+        //             })
+        //         });
+        //     }
+        // }
 
         function clearForm() {
             form.val('newsFormDiv', {
@@ -636,8 +660,11 @@
             location.reload()
         }
 
+        // 新增
         function selectModelFun() {
-            if (sessionStorage.getItem('seelectID') !== null) {
+            var idData = $('#farmSelect').val()
+            var nameData = $('#farmSelect option:selected').text()
+            if (idData !== '' && nameData !== '') {
                 layui.use(['layer'], function () {
                     layer = layui.layer;
                     var index = layer.open({
@@ -647,13 +674,13 @@
                         area: ['600px', '500px'],
                         cancel: function () {
                             // 右上角关闭事件的逻辑
-                            sessionStorage.removeItem('seelectID')
-                            sessionStorage.removeItem('seelectName')
+                            // sessionStorage.removeItem('seelectID')
                             clearForm()
                         }
                     })
                 })
-                $('input[name="area"]').val(sessionStorage.getItem('seelectName'))
+                // $('input[name="area"]').val(sessionStorage.getItem('seelectName'))
+                $('input[name="area"]').val(nameData)
             } else {
                 layer.msg("请先选择园区!", { time: 1000, icon: 5 })
             }

+ 3 - 3
templates/backstageNet/production/pick.html

@@ -205,9 +205,9 @@
         <div>
             <form class="layui-form" action="" lay-filter="sellForm">
                 <div class="layui-form-item">
-                    <label class="layui-form-label">所属农场</label>
+                    <label class="layui-form-label">所属园区</label>
                     <div class="layui-input-block">
-                        <select name="farm" lay-verify="required">
+                        <select name="farm" lay-verify="required" lay-search>
                             {% for farm in farm_list %}
                             <option value="{{farm.name}}">{{farm.name}}</option>
                             {% endfor %}
@@ -313,7 +313,7 @@
                             html += ' <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">' +
                                 '<div class="userItem"><div class="userMsg"><div class="fl imgDiv">' +
                                 '<img src="../static/imgs/Pick_icon.png" alt=""></div><div class="userInfo">' +
-                                '<p>采摘人员: ' + dat[i].name + '</p><p>所属农场:' + dat[i].farm + '</p><p>品种: ' + dat[i].var + '</p><p>采摘数量: ' + dat[i].num + '</p>' +
+                                '<p>采摘人员: ' + dat[i].name + '</p><p>所属园区:' + dat[i].farm + '</p><p>品种: ' + dat[i].var + '</p><p>采摘数量: ' + dat[i].num + '</p>' +
                                 '<p>采摘时间: ' + time[0] + '</p></div></div><div class="operateDiv">' +
                                 '<button type="button" class="layui-btn layui-btn-sm layui-btn-normal" onclick=\'edit(' + datMsg + ')\'>修改</button>' +
                                 '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="del(' + dat[i].id + ')">删除</button>' +

+ 13 - 9
templates/backstageNet/production/repertoryManage.html

@@ -192,12 +192,12 @@
                         <input type="text" name="rtype" required lay-verify="required" placeholder="请输入物料类别" autocomplete="off" class="layui-input">
                     </div>
                 </div>
-                <div class="layui-form-item">
+                <!-- <div class="layui-form-item">
                     <label class="layui-form-label">规格:</label>
                     <div class="layui-input-inline">
                         <input type="text" name="spec" required lay-verify="required" placeholder="请输入规格" autocomplete="off" class="layui-input">
                     </div>
-                </div>
+                </div> -->
                 <div class="layui-form-item">
                     <label class="layui-form-label">库存:</label>
                     <div class="layui-input-inline">
@@ -328,7 +328,7 @@
                         } else {
                             layer.msg("新增成功", { icon: 1 });
                         }
-                        sessionStorage.removeItem('seelectID')
+                        // sessionStorage.removeItem('seelectID')
                         alert('成功')
                     },
                     error: function (type) {
@@ -337,7 +337,7 @@
                         } else {
                             layer.msg("新增失败", { icon: 2 });
                         }
-                        sessionStorage.removeItem('seelectID')
+                        // sessionStorage.removeItem('seelectID')
                         alert('失败')
                     }
                 })
@@ -374,7 +374,7 @@
              //监听用户是否刷新,刷新页面删除本地存储的ID
              $(function() {  
                 $(window).on('beforeunload', function() {  
-                    sessionStorage.removeItem('seelectID')
+                    // sessionStorage.removeItem('seelectID')
                     sessionStorage.removeItem('kuID')
                     sessionStorage.removeItem('req')
                 });  
@@ -382,7 +382,7 @@
 
             //选择农场的下拉框监听回调
             form.on('select()', function(data){
-            sessionStorage.setItem('seelectID', data.value)
+            // sessionStorage.setItem('seelectID', data.value)
             gedata('repertory_new', 1 )
             function gedata(url, page) {
                 $.ajax({
@@ -406,7 +406,7 @@
                                     $.ajax({
                                         url: 'repertory_new',
                                         type: 'get',
-                                        data: { page: obj.curr, ids: sessionStorage.getItem('seelectID') },
+                                        data: { page: obj.curr, ids: $('#farmSelect').val() },
                                         dataType: 'html',
                                         success: function (data) {
                                             console.log(data);
@@ -431,7 +431,9 @@
 
         //修改
         function amend (id) {
-            if (sessionStorage.getItem('seelectID') !== null) {
+            var idData = $('#farmSelect').val()
+            var nameData = $('#farmSelect option:selected').text()
+            if (idData !== '' && nameData !== '') {
                     $.ajax({
                     url: 'repertory_new',
                     type: 'post',
@@ -511,7 +513,9 @@
 
         //编辑新增弹出层
         function selectModelFun() {
-            if (sessionStorage.getItem('seelectID') !== null) {
+            var idData = $('#farmSelect').val()
+            var nameData = $('#farmSelect option:selected').text()
+            if (idData !== '' && nameData !== '') {
                     layui.use(['layer'], function () {
                     layer = layui.layer;
                     var index = layer.open({

+ 2 - 2
templates/backstageNet/production/repertoryNew.html

@@ -6,8 +6,8 @@
             <div class="userInfo">
                 <p>物料名称: {{ msg.name }}</p>
                 <p>物料类别: {{ msg.rtype }}</p>
-                <p>规格: {{ msg.spec }}KG/包</p>
-                <p>库存:{{ msg.rese }} </p>
+                <!-- <p>规格: {{ msg.spec }}KG/包</p> -->
+                <p>库存:{{ msg.rese }} KG</p>
             </div>
         </div>
         <div class="operateDiv">

+ 12 - 1
templates/backstageNet/production/sellManage.html

@@ -180,9 +180,20 @@
         <div>
             <form class="layui-form" action="" lay-filter="sellForm">
                 <div class="layui-form-item">
+                    <label class="layui-form-label">园区</label>
+                    <div class="layui-input-block">
+                        <select name="farm" lay-verify="required" lay-search>
+                            {{farm_list}}
+                            {% for farm in farm_list %}
+                            <option value="{{farm.garden.name}}">{{farm.garden.name}}</option>
+                            {% endfor %}
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-form-item">
                     <label class="layui-form-label">农场</label>
                     <div class="layui-input-block">
-                        <select name="farm" lay-verify="required">
+                        <select name="farm" lay-verify="required" lay-search>
                             {% for farm in farm_list %}
                             <option value="{{farm.name}}">{{farm.name}}</option>
                             {% endfor %}