|  | @@ -1,5 +1,22 @@
 | 
	
		
			
				|  |  |  <template>
 | 
	
		
			
				|  |  |      <div v-loading.fullscreen.lock="fullscreenLoading">
 | 
	
		
			
				|  |  | +        <el-dialog width="1140px" class="pickupList-ai" title="Ai识别客户名单" :visible.sync="AiVisible">
 | 
	
		
			
				|  |  | +            <div class="pickupList-ai-title">第一步:{{textToCopy}}<span @click="btn1">点击复制左侧文字</span></div>
 | 
	
		
			
				|  |  | +            <div class="pickupList-ai-title">第二步:打开<span @click="openkimi">KIML</span>,将上述文字和截图粘贴到KIMI文本框里</div>
 | 
	
		
			
				|  |  | +            <div class="pickupList-ai-title">第三步:将KIMI生成的内容复制到以下文本框</div>
 | 
	
		
			
				|  |  | +            <div class="pickupList-ai-textarea">
 | 
	
		
			
				|  |  | +                <el-input
 | 
	
		
			
				|  |  | +                style="width:100%"
 | 
	
		
			
				|  |  | +                type="textarea"
 | 
	
		
			
				|  |  | +                :rows="15"
 | 
	
		
			
				|  |  | +                placeholder="请输入内容"
 | 
	
		
			
				|  |  | +                v-model="textarea">
 | 
	
		
			
				|  |  | +                </el-input>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +            <div class="pickupList-ai-btn">
 | 
	
		
			
				|  |  | +                <el-button @click="recognizeclick" size="small"  type="primary">识别</el-button>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +        </el-dialog>
 | 
	
		
			
				|  |  |          <div class="pickuplist-all">
 | 
	
		
			
				|  |  |              <div class="pickuplist-head">
 | 
	
		
			
				|  |  |                  <div class="pickuplist-head-li">
 | 
	
	
		
			
				|  | @@ -26,7 +43,8 @@
 | 
	
		
			
				|  |  |                      </div>
 | 
	
		
			
				|  |  |                      <div class="pickuplist-info-li">
 | 
	
		
			
				|  |  |                          <label>起止日期:</label>
 | 
	
		
			
				|  |  | -                        <span>{{ GroupInfo.visitStartDate | filter_time }}~{{ GroupInfo.visitEndDate | filter_time }}</span>
 | 
	
		
			
				|  |  | +                        <span>{{ GroupInfo.visitStartDate | filter_time }}~{{ GroupInfo.visitEndDate | filter_time
 | 
	
		
			
				|  |  | +                            }}</span>
 | 
	
		
			
				|  |  |                      </div>
 | 
	
		
			
				|  |  |                      <div class="pickuplist-info-li">
 | 
	
		
			
				|  |  |                          <label>天数/人数:</label>
 | 
	
	
		
			
				|  | @@ -35,11 +53,13 @@
 | 
	
		
			
				|  |  |                  </div>
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  |              <div class="pickuplist-Upload-box">
 | 
	
		
			
				|  |  | +                <el-button style="margin-right: 10px;" size="small" type="primary" @click="AIshibie">AI识别</el-button>
 | 
	
		
			
				|  |  |                  <div slot="tip" class="el-upload__tip">只能识别jpg/png文件   </div>
 | 
	
		
			
				|  |  |                  <el-upload class="upload-demo" ref="upload" action="" :on-change="httpRequest" :on-remove="httpRequest"
 | 
	
		
			
				|  |  |                      accept=".png, .jpg, .jpeg" :limit="1" :file-list="fileList" :auto-upload="false">
 | 
	
		
			
				|  |  |                      <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
 | 
	
		
			
				|  |  | -                    <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">识别图片</el-button>
 | 
	
		
			
				|  |  | +                    <el-button style="margin-left: 10px;" size="small" type="success"
 | 
	
		
			
				|  |  | +                        @click="submitUpload">识别图片</el-button>
 | 
	
		
			
				|  |  |                  </el-upload>
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  |              <div class="pickuplist-table">
 | 
	
	
		
			
				|  | @@ -74,8 +94,8 @@
 | 
	
		
			
				|  |  |                                  type="text" size="small">
 | 
	
		
			
				|  |  |                                  详细
 | 
	
		
			
				|  |  |                              </el-button>
 | 
	
		
			
				|  |  | -                            <el-button @click.native.prevent="PostTourClientListDel(scope.$index, scope.row)" type="text"
 | 
	
		
			
				|  |  | -                                size="small">
 | 
	
		
			
				|  |  | +                            <el-button @click.native.prevent="PostTourClientListDel(scope.$index, scope.row)"
 | 
	
		
			
				|  |  | +                                type="text" size="small">
 | 
	
		
			
				|  |  |                                  删除
 | 
	
		
			
				|  |  |                              </el-button>
 | 
	
		
			
				|  |  |                          </template>
 | 
	
	
		
			
				|  | @@ -127,8 +147,8 @@
 | 
	
		
			
				|  |  |                          </el-radio-group>
 | 
	
		
			
				|  |  |                      </el-form-item>
 | 
	
		
			
				|  |  |                      <el-form-item style="width:395px ;" label="出生日期">
 | 
	
		
			
				|  |  | -                        <el-date-picker value-format="yyyy-MM-dd" size="medium" type="date" placeholder="选择出生日期" v-model.trim="pickupinif.birth"
 | 
	
		
			
				|  |  | -                            style="width: 100%;">
 | 
	
		
			
				|  |  | +                        <el-date-picker value-format="yyyy-MM-dd" size="medium" type="date" placeholder="选择出生日期"
 | 
	
		
			
				|  |  | +                            v-model.trim="pickupinif.birth" style="width: 100%;">
 | 
	
		
			
				|  |  |                          </el-date-picker>
 | 
	
		
			
				|  |  |                      </el-form-item>
 | 
	
		
			
				|  |  |                      <el-form-item style="width:395px ;" label="舱位类型" prop="Accommodation">
 | 
	
	
		
			
				|  | @@ -175,9 +195,10 @@
 | 
	
		
			
				|  |  |                          <el-table-column type="index" label="序号" width="50"></el-table-column>
 | 
	
		
			
				|  |  |                          <el-table-column property="date" label="姓" width="100">
 | 
	
		
			
				|  |  |                              <template slot-scope="scope">
 | 
	
		
			
				|  |  | -                                <el-autocomplete popper-class="el-autocomplete-suggestion" :popper-append-to-body="false"
 | 
	
		
			
				|  |  | -                                    class="inline-input" size="mini" v-model.trim="scope.row.lastName"
 | 
	
		
			
				|  |  | -                                    :fetch-suggestions="querySearch" @select="DTPromptChecked(scope.row)"></el-autocomplete>
 | 
	
		
			
				|  |  | +                                <el-autocomplete popper-class="el-autocomplete-suggestion"
 | 
	
		
			
				|  |  | +                                    :popper-append-to-body="false" class="inline-input" size="mini"
 | 
	
		
			
				|  |  | +                                    v-model.trim="scope.row.lastName" :fetch-suggestions="querySearch"
 | 
	
		
			
				|  |  | +                                    @select="DTPromptChecked(scope.row)"></el-autocomplete>
 | 
	
		
			
				|  |  |                              </template>
 | 
	
		
			
				|  |  |                          </el-table-column>
 | 
	
		
			
				|  |  |                          <el-table-column label="名" width="100">
 | 
	
	
		
			
				|  | @@ -230,16 +251,18 @@
 | 
	
		
			
				|  |  |                          </el-table-column>
 | 
	
		
			
				|  |  |                          <el-table-column label="出生日期" width="100">
 | 
	
		
			
				|  |  |                              <template slot-scope="scope">
 | 
	
		
			
				|  |  | -                                <el-date-picker value-format="yyyy-MM-dd" :clearable="false" size="mini" type="date" placeholder="出生日期"
 | 
	
		
			
				|  |  | -                                    v-model.trim="scope.row.birthDay" style="width: 100%;padding-left: 0px;padding-right: 0px;">
 | 
	
		
			
				|  |  | +                                <el-date-picker value-format="yyyy-MM-dd" :clearable="false" size="mini" type="date"
 | 
	
		
			
				|  |  | +                                    placeholder="出生日期" v-model.trim="scope.row.birthDay"
 | 
	
		
			
				|  |  | +                                    style="width: 100%;padding-left: 0px;padding-right: 0px;">
 | 
	
		
			
				|  |  |                                  </el-date-picker>
 | 
	
		
			
				|  |  |                              </template>
 | 
	
		
			
				|  |  |                          </el-table-column>
 | 
	
		
			
				|  |  |                          <el-table-column label="舱位类型" width="115">
 | 
	
		
			
				|  |  |                              <template slot-scope="scope">
 | 
	
		
			
				|  |  | -                                <el-select size="mini" style="width:100%" v-model="scope.row.shippingSpaceTypeId" clearable
 | 
	
		
			
				|  |  | -                                    filterable placeholder="请选择">
 | 
	
		
			
				|  |  | -                                    <el-option v-for="item in cangweiType" :key="item.id" :label="item.name" :value="item.id">
 | 
	
		
			
				|  |  | +                                <el-select size="mini" style="width:100%" v-model="scope.row.shippingSpaceTypeId"
 | 
	
		
			
				|  |  | +                                    clearable filterable placeholder="请选择">
 | 
	
		
			
				|  |  | +                                    <el-option v-for="item in cangweiType" :key="item.id" :label="item.name"
 | 
	
		
			
				|  |  | +                                        :value="item.id">
 | 
	
		
			
				|  |  |                                      </el-option>
 | 
	
		
			
				|  |  |                                  </el-select>
 | 
	
		
			
				|  |  |                              </template>
 | 
	
	
		
			
				|  | @@ -495,7 +518,10 @@ export default {
 | 
	
		
			
				|  |  |              fileList: [],
 | 
	
		
			
				|  |  |              upLoadFile: [],
 | 
	
		
			
				|  |  |              fullscreenLoading: false,
 | 
	
		
			
				|  |  | -            timeStamp: ''
 | 
	
		
			
				|  |  | +            timeStamp: '',
 | 
	
		
			
				|  |  | +            AiVisible:false,
 | 
	
		
			
				|  |  | +            textToCopy:'按照姓、名、姓名拼音、性别、单位、职务、出生日期的json格式来排列整理(性别和出生日期通过身份证来识别,出生日期按照yyyy-MM-dd来整理)',
 | 
	
		
			
				|  |  | +            textarea:""
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      methods: {
 | 
	
	
		
			
				|  | @@ -522,6 +548,22 @@ export default {
 | 
	
		
			
				|  |  |              this.PostShareGroupInfo()
 | 
	
		
			
				|  |  |              this.addhandoff()
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  | +        //点击复制
 | 
	
		
			
				|  |  | +        btn1() {
 | 
	
		
			
				|  |  | +            navigator.clipboard
 | 
	
		
			
				|  |  | +                .writeText(this.textToCopy)
 | 
	
		
			
				|  |  | +                .then(() => {
 | 
	
		
			
				|  |  | +                    this.$message.success("复制成功");
 | 
	
		
			
				|  |  | +                })
 | 
	
		
			
				|  |  | +                .catch((err) => {
 | 
	
		
			
				|  |  | +                    // 复制失败
 | 
	
		
			
				|  |  | +                    that.$message.error("复制失败");
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        //打开kimi
 | 
	
		
			
				|  |  | +        openkimi(){
 | 
	
		
			
				|  |  | +            window.open("https://kimi.moonshot.cn");
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  |          //清空
 | 
	
		
			
				|  |  |          clearedlist() {
 | 
	
		
			
				|  |  |              this.tourClientListInfos = [
 | 
	
	
		
			
				|  | @@ -1094,8 +1136,64 @@ export default {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              });
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  | +        //识别
 | 
	
		
			
				|  |  | +        recognizeclick(){
 | 
	
		
			
				|  |  | +            let textarea=JSON.parse(this.textarea)
 | 
	
		
			
				|  |  | +            for (let i = 0; i < textarea.length; i++) {
 | 
	
		
			
				|  |  | +                textarea[i].lastName=textarea[i].姓;
 | 
	
		
			
				|  |  | +                delete textarea[i].姓;
 | 
	
		
			
				|  |  | +                textarea[i].firstName=textarea[i].名;
 | 
	
		
			
				|  |  | +                delete textarea[i].名;
 | 
	
		
			
				|  |  | +                textarea[i].companyFullName=textarea[i].工作单位;
 | 
	
		
			
				|  |  | +                delete textarea[i].工作单位;
 | 
	
		
			
				|  |  | +                textarea[i].birthDay=textarea[i].出生日期;
 | 
	
		
			
				|  |  | +                delete textarea[i].出生日期;
 | 
	
		
			
				|  |  | +                textarea[i].sex=textarea[i].性别;
 | 
	
		
			
				|  |  | +                delete textarea[i].性别;
 | 
	
		
			
				|  |  | +                textarea[i].job=textarea[i].职务;
 | 
	
		
			
				|  |  | +                delete textarea[i].职务;
 | 
	
		
			
				|  |  | +                textarea[i].pinyin=textarea[i].姓名拼音.replace(' ','/');
 | 
	
		
			
				|  |  | +                delete textarea[i].姓名拼音;
 | 
	
		
			
				|  |  | +                textarea[i].iDcard="-";
 | 
	
		
			
				|  |  | +                textarea[i].phone="-";
 | 
	
		
			
				|  |  | +                textarea[i].shippingSpaceTypeId=460;
 | 
	
		
			
				|  |  | +                textarea[i].remark="";
 | 
	
		
			
				|  |  | +                textarea[i].isAccompany='否';
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            console.log(textarea);
 | 
	
		
			
				|  |  | +            this.dialogTableVisible=true;
 | 
	
		
			
				|  |  | +            this.AiVisible=false;
 | 
	
		
			
				|  |  | +            this.tourClientListInfos = textarea
 | 
	
		
			
				|  |  | +            var len = 10 - textarea.length
 | 
	
		
			
				|  |  | +            for (var jk = 0; jk < len; jk++) {
 | 
	
		
			
				|  |  | +                this.tourClientListInfos.push(
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        lastName: '',
 | 
	
		
			
				|  |  | +                        firstName: "",
 | 
	
		
			
				|  |  | +                        pinyin: '',
 | 
	
		
			
				|  |  | +                        sex: '男',
 | 
	
		
			
				|  |  | +                        isAccompany: '否',//陪同
 | 
	
		
			
				|  |  | +                        companyFullName: "",
 | 
	
		
			
				|  |  | +                        job: "",
 | 
	
		
			
				|  |  | +                        idCardNo: "",
 | 
	
		
			
				|  |  | +                        phone: "",
 | 
	
		
			
				|  |  | +                        birthDay: "",
 | 
	
		
			
				|  |  | +                        shippingSpaceTypeId: 460,
 | 
	
		
			
				|  |  | +                        shippingSpaceSpecialNeeds: '',
 | 
	
		
			
				|  |  | +                        hotelSpecialNeeds: '',
 | 
	
		
			
				|  |  | +                        mealSpecialNeeds: '',
 | 
	
		
			
				|  |  | +                        remark: '',
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                )
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        //
 | 
	
		
			
				|  |  | +        AIshibie(){
 | 
	
		
			
				|  |  | +            this.AiVisible=true;
 | 
	
		
			
				|  |  | +            this.textarea='';
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  |          //多条保存
 | 
	
		
			
				|  |  | -        manysave() {
 | 
	
		
			
				|  |  | +        manysave(){
 | 
	
		
			
				|  |  |              var tourClientList = [];
 | 
	
		
			
				|  |  |              console.log(this.tourClientListInfos)
 | 
	
		
			
				|  |  |              for (var i = 0; i < this.tourClientListInfos.length; i++) {
 | 
	
	
		
			
				|  | @@ -1479,4 +1577,16 @@ export default {
 | 
	
		
			
				|  |  |  .el-table th.el-table__cell>.cell {
 | 
	
		
			
				|  |  |      text-align: left;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +.pickupList-ai-title{
 | 
	
		
			
				|  |  | +    margin-bottom: 10px;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +.pickupList-ai-title span{
 | 
	
		
			
				|  |  | +    color: #409eff;
 | 
	
		
			
				|  |  | +    cursor:pointer;
 | 
	
		
			
				|  |  | +    text-decoration: underline;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +.pickupList-ai-btn{
 | 
	
		
			
				|  |  | +    text-align: right;
 | 
	
		
			
				|  |  | +    margin-top: 10px;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  </style>
 |