yangfeng
2023-08-03 624e812b40ac87bf8d7a17b83b4a3bc3bbd901fb
src/views/service/orderManage/AddOrderManageDialog.vue
@@ -1,7 +1,7 @@
<template>
  <div class="order-manage">
    <el-dialog
      :title="editCommonConfig.title + '工单管理'"
      :title="editCommonConfig.title + '客户服务单'"
      :visible.sync="editConfig.visible"
      :width="dialogWidth"
      :before-close="handleClose"
@@ -40,17 +40,30 @@
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="工单编号" prop="number">
                <el-form-item label="服务单编号" prop="number">
                  <el-input v-model="editConfig.infomation.number"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="工单名称" prop="name">
                  <el-input v-model="editConfig.infomation.name"></el-input>
                <el-form-item label="服务合同" prop="name">
                  <div class="custom-name">
                    <el-autocomplete
                      v-model="editConfig.infomation.client_name"
                      :fetch-suggestions="querySearchAsync"
                      value-key="name"
                      @select="handleSelectClient"
                    ></el-autocomplete>
                    <div class="common-select-btn" @click="selClientClick">
                      <i class="el-icon-circle-plus-outline" title="选择"></i>
                    </div>
                    <div class="common-select-btn" @click="clearupClient">
                      <i class="el-icon-edit-outline" title="清除"></i>
                    </div>
                  </div>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="工单类型" prop="orderType">
                <el-form-item label="故障类别" prop="orderType">
                  <div class="common-select">
                    <el-select
                      v-model="editConfig.infomation.orderType"
@@ -66,16 +79,113 @@
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="联系人姓名" prop="contactId">
                <el-form-item label="主题" prop="contactId">
                  <el-input v-model="editConfig.infomation.contactId"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="合同订单" prop="name">
                  <div class="custom-name">
                    <el-input v-model="editConfig.infomation.contactId"></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>
                    <el-autocomplete
                      v-model="editConfig.infomation.client_name"
                      :fetch-suggestions="querySearchAsync"
                      value-key="name"
                      @select="handleSelectClient"
                    ></el-autocomplete>
                    <div class="common-select-btn" @click="selClientClick">
                      <i class="el-icon-circle-plus-outline" title="选择"></i>
                    </div>
                    <div class="common-select-btn" @click="clearupClient">
                      <i class="el-icon-edit-outline" title="清除"></i>
                    </div>
                  </div>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="报修来源" prop="reportSourceId">
                <el-form-item label="产品类别" prop="orderType">
                  <div class="common-select">
                    <el-select
                      v-model="editConfig.infomation.orderType"
                      placeholder="请选择"
                      class="common-select-sel"
                      size="mini"
                    >
                      <el-option v-for="item in orderTypeOptions" :key="item.id" :label="item.name" :value="item.id">
                      </el-option>
                    </el-select>
                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
                  </div>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="产品名称" prop="name">
                  <div class="custom-name">
                    <el-autocomplete
                      v-model="editConfig.infomation.client_name"
                      :fetch-suggestions="querySearchAsync"
                      value-key="name"
                      @select="handleSelectClient"
                    ></el-autocomplete>
                    <div class="common-select-btn" @click="selClientClick">
                      <i class="el-icon-circle-plus-outline" title="选择"></i>
                    </div>
                    <div class="common-select-btn" @click="clearupClient">
                      <i class="el-icon-edit-outline" title="清除"></i>
                    </div>
                  </div>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="服务方式" prop="orderType">
                  <div class="common-select">
                    <el-select
                      v-model="editConfig.infomation.orderType"
                      placeholder="请选择"
                      class="common-select-sel"
                      size="mini"
                    >
                      <el-option v-for="item in orderTypeOptions" :key="item.id" :label="item.name" :value="item.id">
                      </el-option>
                    </el-select>
                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
                  </div>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="服务人员" prop="orderType">
                  <div class="common-select">
                    <el-select
                      v-model="editConfig.infomation.orderType"
                      placeholder="请选择"
                      class="common-select-sel"
                      size="mini"
                    >
                      <el-option v-for="item in orderTypeOptions" :key="item.id" :label="item.name" :value="item.id">
                      </el-option>
                    </el-select>
                  </div>
                </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="querySearchAsync"
                      value-key="name"
                      @select="handleSelectClient"
                    ></el-autocomplete>
                    <div class="common-select-btn" @click="selClientClick">
                      <i class="el-icon-circle-plus-outline" title="选择"></i>
                    </div>
                    <div class="common-select-btn" @click="clearupClient">
                      <i class="el-icon-edit-outline" title="清除"></i>
                    </div>
                  </div>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="严重程度" prop="reportSourceId">
                  <div class="common-select">
                    <el-select
                      v-model="editConfig.infomation.reportSourceId"
@@ -90,27 +200,192 @@
                  </div>
                </el-form-item>
              </el-col>
              <!-- <el-col :span="12">
                <el-form-item label="选择源单" prop="sourceSheet">
                  <el-select v-model="editConfig.infomation.sourceSheet" size="mini">
                    <el-option
                      v-for="item in sourceSheetOptions"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option>
                  </el-select>
              <el-col :span="24">
                <el-form-item label="上门地址" prop="problemDescription">
                  <el-input
                    type="textarea"
                    :autosize="{ minRows: 2, maxRows: 4 }"
                    placeholder="请输入内容"
                    v-model="editConfig.infomation.problemDescription"
                  ></el-input>
                </el-form-item>
              </el-col> -->
              </el-col>
              <el-col :span="12">
                <el-form-item label="优先级别" prop="reportSourceId">
                  <div class="common-select">
                    <el-select
                      v-model="editConfig.infomation.reportSourceId"
                      placeholder="请选择"
                      class="common-select-sel"
                      size="mini"
                    >
                      <el-option v-for="item in reportSourceOptions" :key="item.id" :label="item.name" :value="item.id">
                      </el-option>
                    </el-select>
                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
                  </div>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="预约上门时间" prop="startTime">
                  <el-date-picker v-model="editConfig.infomation.startTime" type="datetime" placeholder="选择日期">
                  </el-date-picker>
                </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="querySearchAsync"
                      value-key="name"
                      @select="handleSelectClient"
                    ></el-autocomplete>
                    <div class="common-select-btn" @click="selClientClick">
                      <i class="el-icon-circle-plus-outline" title="选择"></i>
                    </div>
                    <div class="common-select-btn" @click="clearupClient">
                      <i class="el-icon-edit-outline" title="清除"></i>
                    </div>
                  </div>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 动态信息 -->
          <div class="basic-info-title">动态信息</div>
          <div class="basic-info-view">
            <el-row>
              <el-col :span="12">
                <el-form-item label="希望处理时间" prop="startTime">
                  <el-date-picker v-model="editConfig.infomation.startTime" type="datetime" placeholder="选择日期">
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="实际处理时间" prop="startTime">
                  <el-date-picker v-model="editConfig.infomation.startTime" type="datetime" placeholder="选择日期">
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="交通费" prop="reportSourceId">
                  <el-input v-model="editConfig.infomation.problemDescription"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="收费金额" prop="reportSourceId">
                  <el-input v-model="editConfig.infomation.problemDescription"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="花费时间" prop="reportSourceId">
                  <div class="common-select">
                    <el-select
                      v-model="editConfig.infomation.reportSourceId"
                      placeholder="请选择"
                      class="common-select-sel"
                      size="mini"
                    >
                      <el-option v-for="item in reportSourceOptions" :key="item.id" :label="item.name" :value="item.id">
                      </el-option>
                    </el-select>
                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
                  </div>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 时间/金额 -->
          <div class="basic-info-title">时间/金额</div>
          <div class="basic-info-view">
            <el-row>
              <el-col :span="12">
                <el-form-item label="常见问题" prop="problemDescription">
                  <el-input v-model="editConfig.infomation.problemDescription"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="24">
                <el-form-item label="问题描述" prop="problemDescription">
                  <el-input
                    type="textarea"
                    :autosize="{ minRows: 2, maxRows: 4 }"
                    placeholder="请输入内容"
                    v-model="editConfig.infomation.problemDescription"
                  ></el-input>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 定位地址 -->
          <div class="basic-info-title">定位地址</div>
          <div class="basic-info-view">
            <el-row>
              <el-col :span="24">
                <el-form-item label="定位" prop="position">
                  <el-input v-model="editConfig.infomation.position"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="24">
                <el-form-item label="地图" prop="map">
                  <div style="height: 100px"></div>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 问题描述 -->
          <div class="basic-info-title">问题描述</div>
          <div class="basic-info-view">
            <el-row>
              <el-col :span="12">
                <el-form-item label="常见问题" prop="problemDescription">
                  <el-input v-model="editConfig.infomation.problemDescription"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="24">
                <el-form-item label="问题描述" prop="problemDescription">
                  <el-input
                    type="textarea"
                    :autosize="{ minRows: 2, maxRows: 4 }"
                    placeholder="请输入内容"
                    v-model="editConfig.infomation.problemDescription"
                  ></el-input>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 解决方法 -->
          <div class="basic-info-title">解决方法</div>
          <div class="basic-info-view">
            <el-row>
              <el-col :span="24">
                <el-form-item label="解决方法" prop="problemDescription">
                  <el-input
                    type="textarea"
                    :autosize="{ minRows: 2, maxRows: 4 }"
                    placeholder="请输入内容"
                    v-model="editConfig.infomation.problemDescription"
                  ></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="24">
                <el-form-item label="内部备注" prop="problemDescription">
                  <el-input
                    type="textarea"
                    :autosize="{ minRows: 2, maxRows: 4 }"
                    placeholder="请输入内容"
                    v-model="editConfig.infomation.problemDescription"
                  ></el-input>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 备注 -->
          <div class="basic-info-title">备注</div>
          <div class="basic-info-view">
            <el-row>
              <el-col :span="24">
                <el-form-item label="备注" prop="problemDescription">
                  <el-input
                    type="textarea"
                    :autosize="{ minRows: 2, maxRows: 4 }"
@@ -148,46 +423,40 @@
              </el-col>
            </el-row>
          </div>
          <!-- 选择审批流程 -->
          <!-- <div class="basic-info-title">选择审批流程</div>
          <div class="basic-info-view">
            <el-row>
              <el-col :span="20">
                <el-form-item label="审批流程" prop="approvalWorkflow">
                  <el-select
                    v-model="editConfig.infomation.approvalWorkflow"
                    placeholder="请选择"
                    size="mini"
                    style="width: 100%"
                  >
                    <el-option
                      v-for="item in approvalWorkflowOptions"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="20">
                <el-form-item label="审批步骤" prop="approvalSteps">
                  <el-input v-model="editConfig.infomation.approvalSteps"></el-input>
                </el-form-item>
              </el-col>
              \
              <el-col :span="20">
                <el-form-item label="审批人" prop="approvalPerson">
                  <el-input v-model="editConfig.infomation.approvalPerson"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="20">
                <el-form-item label="审批意见" prop="approvalOpinion">
                  <el-input v-model="editConfig.infomation.approvalOpinion" type="textarea" :rows="2"></el-input>
                </el-form-item>
              </el-col>
            </el-row>
          </div> -->
          <!-- 客户服务单历史记录 -->
          <div v-if="editConfig.title === '编辑'" class="basic-info">
            <div class="basic-info-label" @click="expandClick('record')">
              <i v-if="isRecordExpand" class="el-icon-arrow-down"></i>
              <i v-else class="el-icon-arrow-up"></i>
              <span style="margin-left: 10px">客户服务单历史记录</span>
            </div>
            <div v-show="isRecordExpand" class="basic-info-content">
              <div class="list" v-if="recordTableList.length > 0">
                <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
                <TableCommonView
                  ref="recordTableListRef"
                  :select-box="false"
                  :table-list="recordTableList"
                ></TableCommonView>
              </div>
              <div class="no-data" v-else>没有找到任何记录</div>
            </div>
          </div>
          <!-- 服务合同信息 -->
          <div v-if="editConfig.title === '编辑'" class="basic-info">
            <div class="basic-info-label" @click="expandClick('contract')">
              <i v-if="isConttractExpand" class="el-icon-arrow-down"></i>
              <i v-else class="el-icon-arrow-up"></i>
              <span style="margin-left: 10px">服务合同信息</span>
            </div>
            <div v-show="isConttractExpand" class="basic-info-content">
              <div class="list" v-if="recordTableList.length > 0">
                <PagerView class="page" :pager-options="pagerOptions1" v-on="pagerEvents" />
                <TableCommonView ref="tableListRef" :select-box="false" :table-list="tableList"></TableCommonView>
              </div>
              <div class="no-data" v-else>没有找到任何记录</div>
            </div>
          </div>
        </div>
      </el-form>
      <div slot="footer" class="dialog-footer">
@@ -209,8 +478,10 @@
import { getAllData } from "@/api/client/client"
import { getAddOrderManage, getUpdateOrderManage } from "@/api/serviceManage/orderManage"
import SelectClientDialog from "@/views/other/commonDialog/SelectClientDialog"
import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
export default {
  name: "AddOrderManageDialog",
  mixins: [pageMixin],
  props: {
    editCommonConfig: {
      type: Object,
@@ -253,14 +524,43 @@
        editVisible: false,
        title: "",
        infomation: {}
      },
      isRecordExpand: true,
      recordTableList: {},
      pagerOptions: {
        currPage: 1,
        pageSize: 5,
        totalCount: 0
      },
      isConttractExpand: true,
      tableList: {},
      pagerOptions1: {
        currPage: 1,
        pageSize: 5,
        totalCount: 0
      }
    }
  },
  created() {
    this.$store.dispatch("geClient")
    this.getCommonData()
    this.setTable()
  },
  methods: {
    setTable() {
      this.recordTableList = {
        tableInfomation: [],
        tableColumn: [
          { label: "服务单编号", prop: "number", min: 100 },
          { label: "主题", prop: "name" },
          { label: "服务人员", prop: "clientId", min: 130 },
          { label: "服务方式", prop: "contactName" },
          { label: "产品类别", prop: "name" },
          { label: "产品名称", prop: "orderType" },
          { label: "修改时间", prop: "reportSourceId" }
        ]
      }
    },
    getCommonData() {
      getAllData()
        .then((res) => {
@@ -367,7 +667,16 @@
    // 添加附件
    addAnnexClick() {},
    // 设置允许上传文件格式
    setFormatClick() {}
    setFormatClick() {},
    // 展开收起点击事件
    expandClick(value) {
      console.log(value)
      if (value === "record") {
        this.isRecordExpand = !this.isRecordExpand
      } else if (value === "contract") {
        this.isConttractExpand = !this.isConttractExpand
      }
    }
  }
}
</script>
@@ -408,6 +717,29 @@
        margin-left: 10px;
      }
    }
    .basic-info {
      .basic-info-label {
        padding-left: 10px;
        height: 42px;
        line-height: 42px;
        background: #f4f8fe;
        color: #333;
        font-size: 14px;
      }
      .basic-info-content {
        .list {
          .page {
            text-align: right;
            margin-bottom: 5px;
          }
        }
        .no-data {
          height: 40px;
          line-height: 40px;
          margin-left: 10px;
        }
      }
    }
  }
  .dialog-footer {
    background-color: #f5f5f5;