index.vue 6.5 KB
<template>
  <div class="app-container">
    <!-- 表格数据 -->
    <el-table v-loading="loading" :data="policyList" @row-click="handleUpdate">
      <el-table-column label="序号" width="55" type="index" />
      <el-table-column label="登记时间" prop="createTime" align="center" />
      <el-table-column
        label="车牌号"
        prop="licensePlateNumber"
        align="center"
      />
      <el-table-column
        label="车架号"
        prop="frameNumber"
        align="center"
        :show-overflow-tooltip="true"
      />
      <el-table-column label="车主姓名" prop="name" align="center" />
      <el-table-column label="联系电话" prop="phone" align="center" />
      <el-table-column label="上年承保公司" prop="sysDeptName" align="center" />
      <el-table-column
        label="操作"
        align="center"
        min-width="120"
        fixed="right"
      >
        <template #default="{ row }">
          <el-button
            type="primary"
            v-hasRole="['companyadmin']"
            @click.stop="handleSharing(row.taskId)"
            >分配</el-button
          >
        </template>
      </el-table-column>
    </el-table>

    <pagination
      v-show="total > 0"
      :total="total"
      v-model:page="queryParams.pageNum"
      v-model:limit="queryParams.pageSize"
      @pagination="getList"
    />

    <!-- 转办分配对话框 -->
    <el-dialog
      v-model="transferShow"
      title="请选择人员:"
      width="500"
      append-to-body
    >
      <div class="company_box">
        <el-radio-group v-model="transferForm.username">
          <el-radio
            v-for="item in transferOptions"
            :key="item.userName"
            :label="item.userName"
            >{{ item.userName }}</el-radio
          >
        </el-radio-group>
        <div v-show="transferOptions.length === 0">暂无其他员工</div>
      </div>
      <template #footer>
        <div class="dialog-footer">
          <el-button @click="companyShow = false">取消</el-button>
          <el-button type="primary" @click="submitTransfer">确定</el-button>
        </div>
      </template>
    </el-dialog>

    <!-- 编辑对话框 -->
    <el-dialog v-model="open" :title="title" width="700" append-to-body>
      <el-form :model="form" :rules="rules" ref="policyRef" label-width="100px">
        <el-row>
          <el-col :span="12">
            <el-form-item label="车牌号" prop="licensePlateNumber">
              <el-input
                v-model="form.licensePlateNumber"
                placeholder="请输入车牌号"
                maxlength="30"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="车架号" prop="frameNumber">
              <el-input
                v-model="form.frameNumber"
                placeholder="请输入车架号"
                maxlength="30"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="车主姓名" prop="name">
              <el-input
                v-model="form.name"
                placeholder="请输入车主姓名"
                maxlength="11"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="联系电话" prop="phone">
              <el-input
                v-model="form.phone"
                placeholder="请输入联系电话"
                maxlength="50"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="登记时间" prop="createTime">
              <el-input
                v-model="form.createTime"
                placeholder="请输入登记时间"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="上年承保公司" prop="sysDeptName">
              <el-input
                v-model="form.sysDeptName"
                placeholder="请输入上年承保公司"
                maxlength="50"
              />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </el-dialog>
  </div>
</template>

<script setup>
import { queryPengdingList, getUserList } from "@/api/policy/index";
const loading = ref(false);
const { proxy } = getCurrentInstance();
const total = ref(0);
const title = ref("保单信息");
const open = ref(false);
const transferShow = ref(false);
const form = ref({});
const transferForm = ref({});
const transferOptions = ref([]);
const rules = ref({
  carNum: [{ required: true, message: "车牌号不能为空", trigger: "blur" }],
  frameNum: [{ required: true, message: "车架号不能为空", trigger: "blur" }],
  name: [{ required: true, message: "车主姓名不能为空", trigger: "blur" }],
  createTime: [{ required: true, message: "日期不能为空", trigger: "blur" }],
  phone: [
    {
      pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
      message: "请输入正确的手机号码",
      trigger: "blur",
    },
  ],
});
const companyShow = ref(false);
const queryParams = reactive({
  pageNum: 1,
  pageSize: 10,
});
const policyList = ref([]);

/** 重置操作表单 */
function reset() {
  proxy.resetForm("policyRef");
}

// 获取处理的列表
const getList = async () => {
  loading.value = true;
  const { rows, total: all } = await queryPengdingList(queryParams);
  policyList.value = rows;
  total.value = all;
  loading.value = false;
};

// 转办或分配
const handleSharing = (id) => {
  transferForm.value.taskId = id;
  getUser();
  transferShow.value = true;
};

// 获取人员列表
const getUser = async () => {
  const { data } = await getUserList();
  transferOptions.value = data;
};

/** 提交通过分配转办人员 */
function submitTransfer() {
  const data = {
    username: transferForm.value.username,
  };
  const taskId = transferForm.value.taskId;
  transfer(data, taskId).then((res) => {
    transferShow.value = false;
    getList();
    proxy.$modal.msgSuccess("保单已分配成功");
  });
}
const handleUpdate = (row) => {
  reset();
  form.value = row;
  // isCustom.value = data.isCustomizeBrandAndModel == "0";
  open.value = true;
};
getList();
</script>

<style lang="scss" scoped>
::v-deep(.el-radio-group) {
  align-items: start;
  flex-direction: column;
}
.header_top {
  display: flex;
  align-items: center;
  gap: 30px;
  margin-bottom: 20px;
}
</style>