index.vue 8.5 KB
<template>
  <div class="app-container">
    <!-- 表格数据 -->
    <el-table
      v-loading="loading"
      :data="policyList"
      @selection-change="handleSelectionChange"
      @row-click="handleUpdate"
    >
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column
        label="序号"
        prop="policyId"
        width="120"
        align="center"
      />
      <el-table-column
        label="登记时间"
        prop="createTime"
        width="150"
        align="center"
      />
      <el-table-column
        label="车牌号"
        prop="carNum"
        width="150"
        align="center"
      />
      <el-table-column label="车架号" prop="frameNum" align="center" />
      <el-table-column
        label="车主姓名"
        prop="name"
        width="100"
        align="center"
      />
      <el-table-column
        label="联系电话"
        prop="phone"
        width="180"
        align="center"
      />
      <el-table-column
        label="上年承保公司"
        prop="company"
        width="150"
        align="center"
      />
      <el-table-column label="操作" align="center" width="360" fixed="right">
        <template #default>
          <el-button type="primary" v-hasPermi="['policy:pending:continue']"
            >承接</el-button
          >
          <el-button type="primary" v-hasPermi="['policy:pending:sharing']"
            >分配</el-button
          >
          <el-button type="primary" v-hasPermi="['policy:pending:transfer']"
            >转办</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="deprecatedShow"
      title="温馨提示:该保单作废后车牌号、车架号在本自然年度无法重新提交"
      width="500"
      append-to-body
    >
      <el-input
        :rows="6"
        type="textarea"
        placeholder="请输入作废原因"
        v-model="deprecatedReason"
        resize="none"
      />
      <template #footer>
        <div class="dialog-footer">
          <el-button @click="deprecatedShow = false">取消</el-button>
          <el-button type="primary" @click="deprecatedShow = false"
            >确定</el-button
          >
        </div>
      </template>
    </el-dialog>

    <!-- 分配承保公司对话框 -->
    <el-dialog
      v-model="companyShow"
      title="分配承保公司:"
      width="500"
      append-to-body
    >
      <div class="company_box">
        <div class="header_top">
          <el-input
            v-model="companyValue"
            style="width: 380px"
            placeholder="请输入承保公司名称(支持模糊查询)"
            prefix-icon="Search"
          />
          <el-button type="primary">查询</el-button>
        </div>
        <el-radio-group v-model="company">
          <el-radio
            v-for="item in companyList"
            :key="item.id"
            :label="item.value"
            >{{ item.label }}</el-radio
          >
        </el-radio-group>
      </div>
      <template #footer>
        <div class="dialog-footer">
          <el-button @click="companyShow = false">取消</el-button>
          <el-button type="primary" @click="companyShow = false"
            >确定</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="carNum">
              <el-input
                v-model="form.carNum"
                placeholder="请输入车牌号"
                maxlength="30"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="车架号" prop="frameNum">
              <el-input
                v-model="form.frameNum"
                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="company">
              <el-input
                v-model="form.company"
                placeholder="请输入上年承保公司"
                maxlength="50"
              />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <template #footer>
        <div class="dialog-footer">
          <el-button @click="open = false">取消</el-button>
          <el-button type="primary" @click="open = false">确定</el-button>
        </div>
      </template>
    </el-dialog>
  </div>
</template>

<script setup>
import { queryMyList } from "@/api/policy/index";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const total = ref(5);
const title = ref("保单信息");
const open = ref(false);
const form = 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 companyList = ref([
  { id: 1, value: 0, label: "中国太平洋保险集团" },
  { id: 2, value: 1, label: "中国平安财产保险股份有限公司" },
  { id: 3, value: 2, label: "北部湾财产保险股份有限公司" },
  { id: 4, value: 3, label: "华安财产保险股份有限公司" },
]);
const company = ref(2);
const companyValue = ref("");
const deprecatedShow = ref(false);
const deprecatedReason = ref("");
const queryParams = reactive({
  pageNum: 1,
  pageSize: 10,
});
const policyList = ref([]);

/** 多选框选中数据 */
function handleSelectionChange(selection) {
  // ids.value = selection.map(item => item.roleId);
  // single.value = selection.length != 1;
  // multiple.value = !selection.length;
  console.log(selection);
}

const getList = async () => {
  loading.value = true;
  const res = await queryMyList(queryParams);
  policyList.value = res.rows;
  total.value = res.total;
  loading.value = false;
};
const handleSuccess = () => {
  console.log("通过");
};
const handleFallback = () => {
  console.log("退回");
};
const handleVoid = () => {
  console.log("作废");
  deprecatedShow.value = true;
};
const handleAuthCompany = () => {
  companyShow.value = true;
};
/** 重置操作表单 */
function reset() {
  form.value = {
    policyId: undefined,
    createTime: undefined,
    carNum: undefined,
    frameNum: undefined,
    name: undefined,
    phone: undefined,
    company: undefined,
  };
  proxy.resetForm("policyRef");
}

/** 修改按钮操作 */
function handleUpdate(row) {
  reset();
  form.value = row;
  open.value = true;
}
/** 提交按钮 */
function submitForm() {
  proxy.$refs["policyRef"].validate((valid) => {
    if (valid) {
      proxy.$modal.msgSuccess("修改成功");
    }
  });
}

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>