Company-search.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <template>
  2. <el-dialog v-model="state.dialogVisible" draggable title="服务企业查找" ref="dialogRef" width="800px" append-to-body destroy-on-close>
  3. <el-form :model="state.queryParams" ref="ruleFormRef" :inline="true" @submit.native.prevent>
  4. <el-form-item label="关键词" prop="Keyword">
  5. <el-input v-model="state.queryParams.Keyword" placeholder="企业名称" clearable @keyup.enter="handleQuery" />
  6. </el-form-item>
  7. <el-form-item>
  8. <el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
  9. <el-button @click="resetQuery(ruleFormRef)" class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
  10. </el-form-item>
  11. </el-form>
  12. <el-table :data="state.tableData" @current-change="handleSelectionChange">
  13. <el-table-column label="选择" width="70">
  14. <template #default="{ row }">
  15. <el-radio v-model="tableRadio" :label="row.id" @change="handleRowChange(row)">&nbsp;</el-radio>
  16. </template>
  17. </el-table-column>
  18. <el-table-column prop="phoneNo" label="企业名称" show-overflow-tooltip></el-table-column>
  19. <el-table-column prop="hotspotName" label="专班名称" show-overflow-tooltip> </el-table-column>
  20. <template #empty>
  21. <Empty />
  22. </template>
  23. </el-table>
  24. <pagination :total="state.total" v-model:page="state.queryParams.PageIndex" v-model:limit="state.queryParams.PageSize" @pagination="queryList" />
  25. <template #footer>
  26. <span class="dialog-footer">
  27. <el-button class="default-button" @click="state.dialogVisible = false">取 消</el-button>
  28. <el-button type="primary" @click="selectConfirm" :disabled="!tableRadio">确 定</el-button>
  29. </span>
  30. </template>
  31. </el-dialog>
  32. </template>
  33. <script setup lang="ts" name="orderCompanySearch">
  34. import {reactive, ref} from 'vue';
  35. import type {FormInstance} from 'element-plus';
  36. import {historyOrder} from '/@/api/business/order';
  37. import {useRoute} from 'vue-router';
  38. // 引入组件
  39. const emit = defineEmits(['saveSelect']);
  40. // 定义变量内容
  41. const state = reactive<any>({
  42. dialogVisible: false, // 弹窗显示隐藏
  43. queryParams: {
  44. PageIndex: 1, // 当前页
  45. PageSize: 10, // 每页条数
  46. Keyword: null, // 关键字
  47. },
  48. tableData: [], // 表格数据
  49. total: 0, // 总条数
  50. loading: false, // 加载状态
  51. });
  52. const ruleFormRef = ref<RefType>(); // 表单ref
  53. const tableRadio = ref<String>(''); // 选择的单选框
  54. const selectRow = ref<EmptyObjectType>({}); // 选择的行
  55. const route = useRoute(); // 路由
  56. // 打开弹窗
  57. const openDialog = (row: any) => {
  58. // tableRadio.value = row.duplicateId ?? '';
  59. // queryList();
  60. state.dialogVisible = true;
  61. };
  62. const dialogRef = ref<RefType>();
  63. // 关闭弹窗
  64. const closeDialog = () => {
  65. state.dialogVisible = false;
  66. };
  67. /** 搜索按钮操作 */
  68. const handleQuery = () => {
  69. state.queryParams.PageIndex = 1;
  70. // queryList();
  71. };
  72. /** 重置按钮操作 */
  73. const resetQuery = (formEl: FormInstance | undefined) => {
  74. if (!formEl) return;
  75. formEl.resetFields();
  76. handleQuery();
  77. };
  78. /** 获取历史工单 */
  79. const queryList = () => {
  80. state.loading = true;
  81. let request = {
  82. ...state.queryParams,
  83. PhoneNo: state.ruleForm.contact,
  84. OrderId: route.params.id ?? '', //传入id 排除重复工单选择自己
  85. };
  86. historyOrder(request)
  87. .then((response: any) => {
  88. state.tableData = response?.result.items ?? [];
  89. state.total = response?.result.total;
  90. state.loading = false;
  91. })
  92. .catch(() => {
  93. state.loading = false;
  94. });
  95. };
  96. // 选择重复件
  97. const handleSelectionChange = (row: any) => {
  98. if (row) {
  99. tableRadio.value = row.id;
  100. selectRow.value = row;
  101. }
  102. };
  103. const handleRowChange = (row: any) => {
  104. tableRadio.value = row.id;
  105. selectRow.value = row;
  106. };
  107. // 确定选择历史工单
  108. const selectConfirm = () => {
  109. emit('saveSelect', state.selectRow);
  110. };
  111. // 暴露变量
  112. defineExpose({
  113. openDialog,
  114. closeDialog,
  115. });
  116. </script>