|  |  | 
 |  |  |       :visible.sync="editConfig.visible" | 
 |  |  |       :width="dialogWidth" | 
 |  |  |       :before-close="handleClose" | 
 |  |  |       append-to-body | 
 |  |  |       custom-class="iframe-dialog" | 
 |  |  |     > | 
 |  |  |       <el-form | 
 |  |  |         ref="form" | 
 |  |  |         v-if="refreshFlag" | 
 |  |  |         :model="editConfig.infomation" | 
 |  |  |         :rules="rules" | 
 |  |  |         label-position="right" | 
 |  |  |         label-width="308px" | 
 |  |  |         label-width="120px" | 
 |  |  |         size="mini" | 
 |  |  |       > | 
 |  |  |         <!-- 信息 --> | 
 |  |  | 
 |  |  |           <div v-if="isUnflod" class="basic-info-title">基本信息</div> | 
 |  |  |           <div class="basic-info-view"> | 
 |  |  |             <el-row> | 
 |  |  |               <el-col v-if="isUnflod" :span="12"> | 
 |  |  |                 <el-form-item label="客户名称" prop="client_id"> | 
 |  |  |                   <div class="custom-name"> | 
 |  |  |                     <el-input v-model="editConfig.infomation.client_id"></el-input> | 
 |  |  |                     <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div> | 
 |  |  |                     <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div> | 
 |  |  |                   </div> | 
 |  |  |                 </el-form-item> | 
 |  |  |               </el-col> | 
 |  |  | <!--              <el-col v-if="isUnflod" :span="12">--> | 
 |  |  | <!--                <el-form-item label="单据编号" prop="number">--> | 
 |  |  | <!--                  <el-input v-model="editConfig.infomation.number"></el-input>--> | 
 |  |  | <!--                </el-form-item>--> | 
 |  |  | <!--              </el-col>--> | 
 |  |  |               <el-col v-if="isUnflod" :span="12"> | 
 |  |  |                 <el-form-item label="单据编号" prop="number"> | 
 |  |  |                   <el-input v-model="editConfig.infomation.number"></el-input> | 
 |  |  |                   <WordInput | 
 |  |  |                       v-if="codenumer && (explain != '' || isIdDisabled)&&method == 0" | 
 |  |  |                       :codenumer="codenumer" | 
 |  |  |                       :sum="sum" | 
 |  |  |                       :disabled="editConfig.infomation.id || isIdDisabled" | 
 |  |  |                       :inputValue="inputValue" | 
 |  |  |                       @codeList="codeList" | 
 |  |  |                   /> | 
 |  |  |                   <span v-else-if="method == 0" style="color: #f56c6c" | 
 |  |  |                   >请优先配置编码规范 | 
 |  |  |                     <el-button type="text"  @click="numberClick"> | 
 |  |  |                         配置规范 | 
 |  |  |                       </el-button | 
 |  |  |                       ></span | 
 |  |  |                   > | 
 |  |  |                   <span v-else>{{editConfig.title==='新建'? '自动生成': editConfig.infomation.number}}</span> | 
 |  |  |                 </el-form-item> | 
 |  |  |               </el-col> | 
 |  |  |               <el-col :span="12"> | 
 |  |  |                 <el-form-item label="客户名称" prop="client_name"> | 
 |  |  |                   <div class="custom-name"> | 
 |  |  |                     <el-autocomplete | 
 |  |  |                       v-model="editConfig.infomation.client_name" | 
 |  |  |                       :fetch-suggestions=" | 
 |  |  |                         (queryString, callback) => { | 
 |  |  |                           querySearchAsync(queryString, callback, 'client') | 
 |  |  |                         } | 
 |  |  |                       " | 
 |  |  |                       value-key="name" | 
 |  |  |                       @select="handleSelectClient('client', $event)" | 
 |  |  |                     ></el-autocomplete> | 
 |  |  |                     <div class="common-select-btn" @click="selClientClick('client')"> | 
 |  |  |                       <i class="el-icon-circle-plus-outline" title="选择"></i> | 
 |  |  |                     </div> | 
 |  |  |                     <div | 
 |  |  |                       v-if="editConfig.infomation.client_name && editConfig.infomation.client_name.length > 0" | 
 |  |  |                       class="common-select-btn" | 
 |  |  |                       @click="clearupClient('client')" | 
 |  |  |                     > | 
 |  |  |                       <i class="el-icon-remove-outline" title="清除"></i> | 
 |  |  |                     </div> | 
 |  |  |                   </div> | 
 |  |  |                 </el-form-item> | 
 |  |  |               </el-col> | 
 |  |  |               <el-col v-if="isUnflod" :span="12"> | 
 |  |  | 
 |  |  |                     v-model="editConfig.infomation.member_id" | 
 |  |  |                     placeholder="请选择" | 
 |  |  |                     size="mini" | 
 |  |  |                     style="width: 63%" | 
 |  |  |                     style="width: 100%" | 
 |  |  |                   > | 
 |  |  |                     <el-option v-for="item in memberOptions" :key="item.id" :label="item.name" :value="item.id"> | 
 |  |  |                     <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> | 
 |  |  |                     </el-option> | 
 |  |  |                   </el-select> | 
 |  |  |                 </el-form-item> | 
 |  |  |               </el-col> | 
 |  |  |               <el-col :span="12"> | 
 |  |  |                 <el-form-item label="服务开始时间" prop="start_time"> | 
 |  |  |                   <el-date-picker v-model="editConfig.infomation.start_time" type="date" placeholder="选择日期"> | 
 |  |  |                   <el-date-picker | 
 |  |  |                     v-model="editConfig.infomation.start_time" | 
 |  |  |                     value-format="yyyy-MM-dd HH:mm:ss" | 
 |  |  |                     style="width: 100%" | 
 |  |  |                     type="datetime" | 
 |  |  |                     placeholder="选择日期" | 
 |  |  |                   > | 
 |  |  |                   </el-date-picker> | 
 |  |  |                 </el-form-item> | 
 |  |  |               </el-col> | 
 |  |  |               <el-col :span="12"> | 
 |  |  |                 <el-form-item label="服务截止时间" prop="end_time"> | 
 |  |  |                   <el-date-picker v-model="editConfig.infomation.end_time" type="date" placeholder="选择日期"> | 
 |  |  |                   <el-date-picker | 
 |  |  |                     v-model="editConfig.infomation.end_time" | 
 |  |  |                     value-format="yyyy-MM-dd HH:mm:ss" | 
 |  |  |                     type="datetime" | 
 |  |  |                     style="width: 100%" | 
 |  |  |                     placeholder="选择日期" | 
 |  |  |                   > | 
 |  |  |                   </el-date-picker> | 
 |  |  |                 </el-form-item> | 
 |  |  |               </el-col> | 
 |  |  |               <el-col :span="12"> | 
 |  |  |                 <el-form-item label="合同金额" prop="money"> | 
 |  |  |                   <el-input v-model="editConfig.infomation.money"></el-input> | 
 |  |  |                   <el-input-number | 
 |  |  |                     v-model="editConfig.infomation.money" | 
 |  |  |                     placeholder="请输入" | 
 |  |  |                     :min="0" | 
 |  |  |                     :precision="2" | 
 |  |  |                     :controls="false" | 
 |  |  |                     style="width: 100%" | 
 |  |  |                   ></el-input-number> | 
 |  |  |                 </el-form-item> | 
 |  |  |               </el-col> | 
 |  |  |             </el-row> | 
 |  |  | 
 |  |  |         <el-button type="primary" size="small" @click="saveClick('form')">保存</el-button> | 
 |  |  |         <el-button size="small" @click="editConfig.visible = false">取消</el-button> | 
 |  |  |       </div> | 
 |  |  |       <!-- 选择客户 --> | 
 |  |  |       <SelectClientDialog | 
 |  |  |         v-if="editSelectClientConfig.editVisible" | 
 |  |  |         :edit-common-config="editSelectClientConfig" | 
 |  |  |         @selClient="selClient" | 
 |  |  |       /> | 
 |  |  |     </el-dialog> | 
 |  |  |   </div> | 
 |  |  | </template> | 
 |  |  | 
 |  |  | <script> | 
 |  |  | import { getAllData } from "@/api/client/client" | 
 |  |  | import { getAddMasterOrder, getUpdateMasterOrder } from "@/api/sales/masterOrder" | 
 |  |  | import SelectClientDialog from "@/views/other/commonDialog/SelectClientDialog" | 
 |  |  | import WordInput from "@/components/wordInput.vue"; | 
 |  |  | import codeMixin from "@/views/client/followupRecords/mixin/codeMixin"; | 
 |  |  | export default { | 
 |  |  |   name: "QuotationDialog", | 
 |  |  |   mixins:[codeMixin], | 
 |  |  |   props: { | 
 |  |  |     editCommonConfig: { | 
 |  |  |       type: Object, | 
 |  |  | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |   components: {}, | 
 |  |  |   computed: {}, | 
 |  |  |   components: {WordInput, SelectClientDialog }, | 
 |  |  |   computed: { | 
 |  |  |     clientList() { | 
 |  |  |       return this.$store.state.getClientName.clientList | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |   data() { | 
 |  |  |     return { | 
 |  |  |       dialogWidth: "80%", | 
 |  |  |       refreshFlag: true, | 
 |  |  |       dialogWidth: "50%", | 
 |  |  |       editConfig: this.editCommonConfig, | 
 |  |  |       rules: { | 
 |  |  |         number: [{ required: true, message: "请输入", trigger: "blur" }], | 
 |  |  |         client_name: [{ required: true, message: "请选择", trigger: "change" }], | 
 |  |  |         member_id: [{ required: true, message: "请选择", trigger: "change" }] | 
 |  |  |       }, | 
 |  |  |       memberOptions: [], | 
 |  |  |       unflodCollapseStr: "收起", | 
 |  |  |       isUnflod: true | 
 |  |  |       isUnflod: true, | 
 |  |  |       editSelectClientConfig: { | 
 |  |  |         editVisible: false, | 
 |  |  |         title: "", | 
 |  |  |         infomation: {} | 
 |  |  |       }, | 
 |  |  |       clientId: this.editCommonConfig.infomation.client_id, | 
 |  |  |       objCode: { name: "", page: 0, pageSize: 0, type: "销售总单编码",codeStandID:'' }, | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |   created() { | 
 |  |  |     this.$store.dispatch("geClient") | 
 |  |  |     this.getCommonData() | 
 |  |  |     this.formInfo() | 
 |  |  |   }, | 
 |  |  |   watch:{ | 
 |  |  |     'editCommonConfig.visible'(val){ | 
 |  |  |       if(val){ | 
 |  |  |         this.formInfo() | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     'editCommonConfig.infomation.codeStandID'(val){ | 
 |  |  |       this.formInfo() | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |   methods: { | 
 |  |  |     formInfo(){ | 
 |  |  |       this.objCode.codeStandID = '' | 
 |  |  |       if(this.editConfig.infomation.codeStandID){ | 
 |  |  |         this.objCode.codeStandID = this.editConfig.infomation.codeStandID; | 
 |  |  |       } | 
 |  |  |       this.getRCodeStandardList(); | 
 |  |  |     }, | 
 |  |  |     getCommonData() { | 
 |  |  |       getAllData() | 
 |  |  |         .then((res) => { | 
 |  |  | 
 |  |  |           const params = this.saveParams() | 
 |  |  |           console.log(params) | 
 |  |  |           if (this.editConfig.title === "新建") { | 
 |  |  |             getAddMasterOrder(params) | 
 |  |  |               .then((res) => { | 
 |  |  |                 console.log(res) | 
 |  |  |                 this.editConfig.visible = false | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                   this.$message({ | 
 |  |  |                     message: "添加成功", | 
 |  |  |                     type: "success" | 
 |  |  |                   }) | 
 |  |  |                   this.$parent.getData() | 
 |  |  |                 } | 
 |  |  |               }) | 
 |  |  |               .catch((err) => { | 
 |  |  |                 console.log(err) | 
 |  |  |               }) | 
 |  |  |             getAddMasterOrder(params).then((res) => { | 
 |  |  |               console.log(res) | 
 |  |  |               this.editConfig.visible = false | 
 |  |  |               if (res.code === 200) { | 
 |  |  |                 this.$message.success("添加成功") | 
 |  |  |                 this.$parent.getData() | 
 |  |  |               } | 
 |  |  |             }) | 
 |  |  |           } else { | 
 |  |  |             getUpdateMasterOrder(params) | 
 |  |  |               .then((res) => { | 
 |  |  |                 console.log(res) | 
 |  |  |                 this.editConfig.visible = false | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                   this.$message({ | 
 |  |  |                     message: "编辑成功", | 
 |  |  |                     type: "success" | 
 |  |  |                   }) | 
 |  |  |                   this.$parent.getData() | 
 |  |  |                 } | 
 |  |  |               }) | 
 |  |  |               .catch((err) => { | 
 |  |  |                 console.log(err) | 
 |  |  |               }) | 
 |  |  |             getUpdateMasterOrder(params).then((res) => { | 
 |  |  |               console.log(res) | 
 |  |  |               this.editConfig.visible = false | 
 |  |  |               if (res.code === 200) { | 
 |  |  |                 this.$message.success("编辑成功") | 
 |  |  |                 this.$parent.getData() | 
 |  |  |               } | 
 |  |  |             }) | 
 |  |  |           } | 
 |  |  |         } else { | 
 |  |  |           console.log("error submit") | 
 |  |  | 
 |  |  |         } | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     /** | 
 |  |  |      * 强制刷新form组件 | 
 |  |  |      * 外部更改表单值不会触发表单校验,导致即使有值夜被表单校验阻塞住 | 
 |  |  |      */ | 
 |  |  |     refresh(){ | 
 |  |  |       this.refreshFlag=false | 
 |  |  |       requestAnimationFrame(()=>{ | 
 |  |  |         this.refreshFlag=true | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     saveParams() { | 
 |  |  |       let data = this.editConfig.infomation | 
 |  |  |       let params = { | 
 |  |  |         id: this.editConfig.title === "新建" ? 0 : data.id, | 
 |  |  |         client_id: data.client_id || 0, | 
 |  |  |         client_id: this.clientId || 0, | 
 |  |  |         end_time: data.end_time || "", | 
 |  |  |         member_id: data.member_id || 0, | 
 |  |  |         money: data.money || "", | 
 |  |  |         money: data.money || 0, | 
 |  |  |         number: data.number || "", | 
 |  |  |         start_time: data.start_time || "" | 
 |  |  |         start_time: data.start_time || "", | 
 |  |  |         codeStandID:data.ID, | 
 |  |  |         codeRule:this.codeRule, | 
 |  |  |       } | 
 |  |  |       return params | 
 |  |  |     }, | 
 |  |  |     handleClose() { | 
 |  |  |       this.editConfig.visible = false | 
 |  |  |     }, | 
 |  |  |     // 选择用户相关方法 | 
 |  |  |     querySearchAsync(queryString, cb, value) { | 
 |  |  |       var restaurants = [] | 
 |  |  |       if (value === "client") { | 
 |  |  |         restaurants = this.clientList | 
 |  |  |       } | 
 |  |  |       var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants | 
 |  |  |       cb(results) | 
 |  |  |     }, | 
 |  |  |     createStateFilter(queryString) { | 
 |  |  |       return (state) => { | 
 |  |  |         return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0 | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     handleSelectClient(value, item) { | 
 |  |  |       if (value === "client") { | 
 |  |  |         this.clientId = item.id | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     selClientClick(value) { | 
 |  |  |       if (value === "client") { | 
 |  |  |         this.editSelectClientConfig.editVisible = true | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     selClient(row, value) { | 
 |  |  |       if (value === "client") { | 
 |  |  |         this.editConfig.infomation.client_name = row.name | 
 |  |  |         this.clientId = row.id | 
 |  |  |       } | 
 |  |  |       this.refresh() | 
 |  |  |     }, | 
 |  |  |     // 清除已选择用户 | 
 |  |  |     clearupClient(value) { | 
 |  |  |       if (value === "client") { | 
 |  |  |         this.editConfig.infomation.client_name = "" | 
 |  |  |         this.clientId = 0 | 
 |  |  |       } else if (value === "contact") { | 
 |  |  |         this.editConfig.infomation.contact_name = "" | 
 |  |  |         this.contactId = 0 | 
 |  |  |       } | 
 |  |  |       this.refresh() | 
 |  |  |     }, | 
 |  |  |     // 添加附件 | 
 |  |  |     addAnnexClick() {}, | 
 |  |  | 
 |  |  |  | 
 |  |  | <!-- Add "scoped" attribute to limit CSS to this component only --> | 
 |  |  | <style lang="scss" scoped> | 
 |  |  | .add-quotation { | 
 |  |  |   .basic-info { | 
 |  |  |     .basic-info-title { | 
 |  |  |       background-color: #f4f8fe; | 
 |  |  |       padding-left: 10px; | 
 |  |  |       font-size: 15px; | 
 |  |  |       font-weight: bold; | 
 |  |  |       color: #666; | 
 |  |  |       height: 42px; | 
 |  |  |       line-height: 42px; | 
 |  |  |     } | 
 |  |  |     .basic-info-view { | 
 |  |  |       margin-top: 10px; | 
 |  |  |       padding-right: 40px; | 
 |  |  |       .custom-name { | 
 |  |  | ::v-deep { | 
 |  |  |   .iframe-dialog .el-dialog__body { | 
 |  |  |     .basic-info { | 
 |  |  |       .basic-info-title { | 
 |  |  |         background-color: #f4f8fe; | 
 |  |  |         padding-left: 10px; | 
 |  |  |         font-size: 15px; | 
 |  |  |         font-weight: bold; | 
 |  |  |         color: #666; | 
 |  |  |         height: 42px; | 
 |  |  |         line-height: 42px; | 
 |  |  |       } | 
 |  |  |       .basic-info-view { | 
 |  |  |         margin-top: 10px; | 
 |  |  |         padding-right: 40px; | 
 |  |  |         .custom-name { | 
 |  |  |           display: flex; | 
 |  |  |           .common-select-btn { | 
 |  |  |             margin-left: 5px; | 
 |  |  |             font-size: 18px; | 
 |  |  |             cursor: pointer; | 
 |  |  |           } | 
 |  |  |           .el-autocomplete{ | 
 |  |  |             flex: 1; | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |       .address-view { | 
 |  |  |         margin-top: 10px; | 
 |  |  |         padding-right: 40px; | 
 |  |  |       } | 
 |  |  |       .annex-view { | 
 |  |  |         display: flex; | 
 |  |  |         .common-select-btn { | 
 |  |  |           margin-left: 5px; | 
 |  |  |           font-size: 18px; | 
 |  |  |         color: #6166d3; | 
 |  |  |         .setFormat { | 
 |  |  |           margin-left: 10px; | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |     .address-view { | 
 |  |  |       margin-top: 10px; | 
 |  |  |       padding-right: 40px; | 
 |  |  |     } | 
 |  |  |     .annex-view { | 
 |  |  |     .unflod-collapse { | 
 |  |  |       display: flex; | 
 |  |  |       height: 30px; | 
 |  |  |       justify-content: center; | 
 |  |  |       align-items: center; | 
 |  |  |       color: #6166d3; | 
 |  |  |       .setFormat { | 
 |  |  |         margin-left: 10px; | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |   .unflod-collapse { | 
 |  |  |     display: flex; | 
 |  |  |     height: 30px; | 
 |  |  |     justify-content: center; | 
 |  |  |     align-items: center; | 
 |  |  |     color: #6166d3; | 
 |  |  |   } | 
 |  |  |   .dialog-footer { | 
 |  |  |     background-color: #f5f5f5; | 
 |  |  |     height: 55px; | 
 |  |  |     line-height: 55px; | 
 |  |  |     .dialog-footer { | 
 |  |  |       background-color: #f5f5f5; | 
 |  |  |       height: 55px; | 
 |  |  |       line-height: 55px; | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  | } | 
 |  |  | </style> |