Bladeren bron

物料、酒店

liuhj 2 weken geleden
bovenliggende
commit
9d04081d7d
3 gewijzigde bestanden met toevoegingen van 506 en 1 verwijderingen
  1. 41 1
      src/components/OP/HotelReservations.vue
  2. 459 0
      src/components/OP/MaterialBasicdata.vue
  3. 6 0
      src/router/index.js

+ 41 - 1
src/components/OP/HotelReservations.vue

@@ -4,11 +4,17 @@
             <div class="hotelr-head">
             <div class="hotelr-head">
                 <div class="hotelr-head-li">
                 <div class="hotelr-head-li">
                     <label>团组名称:</label>
                     <label>团组名称:</label>
-                    <el-select style="width:220px" @change="delegationSelectChange" v-model="OpHotelReservationsData.diId" clearable filterable
+                    <!-- <el-select style="width:220px" @change="delegationSelectChange" v-model="OpHotelReservationsData.diId" clearable filterable
                         placeholder="请选择">
                         placeholder="请选择">
                         <el-option v-for="item in delegationInfoList" :key="item.id" :label="item.teamName"
                         <el-option v-for="item in delegationInfoList" :key="item.id" :label="item.teamName"
                             :value="item.id">
                             :value="item.id">
                         </el-option>
                         </el-option>
+                    </el-select> -->
+                    <el-select style="width:220px" remote :remote-method="ConferenceAffairsKeywordSearch" @change="delegationSelectChange" v-model="OpHotelReservationsData.diId" filterable
+                        placeholder="请选择">
+                        <el-option v-for="item in delegationInfoLists" :key="item.id" :label="item.teamName"
+                            :value="item.id">
+                        </el-option>
                     </el-select>
                     </el-select>
                 </div>
                 </div>
                 <div class="hotelr-info">
                 <div class="hotelr-info">
@@ -887,6 +893,7 @@ export default {
             loading: false,
             loading: false,
             isAuditGM: 0,
             isAuditGM: 0,
             delegationInfoList: [],
             delegationInfoList: [],
+            delegationInfoLists: [],
             delegationInfo: {},
             delegationInfo: {},
             guestType: [],//客人类型
             guestType: [],//客人类型
             currencyList: [],//币种下拉框
             currencyList: [],//币种下拉框
@@ -1129,6 +1136,35 @@ export default {
         }
         }
     },
     },
     methods: {
     methods: {
+        //联想
+        ConferenceAffairsKeywordSearch(query) {
+            if (query !== '') {
+                // this.selectLoading=true;
+                var url = "/api/search/GroupFeeKeywordSearch/" +this.userId+'/'+76 +'/'+query
+                var that = this
+                this.$axios({
+                    method: 'get',
+                    url: url,
+                    headers: {
+                        Authorization: 'Bearer ' + this.token
+                    },
+                }).then(function (res) {
+                    if (res.data.code == 200) {
+                        that.delegationInfoLists = res.data.data;
+                    }else{
+                        that.delegationInfoLists=[];
+                    }
+                }).finally(()=>{
+                    // that.selectLoading=false;
+                })
+            }else{
+                this.delegationInfoLists=this.delegationInfoList;
+                
+            }
+            console.log(this.delegationInfoLists);
+        },
+
+
         //拼音
         //拼音
         pinyingxing(val){
         pinyingxing(val){
             return pinyin(val, { toneType: 'none' }).toUpperCase();
             return pinyin(val, { toneType: 'none' }).toUpperCase();
@@ -1273,6 +1309,7 @@ export default {
                         that.OpHotelReservationsData.diId=res.data.data[0].id
                         that.OpHotelReservationsData.diId=res.data.data[0].id
                     }
                     }
                     that.delegationInfoList = res.data.data;
                     that.delegationInfoList = res.data.data;
+                    that.delegationInfoLists = that.delegationInfoList;
                     for(var x=0;x<res.data.data.length;x++){
                     for(var x=0;x<res.data.data.length;x++){
                         if(that.OpHotelReservationsData.diId==res.data.data[x].id){
                         if(that.OpHotelReservationsData.diId==res.data.data[x].id){
                             that.delegationInfo=res.data.data[x]
                             that.delegationInfo=res.data.data[x]
@@ -1316,6 +1353,9 @@ export default {
                         that.PostHotelReservationsBasicsDataInit()
                         that.PostHotelReservationsBasicsDataInit()
                     },500)
                     },500)
                     that.tableDatas=res.data.data;
                     that.tableDatas=res.data.data;
+                }else{
+                    that.loading=false;
+                    that.$message.error(res.data.msg);
                 }
                 }
             }).catch(function (error) {
             }).catch(function (error) {
                 that.loading=false;
                 that.loading=false;

+ 459 - 0
src/components/OP/MaterialBasicdata.vue

@@ -0,0 +1,459 @@
+<template>
+    <div class="MaterialBasicdata-all">
+        <el-dialog custom-class="MaterialBasicdata-dialog" title="物料成本基础数据" :visible.sync="MaterialBasicdataVisible">
+            <el-form :model="addinfo" :rules="addinfos" ref="addinfo">
+                <div class="MaterialBasicdata-dialog-top">
+                    <el-form-item label="类型:" :label-width="formLabelWidth" prop="typeId">
+                        <el-select size="small" v-model="addinfo.typeId" filterable placeholder="请选择">
+                            <el-option v-for="item in typeIdrrs" :key="item.id" :label="item.name" :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="城市:" :label-width="formLabelWidth" prop="cityId">
+                        <el-select size="small" v-model="addinfo.cityId" filterable placeholder="请选择">
+                            <el-option v-for="item in cityIdarrs" :key="item.id" :label="item.name" :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="规模:" :label-width="formLabelWidth" prop="setDataId">
+                        <el-select size="small" v-model="addinfo.setDataId" filterable placeholder="请选择">
+                            <el-option v-for="item in setDataIdarrs" :key="item.id" :label="item.name" :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="标准名称:" :label-width="formLabelWidth" prop="name">
+                        <el-input size="small" placeholder="请输入内容" v-model="addinfo.name" clearable>
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="价格:" :label-width="formLabelWidth" prop="price">
+                        <el-input-number :precision="2" size="small"
+                                :controls="false" v-model="addinfo.price"></el-input-number>
+                    </el-form-item>
+                    <el-form-item label="数量:" :label-width="formLabelWidth" prop="number">
+                        <el-input-number :precision="2" size="small"
+                                :controls="false" v-model="addinfo.number"></el-input-number>
+                    </el-form-item>
+                    <el-form-item label="单位:" :label-width="formLabelWidth" prop="unit">
+                        <el-select size="small" v-model="addinfo.unit" filterable placeholder="请选择">
+                            <el-option v-for="item in unitarrs" :key="item.id" :label="item.name" :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </div>
+                <el-form-item label="备注:" :label-width="formLabelWidth">
+                    <el-input type="textarea" :rows="3" placeholder="请输入内容" v-model="addinfo.remark"></el-input>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button @click="MaterialBasicdataVisible = false">取 消</el-button>
+                <el-button type="primary" @click="submitForm('addinfo')">确 定</el-button>
+            </div>
+        </el-dialog>
+
+        <div class="MaterialBasicdata-header">
+            <div class="MaterialBasicdata-header-left">
+                <div class="MaterialBasicdata-header-left-item">
+                    <label style="width:40px;">城市: </label>
+                    <el-select size="small" v-model="cityId" filterable placeholder="请选择">
+                        <el-option v-for="item in cityIdarrs" :key="item.id" :label="item.teamName" :value="item.id">
+                        </el-option>
+                    </el-select>
+                </div>
+                <div class="MaterialBasicdata-header-left-item">
+                    <label style="width:35px;">规模: </label>
+                    <el-select size="small" v-model="setDataId" filterable placeholder="请选择">
+                        <el-option v-for="item in setDataIdarrs" :key="item.id" :label="item.name" :value="item.id">
+                        </el-option>
+                    </el-select>
+                </div>
+                <div class="MaterialBasicdata-header-left-item">
+                    <label style="width:35px;">类型: </label>
+                    <el-select size="small" v-model="typeId" filterable placeholder="请选择">
+                        <el-option v-for="item in typeIdrrs" :key="item.id" :label="item.name" :value="item.id">
+                        </el-option>
+                    </el-select>
+                </div>
+            </div>
+            <div class="MaterialBasicdata-header-right">
+                <el-button size="small" @click="addbtn" type="primary">新 增</el-button>
+            </div>
+        </div>
+        <div class="MaterialBasicdata-table">
+            <el-table :data="tableData" border style="width: 100%">
+                <el-table-column prop="cityName" label="城市" width="100">
+                </el-table-column>
+                <el-table-column prop="setDataName" label="规模" width="150">
+                </el-table-column>
+                <el-table-column prop="typeId" label="类型" width="100">
+                </el-table-column>
+                <el-table-column prop="name" label="名称" width="300">
+                </el-table-column>
+                <el-table-column prop="price" label="金额" width="100">
+                </el-table-column>
+                <el-table-column prop="number" label="数量" width="100">
+                </el-table-column>
+                <el-table-column prop="unit" label="单位" width="100">
+                </el-table-column>
+                <el-table-column prop="remark" label="备注">
+                </el-table-column>
+                <el-table-column prop="address" label="操作" width="160">
+                    <template slot-scope="scope">
+                        <el-button size="mini" @click="Reviselistinfo(scope.row)">编辑</el-button>
+                        <el-button type="danger" size="mini" @click="handleDelete(scope.$index, scope.row, tableData)">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <div class="block">
+                <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
+                    :current-page="pageIndex" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize"
+                    layout="total, sizes, prev, pager, next, jumper" :total="total">
+                </el-pagination>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    data() {
+        return {
+            cityId: "",
+            cityIdarrs: [],
+            setDataId: "",
+            setDataIdarrs: [],
+            typeId: "",
+            typeIdrrs: [],
+            tableData: [],
+            token: "",
+            userId: "",
+            pageIndex: 1,
+            pageSize: 10,
+            total: 0,
+            MaterialBasicdataVisible: false,
+            addinfo: {
+                typeId: "",
+                name: "",
+                price: 0,
+                number: 0,
+                unit: "",
+                setDataId: "",
+                cityId: "",
+                remark: "",
+                id: "",
+            },
+            addinfos: {
+                typeId: [
+                    { required: true, message: '请选择类型', trigger: 'change' },
+                ],
+                setDataId: [
+                    { required: true, message: '请选择规模', trigger: 'change' },
+                ],
+                cityId: [
+                    { required: true, message: '请选择城市', trigger: 'change' },
+                ],
+                name: [
+                    { required: true, message: '请输入标准名称', trigger: 'blur' },
+                ],
+                price: [
+                    { required: true, message: '请输入价格', trigger: 'blur' },
+                ],
+                number: [
+                    { required: true, message: '请输入数量', trigger: 'blur' },
+                ],
+                unit: [
+                    { required: true, message: '请选择单位', trigger: 'change' },
+                ],
+            },
+            unitarrs:[],
+            formLabelWidth: '80px',
+        }
+    },
+    methods: {
+        handleSizeChange(val) {
+            this.pageIndex = 1;
+            this.pageSize = val;
+            this.MaterialCostList()
+        },
+        handleCurrentChange(val) {
+            this.pageIndex = val;
+            this.MaterialCostList()
+        },
+        //addbtn
+        addbtn() {
+            this.MaterialBasicdataVisible = true;
+            this.Initializationaddinfo();
+        },
+        //初始化
+        Initializationaddinfo(){
+            this.addinfo={
+                typeId: "",
+                name: "",
+                price: 0,
+                number: 0,
+                unit: "",
+                setDataId: "",
+                cityId: "",
+                remark: "",
+                id: "",
+            }
+        },
+        //获取基础数据
+        QuerySetData() {
+            var url = "/api/System/QuerySetData"
+            var that = this
+            new Promise(function (resolve, reject) {
+                that.$axios({
+                    method: 'post',
+                    url: url,
+                    headers: {
+                        Authorization: 'Bearer ' + that.token
+                    },
+                    data: {
+                        dataType: 136,
+                    }
+                }).then(function (res) {
+                    if (res.data.code == 200) {
+                        var datas = res.data.data;
+                        that.setDataIdarrs = datas;
+                        resolve();
+                    } else {
+                        that.$message({
+                            type: 'error',
+                            message: res.data.msg
+                        });
+                    }
+                })
+            }).then(() => {
+                that.MaterialCostList();
+            });
+
+        },
+        //获取表格
+        MaterialCostList() {
+            var url = "/api/Resource/MaterialCostList"
+            var that = this
+            that.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.token
+                },
+                data: {
+                    portType: 1,
+                    pageIndex: that.pageIndex,
+                    pageSize: that.pageSize,
+                    typeId: that.typeId == '' ? 0 : that.typeId,
+                    name: '',
+                    setDataId: that.setDataId == '' ? 0 : that.setDataId,
+                    cityId: that.cityId == '' ? 0 : that.cityId,
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    var datas = res.data.data;
+                    that.tableData = datas.dataList;
+                    that.dataCount = datas.dataCount;
+                } else {
+                    that.$message({
+                        type: 'error',
+                        message: res.data.msg
+                    });
+                }
+            })
+        },
+        //修改
+        Reviselistinfo(val){
+            this.MaterialBasicdataVisible = true;
+            var url = "/api/Resource/MaterialCostInfo?id=" + val.id
+            var that = this
+            that.$axios({
+                method: 'get',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.token
+                },
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    var datas = res.data.data;
+                    that.addinfo.typeId=datas.typeId;
+                    that.addinfo.name=datas.name;
+                    that.addinfo.price=datas.price;
+                    that.addinfo.number=datas.number;
+                    that.addinfo.unit=datas.unit;
+                    that.addinfo.setDataId=datas.setDataId;
+                    that.addinfo.cityId=datas.cityId;
+                    that.addinfo.remark=datas.remark;
+                    that.addinfo.id=datas.id;
+                } else {
+                    that.$message({
+                        type: 'error',
+                        message: res.data.msg
+                    });
+                }
+            })
+        },
+        //编辑保存
+        MaterialCostAddOrEdit() {
+            var url = "/api/Resource/MaterialCostAddOrEdit"
+            var that = this
+            new Promise(function (resolve, reject) {
+                that.$axios({
+                    method: 'post',
+                    url: url,
+                    headers: {
+                        Authorization: 'Bearer ' + that.token
+                    },
+                    data: {
+                        typeId: that.addinfo.typeId=='' ? 0 : that.addinfo.typeId,
+                        name: that.addinfo.name,
+                        price: that.addinfo.price,
+                        number: that.addinfo.number,
+                        unit: that.addinfo.unit=='' ? 0 : that.addinfo.unit,
+                        setDataId: that.addinfo.setDataId=='' ? 0 : that.addinfo.setDataId,
+                        cityId: that.addinfo.cityId=='' ? 0 : that.addinfo.cityId,
+                        createUserId: that.userId,
+                        remark: that.addinfo.remark,
+                        id: that.addinfo.id=='' ? 0 : that.addinfo.id,
+                    }
+                }).then(function (res) {
+                    if (res.data.code == 200) {
+                        that.$message({
+                            type: 'success',
+                            message: res.data.msg,
+                        });
+                        that.MaterialBasicdataVisible=false;
+                        resolve();
+                    } else {
+                        that.$message({
+                            type: 'error',
+                            message: res.data.msg
+                        });
+                    }
+                })
+            }).then(() => {
+                that.MaterialCostList();
+            });
+
+        },
+        //保存
+        submitForm(addinfo) {
+            this.$refs[addinfo].validate((valid) => {
+                if (valid) {
+                    this.MaterialCostAddOrEdit();
+                } else {
+                    return false;
+                }
+            });
+        },
+        //删除api
+        deletelist(index, row, rows){
+            var url = "/api/Resource/MaterialCostDel"
+            var that = this
+            new Promise(function (resolve, reject) {
+                that.$axios({
+                    method: 'post',
+                    url: url,
+                    headers: {
+                        Authorization: 'Bearer ' + that.token
+                    },
+                    data: {
+                        portType: 1,
+                        id:row.id,
+                        deleteUserId: that.userId,
+                    }
+                }).then(function (res) {
+                    if (res.data.code == 200) {
+                        that.$message({
+                            type: 'success',
+                            message: res.data.msg,
+                        });
+                        resolve();
+                    } else {
+                        that.$message({
+                            type: 'error',
+                            message: res.data.msg
+                        });
+                    }
+                })
+            }).then(() => {
+                that.MaterialCostList();
+            });
+        },
+        //删除
+        handleDelete(index, row, rows) {
+            this.$confirm('此操作将删除该条信息, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                this.deletelist(index, row, rows);
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '已取消删除'
+                });
+            });
+
+        }
+
+    },
+    mounted() {
+        this.token = JSON.parse(localStorage.getItem('userinif')).token;
+        this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
+        this.QuerySetData();
+    }
+}
+</script>
+<style>
+.MaterialBasicdata-all {
+    background-color: #fff;
+    padding: 10px;
+    box-shadow: 0 0 5px #0005;
+    border-radius: 10px;
+    min-height: 768px;
+}
+
+.MaterialBasicdata-header {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    margin-bottom: 15px;
+}
+
+.MaterialBasicdata-header-left {
+    display: flex;
+    flex-wrap: wrap;
+}
+
+.MaterialBasicdata-header-left-item {
+    margin-right: 15px;
+}
+
+.MaterialBasicdata-header-left-item {
+    display: flex;
+    align-items: center;
+}
+
+.MaterialBasicdata-header-right>div,
+button {
+    margin-bottom: 15px;
+}
+
+.MaterialBasicdata-table .block {
+    margin-top: 15px;
+    text-align: center;
+}
+.MaterialBasicdata-dialog-top{
+    display: flex;
+    flex-wrap: wrap;
+    align-items: center;
+    justify-content: space-between;
+}
+.MaterialBasicdata-dialog-top>div{
+    width: 33%;
+}
+.MaterialBasicdata-dialog-top .el-select,.el-input{
+    width: 100%;
+}
+.MaterialBasicdata-dialog-top .el-input-number--small{
+    width: 100%;
+}
+</style>

+ 6 - 0
src/router/index.js

@@ -148,6 +148,7 @@ import performanceanalysis from '@/components/OP/performanceanalysis'
 import SpecialPerformance from '@/components/OP/SpecialPerformance'
 import SpecialPerformance from '@/components/OP/SpecialPerformance'
 import ConferenceTask from '@/components/OP/ConferenceTask'
 import ConferenceTask from '@/components/OP/ConferenceTask'
 import TransportationExpenseStandard from '@/components/OP/TransportationExpenseStandard'
 import TransportationExpenseStandard from '@/components/OP/TransportationExpenseStandard'
+import MaterialBasicdata from '@/components/OP/MaterialBasicdata'
 
 
 
 
 Vue.use(Router)
 Vue.use(Router)
@@ -885,6 +886,11 @@ export default new Router({
           name: 'TransportationExpenseStandard',
           name: 'TransportationExpenseStandard',
           component: TransportationExpenseStandard
           component: TransportationExpenseStandard
         },
         },
+        {
+          path: '/home/MaterialBasicdata',
+          name: 'MaterialBasicdata',
+          component: MaterialBasicdata
+        },
       ]
       ]
     },
     },
     {
     {