浏览代码

Merge branch 'haozi-temp1' of ssh://baoshi56.com:10022/var/git/bswas into ajun_procurement

haozi 5 年之前
父节点
当前提交
15cf9dc185

+ 2 - 2
app/Http/Controllers/MaterialController.php

@@ -39,8 +39,8 @@ class MaterialController extends Controller
         /** @var Material $material */
         $material = Material::query()->find($request['id']);
         try {
-            $material->update($request->all(['code', 'name']));
-            return ['success' => true,'date'=>$material];
+            $material->update($request->all(['name', 'code']));
+            return ['success' => true,'data'=>$material];
         } catch (WarningException $e) {
             return ['success'=>false,'message'=>$e->getMessage()];
         }

+ 67 - 0
app/Http/Requests/Configuration/ConfigurationRequest.php

@@ -0,0 +1,67 @@
+<?php
+
+
+namespace App\Http\Requests\Configuration;
+
+use App\Traits\RequestApiFormValidation;
+use Illuminate\Foundation\Http\FormRequest;
+use Illuminate\Support\Facades\Route;
+
+class ConfigurationRequest extends FormRequest
+{
+    use RequestApiFormValidation;
+
+    protected $storeApiRules =[
+        'name' => 'required',
+        'value' => 'required',
+        'description' => 'required',
+    ];
+    protected $storeApiMessage = [
+        'name.required' => '系统配置名称为必填项',
+        'value.required' => '系统配置值为必填项',
+        'description.required' => '系统配置值描述为必填项',
+    ];
+
+    protected $updateApiRules = [
+        'name' => 'required',
+        'value' => 'required',
+        'description' =>  'required'
+    ];
+
+    protected $updateApiMessage = [
+        'name.required' => '系统配置名称为必填项',
+        'value.required' => '系统配置值为必填项',
+        'description.required' => '系统配置值描述为必填项',
+    ];
+
+    public function authorize(): bool
+    {
+        return true;
+    }
+
+
+    public function rules():array
+    {
+        $routeName = Route::currentRouteName();
+        switch ($routeName){
+            case 'configuration.storeApi':
+                return $this->storeApiRules;
+            case 'configuration.updateApi':
+                return $this->updateApiRules;
+            default:
+                return [];
+        }
+    }
+    public function messages():array
+    {
+        $routeName = Route::currentRouteName();
+        switch ($routeName){
+            case 'configuration.storeApi':
+                return $this->storeApiMessage;
+            case 'configuration.updateApi':
+                return $this->updateApiMessage;
+            default:
+                return [];
+        }
+    }
+}

+ 22 - 6
resources/views/maintenance/configuration/_create.blade.php

@@ -3,7 +3,7 @@
         <div class="modal-content">
             <div class="modal-header">
                 <h5 class="modal-title text-center">系统配置添加</h5>
-                <button type="button" class="close" data-dismiss="modal" @click="addConfiguration={}">
+                <button type="button" class="close" data-dismiss="modal" >
                     <span>&times;</span>
                 </button>
             </div>
@@ -12,26 +12,42 @@
                     <div class="form-group row">
                         <label for="add-name" class="col-sm-2 col-form-label text-right">名称</label>
                         <div class="col-sm-10 form-inline">
-                            <input type="text" name="name" id="add-name" class="form-control col-sm-10" placeholder="输入配置名称" v-model="addConfiguration.name">
+                            <input type="text" name="name" id="add-name" class="form-control col-sm-10" placeholder="输入配置名称" v-model="addConfiguration.name"
+                                   :class="configurationErrors.name?'is-invalid':''"
+                                   @focus="configurationErrors.name!==null ? configurationErrors.name=null:''">
+                            <div class="invalid-feedback" v-if="configurationErrors.name">
+                                @{{ configurationErrors.name[0] }}
+                            </div>
                         </div>
                     </div>
                     <div class="form-group row">
                         <label for="add-value" class="col-sm-2 col-form-label text-right">值</label>
                         <div class="col-sm-10 form-inline">
-                            <input type="text" id="add-value" class="form-control col-10" name="value" placeholder="输入配置值" v-model="addConfiguration.value">
+                            <input type="text" id="add-value" class="form-control col-10" name="value" placeholder="输入配置值" v-model="addConfiguration.value"
+                                   :class="configurationErrors.value?'is-invalid':''"
+                                   @focus="configurationErrors.value!==null ? configurationErrors.value=null:''">
+                            <div class="invalid-feedback" v-if="configurationErrors.value">
+                                @{{ configurationErrors.value[0] }}
+                            </div>
                         </div>
                     </div>
                     <div class="form-group row">
                         <label for="add-description" class="col-sm-2 col-form-label text-right">描述</label>
                         <div class="col-sm-10 form-inline">
-                            <textarea name="description" id="add-description" cols="30" rows="5"  class="form-control form-text col-10" v-model="addConfiguration.description"></textarea>
+                            <textarea name="description" id="add-description" cols="30" rows="5"  class="form-control form-text col-10" v-model="addConfiguration.description"
+                                      :class="configurationErrors.description?'is-invalid':''"
+                                      @focus="configurationErrors.description!==null ? configurationErrors.description=null:''">
+                            ></textarea>
+                            <div class="invalid-feedback" v-if="configurationErrors.description">
+                                @{{ configurationErrors.description[0] }}
+                            </div>
                         </div>
                     </div>
                 </form>
             </div>
             <div class="modal-footer">
-                <button type="button" class="btn btn-secondary"  data-dismiss="modal" @click="addConfiguration={}">关闭</button>
-                <button type="button" class="btn btn-primary" @click="create">提交</button>
+                <button type="button" class="btn btn-secondary"  data-dismiss="modal" >关闭</button>
+                <button type="button" class="btn btn-primary" @click="create(addConfiguration)">提交</button>
             </div>
         </div>
     </div>

+ 19 - 3
resources/views/maintenance/configuration/_edit.blade.php

@@ -12,19 +12,35 @@
                     <div class="form-group row">
                         <label for="add-name" class="col-sm-2 col-form-label text-right">名称</label>
                         <div class="col-sm-10 form-inline">
-                            <input type="text" name="name" id="add-name" class="form-control col-sm-10" placeholder="输入配置名称" v-model="editConfiguration.name" readonly>
+                            <input type="text" name="name" id="add-name" class="form-control col-sm-10" placeholder="输入配置名称" v-model="editConfiguration.name" readonly
+                                   :class="configurationErrors.name?'is-invalid':''"
+                                   @focus="configurationErrors.name!==null ? configurationErrors.name=null:''">
+                            <div class="invalid-feedback" v-if="configurationErrors.name">
+                                @{{ configurationErrors.name[0] }}
+                            </div>
                         </div>
                     </div>
                     <div class="form-group row">
                         <label for="add-value" class="col-sm-2 col-form-label text-right">值</label>
                         <div class="col-sm-10 form-inline">
-                            <input type="text" id="add-value" class="form-control col-10" name="value" placeholder="输入配置值" v-model="editConfiguration.value">
+                            <input type="text" id="add-value" class="form-control col-10" name="value" placeholder="输入配置值" v-model="editConfiguration.value"
+                                   :class="configurationErrors.value?'is-invalid':''"
+                                   @focus="configurationErrors.value!==null ? configurationErrors.value=null:''">
+                            <div class="invalid-feedback" v-if="configurationErrors.value">
+                                @{{ configurationErrors.value[0] }}
+                            </div>
                         </div>
                     </div>
                     <div class="form-group row">
                         <label for="add-description" class="col-sm-2 col-form-label text-right">描述</label>
                         <div class="col-sm-10 form-inline">
-                            <textarea name="description" id="add-description" cols="30" rows="5"  class="form-control form-text col-10" v-model="editConfiguration.description"></textarea>
+                            <textarea name="description" id="add-description" cols="30" rows="5"  class="form-control form-text col-10" v-model="editConfiguration.description"
+                                      :class="configurationErrors.description?'is-invalid':''"
+                                      @focus="configurationErrors.description!==null ? configurationErrors.description=null:''">
+                            </textarea>
+                            <div class="invalid-feedback" v-if="configurationErrors.description">
+                                @{{ configurationErrors.description[0] }}
+                            </div>
                         </div>
                     </div>
                 </form>

+ 61 - 18
resources/views/maintenance/configuration/index.blade.php

@@ -3,7 +3,7 @@
 @section('title','系统配置')
 
 @section('content')
-    <nav class="nav2">
+    <nav id="nav2">
         @component('maintenance.menu')@endcomponent
     </nav>
 
@@ -34,7 +34,8 @@
                 addConfiguration:{},
                 editConfiguration:{},
                 index:'',
-                selectTr:''
+                selectTr:'',
+                configurationErrors:{},
             },
             mounted(){
                 $('#configuration').removeClass('d-none');
@@ -60,32 +61,74 @@
                 edit(configuration,i){
                     this.editConfiguration = JSON.parse(JSON.stringify(configuration));
                     this.index = i;
+                    this.configurationErrors ={};
                     $('#edit-configuration').modal('show');
                 },
                 update(){
                     let url = '{{url('apiLocal/configuration/update')}}';
                     let params = this.editConfiguration;
-                    window.tempTip.postBasicRequest(url,params,res=>{
-                        this.$set(this.configurations,this.index,res);
-                        this.index = null;
-                        this.editConfiguration = {};
-                        $("#edit-configuration").modal('hide');
-                        return "修改完成";
-                    },true);
+                    if(!this.validateConfiguration(params))return;
+                    window.axios.post(url,params).then(res=>{
+                        if(res.data.success){
+                            this.$set(this.configurations,this.index,res.data.data);
+                            this.index = null;
+                            this.editConfiguration = {};
+                            $("#edit-configuration").modal('hide');
+                            window.tempTip.showSuccess('修改成功');
+                            return ;
+                        }
+                        if(res.data.errors){
+                            this.configurationErrors = res.data.errors;
+                            return;
+                        }
+                        window.tempTip.show(res.data.message ?? '修改失败');
+                    }).catch(err=>{
+                        window.tempTip.show('修改失败'+err);
+                    });
                 },
                 store(){
+                    this.addConfiguration = {};
+                    this.configurationErrors ={};
                     $('#add-configuration').modal('show');
                 },
-                create(){
+                create(params){
                     let url = '{{url('apiLocal/configuration/store')}}';
-                    let params = this.addConfiguration;
-                    window.tempTip.postBasicRequest(url,params,res=>{
-                        this.configurations.unshift(res);
-                        this.$forceUpdate();
-                        this.addConfiguration = {};
-                        $("#add-configuration").modal('hide');
-                        return "添加成功";
-                    },true);
+                    if(!this.validateConfiguration(params))return;
+                    window.tempTip.setIndex(1099);
+                    window.tempTip.setDuration(3000);
+                    window.axios.post(url,params).then(res=>{
+                        if(res.data.success){
+                            this.configurations.unshift(res.data.data);
+                            this.$forceUpdate();
+                            $("#add-configuration").modal('hide');
+                            window.tempTip.showSuccess('添加成功');
+                            return ;
+                        }
+                        if(res.data.errors){
+                            this.configurationErrors = res.data.errors;
+                            return ;
+                        }
+                        window.tempTip.show(res.data.message ?? '修改失败');
+                    }).catch(err=>{
+                        window.tempTip.show('修改失败'+err);
+                    });
+                },
+                validateConfiguration(configuration){
+                    let bool = true;
+                    if(!configuration.hasOwnProperty('name') || configuration.name.trim() === ''){
+                        this.$set(this.configurationErrors,'name',['名称为必填项'])
+                        bool = false;
+                    }
+                    if(!configuration.hasOwnProperty('value') || configuration.value.trim() === ''){
+                        this.$set(this.configurationErrors,'value',['值为必填项'])
+                        bool = false;
+                    }
+                    if(!configuration.hasOwnProperty('description') || configuration.description.trim() === ''){
+                        this.$set(this.configurationErrors,'description',['描述为必填项'])
+                        bool = false;
+                    }
+                    if(!bool)this.$forceUpdate();
+                    return bool;
                 }
             }
         });

+ 2 - 2
resources/views/maintenance/material/index.blade.php

@@ -71,11 +71,11 @@
             update(material,index){
                 window.tempTip.setDuration(3000);
                 window.tempTip.setIndex(1099);
-                window.axios.post('{{url('apiLocal/material/update')}}',material)
-                    .then(res=>{
+                window.axios.post('{{url('apiLocal/material/update')}}',material).then(res=>{
                         if(res.data.success){
                             $('#editModal').modal('hide');
                             window.tempTip.showSuccess('修改成功');
+                            console.log(res.data.data);
                             this.$set(this.materials,index,res.data.data);
                             this.selectIndex = 0;
                             return;

+ 2 - 2
resources/views/maintenance/ownerMaterial/_create.blade.php

@@ -18,7 +18,7 @@
                                     @focus="materialErrors.owner_id= null">
                                 <option v-for="(owner,i) in filterOwners"  :value="owner.id">@{{ owner.name }}</option>
                             </select>
-                            <input type="text" placeholder="输入货主进行筛选" class="form-control col-sm-4 offset-1" id="filterOwnerName" @change="filterOwner($event)">
+                            <input type="text" placeholder="输入货主进行筛选" class="form-control col-sm-4 offset-1" id="filterOwnerName" @input="filterOwner($event,1)">
                             <div class="invalid-feedback" v-if="materialErrors.owner_id">
                                 @{{ materialErrors.owner_id[0] }}
                             </div>
@@ -44,7 +44,7 @@
                                     @focus="materialErrors.material_id= null">
                                 <option v-for="(materials,i) in filterMaterials"  :value="materials.id">@{{ materials.code }}</option>
                             </select>
-                            <input type="text" placeholder="输入耗材进行筛选" class="form-control col-m-4 offset-1" @change="filterMaterial($event)">
+                            <input type="text" placeholder="输入耗材进行筛选" class="form-control col-m-4 offset-1" @input="filterMaterial($event,1)">
                             <div class="invalid-feedback" v-if="materialErrors.material_id">
                                 @{{ materialErrors.material_id[0] }}
                             </div>

+ 2 - 2
resources/views/maintenance/ownerMaterial/_edit.blade.php

@@ -17,7 +17,7 @@
                                       @focus="materialErrors.owner_id= null">
                                 <option v-for="(owner,i) in filterOwners"  :value="owner.id">@{{ owner.name }}</option>
                             </select>
-                            <input type="text" placeholder="输入货主进行筛选" class="form-control col-sm-4 offset-1" id="editOwnerName" @change="filterOwner($event)">
+                            <input type="text" placeholder="输入货主进行筛选" class="form-control col-sm-4 offset-1" id="editOwnerName" @change="filterOwner($event,2)">
                             <div class="invalid-feedback" v-if="materialErrors.owner_id">
                                 @{{ materialErrors.owner_id[0] }}
                             </div>
@@ -44,7 +44,7 @@
                                      @focus="materialErrors.material_id = null">
                                 <option v-for="(materials,i) in filterMaterials"  :value="materials.id">@{{ materials.code }}</option>
                             </select>
-                            <input type="text" placeholder="输入耗材进行筛选" class="form-control col-m-4 offset-1" @change="filterMaterial($event)">
+                            <input type="text" placeholder="输入耗材进行筛选" class="form-control col-m-4 offset-1" @change="filterMaterial($event,2)">
                             <div class="invalid-feedback" v-if="materialErrors.material_id">
                                 @{{ materialErrors.material_id[0] }}
                             </div>

+ 1 - 1
resources/views/maintenance/ownerMaterial/_uploadFile.blade.php

@@ -18,7 +18,7 @@
                     <input type="file" class=" form-control-file" id="updatafile-input" ref="file">
                 </div>
                 <div>
-                    <span class="text-secondary mt-1">文件大小不能超过10mb</span>
+                    <span class="text-secondary mt-1">文件大小不能超过10MB</span>
                 </div>
             </div>
             <div class="modal-footer">

+ 28 - 12
resources/views/maintenance/ownerMaterial/index.blade.php

@@ -162,6 +162,8 @@
                 return '{{ url("maintenance/ownerMaterial/downFile?file=")}}'+ownerMaterial.file.url+'&name='+ownerMaterial.file.file_name;
             },
             uploadFile(){
+                tempTip.setDuration(3000);
+                tempTip.setIndex(1099);
                 let url = '{{url('apiLocal/ownerMaterial/uploadFile')}}';
                 let data = new FormData();
                 let file = this.$refs.file.files[0];
@@ -169,23 +171,29 @@
                     if (!confirm('请选择上传文件')) return;
                 }
                 if (file.size >=10485760){
-                    tempTip.setDuration(3000);
-                    tempTip.setDuration(1099);
                     tempTip.show("图片大小不能超过10MB!");
                     return;
                 }
                 data.append('file',file);
                 data.append('id',this.editOwnerMaterial.id);
-                window.tempTip.postBasicRequest(url,data,res=>{
-                    this.fileType(res);
-                    this.$set(this.ownerMaterials,this.index,res);
-                    this.editOwnerMaterial = {};
-                    this.index = '';
-                    $("#uploadFile").modal('hide');
-                    return "上传成功";
-                },true);
+                window.axios.post(url,data,{
+                    'Content-Type':'multipart/form-data'
+                }).then(res=>{
+                    if(res.data.success){
+                        this.fileType(res.data.data);
+                        this.$set(this.ownerMaterials,this.index,res.data.data);
+                        this.editOwnerMaterial = {};
+                        this.index = '';
+                        tempTip.showSuccess('文件上传成功');
+                        $("#uploadFile").modal('hide');
+                        return ;
+                    }
+                    tempTip.show(res.data.message ?? '文件上传失败');
+                }).catch(err=>{
+                    tempTip.show('文件上传失败'+err);
+                })
             },
-            filterMaterial(e){
+            filterMaterial(e,type){
                 let value = $(e.target).val();
                 let materials = JSON.parse(JSON.stringify(this.materials));
                 if(value==='' || value===null)this.filterMaterials = materials;
@@ -193,9 +201,13 @@
                     this.filterMaterials = materials.filter(function(item){
                         return item.code.indexOf(value) !== -1;
                     });
+                    if(this.filterMaterials.length>0){
+                        if(type===1)this.addOwnerMaterial.material_id = this.filterMaterials[0]['id'];
+                        if(type===2)this.editOwnerMaterial.material_id = this.filterMaterials[0]['id'];
+                    }
                 }
             },
-            filterOwner(e){
+            filterOwner(e,type){
                 let value = $(e.target).val();
                 let owners = JSON.parse(JSON.stringify(this.owners));
                 if(value==='' || value===null)this.filterOwners = owners;
@@ -203,6 +215,10 @@
                     this.filterOwners = owners.filter(function(item){
                         return item.name.indexOf(value) !== -1;
                     });
+                    if(this.filterOwners.length>0){
+                        if(type===1)this.addOwnerMaterial.owner_id = this.filterOwners[0]['id'];
+                        if(type===2)this.editOwnerMaterial.owner_id = this.filterOwners[0]['id'];
+                    }
                 }
             },
             validateOwnerMaterial(material){

+ 3 - 3
routes/apiLocal.php

@@ -135,9 +135,9 @@ Route::group(['prefix' => 'supplier'],function(){
 });
 /** 系统配置 */
 Route::group(['prefix' => 'configuration'],function(){
-    Route::post('store','ConfigurationController@storeApi');
-    Route::post('update','ConfigurationController@updateApi');
-    Route::delete('{id}','ConfigurationController@destroyApi');
+    Route::post('store','ConfigurationController@storeApi')->name('configuration.storeApi');
+    Route::post('update','ConfigurationController@updateApi')->name('configuration.updateApi');
+    Route::delete('{id}','ConfigurationController@destroyApi')->name('configuration.destroyApi');
 });