liuhj 10 miesięcy temu
rodzic
commit
c152aca780

+ 252 - 0
src/components/Finance/CardReconciliation.vue

@@ -0,0 +1,252 @@
+<template>
+    <div class="CardReconciliation-all">
+        信用卡对账
+        <div class="CardReconciliation-Conditions">
+            <div class="Conditions-li">
+                <label>卡类型</label>
+                <el-select size="small" v-model="valuecard" clearable placeholder="请选择">
+                    <el-option
+                      v-for="item in options"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="item.id">
+                    </el-option>
+                </el-select>
+            </div>
+            <div class="Conditions-li">
+                <label style="margin-left:15px ;">时间段</label>
+                <el-date-picker
+                size="small"
+                v-model="value"
+                type="daterange"
+                align="right"
+                unlink-panels
+                range-separator="至"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+                :picker-options="pickerOptions">
+                </el-date-picker>
+            </div>
+            <div class="Conditions-li">
+                <el-upload
+                accept=".xls, .xlsx"  
+                class="pop-upload"
+                ref="upload"
+                action=""
+                :file-list="fileList"
+                :auto-upload="false"
+                :multiple="true"
+                :on-change="handleChange"
+                :on-remove="handleRemove"
+                :on-preview="handlePreview"
+                :before-remove="beforeRemove"
+                name="files"
+                >
+                    <el-button style="margin-left:15px ;" slot="trigger" size="small" type="primary">选取文件</el-button>
+                    <el-button style="margin-left:15px ;" @click="submitUpload" size="small" type="primary">上传</el-button>
+                </el-upload>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    data() {
+        return {
+            pickerOptions: {
+                shortcuts: [{
+                    text: '最近一周',
+                    onClick(picker) {
+                    const end = new Date();
+                    const start = new Date();
+                    start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+                    picker.$emit('pick', [start, end]);
+                    }
+                }, {
+                    text: '最近一个月',
+                    onClick(picker) {
+                    const end = new Date();
+                    const start = new Date();
+                    start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+                    picker.$emit('pick', [start, end]);
+                    }
+                }, {
+                    text: '最近三个月',
+                    onClick(picker) {
+                    const end = new Date();
+                    const start = new Date();
+                    start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+                    picker.$emit('pick', [start, end]);
+                    }
+                }]
+            },
+            value:[],
+            valuecard:'',
+            options:[],
+            fileList:[],
+        }
+    },
+    methods:{
+        //处理时间
+        disposeTime(val){
+            var date = new Date(val);
+            var y = date.getFullYear();
+            var m = date.getMonth() + 1;
+            m = m < 10 ? ('0' + m) : m;
+            var d = date.getDate();
+            d = d < 10 ? ('0' + d) : d;
+            let time = y + '-' + m + '-' + d;
+            return time
+        },
+        //获取基础数据
+        InvitationOfficialActivityInitBasicData(){
+            var url="/api/Groups/InvitationOfficialActivityInitBasicData";
+            var that=this;
+            this.$axios({
+                method: 'post',
+                url:url,
+                headers:{
+                    Authorization:'Bearer ',
+                },
+            }).then(function(res){
+                if(res.data.code==200){
+                    that.options=res.data.data.cardTypeData;
+                }else{
+                    that.$message({
+                        message:res.data.msg,
+                        type: 'warning',
+                        offset:50
+                    });
+                }
+            })
+        },
+        // 文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用,function(file, fileList)
+        handleChange(file, fileList) {
+            if (fileList.length > 1 && fileList.status !== "fail") {
+                fileList.splice(0, 1);
+            } else if (fileList.status === "fail") {
+                errorMsg("上传失败,请重新上传!");
+                fileList.splice(0, 1);
+            }
+            this.fileList=fileList
+        },
+        //删除文件
+        beforeRemove(file,fileList){
+            if(file && file.status=="success"){
+                return this.$confirm('此文件已上传至服务器此操作将永久删除该文件, 是否继续?', '提示', {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    type: 'warning'
+                }).then(() => {
+                    // this.$message({
+                    //     type: 'success',
+                    //     message: '删除成功!'
+                    // });
+                }).catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '已取消删除'
+                    });     
+                    reject(false)     
+                });
+            }
+        },
+        // 删除文件之前的钩子,参数为上传的文件和文件列表,若返回 false 或者返回 Promise 且被 reject,则停止删除。function(file, fileList)
+        handleRemove(file, fileList) {
+            this.fileList = fileList
+            if (file && file.status=="success") {
+                var that = this;
+                var url = "/api/Resource/OfficialActivitiesDelFile"
+                this.$axios({
+                    method: 'post',
+                    url: url,
+                    headers: {
+                        Authorization: 'Bearer ' + that.token
+                    },
+                    data:{
+                        id:that.id,
+                        fileName:file.name
+                    }
+                }).then(function (res) {
+                    if (res.data.code == 200) {
+                        that.$message.success(res.data.msg);
+                    } else {
+                        that.$message.error(res.data.msg);
+                    }
+                })
+            }
+            
+        },
+        //点击文件列表中已上传的文件
+        handlePreview(file){
+            console.log(file);
+            window.open(file.url);
+        },
+
+        //上传服务器
+        submitUpload() {
+            var verdict=false
+            if(this.valuecard==""||this.value.length<=0){
+                return this.$message.warning('请选择条件后再上传!');
+            }
+            //判断是否有文件再上传
+            if (this.fileList.length === 0) {
+                return this.$message.warning('请选取文件后再上传!');
+            }
+            // 下面的代码将创建一个空的FormData对象:
+            const formData = new FormData()
+            // 你可以使用FormData.append来添加键/值对到表单里面;
+            this.fileList.forEach((file) => {
+                if(file.raw!=undefined){
+                    verdict=true;
+                    formData.append('file', file.raw);
+                }
+            })
+            // formData.append('cardType', Number(this.valuecard));
+            // formData.append('beginDt', this.disposeTime(this.value[0]));
+            // formData.append('endDt', this.disposeTime(this.value[1]));
+            if(!verdict){
+                return
+            }
+            var that = this;
+            var url = "/api/Financial/PostCreditCardBill?cardType="+that.valuecard+"&beginDt="+that.disposeTime(that.value[0])+"&endDt="+that.disposeTime(that.value[1])
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.token
+                },
+                data:formData
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    that.$message.success(res.data.msg);
+                    that.fileList = []
+                } else {
+                    that.$message.error(res.data.msg);
+                }
+            })
+        },
+    },
+    mounted(){
+        this.InvitationOfficialActivityInitBasicData();
+    }
+}
+</script>
+<style>
+.CardReconciliation-all {
+    background-color: #fff;
+    padding: 10px;
+    box-shadow: 0 0 5px #0005;
+    border-radius: 10px;
+    min-height: 830px;
+    min-width: 900px;
+}
+.CardReconciliation-Conditions{
+    margin-top: 10px;
+    display: flex;
+}
+.Conditions-li label{
+    font-size: 14px;
+    color: #555;
+}
+</style>

+ 76 - 1
src/components/OP/OpCarTouristGuideGroundId.vue

@@ -3,6 +3,41 @@
         <div>
             <div class="communal-title">
                 <div>{{ title }}</div>
+                <!-- 客户名单 -->
+                <el-popover
+                placement="bottom"
+                width="662"
+                trigger="hover">
+                    <el-table max-height="600" border :data="rollcallarr">
+                        <el-table-column width="100" property="date" label="姓名">
+                            <template slot-scope="scope">
+                                {{ scope.row.lastName}}{{scope.row.firstName}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column width="200" property="lastName" label="拼音">
+                            <template slot-scope="scope">
+                                {{ pinyingxing(scope.row.lastName) }}/{{  pinyingxing(scope.row.firstName) }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column width="50" property="sex" label="性别">
+                            <template slot-scope="scope">
+                                {{ scope.row.sex==0?'男':'女'}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column width="110" property="birthDay" label="生日">
+                            <template slot-scope="scope">
+                                {{ fgarr(scope.row.birthDay) }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column width="200" property="idCardNo" label="身份证号码">
+                            <template slot-scope="scope">
+                                {{ scope.row.idCardNo }}
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <el-button style="margin-left: 10px;" type="primary" slot="reference">移上查看客户名单</el-button>
+                    <!-- <span slot="reference" style="cursor: pointer;margin-left: 20px;">"移上查看客户名单"</span> -->
+                </el-popover>
             </div>
         </div>
         <hr style='background-color:#5555; height:1px; border:none;margin: 10px 0;' />
@@ -214,6 +249,7 @@
 </template>
 <script>
 import { dE } from '@fullcalendar/core/internal-common';
+import { pinyin } from 'pinyin-pro';
 export default {
     data() {
         return {
@@ -290,9 +326,19 @@ export default {
             },
             restaurants: [],
             options: [],
+            rollcallarr:[],
         }
     },
     methods: {
+        //拼音
+        pinyingxing(val){
+            return pinyin(val, { toneType: 'none' }).toUpperCase();
+        },
+        //fenge
+        fgarr(val){
+            val=val+""
+            return val.split(' ')[0]
+        },
         //地区提示
         querySearch(queryString, cb) {
             var restaurants = this.restaurants;
@@ -332,6 +378,31 @@ export default {
             console.log(this.OpCarTouristGuideGroundData.area);
             console.log(val);
         },
+        //获取客户名单info
+        PostTourClientListByDiId(val) {
+            this.rollcallarr=[];
+            var that = this
+            var url = "/api/Groups/PostTourClientListByDiId"
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.token
+                },
+                data: {
+                    portType:1,
+                    diid: val?val:that.OpCarTouristGuideGroundData.diId,
+                    pageId:104,
+                    userId:233
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    that.rollcallarr=res.data.data;
+                } else {
+                    that.$message.error(res.data.msg);
+                }
+            })
+        },
         //初始化下拉框
         initializeSelect() {
             var url = "/api/System/QuerySetData"
@@ -362,6 +433,7 @@ export default {
                     }).then(function (res) {
                         if (res.data.code == 200) {
                             that.delegationInfoList = res.data.data.groupName;
+                            that.PostTourClientListByDiId()
                             for (let index = 0; index < that.delegationInfoList.length; index++) {
                                 if (that.delegationInfoList[index].id == that.OpCarTouristGuideGroundData.diId) {
                                     that.delegationInfo = that.delegationInfoList[index];
@@ -378,7 +450,7 @@ export default {
 
 
         },
-        DiIdSelectChange() {
+        DiIdSelectChange(val) {
             var that = this;
             for (let index = 0; index < that.delegationInfoList.length; index++) {
                 if (that.delegationInfoList[index].id == that.OpCarTouristGuideGroundData.diId) {
@@ -388,6 +460,9 @@ export default {
                     break;
                 }
             }
+            setTimeout(function () {
+                that.PostTourClientListByDiId(val);
+            },1000)
         },
         //根据Id获取单挑数据及C表数据
         QueryCarTouristGuideGroundById() {

+ 82 - 7
src/components/OP/OpCustomers.vue

@@ -1,10 +1,45 @@
 <template>
     <div class="car_add">
-        <div>
-            <div class="communal-title">
-                <div>{{ title }}</div>
-            </div>
+        
+        <div class="communal-title">
+            <div>{{ title }}</div>
+            <!-- 客户名单 -->
+            <el-popover
+            placement="bottom"
+            width="662"
+            trigger="hover">
+                <el-table max-height="600" border :data="rollcallarr">
+                    <el-table-column width="100" property="date" label="姓名">
+                        <template slot-scope="scope">
+                            {{ scope.row.lastName}}{{scope.row.firstName}}
+                        </template>
+                    </el-table-column>
+                    <el-table-column width="200" property="lastName" label="拼音">
+                        <template slot-scope="scope">
+                            {{ pinyingxing(scope.row.lastName) }}/{{  pinyingxing(scope.row.firstName) }}
+                        </template>
+                    </el-table-column>
+                    <el-table-column width="50" property="sex" label="性别">
+                        <template slot-scope="scope">
+                            {{ scope.row.sex==0?'男':'女'}}
+                        </template>
+                    </el-table-column>
+                    <el-table-column width="110" property="birthDay" label="生日">
+                        <template slot-scope="scope">
+                            {{ fgarr(scope.row.birthDay) }}
+                        </template>
+                    </el-table-column>
+                    <el-table-column width="200" property="idCardNo" label="身份证号码">
+                        <template slot-scope="scope">
+                            {{ scope.row.idCardNo }}
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <el-button style="margin-left: 10px;" type="primary" slot="reference">移上查看客户名单</el-button>
+                <!-- <span slot="reference" style="cursor: pointer;margin-left: 20px;">"移上查看客户名单"</span> -->
+            </el-popover>
         </div>
+        
         <hr style='background-color:#5555; height:1px; border:none;margin: 10px 0;' />
         <div class="opcustomers-box">
             <el-form :model="delegationInfo" label-width="100px" class="demo-ruleForm">
@@ -275,6 +310,7 @@
     </div>
 </template>
 <script>
+import { pinyin } from 'pinyin-pro';
 export default {
     data() {
         return {
@@ -326,7 +362,6 @@ export default {
             VisitDate: '',
             passengerTypeSelect: [],
             transformDateFormat: function (value) {
-
                 // 将value转换为Date对象
                 var date = new Date(value);
                 // 获取年、月、日
@@ -379,9 +414,19 @@ export default {
                 totherSideName: [{ required: true, message: '对方姓名', trigger: ['blur', 'change'] },],
             },
             clientNameId: [],
+            rollcallarr:[],
         }
     },
     methods: {
+        //拼音
+        pinyingxing(val){
+            return pinyin(val, { toneType: 'none' }).toUpperCase();
+        },
+        //fenge
+        fgarr(val){
+            val=val+""
+            return val.split(' ')[0]
+        },
         //初始化下拉框
         initializeSelect() {
             //团组下拉框绑定
@@ -401,6 +446,7 @@ export default {
                 console.log('DecreasePaymentsSelect', res.data.data);
                 if (res.data.code == 200) {
                     that.delegationInfoList = res.data.data.groupName; //团组列表
+                    that.PostTourClientListByDiId();
                     that.payment = res.data.data.payment; //支付方式
                     for (let index = 0; index < that.delegationInfoList.length; index++) {
                         if (that.delegationInfoList[index].id == that.OpCustomersData.diId) {
@@ -452,8 +498,11 @@ export default {
             })
 
         },
-        DiIdSelectChange() {
+        DiIdSelectChange(val) {
             var that = this;
+            setTimeout(function () {
+                that.PostTourClientListByDiId(val);
+            },500)
             for (let index = 0; index < that.delegationInfoList.length; index++) {
                 if (that.delegationInfoList[index].id == that.OpCustomersData.diId) {
                     that.delegationInfo = that.delegationInfoList[index];
@@ -813,6 +862,31 @@ export default {
             this.projectName = file.name
         },
         */
+        //获取客户名单info
+        PostTourClientListByDiId(val) {
+            this.rollcallarr=[];
+            var that = this
+            var url = "/api/Groups/PostTourClientListByDiId"
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.token
+                },
+                data: {
+                    portType:1,
+                    diid: val?val:that.OpCustomersData.diId,
+                    pageId:104,
+                    userId:233
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    that.rollcallarr=res.data.data;
+                } else {
+                    that.$message.error(res.data.msg);
+                }
+            })
+        },
 
         EscAdd() {
             this.$router.push({
@@ -875,9 +949,10 @@ export default {
     },
 
     mounted() {
-        this.token = JSON.parse(localStorage.getItem('userinif')).token;
+        this.token = JSON.parse(localStorage.getItem('userinif')).token
         this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId
         this.OpCustomersData.diId = parseInt(this.$route.query.DiId)
+
         this.QueryClient();
         this.initializeSelect();
         this.OpCustomersData.id = this.$route.query.id

+ 16 - 6
src/components/OP/OpInvitationOfficialActivities.vue

@@ -125,6 +125,12 @@
                             </el-input>
                         </el-form-item>
                     </div>
+                    <div style="width: 385px;">
+                        <el-form-item label="邀请方职位:" prop="job" label-width="160px">
+                            <el-input placeholder="邀请方职位" v-model="InvitationOfficialActivities.job">
+                            </el-input>
+                        </el-form-item>
+                    </div>
                     <div style="width: 385px;">
                         <el-form-item label="邀请时间:" prop="inviteTime" label-width="160px">
                             <el-date-picker value-format="yyyy-MM-dd" v-model="InvitationOfficialActivities.inviteTime"
@@ -140,8 +146,6 @@
                             </el-radio-group>
                         </el-form-item>
                     </div>
-                </div>
-                <div style="display:flex ; flex-wrap: wrap;">
                     <div style="width: 385px;">
                         <el-form-item label="联系人:" prop="contact" label-width="160px">
                             <el-input placeholder="联系人" v-model="InvitationOfficialActivities.contact">
@@ -488,6 +492,10 @@ export default {
                     { required: true, message: '请输入邀请方', trigger: 'change' },
                     { required: true, message: '请输入邀请方', trigger: 'blur' },
                 ],
+                job: [
+                    { required: true, message: '请输入邀请方', trigger: 'change' },
+                    { required: true, message: '请输入邀请方', trigger: 'blur' },
+                ],
                 inviteTime: [
                     { required: true, message: '请选择邀请时间', trigger: 'change' },
                     { required: true, message: '请选择邀请时间', trigger: 'blur' },
@@ -686,7 +694,7 @@ export default {
                             break;
                         }
                     }
-                    // that.PostTourClientListByDiId();
+                    that.PostTourClientListByDiId();
                     // that.payment = res.data.data.payment
                 }
             })
@@ -933,6 +941,7 @@ export default {
             // 此时必填完成,做保存后的业务操作
         },
         DecreasePaymentsChange(val) {
+            var that = this
             for (let index = 0; index < this.delegationInfoList.length; index++) {
                 if (this.delegationInfoList[index].id == parseInt(this.DiIdSelect)) {
                     this.delegationInfo = this.delegationInfoList[index];
@@ -940,9 +949,10 @@ export default {
                 }
             }
             this.QueryRate();
-            // this.PostTourClientListByDiId(val);
-            // setTimeout(function(){
-            // },200)
+            setTimeout(function () {
+                that.PostTourClientListByDiId(val);
+            },500)
+
         },
         //上传
         // 文件超出限制

+ 81 - 5
src/components/OP/OpVisaPriec.vue

@@ -3,6 +3,41 @@
         <div>
             <div class="communal-title">
                 <div>{{ title }}</div>
+                <!-- 客户名单 -->
+                <el-popover
+                placement="bottom"
+                width="662"
+                trigger="hover">
+                    <el-table max-height="600" border :data="rollcallarr">
+                        <el-table-column width="100" property="date" label="姓名">
+                            <template slot-scope="scope">
+                                {{ scope.row.lastName}}{{scope.row.firstName}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column width="200" property="lastName" label="拼音">
+                            <template slot-scope="scope">
+                                {{ pinyingxing(scope.row.lastName) }}/{{  pinyingxing(scope.row.firstName) }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column width="50" property="sex" label="性别">
+                            <template slot-scope="scope">
+                                {{ scope.row.sex==0?'男':'女'}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column width="110" property="birthDay" label="生日">
+                            <template slot-scope="scope">
+                                {{ fgarr(scope.row.birthDay) }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column width="200" property="idCardNo" label="身份证号码">
+                            <template slot-scope="scope">
+                                {{ scope.row.idCardNo }}
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <el-button style="margin-left: 10px;" type="primary" slot="reference">移上查看客户名单</el-button>
+                    <!-- <span slot="reference" style="cursor: pointer;margin-left: 20px;">"移上查看客户名单"</span> -->
+                </el-popover>
             </div>
         </div>
         <hr style='background-color:#5555; height:1px; border:none;margin: 10px 0;' />
@@ -296,6 +331,7 @@
 </template>
 <script>
 import { dE } from '@fullcalendar/core/internal-common';
+import { pinyin } from 'pinyin-pro';
 export default {
     data() {
         return {
@@ -406,9 +442,19 @@ export default {
                 totherSideName: [{ required: true, message: '对方姓名', trigger: ['blur', 'change'] },],
             },
             rateList: [],
+            rollcallarr:[],
         }
     },
     methods: {
+        //拼音
+        pinyingxing(val){
+            return pinyin(val, { toneType: 'none' }).toUpperCase();
+        },
+        //fenge
+        fgarr(val){
+            val=val+""
+            return val.split(' ')[0]
+        },
         //初始化下拉框
         initializeSelect() {
             //团组下拉框绑定
@@ -438,6 +484,7 @@ export default {
                             break;
                         }
                     }
+                    that.PostTourClientListByDiId();
                 }
             })
 
@@ -458,18 +505,23 @@ export default {
                 }
             })
         },
-        DiIdSelectChange() {
+        DiIdSelectChange(val) {
             var that = this;
             this.QueryRate();
             for (let index = 0; index < that.delegationInfoList.length; index++) {
                 if (that.delegationInfoList[index].id == that.OpVisaPriceData.diId) {
                     that.delegationInfo = that.delegationInfoList[index];
-
                     that.VisitDate = that.transformDateFormat(that.delegationInfo.visitStartDate) + '至' + that.transformDateFormat(that.delegationInfo.visitEndDate);
-                    that.QueryClientInfoByDIID()
                     break;
                 }
             }
+            setTimeout(function () {
+                that.QueryClientInfoByDIID()
+            },500)
+            // that.QueryClientInfoByDIID()
+            setTimeout(function () {
+                that.PostTourClientListByDiId(val);
+            },1000)
         },
         payChange() {
             this.OpVisaPriceData.ctdId = '';
@@ -506,6 +558,31 @@ export default {
                 this.OpVisaPriceDataRules.ctdId = []
             }
         },
+        //获取客户名单info
+        PostTourClientListByDiId(val) {
+            this.rollcallarr=[];
+            var that = this
+            var url = "/api/Groups/PostTourClientListByDiId"
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.token
+                },
+                data: {
+                    portType:1,
+                    diid: val?val:that.OpVisaPriceData.diId,
+                    pageId:104,
+                    userId:233
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    that.rollcallarr=res.data.data;
+                } else {
+                    that.$message.error(res.data.msg);
+                }
+            })
+        },
         ctdChange(id) {
             this.OpVisaPriceData.cardholderName = 'Zhang Hailin';
             for (var i = 0; i < this.bankCard.length; i++) {
@@ -529,7 +606,7 @@ export default {
         },
         //获取团组客户名单
         QueryClientInfoByDIID() {
-            // this.OpVisaPriceData.visaClient=[];
+            this.OpVisaPriceData.visaClient=[];
             var url = "/api/Groups/QueryClientInfoByDIID"
             var that = this
             this.$axios({
@@ -545,7 +622,6 @@ export default {
                 if (res.data.code == 200) {
                     that.fliterClient = res.data.data;
                     if(that.OpVisaPriceData.visaClient.length==0){
-                        console.log('jin');
                         for(var i=0;i<that.fliterClient.length;i++){
                             that.OpVisaPriceData.visaClient.push(that.fliterClient[i].id)
                         }

+ 238 - 1
src/components/OP/SuppliesInventory.vue

@@ -1,5 +1,131 @@
 <template>
     <div class="SuppliesInventory-all">
+        <el-dialog top="10vh" width="1500px" title="领用记录" :visible.sync="ReceiptRecord">
+            <div class="ReceiptRecord-search">
+                <div class="ReceiptRecord-search-li">
+                    <label style="margin-left: 0px;">关联团组:</label>
+                    <el-select multiple collapse-tags filterable style="width: 300px;" size="small" v-model="groupID" placeholder="请选择">
+                        <el-option
+                          v-for="item in groupNameData"
+                          :key="item.id"
+                          :label="item.groupName"
+                          :value="item.id">
+                        </el-option>
+                    </el-select>
+                </div>
+                <div class="ReceiptRecord-search-li">
+                    <label>领用人员:</label>
+                    <el-select multiple collapse-tags filterable style="width: 180px;" size="small" v-model="personnelID" placeholder="请选择">
+                        <el-option
+                          v-for="item in userNameData"
+                          :key="item.id"
+                          :label="item.userName"
+                          :value="item.id">
+                        </el-option>
+                    </el-select>
+                </div>
+                <div class="ReceiptRecord-search-li">
+                    <label>审核状态:</label>
+                    <el-select style="width: 120px;" size="small" v-model="RSAuditStatus" placeholder="请选择">
+                        <el-option
+                          v-for="item in options"
+                          :key="item.value"
+                          :label="item.label"
+                          :value="item.value">
+                        </el-option>
+                    </el-select>
+                </div>
+                <div class="ReceiptRecord-search-li">
+                    <label>物品名称:</label>
+                    <el-input style="width: 160px;" size="small" placeholder="请输入物品名称" v-model="RSAuditname" clearable></el-input>
+                </div>
+                <div class="ReceiptRecord-search-li">
+                    <label>领用时间段:</label>
+                    <el-date-picker
+                    size="small"
+                    style="width: 240px;"
+                    v-model="RSAudittime"
+                    type="daterange"
+                    align="right"
+                    unlink-panels
+                    range-separator="至"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                    :picker-options="pickerOptionss">
+                    </el-date-picker>
+                </div>
+                <el-button style="margin-left: 10px;" @click="inquireRecords" size="small" type="primary">查询</el-button>
+            </div>
+            <div class="ReceiptRecord-table">
+                <el-table
+                    :data="ApprovalData"
+                    border
+                    style="width: 100%">
+                    <el-table-column
+                    prop="goodsName"
+                    label="物品名称"
+                    width="180">
+                    </el-table-column>
+                    <el-table-column
+                    prop="quantity"
+                    label="数量"
+                    width="50">
+                    </el-table-column>
+                    <el-table-column
+                    prop="createTime"
+                    label="申请时间"
+                    width="150">
+                    </el-table-column>
+                    <el-table-column
+                    prop="createUserName"
+                    label="申请人"
+                    width="70">
+                    </el-table-column>
+                    <el-table-column
+                    prop="reason"
+                    label="申请原因"
+                    width="80">
+                    <template slot-scope="scope">
+                        <el-popover
+                        placement="top"
+                        width="300"
+                        trigger="hover">
+                            {{scope.row.reason}}
+                            <span style="display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; overflow: hidden;cursor: pointer;color: #48a2ff;" slot="reference">{{scope.row.reason}}</span>
+                        </el-popover>
+                    </template>
+                    </el-table-column>
+                    <el-table-column
+                    prop="remark"
+                    label="备注">
+                    <template slot-scope="scope">
+                        <el-popover
+                        placement="top"
+                        width="300"
+                        trigger="hover">
+                            {{scope.row.remark}}
+                            <span style="display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; overflow: hidden;cursor: pointer;color: #48a2ff;" slot="reference">{{scope.row.remark}}</span>
+                        </el-popover>
+                    </template>
+                    </el-table-column>
+                    <el-table-column
+                    prop="auditStatusText"
+                    label="审核状态"
+                    width="100">
+                    </el-table-column>
+                    <el-table-column
+                    label="操作"
+                    width="250">
+                    <template slot-scope="scope">
+                        <el-button v-if="scope.row.auditStatus==0||scope.row.auditStatus==2" size="mini" type="primary" title="通过" @click="GoodsReceiveAudit(scope.row.id,1)" >通过</el-button>
+                        <el-button v-if="scope.row.auditStatus==0" size="mini" type="info" title="不通过" @click="GoodsReceiveAudit(scope.row.id,2)">不通过</el-button>
+                        <el-button v-if="scope.row.auditStatus==1" size="mini" type="warning" title="取消通过" @click="GoodsReceiveAudit(scope.row.id,0)">取消通过</el-button>
+                        <el-button size="mini" title="删除" type="danger" @click="Deleteintolibraryreceives(scope.row)">删除</el-button>
+                    </template>
+                    </el-table-column>
+                </el-table>
+            </div>
+        </el-dialog>
         <el-dialog top="10vh" class="Approval-dialog" width="1100px" title="领用审核" :visible.sync="ApprovalVisible">
             <el-select @change="typevaluechange" style="width: 150px;margin-bottom: 10px;" size="small" v-model="typevalue" placeholder="请选择">
                 <el-option
@@ -509,6 +635,33 @@
 export default {
     data() {
         return {
+            pickerOptionss: {
+                shortcuts: [{
+                    text: '最近一周',
+                    onClick(picker) {
+                    const end = new Date();
+                    const start = new Date();
+                    start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+                    picker.$emit('pick', [start, end]);
+                    }
+                }, {
+                    text: '最近一个月',
+                    onClick(picker) {
+                    const end = new Date();
+                    const start = new Date();
+                    start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+                    picker.$emit('pick', [start, end]);
+                    }
+                }, {
+                    text: '最近三个月',
+                    onClick(picker) {
+                    const end = new Date();
+                    const start = new Date();
+                    start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+                    picker.$emit('pick', [start, end]);
+                    }
+                }]
+            },
             pickerOptions: {
             shortcuts: [{
                 text: '今天',
@@ -663,6 +816,16 @@ export default {
             Editpermission:false,
             Addpermission:false,
             Deletepermission:false,
+            //领用记录
+            ReceiptRecord:true,
+            groupID:[],
+            groupIDarr:[],
+            personnelID:[],
+            personnelIDarr:[],
+            RSAuditStatus:'',
+            RSAuditname:'',
+            RSAudittime:''
+
         }
     },
     methods:{
@@ -1126,6 +1289,7 @@ export default {
                     goodsName:'',
                     beginDt:'',
                     endDt:'',
+                    groupLabel:'',
                     typeLabel:'',
                     auditLabel:that.typevalue+'',
                 }
@@ -1140,6 +1304,56 @@ export default {
                 that.$message.error("操作错误,联系信息部!");
             });
         },
+        //查询领用记录
+        inquireRecords(){
+            for(let g=0;g<this.groupID.length;g++){
+                this.groupID+=this.groupID[g]+','
+            }
+            // this.groupID=this.groupID.substring(0, this.groupID.length - 1);
+            // for (let p = 0; p < this.personnelID.length; p++) {
+            //     this.personnelID += this.personnelID[p]+',';
+            // }
+            // this.personnelID=this.personnelID.substring(0, this.personnelID.length - 1);
+            console.log(this.groupID);
+            console.log(this.personnelID);
+            console.log(this.RSAuditStatus);
+            console.log(this.RSAuditname);
+            console.log(this.RSAudittime);
+        },
+        //领用记录
+        RecordsGoodsReceiveList(){
+            var url = "/api/PersonnelModule/GoodsReceiveList"
+            var that = this
+            this.$axios({
+                method: 'POST',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' +that.token
+                },
+                data:{
+                    portType:1,
+                    pageIndex:1,
+                    pageSize:10,
+                    goodsId:0,
+                    userLabel:that.Userid+'',
+                    goodsName:'',
+                    beginDt:'',
+                    endDt:'',
+                    groupLabel:'',
+                    typeLabel:'',
+                    auditLabel:'',
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    that.ClaimitemData=res.data.data;
+                    that.Claimitemcount=res.data.count;
+                }else{
+                    that.$message.error(res.data.msg);
+                }
+            }).catch(function (error) {
+                that.$message.error("操作错误,联系信息部!");
+            });
+        },
         //领用列表
         GoodsReceiveList(row){
             this.Claimitemlabel="";
@@ -1168,6 +1382,7 @@ export default {
                     goodsName:'',
                     beginDt:'',
                     endDt:'',
+                    groupLabel:'',
                     typeLabel:'',
                     auditLabel:'',
                 }
@@ -1500,8 +1715,30 @@ export default {
     text-align: center;
     margin-top: 10px;
 }
+.ReceiptRecord-table .el-table th.el-table__cell>.cell{
+    text-align: center;
+    font-size: 12px;
+}
+.ReceiptRecord-table .el-table td.el-table__cell div{
+    font-size: 12px;
+}
+.ReceiptRecord-table .block{
+    text-align: center;
+    margin-top: 10px;
+}
 .Approval-dialog .el-dialog__body{
     padding-top: 0px;
     
 }
-</style>
+.ReceiptRecord-search{
+    display: flex;
+}
+.ReceiptRecord-search-li label{
+    margin-left: 10px;
+}
+.ReceiptRecord-table{
+    margin-top: 15px;
+}
+</style>
+
+

+ 77 - 3
src/components/Resource/OpOfficialActivities.vue

@@ -4,7 +4,43 @@
             <div class="communal-title">
                 <div>{{ title }}</div>
             </div>
-            <div class="ps-title">PS:"请规范录入,未规范录入,造成公司损失或影响提成计算,需承担责任"</div>
+            <div class="ps-title">
+                <span>PS:"请规范录入,未规范录入,造成公司损失或影响提成计算,需承担责任"</span>
+                <!-- 客户名单 -->
+                <el-popover
+                placement="bottom"
+                width="662"
+                trigger="hover">
+                    <el-table max-height="600" border :data="rollcallarr">
+                        <el-table-column width="100" property="date" label="姓名">
+                            <template slot-scope="scope">
+                                {{ scope.row.lastName}}{{scope.row.firstName}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column width="200" property="lastName" label="拼音">
+                            <template slot-scope="scope">
+                                {{ pinyingxing(scope.row.lastName) }}/{{  pinyingxing(scope.row.firstName) }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column width="50" property="sex" label="性别">
+                            <template slot-scope="scope">
+                                {{ scope.row.sex==0?'男':'女'}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column width="110" property="birthDay" label="生日">
+                            <template slot-scope="scope">
+                                {{ fgarr(scope.row.birthDay) }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column width="200" property="idCardNo" label="身份证号码">
+                            <template slot-scope="scope">
+                                {{ scope.row.idCardNo }}
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <span slot="reference" style="cursor: pointer;margin-left: 20px;">"移上查看客户名单"</span>
+                </el-popover>
+            </div>
         </div>
         <hr style='background-color:#5555; height:1px; border:none;margin: 8px 0;' />
         <div>
@@ -327,6 +363,7 @@
     </div>
 </template>
 <script>
+import { pinyin } from 'pinyin-pro';
 export default {
     data() {
         return {
@@ -379,10 +416,11 @@ export default {
             },
             reqSampleArr:[],
             reqSampleArrpd:false,
+            rollcallarr:[],
             OpOfficialActivitiesRules: {
                 officialForm: [
                     { required: true, message: '该信息为必填信息', trigger: 'blur' },
-                    { required: true, message: '该信息为必填信息', trigger: 'change' },
+                    { required: true, message: '该信息为必填信息', trigger: 'change' }
                 ],
                 country: [
                     { required: true, message: '该信息为必填信息', trigger: 'blur' },
@@ -498,6 +536,15 @@ export default {
     },
 
     methods: {
+        //拼音
+        pinyingxing(val){
+            return pinyin(val, { toneType: 'none' }).toUpperCase();
+        },
+        //fenge
+        fgarr(val){
+            val=val+""
+            return val.split(' ')[0]
+        },
         //日期处理(日)
         TimeProcessingri(val){
             let datetime=new Date(val)
@@ -506,6 +553,31 @@ export default {
             let newsday=datetime.getDate()<10?'0'+datetime.getDate():datetime.getDate();
             return newsyear+ '-' +newsMonth+ '-' + newsday;
         },
+        //获取客户名单info
+        PostTourClientListByDiId(val) {
+            this.rollcallarr=[];
+            var that = this
+            var url = "/api/Groups/PostTourClientListByDiId"
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.token
+                },
+                data: {
+                    portType:1,
+                    diid: val?val:that.DiId,
+                    pageId:104,
+                    userId:233
+                }
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    that.rollcallarr=res.data.data;
+                } else {
+                    that.$message.error(res.data.msg);
+                }
+            })
+        },
         //团组下拉框
         GetGroupAllList() {
             var url = "/api/Resource/GetGroupAllList"
@@ -635,13 +707,14 @@ export default {
                 this.reqSampleArrpd=false
             }, 150);
         },
-        DiIdChang() {
+        DiIdChang(val) {
             for (let index = 0; index < this.delegationInfoList.length; index++) {
                 if (this.delegationInfoList[index].id == parseInt(this.DiId)) {
                     this.delegationInfo = this.delegationInfoList[index];
                     break;
                 }
             }
+            this.PostTourClientListByDiId(val);
         },
         reqSampleArrli(val){
             console.log(val);
@@ -1064,6 +1137,7 @@ export default {
         this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
         this.gwcfPermissions=JSON.parse(localStorage.getItem('Permissions'));
         this.DiId = parseInt(this.$route.query.DiId)
+        this.PostTourClientListByDiId();
         console.log(this.gwcfPermissions);
         for(let k=0;k<this.gwcfPermissions.length;k++){
             if(this.gwcfPermissions[k].funid==12){

+ 6 - 0
src/router/index.js

@@ -123,6 +123,7 @@ import RoyaltyRecogn from '@/components/OP/RoyaltyRecogn';
 import GroupUnreviewed from '@/components/Finance/GroupUnreviewed';
 import VisaCommission from '@/components/OP/VisaCommission';
 import SuppliesInventory from '@/components/OP/SuppliesInventory';
+import CardReconciliation from '@/components/Finance/CardReconciliation';
 
 Vue.use(Router)
 
@@ -744,6 +745,11 @@ export default new Router({
           name: 'SuppliesInventory',
           component: SuppliesInventory
         },
+        {
+          path: '/home/CardReconciliation',
+          name: 'CardReconciliation',
+          component: CardReconciliation
+        },
       ]
     },
     {