liuhj hai 2 semanas
pai
achega
1ae1ae9cd1

+ 71 - 12
src/components/Finance/DailyFeePayment.vue

@@ -56,14 +56,28 @@
                 </div>
                 <div class="feeType-box">
                     <label>费用描述:</label>
-                    <el-select popper-class="my-select" style="width:100%" v-model="formInline.feeDesc" clearable filterable remote :remote-method="DailyFeeKeywordSearch" :loading="selectLoading" @change="downtrigger()" placeholder="请选择">
+                    <el-autocomplete
+                    popper-class="custom-autocomplete-dropdown"
+                    style="width:100%;"
+                    v-model="formInline.feeDesc"
+                    :fetch-suggestions="querySearchAsync"
+                    :trigger-on-focus="false"
+                    placeholder="请输入或选择"
+                    @input="downtrigger()"
+                    @select="handleSelect"
+                    >
+                        <template slot-scope="{ item }">
+                            <div style="width: 300px">{{ item.instructions }}</div>
+                        </template>
+                    </el-autocomplete>
+                    <!-- <el-select popper-class="my-select" style="width:100%" v-model="formInline.feeDesc" clearable filterable remote :remote-method="DailyFeeKeywordSearch" :loading="selectLoading" @change="downtrigger()" placeholder="请选择">
                         <el-option
                         v-for="item in inputArr"
                         :key="item.id"
                         :label="item.instructions"
                         :value="item.instructions">
                         </el-option>
-                    </el-select>
+                    </el-select> -->
                     <!-- <el-input @input="downtrigger()" v-model="formInline.feeDesc" placeholder="费用描述"></el-input> -->
                 </div>
                 <div class="feeType-box">
@@ -266,6 +280,58 @@ export default {
         }
     },
     methods:{
+        //异步搜索方法
+        querySearchAsync(queryString, cb) {
+            if (queryString === '' || queryString.trim() === '') {
+                cb(this.inputArr);
+                return;
+            }
+            this.selectLoading = true;
+            var url = "/api/System/DailyFeeKeywordSearch?keyword=" + queryString;
+            var that = this;
+
+            this.$axios({
+                method: 'get',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    const results = res.data.data || [];
+                    // 如果没有搜索结果,添加一个自定义选项
+                    if (results.length === 0 && queryString.trim() !== '') {
+                        results.push({
+                            id: 'custom',
+                            teamName: queryString,
+                            clientUnit: '自定义输入',
+                            isCustom: true
+                        });
+                    }
+                    console.log(results);
+                    
+                    cb(results);
+                } else {
+                    cb([]);
+                }
+            }).finally(() => {
+                that.selectLoading = false;
+            });
+        },
+
+        // 处理选择
+        handleSelect(item) {
+            if (item.isCustom) {
+                // 如果是自定义输入,直接使用输入的值
+                this.formInline.feeDesc = item.instructions;
+                this.downtrigger();
+            } else {
+                this.formInline.feeDesc = item.instructions;
+                this.downtrigger();
+            }
+        },
+        
+
         //搜索提示
         DailyFeeKeywordSearch(query) {
             if (query !== '') {
@@ -297,13 +363,11 @@ export default {
         },
         //当前页改变时触发 跳转其他页
         handleCurrentChange(val) {
-            console.log(val)
             this.currentPage = val;
             this.postPageDailyPaymentList()
         },
         handleSelectionChange(val) {
             this.multipleSelection = val;
-            console.log(this.multipleSelection)
         },
         getRowKeys(row) {
             return row.num
@@ -334,18 +398,15 @@ export default {
                     isPaySign:that.isPaySign //是否支付
                 }
             }).then(function (res) {
-                console.log(res)
                 if (res.data.code == 200) {
                     that.tableData = res.data.data.dataList;
                     that.tableDataLength = res.data.data.dataCount;
                 }
-                console.log(that.tableData);
             })
         },
         //判断审核权限
         judgmentpms(){
             var Permissions=JSON.parse(localStorage.getItem('Permissions'))
-            console.log(Permissions);
             if(!Permissions){
                 return
             }
@@ -480,7 +541,6 @@ export default {
             }
         },
         handleDelete(index, row,rows) {
-            console.log(index, row);
             this.$confirm('此操作将删除该条信息, 是否继续?', '提示', {
             confirmButtonText: '确定',
             cancelButtonText: '取消',
@@ -542,7 +602,6 @@ export default {
                         id:row.id,
                     }
                 }).then(function(res){
-                    console.log(res)
                     if(res.data.code==200){
                         that.$message({
                             message:"生成成功!" ,
@@ -566,8 +625,6 @@ export default {
             });
         },
         rowClassName({ row, rowIndex }) {
-            console.log(row, rowIndex);
-            
             if (rowIndex % 2 === 0) {
                 return 'warning-row';
             }else{
@@ -612,7 +669,6 @@ export default {
         }
     },
     beforeRouteLeave(to, from, next) {
-        console.log(to)
         if(to.name!='DailyFeeedit'){
             localStorage.removeItem('PaymentRequest');
         }
@@ -727,4 +783,7 @@ export default {
     .my-select .el-select-dropdown__list {
         width: 350px;
     }
+    .custom-autocomplete-dropdown{
+        width: 350px !important;
+    }
 </style>y

+ 99 - 11
src/components/Finance/ExpenseReview.vue

@@ -9,14 +9,27 @@
                             unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
                             :picker-options="pickerOptions">
                         </el-date-picker>
-                        <el-select size="small" style="width:300px;margin-left: 10px;" v-model="teamName" clearable filterable remote :remote-method="GroupItemKeywordSearch" :loading="selectLoading" @change="inquirebtn" placeholder="请选择">
+                        <el-autocomplete
+                        size="small"
+                        style="width:300px;margin-left: 10px;"
+                        v-model="teamName"
+                        :fetch-suggestions="querySearchAsync"
+                        :trigger-on-focus="false"
+                        placeholder="请输入或选择团组"
+                        @select="handleSelects"
+                        >
+                            <template slot-scope="{ item }">
+                                <div>{{ item.teamName }}</div>
+                            </template>
+                        </el-autocomplete>
+                        <!-- <el-select size="small" style="width:300px;margin-left: 10px;" v-model="teamName" clearable filterable remote :remote-method="GroupItemKeywordSearch" :loading="selectLoading" @change="inquirebtn" placeholder="请选择">
                             <el-option
                             v-for="item in inputArr"
                             :key="item.id"
                             :label="item.teamName+' '+item.clientUnit"
                             :value="item.teamName">
                             </el-option>
-                        </el-select>
+                        </el-select> -->
                         <!-- <el-input
                         size="small"
                         style="width:250px"
@@ -24,7 +37,7 @@
                         v-model="teamName"
                         clearable>
                         </el-input> -->
-                        <!-- <el-button size="small" @click="inquirebtn" type="primary">查 询</el-button> -->
+                        <el-button size="small" @click="inquirebtn" type="primary">查 询</el-button>
                     </div>
                     <div v-if="jurisdiction">
                         <el-button size="small" @click="examinebtn(1)" type="primary">审核通过</el-button>
@@ -91,14 +104,30 @@
                     :value="item.value">
                     </el-option>
                 </el-select>
-                <el-select style="width:300px;margin-left: 10px;" v-model="input" clearable filterable remote :remote-method="GroupItemKeywordSearch" :loading="selectLoading" @change="Inquireclick()" placeholder="请选择">
+                <el-autocomplete
+                style="width:300px;margin-left: 10px;"
+                v-model="input"
+                :fetch-suggestions="querySearchAsync"
+                :trigger-on-focus="false"
+                placeholder="请输入或选择团组"
+                @select="handleSelect"
+                >
+                    <template slot-scope="{ item }">
+                        <div>{{ item.teamName }}</div>
+                    </template>
+                </el-autocomplete>
+                <!-- <el-select style="width:300px;margin-left: 10px;" v-model="input" clearable filterable remote :remote-method="GroupItemKeywordSearch" :loading="selectLoading" @change="Inquireclick()" placeholder="请选择">
                     <el-option
                     v-for="item in inputArr"
                     :key="item.id"
                     :label="item.teamName+' '+item.clientUnit"
                     :value="item.teamName">
                     </el-option>
-                </el-select>
+                </el-select> -->
+                <el-button 
+                type="primary"
+                size=""
+                @click="Inquireclick()">查 询</el-button>
                 <el-button 
                 v-if="jurisdiction&&userid==21"
                 style="margin-right: 10px;"
@@ -111,10 +140,6 @@
                 v-model="input"
                 clearable>
                 </el-input> -->
-                <!-- <el-button 
-                type="primary"
-                size=""
-                @click="Inquireclick()">查 询</el-button> -->
             </div>
             <div class="group-title">
                 <div>团组列表</div>
@@ -300,6 +325,71 @@ export default {
         }
     },
     methods:{
+        // 异步搜索方法
+        querySearchAsync(queryString, cb) {
+            if (queryString === '' || queryString.trim() === '') {
+                cb(this.inputArr);
+                return;
+            }
+
+            this.selectLoading = true;
+            var url = "/api/Groups/GroupItemKeywordSearch?keyword=" + queryString;
+            var that = this;
+
+            this.$axios({
+                method: 'get',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    const results = res.data.data || [];
+                    // 如果没有搜索结果,添加一个自定义选项
+                    if (results.length === 0 && queryString.trim() !== '') {
+                        results.push({
+                            id: 'custom',
+                            teamName: queryString,
+                            clientUnit: '自定义输入',
+                            isCustom: true
+                        });
+                    }
+                    cb(results);
+                } else {
+                    cb([]);
+                }
+            }).finally(() => {
+                that.selectLoading = false;
+            });
+        },
+
+        // 处理选择
+        handleSelect(item) {
+            if (item.isCustom) {
+                // 如果是自定义输入,直接使用输入的值
+                this.input = item.teamName;
+                this.Inquireclick();
+            } else {
+                this.input = item.teamName;
+                this.Inquireclick();
+            }
+        },
+        handleSelects(item) {
+            console.log(item);
+            
+            if (item.isCustom) {
+                // 如果是自定义输入,直接使用输入的值
+                this.teamName = item.teamName;
+                this.inquirebtn();
+            } else {
+                this.teamName = item.teamName;
+                this.inquirebtn();
+            }
+        },
+
+
+
+
         //搜索提示
         GroupItemKeywordSearch(query) {
             if (query !== '') {
@@ -343,12 +433,10 @@ export default {
                     searchCriteria: that.input,
                 }
             }).then(function (res) {
-                console.log(res)
                 if (res.data.code == 200) {
                     that.groupDatas=res.data.data.data
                     that.count=res.data.count
                 }
-                console.log(that.count)
             })
         },
          //每页条数改变时触发 选择一页显示多少行

+ 168 - 170
src/components/OP/GroupProgress.vue

@@ -35,80 +35,81 @@
                     <span style="font-size: 18px; font-weight: bold;">商邀报批流程</span>
                 </template>
                 <div class="process-diagram">
-                    <div @click="confirmclick(item,'商邀')"
+                    <div @click="confirmclick(item,'商邀主管')"
                         :class="item.statusText=='已完成'?'process-diagram-'+activities.length+'s':'process-diagram-'+activities.length"
                         v-for="(item,index) in activities" :key="index">
                         <el-popover v-if="item.nodeDescTips!=''" placement="top-start" title="PS" width="200"
                             trigger="hover" :content="item.nodeDescTips">
+                            <div style="white-space: pre-wrap;">{{item.nodeDescTips}}</div>
                             <div slot="reference">
                                 <div style="font-weight: 600;font-size: 12px;">{{item.nodeName}}</div>
                                 <div>{{item.statusText}}</div>
                                 <div>{{item.operator}}</div>
+                                <!-- <div>{{item.opeateTime}}</div> -->
+                                <div @click.stop="">
+                                    <el-date-picker @blur="GroupProcessSetActualDone(item, '商邀主管')" style="width: 100%;"
+                                        size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
+                                    </el-date-picker>
+                                    <div v-if="item.isEnaPartBtn" @click.stop=""
+                                        style="display: flex;align-items: center;margin-top: 5px;">
+                                        <label style="line-height: 1;margin-right: 5px;">是否参与:</label>
+                                        <el-radio-group v-model="item.isPart" @change="GroupProcessSetActualDone(item, '商邀主管')">
+                                            <el-radio :label="true">是</el-radio>
+                                            <el-radio :label="false">否</el-radio>
+                                        </el-radio-group>
+                                    </div>
+                                    <div v-if="item.isEnaAssistBtn" @click.stop=""
+                                        style="display: flex;align-items: center;margin-top: 5px">
+                                        <label style="line-height: 1;margin-right: 5px;">财务是否协助:</label>
+                                        <el-radio-group v-model="item.isAssist" @change="GroupProcessSetActualDone(item, '商邀主管')">
+                                            <el-radio :label="true">是</el-radio>
+                                            <el-radio :label="false">否</el-radio>
+                                        </el-radio-group>
+                                    </div>
+                                    <div v-if="item.isEnaFileUpBtn" @click.stop=""
+                                        style="display: flex;align-items: center;margin-top: 5px;">
+                                        <label style="line-height: 1;margin-right: 5px;">是否上传文件:</label>
+                                        <el-radio-group v-model="item.isFileUp" @change="GroupProcessSetActualDone(item, '商邀主管')">
+                                            <el-radio :label="true">是</el-radio>
+                                            <el-radio :label="false">否</el-radio>
+                                        </el-radio-group>
+                                    </div>
+                                </div>
+                            </div>
+                        </el-popover>
+                        <div v-else>
+                            <div style="font-weight: 600;font-size: 12px;">{{item.nodeName}}</div>
+                            <div>{{item.statusText}}</div>
+                            <div>{{item.operator}}</div>
+                            <!-- <div>{{item.opeateTime}}</div> -->
+                            <div @click.stop="">
+                                <el-date-picker @blur="GroupProcessSetActualDone(item, '商邀主管')" style="width: 100%;"
+                                    size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
+                                </el-date-picker>
                                 <div v-if="item.isEnaPartBtn" @click.stop=""
-                                    style="display: flex;align-items: center;margin-bottom: 5px;">
+                                    style="display: flex;align-items: center;margin-top: 5px;">
                                     <label style="line-height: 1;margin-right: 5px;">是否参与:</label>
-                                    <el-radio-group v-model="item.isPart">
+                                    <el-radio-group v-model="item.isPart" @change="GroupProcessSetActualDone(item, '商邀主管')">
                                         <el-radio :label="true">是</el-radio>
                                         <el-radio :label="false">否</el-radio>
                                     </el-radio-group>
                                 </div>
                                 <div v-if="item.isEnaAssistBtn" @click.stop=""
-                                    style="display: flex;align-items: center;margin-bottom: 5px;">
+                                    style="display: flex;align-items: center;margin-top: 5px;">
                                     <label style="line-height: 1;margin-right: 5px;">财务是否协助:</label>
-                                    <el-radio-group v-model="item.isAssist">
+                                    <el-radio-group v-model="item.isAssist" @change="GroupProcessSetActualDone(item, '商邀主管')">
                                         <el-radio :label="true">是</el-radio>
                                         <el-radio :label="false">否</el-radio>
                                     </el-radio-group>
                                 </div>
                                 <div v-if="item.isEnaFileUpBtn" @click.stop=""
-                                    style="display: flex;align-items: center;margin-bottom: 5px;">
+                                    style="display: flex;align-items: center;margin-top: 5px;">
                                     <label style="line-height: 1;margin-right: 5px;">是否上传文件:</label>
-                                    <el-radio-group v-model="item.isFileUp">
+                                    <el-radio-group v-model="item.isFileUp" @change="GroupProcessSetActualDone(item, '商邀主管')">
                                         <el-radio :label="true">是</el-radio>
                                         <el-radio :label="false">否</el-radio>
                                     </el-radio-group>
                                 </div>
-                                <!-- <div>{{item.opeateTime}}</div> -->
-                                <div @click.stop="">
-                                    <el-date-picker @blur="GroupProcessSetActualDone(item,'商邀')" style="width: 100%;"
-                                        size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
-                                    </el-date-picker>
-                                </div>
-                            </div>
-                        </el-popover>
-                        <div v-else>
-                            <div style="font-weight: 600;font-size: 12px;">{{item.nodeName}}</div>
-                            <div>{{item.statusText}}</div>
-                            <div>{{item.operator}}</div>
-                            <!-- <div>{{item.opeateTime}}</div> -->
-                            <div v-if="item.isEnaPartBtn" @click.stop=""
-                                style="display: flex;align-items: center;margin-bottom: 5px;">
-                                <label style="line-height: 1;margin-right: 5px;">是否参与:</label>
-                                <el-radio-group v-model="item.isPart">
-                                    <el-radio :label="true">是</el-radio>
-                                    <el-radio :label="false">否</el-radio>
-                                </el-radio-group>
-                            </div>
-                            <div v-if="item.isEnaAssistBtn" @click.stop=""
-                                style="display: flex;align-items: center;margin-bottom: 5px;">
-                                <label style="line-height: 1;margin-right: 5px;">财务是否协助:</label>
-                                <el-radio-group v-model="item.isAssist">
-                                    <el-radio :label="true">是</el-radio>
-                                    <el-radio :label="false">否</el-radio>
-                                </el-radio-group>
-                            </div>
-                            <div v-if="item.isEnaFileUpBtn" @click.stop=""
-                                style="display: flex;align-items: center;margin-bottom: 5px;">
-                                <label style="line-height: 1;margin-right: 5px;">是否上传文件:</label>
-                                <el-radio-group v-model="item.isFileUp">
-                                    <el-radio :label="true">是</el-radio>
-                                    <el-radio :label="false">否</el-radio>
-                                </el-radio-group>
-                            </div>
-                            <div @click.stop="">
-                                <el-date-picker @blur="GroupProcessSetActualDone(item,'商邀')" style="width: 100%;"
-                                    size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
-                                </el-date-picker>
                             </div>
                         </div>
                     </div>
@@ -220,34 +221,31 @@
                     </div>
                 </div>
                 <div class="progress-table-form">
-                    <div v-if="tableDataobj.isEnaPartBtn" @click.stop=""
-                        style="display: flex;align-items: center;">
+                    <div v-if="tableDataobj.isEnaPartBtn" @click.stop="">
                         <label style="line-height: 1;margin-right: 5px;height: 17px;">是否参与:</label>
-                        <el-radio-group v-model="tableDataobj.isPart">
+                        <el-radio-group v-model="tableDataobj.isPart" @change="GroupProcessSetActualDone(tableDataobj, '签证')">
                             <el-radio :label="true">是</el-radio>
                             <el-radio :label="false">否</el-radio>
                         </el-radio-group>
                     </div>
-                    <div v-if="tableDataobj.isEnaAssistBtn" @click.stop=""
-                        style="display: flex;align-items: center;">
+                    <div v-if="tableDataobj.isEnaAssistBtn" @click.stop="">
                         <label style="line-height: 1;margin-right: 5px;height: 17px;">财务是否协助:</label>
-                        <el-radio-group v-model="tableDataobj.isAssist">
+                        <el-radio-group v-model="tableDataobj.isAssist" @change="GroupProcessSetActualDone(tableDataobj, '签证')">
                             <el-radio :label="true">是</el-radio>
                             <el-radio :label="false">否</el-radio>
                         </el-radio-group>
                     </div>
-                    <div v-if="tableDataobj.isEnaFileUpBtn" @click.stop=""
-                        style="display: flex;align-items: center;">
-                        <label style="line-height: 1;margin-right: 5px;height: 17px;">是否上传文件:</label>
-                        <el-radio-group v-model="tableDataobj.isFileUp">
+                    <div v-if="tableDataobj.isEnaFileUpBtn" @click.stop="">
+                        <label style="margin-right: 5px;">是否上传文件:</label>
+                        <el-radio-group v-model="tableDataobj.isFileUp" @change="GroupProcessSetActualDone(tableDataobj, '签证')">
                             <el-radio :label="true">是</el-radio>
                             <el-radio :label="false">否</el-radio>
                         </el-radio-group>
                     </div>
-                    <div @click.stop="" style="display: flex;align-items: center;margin-bottom: 5px;">
+                    <div @click.stop="" style="display: flex;align-items: center;">
                         <label style="line-height: 1;margin-right: 5px;width: 110px;">实际完成时间:</label>
-                        <el-date-picker @blur="GroupProcessSetActualDone(tableDataobj, '签证')" style="width: 100%;" size="mini"
-                            v-model="tableDataobj.actualDone" type="datetime" placeholder="选择实际完成时间">
+                        <el-date-picker @blur="GroupProcessSetActualDone(tableDataobj, '签证')" style="width: 100%;"
+                            size="mini" v-model="tableDataobj.actualDone" type="datetime" placeholder="选择实际完成时间">
                         </el-date-picker>
                     </div>
                 </div>
@@ -260,42 +258,43 @@
                     <div @click="confirmclick(item,'机票')"
                         :class="item.statusText=='已完成'?'process-diagram-'+activitiesAir.length+'s':'process-diagram-'+activitiesAir.length"
                         v-for="(item,index) in activitiesAir" :key="index">
-                        <el-popover v-if="item.nodeDescTips!=''" placement="top-start" title="PS" width="200"
+                        <el-popover v-if="item.nodeDescTips!=''" placement="top-start" title="PS" width="200" 
                             trigger="hover" :content="item.nodeDescTips">
+                            <div style="white-space: pre-wrap;">{{item.nodeDescTips}}</div>
                             <div slot="reference">
-                                <div style="font-weight: 600;font-size: 12px;">{{item.nodeName}}</div>
-                                <div>{{item.statusText}}</div>
-                                <div>{{item.operator}}</div>
+                                <div style="font-weight: 600;font-size: 12px;">{{ item.nodeName }}</div>
+                                <div>{{ item.statusText }}</div>
+                                <div>{{ item.operator }}</div>
                                 <!-- <div>{{item.opeateTime}}</div> -->
+                                <div @click.stop="">
+                                    <el-date-picker @blur="GroupProcessSetActualDone(item, '机票')" style="width: 100%;"
+                                        size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
+                                    </el-date-picker>
+                                </div>
                                 <div v-if="item.isEnaPartBtn" @click.stop=""
-                                    style="display: flex;align-items: center;margin-bottom: 5px;">
+                                    style="display: flex;align-items: center;margin-top: 5px;">
                                     <label style="line-height: 1;margin-right: 5px;">是否参与:</label>
-                                    <el-radio-group v-model="item.isPart">
+                                    <el-radio-group v-model="item.isPart" @change="GroupProcessSetActualDone(item, '机票')">
                                         <el-radio :label="true">是</el-radio>
                                         <el-radio :label="false">否</el-radio>
                                     </el-radio-group>
                                 </div>
                                 <div v-if="item.isEnaAssistBtn" @click.stop=""
-                                    style="display: flex;align-items: center;margin-bottom: 5px;">
+                                    style="display: flex;align-items: center;margin-top: 5px;">
                                     <label style="line-height: 1;margin-right: 5px;">财务是否协助:</label>
-                                    <el-radio-group v-model="item.isAssist">
+                                    <el-radio-group v-model="item.isAssist" @change="GroupProcessSetActualDone(item, '机票')">
                                         <el-radio :label="true">是</el-radio>
                                         <el-radio :label="false">否</el-radio>
                                     </el-radio-group>
                                 </div>
                                 <div v-if="item.isEnaFileUpBtn" @click.stop=""
-                                    style="display: flex;align-items: center;margin-bottom: 5px;">
+                                    style="display: flex;align-items: center;margin-top: 5px;">
                                     <label style="line-height: 1;margin-right: 5px;">是否上传文件:</label>
-                                    <el-radio-group v-model="item.isFileUp">
+                                    <el-radio-group v-model="item.isFileUp" @change="GroupProcessSetActualDone(item, '机票')">
                                         <el-radio :label="true">是</el-radio>
                                         <el-radio :label="false">否</el-radio>
                                     </el-radio-group>
                                 </div>
-                                <div @click.stop="">
-                                    <el-date-picker @blur="GroupProcessSetActualDone(item,'机票')" style="width: 100%;"
-                                        size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
-                                    </el-date-picker>
-                                </div>
                             </div>
                         </el-popover>
                         <div v-else>
@@ -303,35 +302,35 @@
                             <div>{{item.statusText}}</div>
                             <div>{{item.operator}}</div>
                             <!-- <div>{{item.opeateTime}}</div> -->
+                            <div @click.stop="">
+                                <el-date-picker @blur="GroupProcessSetActualDone(item, '机票')" style="width: 100%;"
+                                    size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
+                                </el-date-picker>
+                            </div>
                             <div v-if="item.isEnaPartBtn" @click.stop=""
-                                style="display: flex;align-items: center;margin-bottom: 5px;">
+                                style="display: flex;align-items: center;margin-top: 5px;">
                                 <label style="line-height: 1;margin-right: 5px;">是否参与:</label>
-                                <el-radio-group v-model="item.isPart">
+                                <el-radio-group v-model="item.isPart" @change="GroupProcessSetActualDone(item, '机票')">
                                     <el-radio :label="true">是</el-radio>
                                     <el-radio :label="false">否</el-radio>
                                 </el-radio-group>
                             </div>
                             <div v-if="item.isEnaAssistBtn" @click.stop=""
-                                style="display: flex;align-items: center;margin-bottom: 5px;">
+                                style="display: flex;align-items: center;margin-top: 5px;">
                                 <label style="line-height: 1;margin-right: 5px;">财务是否协助:</label>
-                                <el-radio-group v-model="item.isAssist">
+                                <el-radio-group v-model="item.isAssist" @change="GroupProcessSetActualDone(item, '机票')">
                                     <el-radio :label="true">是</el-radio>
                                     <el-radio :label="false">否</el-radio>
                                 </el-radio-group>
                             </div>
                             <div v-if="item.isEnaFileUpBtn" @click.stop=""
-                                style="display: flex;align-items: center;margin-bottom: 5px;">
+                                style="display: flex;align-items: center;margin-top: 5px;">
                                 <label style="line-height: 1;margin-right: 5px;">是否上传文件:</label>
-                                <el-radio-group v-model="item.isFileUp">
+                                <el-radio-group v-model="item.isFileUp" @change="GroupProcessSetActualDone(item, '机票')">
                                     <el-radio :label="true">是</el-radio>
                                     <el-radio :label="false">否</el-radio>
                                 </el-radio-group>
                             </div>
-                            <div @click.stop="">
-                                <el-date-picker @blur="GroupProcessSetActualDone(item,'机票')" style="width: 100%;"
-                                    size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
-                                </el-date-picker>
-                            </div>
                         </div>
                     </div>
                 </div>
@@ -346,76 +345,77 @@
                         v-for="(item,index) in activitiesHotel" :key="index">
                         <el-popover v-if="item.nodeDescTips!=''" placement="top-start" title="PS" width="200"
                             trigger="hover" :content="item.nodeDescTips">
+                            <div style="white-space: pre-wrap;">{{item.nodeDescTips}}</div>
                             <div slot="reference">
                                 <div style="font-weight: 600;font-size: 12px;">{{item.nodeName}}</div>
                                 <div>{{item.statusText}}</div>
                                 <div>{{item.operator}}</div>
+                                <!-- <div>{{item.opeateTime}}</div> -->
+                                <div @click.stop="">
+                                    <el-date-picker @blur="GroupProcessSetActualDone(item, '酒店')" style="width: 100%;"
+                                        size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
+                                    </el-date-picker>
+                                </div>
                                 <div v-if="item.isEnaPartBtn" @click.stop=""
-                                    style="display: flex;align-items: center;margin-bottom: 5px;">
+                                    style="display: flex;align-items: center;margin-top: 5px;">
                                     <label style="line-height: 1;margin-right: 5px;">是否参与:</label>
-                                    <el-radio-group v-model="item.isPart">
+                                    <el-radio-group v-model="item.isPart" @change="GroupProcessSetActualDone(item, '酒店')">
                                         <el-radio :label="true">是</el-radio>
                                         <el-radio :label="false">否</el-radio>
                                     </el-radio-group>
                                 </div>
                                 <div v-if="item.isEnaAssistBtn" @click.stop=""
-                                    style="display: flex;align-items: center;margin-bottom: 5px;">
+                                    style="display: flex;align-items: center;margin-top: 5px;">
                                     <label style="line-height: 1;margin-right: 5px;">财务是否协助:</label>
-                                    <el-radio-group v-model="item.isAssist">
+                                    <el-radio-group v-model="item.isAssist" @change="GroupProcessSetActualDone(item, '酒店')">
                                         <el-radio :label="true">是</el-radio>
                                         <el-radio :label="false">否</el-radio>
                                     </el-radio-group>
                                 </div>
                                 <div v-if="item.isEnaFileUpBtn" @click.stop=""
-                                    style="display: flex;align-items: center;margin-bottom: 5px;">
+                                    style="display: flex;align-items: center;margin-top: 5px;">
                                     <label style="line-height: 1;margin-right: 5px;">是否上传文件:</label>
-                                    <el-radio-group v-model="item.isFileUp">
+                                    <el-radio-group v-model="item.isFileUp" @change="GroupProcessSetActualDone(item, '酒店')">
                                         <el-radio :label="true">是</el-radio>
                                         <el-radio :label="false">否</el-radio>
                                     </el-radio-group>
                                 </div>
-                                <!-- <div>{{item.opeateTime}}</div> -->
-                                <div @click.stop="">
-                                    <el-date-picker @blur="GroupProcessSetActualDone(item,'酒店')" style="width: 100%;"
-                                        size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
-                                    </el-date-picker>
-                                </div>
                             </div>
                         </el-popover>
                         <div v-else>
                             <div style="font-weight: 600;font-size: 12px;">{{item.nodeName}}</div>
                             <div>{{item.statusText}}</div>
                             <div>{{item.operator}}</div>
+                            <!-- <div>{{item.opeateTime}}</div> -->
+                            <div @click.stop="">
+                                <el-date-picker @blur="GroupProcessSetActualDone(item, '酒店')" style="width: 100%;"
+                                    size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
+                                </el-date-picker>
+                            </div>
                             <div v-if="item.isEnaPartBtn" @click.stop=""
-                                style="display: flex;align-items: center;margin-bottom: 5px;">
+                                style="display: flex;align-items: center;margin-top: 5px;">
                                 <label style="line-height: 1;margin-right: 5px;">是否参与:</label>
-                                <el-radio-group v-model="item.isPart">
+                                <el-radio-group v-model="item.isPart" @change="GroupProcessSetActualDone(item, '酒店')">
                                     <el-radio :label="true">是</el-radio>
                                     <el-radio :label="false">否</el-radio>
                                 </el-radio-group>
                             </div>
                             <div v-if="item.isEnaAssistBtn" @click.stop=""
-                                style="display: flex;align-items: center;margin-bottom: 5px;">
+                                style="display: flex;align-items: center;margin-top: 5px;">
                                 <label style="line-height: 1;margin-right: 5px;">财务是否协助:</label>
-                                <el-radio-group v-model="item.isAssist">
+                                <el-radio-group v-model="item.isAssist" @change="GroupProcessSetActualDone(item, '酒店')">
                                     <el-radio :label="true">是</el-radio>
                                     <el-radio :label="false">否</el-radio>
                                 </el-radio-group>
                             </div>
                             <div v-if="item.isEnaFileUpBtn" @click.stop=""
-                                style="display: flex;align-items: center;margin-bottom: 5px;">
+                                style="display: flex;align-items: center;margin-top: 5px;">
                                 <label style="line-height: 1;margin-right: 5px;">是否上传文件:</label>
-                                <el-radio-group v-model="item.isFileUp">
+                                <el-radio-group v-model="item.isFileUp" @change="GroupProcessSetActualDone(item, '酒店')">
                                     <el-radio :label="true">是</el-radio>
                                     <el-radio :label="false">否</el-radio>
                                 </el-radio-group>
                             </div>
-                            <!-- <div>{{item.opeateTime}}</div> -->
-                            <div @click.stop="">
-                                <el-date-picker @blur="GroupProcessSetActualDone(item,'酒店')" style="width: 100%;"
-                                    size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
-                                </el-date-picker>
-                            </div>
                         </div>
                     </div>
                 </div>
@@ -430,40 +430,41 @@
                         v-for="(item,index) in activitiesGuide" :key="index">
                         <el-popover v-if="item.nodeDescTips!=''" placement="top-start" title="PS" width="200"
                             trigger="hover" :content="item.nodeDescTips">
+                            <div style="white-space: pre-wrap;">{{item.nodeDescTips}}</div>
                             <div slot="reference">
                                 <div style="font-weight: 600;font-size: 12px;">{{item.nodeName}}</div>
                                 <div>{{item.statusText}}</div>
                                 <div>{{item.operator}}</div>
+                                <!-- <div>{{item.opeateTime}}</div> -->
+                                <div @click.stop="">
+                                    <el-date-picker @blur="GroupProcessSetActualDone(item, 'OP')" style="width: 100%;"
+                                        size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
+                                    </el-date-picker>
+                                </div>
                                 <div v-if="item.isEnaPartBtn" @click.stop=""
-                                    style="display: flex;align-items: center;margin-bottom: 5px;">
+                                    style="display: flex;align-items: center;margin-top: 5px;">
                                     <label style="line-height: 1;margin-right: 5px;">是否参与:</label>
-                                    <el-radio-group v-model="item.isPart">
+                                    <el-radio-group v-model="item.isPart" @change="GroupProcessSetActualDone(item, 'OP')">
                                         <el-radio :label="true">是</el-radio>
                                         <el-radio :label="false">否</el-radio>
                                     </el-radio-group>
                                 </div>
                                 <div v-if="item.isEnaAssistBtn" @click.stop=""
-                                    style="display: flex;align-items: center;margin-bottom: 5px;">
+                                    style="display: flex;align-items: center;margin-top: 5px;">
                                     <label style="line-height: 1;margin-right: 5px;">财务是否协助:</label>
-                                    <el-radio-group v-model="item.isAssist">
+                                    <el-radio-group v-model="item.isAssist" @change="GroupProcessSetActualDone(item, 'OP')">
                                         <el-radio :label="true">是</el-radio>
                                         <el-radio :label="false">否</el-radio>
                                     </el-radio-group>
                                 </div>
                                 <div v-if="item.isEnaFileUpBtn" @click.stop=""
-                                    style="display: flex;align-items: center;margin-bottom: 5px;">
+                                    style="display: flex;align-items: center;margin-top: 5px;">
                                     <label style="line-height: 1;margin-right: 5px;">是否上传文件:</label>
-                                    <el-radio-group v-model="item.isFileUp">
+                                    <el-radio-group v-model="item.isFileUp" @change="GroupProcessSetActualDone(item, 'OP')">
                                         <el-radio :label="true">是</el-radio>
                                         <el-radio :label="false">否</el-radio>
                                     </el-radio-group>
                                 </div>
-                                <!-- <div>{{item.opeateTime}}</div> -->
-                                <div @click.stop="">
-                                    <el-date-picker @blur="GroupProcessSetActualDone(item,'OP')" style="width: 100%;"
-                                        size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
-                                    </el-date-picker>
-                                </div>
                             </div>
                         </el-popover>
                         <div v-else>
@@ -471,35 +472,35 @@
                             <div>{{item.statusText}}</div>
                             <div>{{item.operator}}</div>
                             <!-- <div>{{item.opeateTime}}</div> -->
+                            <div @click.stop="">
+                                <el-date-picker @blur="GroupProcessSetActualDone(item, 'OP')" style="width: 100%;"
+                                    size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
+                                </el-date-picker>
+                            </div>
                             <div v-if="item.isEnaPartBtn" @click.stop=""
-                                style="display: flex;align-items: center;margin-bottom: 5px;">
+                                style="display: flex;align-items: center;margin-top: 5px;">
                                 <label style="line-height: 1;margin-right: 5px;">是否参与:</label>
-                                <el-radio-group v-model="item.isPart">
+                                <el-radio-group v-model="item.isPart" @change="GroupProcessSetActualDone(item, 'OP')">
                                     <el-radio :label="true">是</el-radio>
                                     <el-radio :label="false">否</el-radio>
                                 </el-radio-group>
                             </div>
                             <div v-if="item.isEnaAssistBtn" @click.stop=""
-                                style="display: flex;align-items: center;margin-bottom: 5px;">
+                                style="display: flex;align-items: center;margin-top: 5px;">
                                 <label style="line-height: 1;margin-right: 5px;">财务是否协助:</label>
-                                <el-radio-group v-model="item.isAssist">
+                                <el-radio-group v-model="item.isAssist" @change="GroupProcessSetActualDone(item, 'OP')">
                                     <el-radio :label="true">是</el-radio>
                                     <el-radio :label="false">否</el-radio>
                                 </el-radio-group>
                             </div>
                             <div v-if="item.isEnaFileUpBtn" @click.stop=""
-                                style="display: flex;align-items: center;margin-bottom: 5px;">
+                                style="display: flex;align-items: center;margin-top: 5px;">
                                 <label style="line-height: 1;margin-right: 5px;">是否上传文件:</label>
-                                <el-radio-group v-model="item.isFileUp">
+                                <el-radio-group v-model="item.isFileUp" @change="GroupProcessSetActualDone(item, 'OP')">
                                     <el-radio :label="true">是</el-radio>
                                     <el-radio :label="false">否</el-radio>
                                 </el-radio-group>
                             </div>
-                            <div @click.stop="">
-                                <el-date-picker @blur="GroupProcessSetActualDone(item,'OP')" style="width: 100%;"
-                                    size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
-                                </el-date-picker>
-                            </div>
                         </div>
                     </div>
                 </div>
@@ -514,76 +515,77 @@
                         v-for="(item,index) in activitiesCost" :key="index">
                         <el-popover v-if="item.nodeDescTips!=''" placement="top-start" title="PS" width="200"
                             trigger="hover" :content="item.nodeDescTips">
+                            <div style="white-space: pre-wrap;">{{item.nodeDescTips}}</div>l
                             <div slot="reference">
                                 <div style="font-weight: 600;font-size: 12px;">{{item.nodeName}}</div>
                                 <div>{{item.statusText}}</div>
                                 <div>{{item.operator}}</div>
+                                <!-- <div>{{item.opeateTime}}</div> -->
+                                <div @click.stop="">
+                                    <el-date-picker @blur="GroupProcessSetActualDone(item)" style="width: 100%;"
+                                        size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
+                                    </el-date-picker>
+                                </div>
                                 <div v-if="item.isEnaPartBtn" @click.stop=""
-                                    style="display: flex;align-items: center;margin-bottom: 5px;">
+                                    style="display: flex;align-items: center;margin-top: 5px;">
                                     <label style="line-height: 1;margin-right: 5px;">是否参与:</label>
-                                    <el-radio-group v-model="item.isPart">
+                                    <el-radio-group v-model="item.isPart" @change="GroupProcessSetActualDone(item)">
                                         <el-radio :label="true">是</el-radio>
                                         <el-radio :label="false">否</el-radio>
                                     </el-radio-group>
                                 </div>
                                 <div v-if="item.isEnaAssistBtn" @click.stop=""
-                                    style="display: flex;align-items: center;margin-bottom: 5px;">
+                                    style="display: flex;align-items: center;margin-top: 5px;">
                                     <label style="line-height: 1;margin-right: 5px;">财务是否协助:</label>
-                                    <el-radio-group v-model="item.isAssist">
+                                    <el-radio-group v-model="item.isAssist" @change="GroupProcessSetActualDone(item)">
                                         <el-radio :label="true">是</el-radio>
                                         <el-radio :label="false">否</el-radio>
                                     </el-radio-group>
                                 </div>
                                 <div v-if="item.isEnaFileUpBtn" @click.stop=""
-                                    style="display: flex;align-items: center;margin-bottom: 5px;">
+                                    style="display: flex;align-items: center;margin-top: 5px;">
                                     <label style="line-height: 1;margin-right: 5px;">是否上传文件:</label>
-                                    <el-radio-group v-model="item.isFileUp">
+                                    <el-radio-group v-model="item.isFileUp" @change="GroupProcessSetActualDone(item)">
                                         <el-radio :label="true">是</el-radio>
                                         <el-radio :label="false">否</el-radio>
                                     </el-radio-group>
                                 </div>
-                                <!-- <div>{{item.opeateTime}}</div> -->
-                                <div @click.stop="">
-                                    <el-date-picker @blur="GroupProcessSetActualDone(item)" style="width: 100%;"
-                                        size="mini" v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
-                                    </el-date-picker>
-                                </div>
                             </div>
                         </el-popover>
                         <div v-else>
                             <div style="font-weight: 600;font-size: 12px;">{{item.nodeName}}</div>
                             <div>{{item.statusText}}</div>
                             <div>{{item.operator}}</div>
+                            <!-- <div>{{item.opeateTime}}</div> -->
+                            <div @click.stop="">
+                                <el-date-picker @blur="GroupProcessSetActualDone(item)" style="width: 100%;" size="mini"
+                                    v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
+                                </el-date-picker>
+                            </div>
                             <div v-if="item.isEnaPartBtn" @click.stop=""
-                                style="display: flex;align-items: center;margin-bottom: 5px;">
+                                style="display: flex;align-items: center;margin-top: 5px;">
                                 <label style="line-height: 1;margin-right: 5px;">是否参与:</label>
-                                <el-radio-group v-model="item.isPart">
+                                <el-radio-group v-model="item.isPart" @change="GroupProcessSetActualDone(item)">
                                     <el-radio :label="true">是</el-radio>
                                     <el-radio :label="false">否</el-radio>
                                 </el-radio-group>
                             </div>
                             <div v-if="item.isEnaAssistBtn" @click.stop=""
-                                style="display: flex;align-items: center;margin-bottom: 5px;">
+                                style="display: flex;align-items: center;margin-top: 5px;">
                                 <label style="line-height: 1;margin-right: 5px;">财务是否协助:</label>
-                                <el-radio-group v-model="item.isAssist">
+                                <el-radio-group v-model="item.isAssist" @change="GroupProcessSetActualDone(item)">
                                     <el-radio :label="true">是</el-radio>
                                     <el-radio :label="false">否</el-radio>
                                 </el-radio-group>
                             </div>
                             <div v-if="item.isEnaFileUpBtn" @click.stop=""
-                                style="display: flex;align-items: center;margin-bottom: 5px;">
+                                style="display: flex;align-items: center;margin-top: 5px;">
                                 <label style="line-height: 1;margin-right: 5px;">是否上传文件:</label>
-                                <el-radio-group v-model="item.isFileUp">
+                                <el-radio-group v-model="item.isFileUp" @change="GroupProcessSetActualDone(item)">
                                     <el-radio :label="true">是</el-radio>
                                     <el-radio :label="false">否</el-radio>
                                 </el-radio-group>
                             </div>
-                            <!-- <div>{{item.opeateTime}}</div> -->
-                            <div @click.stop="">
-                                <el-date-picker @blur="GroupProcessSetActualDone(item)" style="width: 100%;" size="mini"
-                                    v-model="item.actualDone" type="datetime" placeholder="选择实际完成时间">
-                                </el-date-picker>
-                            </div>
                         </div>
                     </div>
                 </div>
@@ -610,11 +612,11 @@ export default {
                 opeateTime: "",
                 actualDone: "",
                 nodeDescTips: "",
-                isEnaAssistBtn: true,
+                isEnaAssistBtn: false,
                 isAssist: false,
                 isEnaFileUpBtn: true,
                 isFileUp: true,
-                isEnaPartBtn: true,
+                isEnaPartBtn: false,
                 isPart: false,
                 visaSubNodes: []
             },
@@ -879,7 +881,7 @@ export default {
         //更改实际操作时间
         GroupProcessSetActualDone(item,text){
             if (text==undefined) {
-                var qxarr=[22,187]
+                var qxarr=[187]
                 if (!qxarr.includes(this.userId)) {
                     item.actualDone='';
                     this.$message({
@@ -897,14 +899,6 @@ export default {
                 });
                 return
             }
-            if (item.actualDone==''||item.actualDone==null) {
-                // this.$message({
-                //     message: '请选择实际完成时间!',
-                //     type: 'warning'
-                // });
-                return
-                
-            }
             this.progressloading=true;
             var url = "/api/Groups/GroupProcessSetActualDone"
             var that = this
@@ -938,7 +932,7 @@ export default {
         },
         //财务节点点击确认
         financeclick(item){
-            var qxarr=[22,187]
+            var qxarr=[187]
             if (!qxarr.includes(this.userId)) {
                 this.$message({
                     message: '该流程不在此账号的操作权限内!如有疑问联系该流程负责人!',
@@ -1026,6 +1020,10 @@ export default {
         box-shadow: 0 0 5px #0005;
         border-radius: 10px;
         min-height: 830px;
+        
+    }
+    .group-progress .el-collapse-item__content,.el-radio__label{
+        font-size: 12px;
     }
     .progress-content{
         display: flex;

+ 6 - 15
src/components/OP/Groupedit.vue

@@ -391,14 +391,12 @@ export default {
                 if (valid) {
                     this.addGroupInfo()
                 } else {
-                    console.log('error submit!!');
                     return false;
                 }
             });
         },
         //拼接团名
         splicingname(){
-            console.log(this.ruleForm.radioval)
             if(this.ruleForm.radioval==1){
                 this.ruleForm.groupname='投标-'+this.ruleForm.customerunits+'赴'+this.ruleForm.countriesvisited+this.ruleForm.numdays+'日';
             }else{
@@ -465,7 +463,6 @@ export default {
                 }
             }).then(function (res) {
                 if (res.data.code == 200) {
-                    console.log(res)
                     that.restaurantss=res.data.data.clientData;
                     that.restaurants= that.restaurantss.map((terminal) => {
                         return {
@@ -481,17 +478,16 @@ export default {
                     that.gradearr = res.data.data.teamLevData;
                     that.OPtype = res.data.data.teamTypeData;
                     that.cityData = res.data.data.cityData;
-                    console.log(that.companyName);
-                    if(that.companyName=='泛美(贵阳) 会展服务有限公司'){
-                        that.ruleForm.cityId=3332
-                    }else{
-                        that.ruleForm.cityId=that.filteredItems()[0].id;
+                    if (that.ruleForm.cityId=='') {
+                        if(that.companyName=='泛美(贵阳) 会展服务有限公司'){
+                            that.ruleForm.cityId=3332
+                        }else{
+                            that.ruleForm.cityId=that.filteredItems()[0].id;
+                        }
                     }
                     if(that.editid==undefined) {
                         that.ruleForm.OP=that.OPtype[0].id;
                     }
-                    console.log(that.filteredItems());
-                    
                 }
             })
             var url = "/api/System/QuerySetData"
@@ -552,7 +548,6 @@ export default {
         },
         //处理时间
         disposeTime(val) {
-            console.log(val);
             if(val==null||val==""){
                 return ""
             }
@@ -569,7 +564,6 @@ export default {
         optypechange(val){
             if(val==248){
                 this.nongroupty=false;
-                console.log(this.ruleForm);
                 this.ruleForm.OP=248;
                 this.ruleForm.cityId=3505;
                 this.ruleForm.customername="暂无";
@@ -718,7 +712,6 @@ export default {
                     isBid: that.ruleForm.radioval=='0'?0:1,
                 }
             }).then(function (res) {
-                console.log(res)
                 if (res.data.code == 200) {
                     if (status==2) {
                         that.$message({
@@ -750,8 +743,6 @@ export default {
             })
         },
         handleSelect(item) {
-            // console.log(item.split(' '));
-            console.log(item.value.split('   '));
             this.ruleForm.customername=item.value.split('   ')[0];
             this.ruleForm.customerunits=item.value.split('   ')[1];
             this.ruleForm.phonenumber=item.value.split('   ')[2];

+ 68 - 8
src/components/OP/OPgroup.vue

@@ -35,17 +35,23 @@
                             :value="item.id">
                         </el-option>
                     </el-select>
-                    <el-select style="width:300px"  v-model="input" clearable filterable remote :remote-method="GroupItemKeywordSearch" :loading="selectLoading" @change="Inquireclick()" placeholder="请选择">
-                        <el-option
-                        v-for="item in inputArr"
-                        :key="item.id"
-                        :label="item.teamName+' '+item.clientUnit"
-                        :value="item.teamName">
+                    <el-autocomplete style="width:300px;" v-model="input"
+                        :fetch-suggestions="querySearchAsync" :trigger-on-focus="false" placeholder="请输入或选择团组"
+                        @select="handleSelect">
+                        <template slot-scope="{ item }">
+                            <div>{{ item.teamName }}</div>
+                        </template>
+                    </el-autocomplete>
+                    <!-- <el-select style="width:300px" v-model="input" clearable filterable remote
+                        :remote-method="GroupItemKeywordSearch" :loading="selectLoading" @change="Inquireclick()"
+                        placeholder="请选择">
+                        <el-option v-for="item in inputArr" :key="item.id" :label="item.teamName+' '+item.clientUnit"
+                            :value="item.teamName">
                         </el-option>
-                    </el-select>
+                    </el-select> -->
                     <!-- <el-input style="width:200px;" placeholder="请输入查询内容" v-model="input" clearable>
                     </el-input> -->
-                    <!-- <el-button  type="primary">查 询</el-button> -->
+                    <el-button @click="Inquireclick()"  type="primary">查 询</el-button>
                 </div>
                 <div>
                     <el-button v-if="evocationdownloadqx" @click="evocationdownload" type="primary">团组清单下载</el-button>
@@ -245,6 +251,60 @@ export default {
         this.$route.meta.isBack = false
     },
     methods: {
+        // 异步搜索方法
+        querySearchAsync(queryString, cb) {
+            if (queryString === '' || queryString.trim() === '') {
+                cb(this.inputArr);
+                return;
+            }
+
+            this.selectLoading = true;
+            var url = "/api/Groups/GroupItemKeywordSearch?keyword=" + queryString;
+            var that = this;
+
+            this.$axios({
+                method: 'get',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    const results = res.data.data || [];
+                    // 如果没有搜索结果,添加一个自定义选项
+                    if (results.length === 0 && queryString.trim() !== '') {
+                        results.push({
+                            id: 'custom',
+                            teamName: queryString,
+                            clientUnit: '自定义输入',
+                            isCustom: true
+                        });
+                    }
+                    cb(results);
+                } else {
+                    cb([]);
+                }
+            }).finally(() => {
+                that.selectLoading = false;
+            });
+        },
+
+        // 处理选择
+        handleSelect(item) {
+            if (item.isCustom) {
+                // 如果是自定义输入,直接使用输入的值
+                this.input = item.teamName;
+                this.Inquireclick();
+            } else {
+                this.input = item.teamName;
+                this.Inquireclick();
+            }
+        },
+
+
+
+
+        
         changRed({ row }) {
             if (row.useRedBackground) { // 变颜色的条件
                 return {

+ 142 - 12
src/components/expenseMobile.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="expenseMobile-all">
-        <el-dialog  top="20vh" custom-class="selfDialog" width="95%" title="详情" :visible.sync="expenseMobileVisible">
+        <el-dialog top="20vh" custom-class="selfDialog" width="95%" title="详情" :visible.sync="expenseMobileVisible">
             <div class="dialog-title">详情</div>
             <div class="dialog-info">
                 <div class="dialog-info-ms">费用描述:{{dailydata.instructions}}</div>
@@ -28,14 +28,29 @@
             <div class="expenseMobile-top">
                 <div class="expenseMobile-title">{{this.portType!=2?'日常付款申请':''}}</div>
                 <div class="expenseMobile-search">
-                    <el-select popper-class="my-select" style="width:100%" v-model="input" clearable filterable remote :remote-method="DailyFeeKeywordSearch" :loading="selectLoadingrf" @change="searchbtn" placeholder="请选择">
+                    <el-autocomplete
+                    popper-class="custom-autocomplete-dropdown"
+                    style="flex:19;"
+                    v-model="input"
+                    :fetch-suggestions="querySearchAsyncs"
+                    :trigger-on-focus="false"
+                    placeholder="请输入或选择"
+                    @select="handleSelects"
+                    >
+                        <template slot-scope="{ item }">
+                            <div style="width: 300px">{{ item.instructions }}</div>
+                        </template>
+                    </el-autocomplete>
+                    <el-button style="flex:1;" @click.stop="searchbtn" type="primary"   icon="el-icon-search"></el-button>
+                    <!-- <el-select popper-class="my-select" style="width:100%" v-model="input" clearable filterable remote :remote-method="DailyFeeKeywordSearch" :loading="selectLoadingrf" @change="searchbtn" placeholder="请选择">
                         <el-option
                         v-for="item in inputArrrf"
                         :key="item.id"
                         :label="item.instructions"
                         :value="item.instructions">
                         </el-option>
-                    </el-select>
+                    </el-select> -->
+                    <!-- <el-button @click="searchbtn" slot="append" icon="el-icon-search"></el-button> -->
                     <!-- <el-input clearable placeholder="请输入费用描述" v-model="input" class="input-with-select">
                         <el-button @click="searchbtn" slot="append" icon="el-icon-search"></el-button>
                     </el-input> -->
@@ -51,7 +66,8 @@
                     </div>
                     <div class="card-btn">
                         <el-button @click="infobtn(item)" size="mini">详情</el-button>
-                        <el-button size="mini" @click="PostDelDailyPaymentAudit(item.id,1)" type="primary">通过</el-button>
+                        <el-button size="mini" @click="PostDelDailyPaymentAudit(item.id,1)"
+                            type="primary">通过</el-button>
                         <el-button size="mini" @click="PostDelDailyPaymentAudit(item.id,2)" type="danger">拒绝</el-button>
                     </div>
                 </div>
@@ -65,14 +81,21 @@
             <div class="expenseMobile-top">
                 <div class="expenseMobile-title">{{this.portType!=2?'费用审核':''}}</div>
                 <div class="expenseMobile-search">
-                    <el-select popper-class="my-select" style="width:100%" v-model="value" clearable filterable remote :remote-method="GroupItemKeywordSearch" :loading="selectLoading" @change="searchexamine" placeholder="请选择">
-                            <el-option
-                            v-for="item in inputArr"
-                            :key="item.id"
-                            :label="item.teamName"
+                    <el-autocomplete style="flex:19;" v-model="value"
+                        :fetch-suggestions="querySearchAsync" :trigger-on-focus="false" placeholder="请输入或选择团组"
+                        @select="handleSelect">
+                        <template slot-scope="{ item }">
+                            <div>{{ item.teamName }}</div>
+                        </template>
+                    </el-autocomplete>
+                    <el-button type="primary" style="flex:1;" @click.stop="searchexamine" icon="el-icon-search"></el-button>
+                    <!-- <el-select popper-class="my-select" style="width:100%" v-model="value" clearable filterable remote
+                        :remote-method="GroupItemKeywordSearch" :loading="selectLoading" @change="searchexamine"
+                        placeholder="请选择">
+                        <el-option v-for="item in inputArr" :key="item.id" :label="item.teamName"
                             :value="item.teamName">
-                            </el-option>
-                        </el-select>
+                        </el-option>
+                    </el-select> -->
                     <!-- <el-input clearable placeholder="请输入团组名称" v-model="value" class="input-with-select">
                         <el-button @click="searchexamine" slot="append" icon="el-icon-search"></el-button>
                     </el-input> -->
@@ -100,7 +123,7 @@
         <div class="expenseMobile-tabtn">
             <div class="tabtn-box">
                 <div @click="rcbtn">
-                    <div  v-if="platejudgment==1"><i style="font-size:22px;" class="el-icon-s-goods"></i></div>
+                    <div v-if="platejudgment==1"><i style="font-size:22px;" class="el-icon-s-goods"></i></div>
                     <div v-else><i style="font-size:20px;" class="el-icon-goods"></i></div>
                     <div style="font-size:14px;">日常</div>
                 </div>
@@ -139,6 +162,109 @@ export default {
         }
     },
     methods:{
+        // 异步搜索方法
+        querySearchAsync(queryString, cb) {
+            if (queryString === '' || queryString.trim() === '') {
+                cb(this.inputArr);
+                return;
+            }
+
+            this.selectLoading = true;
+            var url = "/api/Groups/GroupItemKeywordSearch?keyword=" + queryString;
+            var that = this;
+
+            this.$axios({
+                method: 'get',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    const results = res.data.data || [];
+                    // 如果没有搜索结果,添加一个自定义选项
+                    if (results.length === 0 && queryString.trim() !== '') {
+                        results.push({
+                            id: 'custom',
+                            teamName: queryString,
+                            clientUnit: '自定义输入',
+                            isCustom: true
+                        });
+                    }
+                    cb(results);
+                } else {
+                    cb([]);
+                }
+            }).finally(() => {
+                that.selectLoading = false;
+            });
+        },
+
+        // 处理选择
+        handleSelect(item) {
+            if (item.isCustom) {
+                // 如果是自定义输入,直接使用输入的值
+                this.value = item.teamName;
+                this.searchexamine();
+            } else {
+                this.value = item.teamName;
+                this.searchexamine();
+            }
+        },
+
+        //异步搜索方法
+        querySearchAsyncs(queryString, cb) {
+            if (queryString === '' || queryString.trim() === '') {
+                cb(this.inputArr);
+                return;
+            }
+            this.selectLoading = true;
+            var url = "/api/System/DailyFeeKeywordSearch?keyword=" + queryString+"&auditType=1";
+            var that = this;
+
+            this.$axios({
+                method: 'get',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    const results = res.data.data || [];
+                    // 如果没有搜索结果,添加一个自定义选项
+                    if (results.length === 0 && queryString.trim() !== '') {
+                        results.push({
+                            id: 'custom',
+                            teamName: queryString,
+                            clientUnit: '自定义输入',
+                            isCustom: true
+                        });
+                    }
+                    console.log(results);
+                    
+                    cb(results);
+                } else {
+                    cb([]);
+                }
+            }).finally(() => {
+                that.selectLoading = false;
+            });
+        },
+
+        // 处理选择
+        handleSelects(item) {
+            if (item.isCustom) {
+                // 如果是自定义输入,直接使用输入的值
+                this.input = item.instructions;
+                this.searchbtn();
+            } else {
+                this.input = item.instructions;
+                this.searchbtn();
+            }
+        },
+
+
+
         //搜索提示
         DailyFeeKeywordSearch(query) {
             if (query !== '') {
@@ -489,6 +615,7 @@ export default {
 }
 .expenseMobile-search{
     padding: 8px;
+    display: flex;
 }
 .expenseMobile-tabtn{
     position: fixed;
@@ -576,4 +703,7 @@ export default {
 .my-select .el-select-dropdown__list {
     width: 350px;
 }
+.expenseMobile-search .el-input-group__append{
+    padding: 0px 20px
+}
 </style>

+ 67 - 4
src/components/statistics/Groupreports.vue

@@ -10,26 +10,38 @@
                     :value="item.value">
                     </el-option>
                 </el-select>
-                <el-select style="width:300px;margin-left: 10px;" v-model="input" clearable filterable remote :remote-method="GroupItemKeywordSearch" :loading="selectLoading" @change="Inquireclick()" placeholder="请选择">
+                <el-autocomplete
+                style="width:300px;margin-left: 10px;"
+                v-model="input"
+                :fetch-suggestions="querySearchAsync"
+                :trigger-on-focus="false"
+                placeholder="请输入或选择团组"
+                @select="handleSelect"
+                >
+                    <template slot-scope="{ item }">
+                        <div>{{ item.teamName }}</div>
+                    </template>
+                </el-autocomplete>
+                <!-- <el-select style="width:300px;margin-left: 10px;" v-model="input" clearable filterable remote :remote-method="GroupItemKeywordSearch" :loading="selectLoading" @change="Inquireclick()" placeholder="请选择">
                     <el-option
                     v-for="item in inputArr"
                     :key="item.id"
                     :label="item.teamName+' '+item.clientUnit"
                     :value="item.teamName">
                     </el-option>
-                </el-select>
+                </el-select> -->
                 <!-- <el-input
                 style="width:200px;"
 
                 placeholder="请输入查询内容"
                 v-model="input"
                 clearable>
-                </el-input>
+                </el-input> -->
                 <el-button 
                 type="primary"
                 size=""
                 title="查看费用清单"
-                @click="Inquireclick()">查 询</el-button> -->
+                @click="Inquireclick()">查 询</el-button>
             </div>
             <div class="reports-title">
                 <div>团组列表</div>
@@ -179,6 +191,57 @@ export default {
         }
     },
     methods:{
+        // 异步搜索方法
+        querySearchAsync(queryString, cb) {
+            if (queryString === '' || queryString.trim() === '') {
+                cb(this.inputArr);
+                return;
+            }
+
+            this.selectLoading = true;
+            var url = "/api/Groups/GroupItemKeywordSearch?keyword=" + queryString;
+            var that = this;
+
+            this.$axios({
+                method: 'get',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + this.token
+                },
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    const results = res.data.data || [];
+                    // 如果没有搜索结果,添加一个自定义选项
+                    if (results.length === 0 && queryString.trim() !== '') {
+                        results.push({
+                            id: 'custom',
+                            teamName: queryString,
+                            clientUnit: '自定义输入',
+                            isCustom: true
+                        });
+                    }
+                    cb(results);
+                } else {
+                    cb([]);
+                }
+            }).finally(() => {
+                that.selectLoading = false;
+            });
+        },
+
+        // 处理选择
+        handleSelect(item) {
+            if (item.isCustom) {
+                // 如果是自定义输入,直接使用输入的值
+                this.input = item.teamName;
+                this.Inquireclick();
+            } else {
+                this.input = item.teamName;
+                this.Inquireclick();
+            }
+        },
+        
+
         //搜索提示
         GroupItemKeywordSearch(query) {
             if (query !== '') {