zhangwei
7 天以前 3324a54fa4d0840f8a5dc8adb21753180ecd3f3c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
import { reactive, ref, onMounted, h, toRaw, watch } from "vue";
import { useRoute, useRouter } from "vue-router";
import dayjs from "dayjs";
import { message } from "@/utils/message";
import type { PaginationProps } from "@pureadmin/table";
import {
  pageGonggao,
  pageGengzgeng,
  shouyeZhongbiaoOrder,
  neirongfabuDetail,
  shouyeOrder,
  shouyeChangeOrder,
  feizhengfuDetail,
  pageZhongbiaoGonggao
} from "@/api/item/shouye";
const convertFujianToObjects = (fujianStr, fujianNameStr) => {
  // 分割字符串为数组并过滤空值
  const srcArray = fujianStr.split(",").filter(Boolean);
  const nameArray = fujianNameStr.split(",").filter(Boolean);
 
  // 提取文件后缀作为valu
  const getFileExtension = fileName => {
    const lastDotIndex = fileName.lastIndexOf(".");
    // 如果没有后缀或文件名以点结尾,返回空字符串
    if (lastDotIndex === -1 || lastDotIndex === fileName.length - 1) {
      return "";
    }
    return fileName.slice(lastDotIndex + 1).toLowerCase();
  };
 
  // 映射为目标对象数组
  return srcArray.map((src, index) => {
    // 确保名称数组有对应索引的元素
    const name = nameArray[index]?.trim() || `未知文件${index + 1}`;
 
    return {
      name: name,
      filePath: src.trim(),
      fileType: getFileExtension(name)
    };
  });
};
export function useIndex() {
  const route = useRoute();
  const router = useRouter();
  const stateHook = reactive({
    pageGonggaoList: [],
    shouyeZhongbiaoOrderList: [],
    shouyeOrderList: [],
    active: 0,
    activeList: 0,
    gonggaoDetail: {},
    gonggaoList: [
      { name: "招采公告" },
      { name: "更正公告" },
      { name: "结果公告" }
      // { name: "其他公告" }
    ]
  });
  async function getNeirongfabuDetail(data) {
    const res = await neirongfabuDetail(data);
    stateHook.pageGonggaoList = res.result;
  }
  async function getFeizhengfuDetail(params) {
    const res = await feizhengfuDetail(params);
    stateHook.gonggaoDetail = res.result;
    stateHook.gonggaoDetail.fujianList = convertFujianToObjects(
      stateHook.gonggaoDetail.fujian,
      stateHook.gonggaoDetail.fujianName
    );
  }
  async function getShouyeOrder(active) {
    let res;
    stateHook.active = active;
    switch (active) {
      case 0:
        res = await shouyeOrder();
        stateHook.shouyeOrderList = res.result;
        break;
      case 1:
        res = await getShouyeChangeOrder();
        stateHook.shouyeOrderList = res.result;
        break;
      case 2:
        res = await shouyeZhongbiaoOrder();
        stateHook.shouyeOrderList = res.result;
        break;
    }
  }
  async function getOrderList(active) {
    stateHook.activeList = active;
  }
  async function getShouyeChangeOrder() {
    const res = await shouyeChangeOrder();
    stateHook.shouyeOrderList = res.result;
  }
  function goDetail(id) {
    router.push({ name: "gonggaoDetail", query: { id } });
  }
  const form = reactive({
    keyword: "",
    createDateRange: ""
  });
  const curRow = ref();
  const dataList = ref([]);
  const loading = ref(true);
 
  const pagination = reactive<PaginationProps>({
    total: 0,
    pageSize: 10,
    currentPage: 1,
    background: true
  });
  const columns: TableColumnList = [
    {
      label: "区域",
      prop: "xingzhengquyuName",
      minWidth: 80
    },
    {
      label: "采购方式",
      prop: "caigoufangshiName",
      width: 100
    },
    {
      label: "名称",
      prop: "projectName",
      minWidth: 100
    },
    {
      label: "发布时间",
      prop: "fabuDate",
      width: 160,
      formatter: ({ fabuDate }) => dayjs(fabuDate).format("YYYY-MM-DD HH:mm:ss")
    }
  ];
 
  function handleDelete(row) {
    message(`您删除了角色名称为${row.name}的这条数据`, { type: "success" });
    onSearch();
  }
 
  function handleSizeChange(val: number) {
    console.log(`${val} items per page`);
  }
 
  function handleCurrentChange(val: number) {
    console.log(`current page: ${val}`);
  }
 
  function handleSelectionChange(val) {
    console.log("handleSelectionChange", val);
  }
 
  async function onSearch() {
    loading.value = true;
    let res;
    switch (stateHook.activeList) {
      case 0:
        res = await pageGonggao(form);
        break;
      case 1:
        res = await pageGengzgeng(form);
        break;
      case 2:
        res = await pageZhongbiaoGonggao(form);
        break;
    }
    const { result } = res;
    // dataList.value = data.list;
    dataList.value = result.items;
    loading.value = false;
    pagination.total = result.total;
    pagination.pageSize = result.pageSize;
    pagination.currentPage = result.page;
 
    // setTimeout(() => {
    //   loading.value = false;
    // }, 500);
  }
 
  const resetForm = formEl => {
    if (!formEl) return;
    formEl.resetFields();
    onSearch();
  };
 
  /** 高亮当前权限选中行 */
  function rowStyle({ row: { id } }) {
    return {
      cursor: "pointer",
      background: id === curRow.value?.id ? "var(--el-fill-color-light)" : ""
    };
  }
 
  onMounted(async () => {
    onSearch();
    // const { data } = await getRoleMenu();
    // treeIds.value = getKeyList(data, "id");
    // treeData.value = handleTree(data);
  });
 
  return {
    stateHook,
    getShouyeOrder,
    getNeirongfabuDetail,
    goDetail,
    route,
    router,
    getFeizhengfuDetail,
    getOrderList,
    form,
    curRow,
    loading,
    columns,
    rowStyle,
    dataList,
    pagination,
    onSearch,
    resetForm,
    handleDelete,
    handleSizeChange,
    handleCurrentChange,
    handleSelectionChange
  };
}