Ver código fonte

销售后台制单

wjj 3 semanas atrás
pai
commit
b3b7296cfc

+ 22 - 0
src/api/company/companyUser.js

@@ -315,3 +315,25 @@ export function updateBatchUserRoles(data) {
     data: data
   })
 }
+
+// 查询用户制单权限
+export function getCreateOpen() {
+  return request({
+    url: '/company/user/getCreateOpen',
+    method: 'get',
+  })
+}
+
+
+// 用户状态修改
+export function changeCreateStatus(userId, createOpen) {
+  const data = {
+    userId,
+    createOpen
+  }
+  return request({
+    url: '/company/user/changeCreateStatus',
+    method: 'put',
+    data: data
+  })
+}

+ 29 - 2
src/views/company/companyUser/index.vue

@@ -174,6 +174,11 @@
               <el-switch v-model="scope.row.status" active-value="0" inactive-value="1" @change="handleStatusChange(scope.row)"></el-switch>
             </template>
           </el-table-column>
+          <el-table-column label="允许制单" align="center">
+            <template slot-scope="scope">
+              <el-switch v-model="scope.row.createOpen" :active-value="1" :inactive-value="0" @change="handleCreateStatusChange(scope.row)"></el-switch>
+            </template>
+          </el-table-column>
           <el-table-column label="企微状态" align="center">
             <template slot-scope="scope">
               <dict-tag :options="qwStatusOptions" :value="scope.row.qwStatus"/>
@@ -664,7 +669,7 @@ import {
   generateSubDomain,
   setIsRegisterMember,
   updateCompanyUserAreaList,
-  isAllowedAllRegister,isAllowedEveryoneView, unBindDoctorId, bindDoctorId,updateBatchUserRoles
+  isAllowedAllRegister,isAllowedEveryoneView, unBindDoctorId, bindDoctorId,updateBatchUserRoles,changeCreateStatus
 } from "@/api/company/companyUser";
 import { getToken } from "@/utils/auth";
 import { treeselect } from "@/api/company/companyDept";
@@ -733,7 +738,7 @@ export default {
       dateRange: [],
       // 状态数据字典
       statusOptions: [],
-      // 性别状态字典
+      // 性别状态字典fs_his_sop
       sexOptions: [],
       // 岗位选项
       postOptions: [],
@@ -1074,6 +1079,28 @@ export default {
           row.status = row.status === "0" ? "1" : "0";
         });
     },
+    // 用户状态修改
+    handleCreateStatusChange(row) {
+      let text = row.createOpen === "1" ? "启用" : "停用";
+      this.$confirm(
+        '确认要"' + text + '""' + row.userName + '"制单状态吗?',
+        "警告",
+        {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        }
+      )
+        .then(function() {
+          return changeCreateStatus(row.userId, row.createOpen);
+        })
+        .then(() => {
+          this.msgSuccess(text + "成功");
+        })
+        .catch(function() {
+          row.createOpen = row.createOpen === "0" ? "1" : "0";
+        });
+    },
     // 取消按钮
     cancel() {
       this.open = false;

+ 362 - 1
src/views/qw/externalContact/index.vue

@@ -528,6 +528,14 @@
              >
              <span>信息采集</span>
           </el-button>
+          <el-button
+             size="mini"
+             type="text"
+             @click="handleCreateOrder(scope.row)"
+             v-if="scope.row.fsUserId && createOpen == 1"
+             >
+             <span>制单</span>
+          </el-button>
           <el-button
             size="mini"
             type="text"
@@ -890,6 +898,148 @@
       <el-button type="primary" @click="submitStatusForm">提 交</el-button>
     </div>
   </el-dialog>
+
+  <!-- 销售制单对话框 -->
+    <el-dialog title="制单" v-if="create.open" :visible.sync="create.open" width="1000px" append-to-body :close-on-click-modal ="false">
+      <el-form ref="createOrderForm" :model="createOrderForm" :rules="crateRules" label-width="120px">
+        <el-form-item label="会员信息" prop="userId">
+            <el-table border style="margin-top:5px;"  v-loading="userloading" :data="users">
+              <el-table-column label="ID" align="center" prop="userId" />
+              <el-table-column label="会员头像" align="center" width="80">
+                <template slot-scope="scope">
+                  <el-popover placement="right" title="" trigger="hover">
+                    <img slot="reference" :src="scope.row.avatar" width="50" >
+                    <img :src="scope.row.avatar" style="max-width: 120px;">
+                  </el-popover>
+                </template>
+              </el-table-column>
+              <el-table-column label="昵称" align="center" prop="nickname" />
+              <el-table-column label="手机号" align="center" prop="phone" />
+              <el-table-column label="状态" align="center" prop="status" >
+                <template slot-scope="scope">
+                  <el-tag prop="status" v-for="(item, index) in userStatusOptions"  v-if="scope.row.status==item.dictValue">{{item.dictLabel}}</el-tag>
+                </template>
+              </el-table-column>
+            </el-table>
+      </el-form-item>
+        <el-form-item label="收货信息" prop="addressId">
+          <el-row>
+            <el-col>
+              <el-button plain  type="primary" icon="el-icon-plus"  @click="handleAddUserAddress()">添加收货地址</el-button>
+            </el-col>
+          </el-row>
+          <el-radio-group v-model="createOrderForm.addressId" style="width:100%">
+          <el-table border  style="margin-top:5px;"  v-loading="addressloading" :data="address">
+            <el-table-column label="ID" align="center"  >
+              <template slot-scope="scope">
+                <el-radio :label="scope.row.addressId"></el-radio>
+              </template>
+            </el-table-column>
+            <el-table-column label="收货人姓名" align="center" prop="realName" />
+            <el-table-column label="收货人所在省" align="center" prop="province" />
+            <el-table-column label="收货人所在市" align="center" prop="city" />
+            <el-table-column label="收货人所在区" align="center" prop="district" />
+            <el-table-column label="收货人详细地址" align="center" prop="detail" />
+          </el-table>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="就诊人信息" prop="patientId">
+          <el-row>
+            <el-col>
+              <el-button plain  type="primary" icon="el-icon-plus"  @click="handleAddUserPatient()">添加就诊人</el-button>
+            </el-col>
+          </el-row>
+          <el-radio-group v-model="createOrderForm.patientId" style="width:100%">
+          <el-table border  style="margin-top:5px;"  v-loading="patientLoading" :data="patientList">
+            <el-table-column label="ID" align="center"  >
+              <template slot-scope="scope">
+                <el-radio :label="scope.row.patientId"></el-radio>
+              </template>
+            </el-table-column>
+            <el-table-column label="患者姓名" align="center" prop="patientName" />
+            <el-table-column label="所属会员" align="center" width="150px">
+             <template slot-scope="scope">
+               <div v-if="scope.row.nickName!=null"> {{scope.row.nickName}}-{{scope.row.phone}}</div>
+             </template>
+            </el-table-column>
+            <el-table-column label="身份证号" align="center" prop="idCard" width="170px"/>
+            <el-table-column label="出生年月" align="center" prop="birthday" width="180">
+              <template slot-scope="scope">
+                <span>{{ parseTime(scope.row.birthday, '{y}-{m}-{d}') }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="性别" align="center" prop="sex" >
+              <template slot-scope="scope">
+                   <dict-tag :options="sexOptions" :value="scope.row.sex"/>
+                 </template>
+            </el-table-column>
+            <el-table-column label="体重G" align="center" prop="weight" />
+            <el-table-column label="手机号" align="center" prop="mobile" />
+            <el-table-column label="状态" align="center" prop="status" >
+               <template slot-scope="scope">
+                    <dict-tag :options="userStatusOptions" :value="scope.row.status"/>
+               </template>
+            </el-table-column>
+            <el-table-column label="与本人关系" align="center" prop="relation" />
+            <el-table-column label="肝功能是否异常" align="center" prop="liverUnusual" />
+            <el-table-column label="肾功能是否异常" align="center" prop="renalUnusual" />
+            <el-table-column label="过敏史" align="center" prop="historyAllergic" />
+            <el-table-column label="家族病史" align="center" prop="familyMedHistory" />
+            <el-table-column label="个人病史" align="center" prop="selfMedHistory" />
+          </el-table>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="套餐包" prop="packageId" >
+          <el-select v-model="createOrderForm.packageId" remote filterable reserve-keyword placeholder="套餐包" :remote-method="packageMethod" style="width: 300px;" @change="changePackage">
+            <el-option
+              v-for="dict in packageList"
+              :key="dict.packageId"
+              :label="dict.packageName"
+              :value="dict.packageId">
+              <span style="float: left ;margin-right: 20px;">{{ dict.packageName }}</span>
+              <span style="float: left">{{ dict.secondName }}</span>
+            </el-option>
+          </el-select>
+          <el-table border  style="margin-top:5px;"  :data="package">
+
+            <el-table-column label="套餐包名称" align="center" prop="packageName" />
+            <el-table-column label="别名" align="center" prop="secondName" />
+
+
+            <el-table-column label="类型" align="center" prop="packageType">
+              <template slot-scope="scope">
+                <dict-tag :options="packageTypeOptions" :value="scope.row.packageType"/>
+              </template>
+            </el-table-column>
+            <el-table-column label="子类型" align="center" prop="packageSubType">
+              <template slot-scope="scope">
+                <dict-tag :options="packageSubTypeOptions" :value="scope.row.packageSubType"/>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-form-item>
+        <el-form-item label="支付方式" prop="payType">
+            <el-select disabled    v-model="createOrderForm.payType" placeholder="请选择支付方式" clearable size="small" >
+            <el-option label="货到付款" :value="2" />
+            </el-select>
+        </el-form-item>
+        <el-form-item label="订单备注" prop="mark">
+          <el-input  type="textarea" rows="2" v-model="createOrderForm.mark" placeholder="" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="createSubmitForm">确 定</el-button>
+        <el-button @click="createCancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+
+  <el-dialog :title="userAddress.title" v-if="userAddress.open"  :visible.sync="userAddress.open" width="800px" append-to-body>
+       <add-user-address ref="addUserAddress"   @addUserAddress="addUserAddress" />
+   </el-dialog>
+   <el-dialog :title="userPatient.title" v-if="userPatient.open"  :visible.sync="userPatient.open" width="800px" append-to-body>
+       <add-patient ref="addPatient"   @addUserPatient="addUserPatient" />
+   </el-dialog>
   </div>
 </template>
 
@@ -911,6 +1061,14 @@ import {
   setCustomerCourseSopList,
   unBindUserId, updateExternalContactCall,updateExternalContactStatus,getWatchLogList
 } from '@/api/qw/externalContact'
+
+import { listPatient } from "@/api/store/patient";
+import { packageList } from "@/api/store/package";
+import { listUserAddress } from "@/api/store/userAddress";
+import { addPackageOrder } from "@/api/store/packageOrder";
+import { userList } from "@/api/store/user";
+import { getCreateOpen} from "@/api/company/companyUser";
+
 import {getMyQwUserList, getMyQwCompanyList, updateUser,getQwUserListLikeName} from "@/api/qw/user";
 import {listTag, getTag, searchTags,} from "@/api/qw/tag";
 import { allListTagGroup} from "@/api/qw/tagGroup";
@@ -925,11 +1083,76 @@ import PaginationMore from "../../../components/PaginationMore/index.vue";
 import userDetails from '@/views/store/components/userDetails.vue';
 import {courseList, videoList} from "@/api/course/courseRedPacketLog";
 import Collection from './collection.vue';
+
+import addUserAddress from "@/views/store/components/addUserAddress";
+import addPatient from "@/views/store/components/addPatient";
+
 export default {
   name: "ExternalContact",
-  components:{PaginationMore, mycustomer,customerDetails,SopDialog,selectUser,info,userDetails,collection},
+  components:{PaginationMore, mycustomer,customerDetails,SopDialog,selectUser,info,userDetails,collection,addUserAddress ,addPatient},
   data() {
     return {
+      
+      //销售制单-----
+      //是否可以制单
+      createOpen:0,
+      //规则
+      crateRules: {
+        userId: [
+          { required: true, message: "会员信息不能为空" }
+        ],
+        addressId: [
+          { required: true, message: "收货信息不能为空" }
+        ],
+        packageId: [
+          { required: true, message: "套餐包不能为空" }
+        ],
+        payType: [
+          { required: true, message: "支付方式不能为空" }
+        ],
+        patientId: [
+          { required: true, message: "就诊人不能为空" }
+        ],
+      },
+      //表单数据
+      createOrderForm: {
+        addressId:null,
+        userId:null,
+        packageId:null,
+        patientId:null,
+        payType: 2,//物流代收
+      },
+      //表格loading
+      userloading: false,
+      addressloading:false,
+      patientLoading:false,
+      //表格数据
+      address:[],
+      users:[],
+      patientList:[],
+      package:[],
+      packageList:[],
+      //字典数据
+      packageSubTypeOptions:[],
+      userStatusOptions:[],
+      sexOptions:[],
+      packageTypeOptions:[],
+      payTypeOptions:[],
+      //弹窗控制
+      userAddress:{
+        open:false,
+        title:"创建收货地址"
+      },
+      userPatient:{
+        open:false,
+        title:"创建病人"
+      },
+      create:{
+        open:false,
+      },
+      //-----销售制单
+
+
       projectOptions: [],
       courseLists: [],
       videoList: [],
@@ -1169,6 +1392,26 @@ export default {
       this.ratingUpFall = response.data;
     });
 
+
+    this.getDicts("sys_package_sub_type").then(response => {
+     this.packageSubTypeOptions = response.data;
+    });
+    this.getDicts("sys_patient_sex").then(response => {
+     this.sexOptions = response.data;
+    });
+    this.getDicts("sys_package_type").then(response => {
+     this.packageTypeOptions = response.data;
+    });
+    this.getDicts("sys_package_pay_type").then(response => {
+      this.payTypeOptions = response.data;
+    });
+    this.getDicts("sys_company_status").then(response => {
+      this.userStatusOptions = response.data;
+    });
+    getCreateOpen().then(res => {
+      this.createOpen = res.data;
+    })
+
     getMyQwCompanyList().then(response => {
             this.myQwCompanyList = response.data;
             if(this.myQwCompanyList!=null){
@@ -1202,6 +1445,124 @@ export default {
 
   },
   methods: {
+    packageMethod(query){
+      if (query !== '') {
+        packageList(query).then(response => {
+        this.packageList = response.data;
+      });
+      }
+    },
+    changePackage(){
+     this.package = [this.packageList.find(item => item.packageId ==this.createOrderForm.packageId)];
+    },
+    searchUser(userId){
+      if(userId==null||userId==""){
+        return;
+      }
+      var data={userId:userId}
+      this.userloading = true;
+      this.users=[];
+      this.address=[];
+      userList(data).then(response => {
+        this.users = response.rows;
+        this.userloading = false;
+        if(this.users!=null&&this.users.length==1){
+          this.createOrderForm.userId=this.users[0].userId;
+          this.getAddressList(this.createOrderForm.userId)
+          this.getPatentList(this.createOrderForm.userId)
+        }
+      });
+    },
+    handleCreateOrder(row){
+      this.searchUser(row.fsUserId);
+      this.create.open = true;
+    },
+    /** 提交按钮 */
+    createSubmitForm() {
+      this.$refs["createOrderForm"].validate(valid => {
+        if (valid) {
+          addPackageOrder(this.createOrderForm).then(response => {
+            this.msgSuccess("制单成功");
+            this.crate.open = false;
+            this.createOrderForm={
+              addressId:null,
+              userId:null,
+              packageId:null,
+              patientId:null,
+              payType:2,
+            }
+          });
+        }
+      });
+    },
+    // 取消按钮
+    createCancel() {
+      this.create.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.createOrderForm={
+        addressId:null,
+        userId:null,
+        packageId:null,
+        patientId:null,
+        payType:2,
+      }
+      this.resetForm("createOrderForm");
+    },
+    handleAddUserAddress(){
+      if(this.createOrderForm.userId==null){
+        this.msgError("请选择会员");
+        return;
+      }
+      this.userAddress.open=true;
+      setTimeout(() => {
+        this.$refs.addUserAddress.init(this.createOrderForm.userId);
+      }, 500);
+    },
+
+    handleAddUserPatient(){
+      if(this.createOrderForm.userId==null){
+        this.msgError("请选择会员");
+        return;
+      }
+      this.userPatient.open=true;
+      setTimeout(() => {
+        this.$refs.addPatient.init(this.createOrderForm.userId);
+      }, 500);
+    },
+    addUserAddress(){
+      this.userAddress.open=false;
+      //获取地址
+      this.getAddressList(this.createOrderForm.userId);
+    },
+
+    addUserPatient(){
+      this.userPatient.open=false;
+      //获取地址
+      this.getPatentList(this.createOrderForm.userId);
+    },
+    getAddressList(userId){
+      var data={userId:userId}
+      this.addressloading = true;
+      this.address=[];
+      listUserAddress(data).then(response => {
+        this.address = response.rows;
+        this.addressloading = false;
+      });
+    },
+    getPatentList(userId){
+      var data={userId:userId}
+      this.patientLoading = true;
+      this.patientList=[];
+      listPatient(data).then(response => {
+        this.patientList = response.rows;
+        this.patientLoading = false;
+      });
+    },
+
+
     /** 重粉查看操作 */
     showLog(row) {
       this.log.queryParams.fsUserId = row.fsUserId;

+ 355 - 1
src/views/qw/externalContact/myExternalContact.vue

@@ -500,6 +500,14 @@
              >
              <span>信息采集</span>
           </el-button>
+          <el-button
+             size="mini"
+             type="text"
+             @click="handleCreateOrder(scope.row)"
+             v-if="scope.row.fsUserId && createOpen == 1"
+             >
+             <span>制单</span>
+          </el-button>
 
 <!--          <el-button v-if="scope.row.customerId"-->
 <!--            size="mini"-->
@@ -968,6 +976,148 @@
       <el-button type="primary" @click="submitStatusForm">提 交</el-button>
     </div>
   </el-dialog>
+
+  <!-- 销售制单对话框 -->
+    <el-dialog title="制单" v-if="create.open" :visible.sync="create.open" width="1000px" append-to-body :close-on-click-modal ="false">
+      <el-form ref="createOrderForm" :model="createOrderForm" :rules="crateRules" label-width="120px">
+        <el-form-item label="会员信息" prop="userId">
+            <el-table border style="margin-top:5px;"  v-loading="userloading" :data="users">
+              <el-table-column label="ID" align="center" prop="userId" />
+              <el-table-column label="会员头像" align="center" width="80">
+                <template slot-scope="scope">
+                  <el-popover placement="right" title="" trigger="hover">
+                    <img slot="reference" :src="scope.row.avatar" width="50" >
+                    <img :src="scope.row.avatar" style="max-width: 120px;">
+                  </el-popover>
+                </template>
+              </el-table-column>
+              <el-table-column label="昵称" align="center" prop="nickname" />
+              <el-table-column label="手机号" align="center" prop="phone" />
+              <el-table-column label="状态" align="center" prop="status" >
+                <template slot-scope="scope">
+                  <el-tag prop="status" v-for="(item, index) in userStatusOptions"  v-if="scope.row.status==item.dictValue">{{item.dictLabel}}</el-tag>
+                </template>
+              </el-table-column>
+            </el-table>
+      </el-form-item>
+        <el-form-item label="收货信息" prop="addressId">
+          <el-row>
+            <el-col>
+              <el-button plain  type="primary" icon="el-icon-plus"  @click="handleAddUserAddress()">添加收货地址</el-button>
+            </el-col>
+          </el-row>
+          <el-radio-group v-model="createOrderForm.addressId" style="width:100%">
+          <el-table border  style="margin-top:5px;"  v-loading="addressloading" :data="address">
+            <el-table-column label="ID" align="center"  >
+              <template slot-scope="scope">
+                <el-radio :label="scope.row.addressId"></el-radio>
+              </template>
+            </el-table-column>
+            <el-table-column label="收货人姓名" align="center" prop="realName" />
+            <el-table-column label="收货人所在省" align="center" prop="province" />
+            <el-table-column label="收货人所在市" align="center" prop="city" />
+            <el-table-column label="收货人所在区" align="center" prop="district" />
+            <el-table-column label="收货人详细地址" align="center" prop="detail" />
+          </el-table>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="就诊人信息" prop="patientId">
+          <el-row>
+            <el-col>
+              <el-button plain  type="primary" icon="el-icon-plus"  @click="handleAddUserPatient()">添加就诊人</el-button>
+            </el-col>
+          </el-row>
+          <el-radio-group v-model="createOrderForm.patientId" style="width:100%">
+          <el-table border  style="margin-top:5px;"  v-loading="patientLoading" :data="patientList">
+            <el-table-column label="ID" align="center"  >
+              <template slot-scope="scope">
+                <el-radio :label="scope.row.patientId"></el-radio>
+              </template>
+            </el-table-column>
+            <el-table-column label="患者姓名" align="center" prop="patientName" />
+            <el-table-column label="所属会员" align="center" width="150px">
+             <template slot-scope="scope">
+               <div v-if="scope.row.nickName!=null"> {{scope.row.nickName}}-{{scope.row.phone}}</div>
+             </template>
+            </el-table-column>
+            <el-table-column label="身份证号" align="center" prop="idCard" width="170px"/>
+            <el-table-column label="出生年月" align="center" prop="birthday" width="180">
+              <template slot-scope="scope">
+                <span>{{ parseTime(scope.row.birthday, '{y}-{m}-{d}') }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="性别" align="center" prop="sex" >
+              <template slot-scope="scope">
+                   <dict-tag :options="sexOptions" :value="scope.row.sex"/>
+                 </template>
+            </el-table-column>
+            <el-table-column label="体重G" align="center" prop="weight" />
+            <el-table-column label="手机号" align="center" prop="mobile" />
+            <el-table-column label="状态" align="center" prop="status" >
+               <template slot-scope="scope">
+                    <dict-tag :options="userStatusOptions" :value="scope.row.status"/>
+               </template>
+            </el-table-column>
+            <el-table-column label="与本人关系" align="center" prop="relation" />
+            <el-table-column label="肝功能是否异常" align="center" prop="liverUnusual" />
+            <el-table-column label="肾功能是否异常" align="center" prop="renalUnusual" />
+            <el-table-column label="过敏史" align="center" prop="historyAllergic" />
+            <el-table-column label="家族病史" align="center" prop="familyMedHistory" />
+            <el-table-column label="个人病史" align="center" prop="selfMedHistory" />
+          </el-table>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="套餐包" prop="packageId" >
+          <el-select v-model="createOrderForm.packageId" remote filterable reserve-keyword placeholder="套餐包" :remote-method="packageMethod" style="width: 300px;" @change="changePackage">
+            <el-option
+              v-for="dict in packageList"
+              :key="dict.packageId"
+              :label="dict.packageName"
+              :value="dict.packageId">
+              <span style="float: left ;margin-right: 20px;">{{ dict.packageName }}</span>
+              <span style="float: left">{{ dict.secondName }}</span>
+            </el-option>
+          </el-select>
+          <el-table border  style="margin-top:5px;"  :data="package">
+
+            <el-table-column label="套餐包名称" align="center" prop="packageName" />
+            <el-table-column label="别名" align="center" prop="secondName" />
+
+
+            <el-table-column label="类型" align="center" prop="packageType">
+              <template slot-scope="scope">
+                <dict-tag :options="packageTypeOptions" :value="scope.row.packageType"/>
+              </template>
+            </el-table-column>
+            <el-table-column label="子类型" align="center" prop="packageSubType">
+              <template slot-scope="scope">
+                <dict-tag :options="packageSubTypeOptions" :value="scope.row.packageSubType"/>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-form-item>
+        <el-form-item label="支付方式" prop="payType">
+            <el-select disabled    v-model="createOrderForm.payType" placeholder="请选择支付方式" clearable size="small" >
+            <el-option label="货到付款" :value="2" />
+            </el-select>
+        </el-form-item>
+        <el-form-item label="订单备注" prop="mark">
+          <el-input  type="textarea" rows="2" v-model="createOrderForm.mark" placeholder="" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="createSubmitForm">确 定</el-button>
+        <el-button @click="createCancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+
+  <el-dialog :title="userAddress.title" v-if="userAddress.open"  :visible.sync="userAddress.open" width="800px" append-to-body>
+       <add-user-address ref="addUserAddress"   @addUserAddress="addUserAddress" />
+   </el-dialog>
+   <el-dialog :title="userPatient.title" v-if="userPatient.open"  :visible.sync="userPatient.open" width="800px" append-to-body>
+       <add-patient ref="addPatient"   @addUserPatient="addUserPatient" />
+   </el-dialog>
   </div>
 </template>
 
@@ -991,6 +1141,14 @@ import {
   setCustomerCourseSopList,
   syncMyExternalContact, unBindUserId, updateExternalContactCall,exportMyExternalContact,updateExternalContactStatus,getWatchLogList
 } from '@/api/qw/externalContact'
+
+import { listPatient } from "@/api/store/patient";
+import { packageList } from "@/api/store/package";
+import { listUserAddress } from "@/api/store/userAddress";
+import { addPackageOrder } from "@/api/store/packageOrder";
+import { userList } from "@/api/store/user";
+import { getCreateOpen} from "@/api/company/companyUser";
+
 import info from "@/views/qw/externalContact/info.vue";
 import {getMyQwUserList, getMyQwCompanyList, handleInputAuthAppKey, updateUser} from "@/api/qw/user";
 import {addFsFirstDiagnosis, updateFsFirstDiagnosis, getFsFirstDiagnosis} from "@/api/company/firstDiagnosis";
@@ -1007,11 +1165,72 @@ import PaginationMore from "../../../components/PaginationMore/index.vue";
 import Collection from './collection.vue';
 import {courseList, videoList} from "@/api/course/courseRedPacketLog";
 import userDetails from '@/views/store/components/userDetails.vue';
+
+import addUserAddress from "@/views/store/components/addUserAddress";
+import addPatient from "@/views/store/components/addPatient";
 export default {
   name: "ExternalContact",
-  components:{PaginationMore, mycustomer,customerDetails,SopDialog,selectUser,info,Collection,userDetails},
+  components:{PaginationMore, mycustomer,customerDetails,SopDialog,selectUser,info,Collection,userDetails,addUserAddress ,addPatient},
   data() {
     return {
+      //销售制单-----
+      //是否可以制单
+      createOpen:0,
+      //规则
+      crateRules: {
+        userId: [
+          { required: true, message: "会员信息不能为空" }
+        ],
+        addressId: [
+          { required: true, message: "收货信息不能为空" }
+        ],
+        packageId: [
+          { required: true, message: "套餐包不能为空" }
+        ],
+        payType: [
+          { required: true, message: "支付方式不能为空" }
+        ],
+        patientId: [
+          { required: true, message: "就诊人不能为空" }
+        ],
+      },
+      //表单数据
+      createOrderForm: {
+        addressId:null,
+        userId:null,
+        packageId:null,
+        patientId:null,
+        payType: 2,//物流代收
+      },
+      //表格loading
+      userloading: false,
+      addressloading:false,
+      patientLoading:false,
+      //表格数据
+      address:[],
+      users:[],
+      patientList:[],
+      package:[],
+      packageList:[],
+      //字典数据
+      packageSubTypeOptions:[],
+      userStatusOptions:[],
+      sexOptions:[],
+      packageTypeOptions:[],
+      payTypeOptions:[],
+      //弹窗控制
+      userAddress:{
+        open:false,
+        title:"创建收货地址"
+      },
+      userPatient:{
+        open:false,
+        title:"创建病人"
+      },
+      create:{
+        open:false,
+      },
+      //-----销售制单
       member:{
         title:"客户详情",
         open:false,
@@ -1271,8 +1490,143 @@ export default {
     });
     this.getDocList();
 
+    this.getDicts("sys_package_sub_type").then(response => {
+     this.packageSubTypeOptions = response.data;
+    });
+    this.getDicts("sys_patient_sex").then(response => {
+     this.sexOptions = response.data;
+    });
+    this.getDicts("sys_package_type").then(response => {
+     this.packageTypeOptions = response.data;
+    });
+    this.getDicts("sys_package_pay_type").then(response => {
+      this.payTypeOptions = response.data;
+    });
+    this.getDicts("sys_company_status").then(response => {
+      this.userStatusOptions = response.data;
+    });
+    getCreateOpen().then(res => {
+      this.createOpen = res.data;
+    })
+
   },
   methods: {
+    packageMethod(query){
+      if (query !== '') {
+        packageList(query).then(response => {
+        this.packageList = response.data;
+      });
+      }
+    },
+    changePackage(){
+     this.package = [this.packageList.find(item => item.packageId ==this.createOrderForm.packageId)];
+    },
+    searchUser(userId){
+      if(userId==null||userId==""){
+        return;
+      }
+      var data={userId:userId}
+      this.userloading = true;
+      this.users=[];
+      this.address=[];
+      userList(data).then(response => {
+        this.users = response.rows;
+        this.userloading = false;
+        if(this.users!=null&&this.users.length==1){
+          this.createOrderForm.userId=this.users[0].userId;
+          this.getAddressList(this.createOrderForm.userId)
+          this.getPatentList(this.createOrderForm.userId)
+        }
+      });
+    },
+    handleCreateOrder(row){
+      this.searchUser(row.fsUserId);
+      this.create.open = true;
+    },
+    /** 提交按钮 */
+    createSubmitForm() {
+      this.$refs["createOrderForm"].validate(valid => {
+        if (valid) {
+          addPackageOrder(this.createOrderForm).then(response => {
+            this.msgSuccess("制单成功");
+            this.create.open = false;
+            this.createOrderForm={
+              addressId:null,
+              userId:null,
+              packageId:null,
+              patientId:null,
+              payType:2,
+            }
+          });
+        }
+      });
+    },
+    // 取消按钮
+    createCancel() {
+      this.create.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.createOrderForm={
+        addressId:null,
+        userId:null,
+        packageId:null,
+        patientId:null,
+        payType:2,
+      }
+      this.resetForm("createOrderForm");
+    },
+    handleAddUserAddress(){
+      if(this.createOrderForm.userId==null){
+        this.msgError("请选择会员");
+        return;
+      }
+      this.userAddress.open=true;
+      setTimeout(() => {
+        this.$refs.addUserAddress.init(this.createOrderForm.userId);
+      }, 500);
+    },
+
+    handleAddUserPatient(){
+      if(this.createOrderForm.userId==null){
+        this.msgError("请选择会员");
+        return;
+      }
+      this.userPatient.open=true;
+      setTimeout(() => {
+        this.$refs.addPatient.init(this.createOrderForm.userId);
+      }, 500);
+    },
+    addUserAddress(){
+      this.userAddress.open=false;
+      //获取地址
+      this.getAddressList(this.createOrderForm.userId);
+    },
+
+    addUserPatient(){
+      this.userPatient.open=false;
+      //获取地址
+      this.getPatentList(this.createOrderForm.userId);
+    },
+    getAddressList(userId){
+      var data={userId:userId}
+      this.addressloading = true;
+      this.address=[];
+      listUserAddress(data).then(response => {
+        this.address = response.rows;
+        this.addressloading = false;
+      });
+    },
+    getPatentList(userId){
+      var data={userId:userId}
+      this.patientLoading = true;
+      this.patientList=[];
+      listPatient(data).then(response => {
+        this.patientList = response.rows;
+        this.patientLoading = false;
+      });
+    },
     /** 重粉查看操作 */
     showLog(row) {
       this.log.queryParams.fsUserId = row.fsUserId;

+ 1 - 0
src/views/store/packageOrder/list.vue

@@ -368,6 +368,7 @@
       :title="show.title" :visible.sync="show.open">
       <packageOrderDetails  ref="Details" />
      </el-drawer>
+     
     <el-dialog :title="user.title" v-if="user.open"  :visible.sync="user.open" width="500px" append-to-body>
        <add-user @addUser="addUser" />
     </el-dialog>