| | |
| | | </span> |
| | | <template #dropdown> |
| | | <el-dropdown-menu class="logout"> |
| | | <template v-if="userRolesList && userRolesList.length > 1"> |
| | | <el-dropdown-item |
| | | v-for="item in userRolesList" |
| | | :key="item.code" |
| | |
| | | > |
| | | {{ item.name }} |
| | | </el-dropdown-item> |
| | | </template> |
| | | <el-dropdown-item @click="logout"> |
| | | <!-- <IconifyIconOffline |
| | | :icon="LogoutCircleRLine" |
| | |
| | | currentSelect, |
| | | scheduleIsActive, |
| | | getContextMenuStyle, |
| | | userRoles, |
| | | closeMenu, |
| | | onMounted, |
| | | onMouseenter, |
| | |
| | | if (!hasValue) { |
| | | arr.forEach((arrItem: any) => { |
| | | if (arrItem.path === value) { |
| | | console.log(arrItem.path, value, "arrItem.path === value"); |
| | | useMultiTagsStoreHook().handleTags("push", { |
| | | path: value, |
| | | meta: arrItem.meta, |
| | |
| | | : useUserStoreHook()?.nickname; |
| | | }); |
| | | |
| | | /** 角色 */ |
| | | /** 当前角色 */ |
| | | const userRoles = computed(() => { |
| | | return useUserStoreHook()?.nowRole; |
| | | }); |
| | |
| | | getCurrentInstance |
| | | } from "vue"; |
| | | import type { tagsViewsType } from "../types"; |
| | | import { useUserStoreHook } from "@/store/modules/user"; |
| | | import { useRoute, useRouter } from "vue-router"; |
| | | import { responsiveStorageNameSpace } from "@/config"; |
| | | import { useSettingStoreHook } from "@/store/modules/settings"; |
| | |
| | | // 当前右键选中的路由信息 |
| | | const currentSelect = ref({}); |
| | | const isScrolling = ref(false); |
| | | const hasFlash = useUserStoreHook()?.nowRole.hasFlsh; |
| | | |
| | | /** 显示模式,默认灵动模式 */ |
| | | const showModel = ref( |
| | |
| | | import { userKey, type DataInfo } from "@/utils/auth"; |
| | | import { type menuType, routerArrays } from "@/layout/types"; |
| | | import { useMultiTagsStoreHook } from "@/store/modules/multiTags"; |
| | | import { useUserStoreHook } from "@/store/modules/user"; |
| | | import { usePermissionStoreHook } from "@/store/modules/permission"; |
| | | const IFrame = () => import("@/layout/frame.vue"); |
| | | // https://cn.vitejs.dev/guide/features.html#glob-import |
| | |
| | | usePermissionStoreHook().wholeMenus[0]?.children[0] |
| | | ); |
| | | tag && useMultiTagsStoreHook().handleTags("push", topMenu); |
| | | console.log(topMenu, "topMenu"); |
| | | // console.log(topMenu, "topMenu"); |
| | | |
| | | return topMenu; |
| | | } |
| | |
| | | value?: T | multiType, |
| | | position?: positionType |
| | | ): T { |
| | | console.log(mode, "--------------",value); |
| | | |
| | | switch (mode) { |
| | | case "equal": |
| | | this.multiTags = value; |
| | |
| | | enterpriseInfo: |
| | | storageLocal().getItem<DataInfo<number>>("enterpriseInfo") ?? {}, |
| | | nowRole: storageLocal().getItem<DataInfo<number>>("nowRole") ?? {}, |
| | | rolesList: storageLocal().getItem<DataInfo<number>>("rolesList") ?? [], |
| | | isFlsh: storageLocal().getItem<DataInfo<number>>("isFlsh") ?? false |
| | | rolesList: storageLocal().getItem<DataInfo<number>>("rolesList") ?? [] |
| | | }), |
| | | actions: { |
| | | /** 存储头像 */ |
| | |
| | | /** 存储角色列表 */ |
| | | SET_ROLES_LIST(rolesList: Array<string>) { |
| | | this.rolesList = rolesList; |
| | | }, |
| | | /** 当前角色是否审核 */ |
| | | SET_IS_FLSH(isFlsh: boolean | string) { |
| | | this.isFlsh = isFlsh; |
| | | }, |
| | | /** 存储按钮级别权限 */ |
| | | SET_PERMS(permissions: Array<string>) { |
| | |
| | | <template> |
| | | <div class="myfooter"> |
| | | <div |
| | | class="w-[58%] mx-auto flex justify-between items-center flex-wrap pt-8" |
| | | class="w-[68%] mx-auto flex justify-between items-center flex-wrap pt-8" |
| | | > |
| | | <div class="flex-1/2"> |
| | | <span>关于我们:</span> |
New file |
| | |
| | | <script setup lang="ts"> |
| | | defineOptions({ |
| | | name: "MyHeader" |
| | | }); |
| | | </script> |
| | | |
| | | <template> |
| | | <div class="header"> |
| | | <img width="227px" height="74px" src="@/assets/home/logo.png" alt="" /> |
| | | <img width="427px" height="74px" src="@/assets/home/Header.png" alt="" /> |
| | | <div class="other"> |
| | | <div class="item"> |
| | | <img width="21px" height="21px" src="@/assets/home/share.png" alt="" /> |
| | | <span>分享网站</span> |
| | | </div> |
| | | <div class="item"> |
| | | <img |
| | | width="21px" |
| | | height="21px" |
| | | src="@/assets/home/BellFilled.png" |
| | | alt="" |
| | | /> |
| | | <span>我的消息</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <style lang="scss" scoped> |
| | | .header { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-evenly; |
| | | height: 80px; |
| | | width: 100%; |
| | | .middle { |
| | | width: 50%; |
| | | display: flex; |
| | | justify-content: space-around; |
| | | color: rgb(51, 51, 51); |
| | | font-family: 思源黑体; |
| | | } |
| | | .other { |
| | | display: flex; |
| | | .item { |
| | | display: flex; |
| | | justify-content: center; |
| | | width: 63px; |
| | | height: 48px; |
| | | color: rgb(51, 51, 51); |
| | | font-family: 思源黑体; |
| | | font-size: 12px; |
| | | font-weight: 400; |
| | | line-height: 20px; |
| | | letter-spacing: 0%; |
| | | text-align: left; |
| | | text-transform: capitalize; |
| | | flex-wrap: wrap; |
| | | margin-right: 10px; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | el |
| | | <template> |
| | | <div class="header"> |
| | | <img width="227px" height="74px" src="@/assets/home/logo.png" alt="" /> |
| | | <img width="427px" height="74px" src="@/assets/home/Header.png" alt="" /> |
| | | <div class="other"> |
| | | <div class="item"> |
| | | <img width="21px" height="21px" src="@/assets/home/share.png" alt="" /> |
| | | <span>分享网站</span> |
| | | </div> |
| | | <div class="item"> |
| | | <img |
| | | width="21px" |
| | | height="21px" |
| | | src="@/assets/home/BellFilled.png" |
| | | alt="" |
| | | /> |
| | | <span>我的消息</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <my-header /> |
| | | <div class="banner"> |
| | | <!-- <img width="100%" height="306px" src="@/assets/home/banner.png" alt="" /> --> |
| | | </div> |
| | |
| | | <script lang="ts" setup> |
| | | import { onMounted, ref, computed, reactive } from "vue"; |
| | | import MyFooter from "./component/myFooter.vue"; |
| | | import MyHeader from "./component/myHeader.vue"; |
| | | import { useUserStoreHook } from "@/store/modules/user"; |
| | | import { exRole } from "@/api/register/index"; |
| | | import { storageLocal, isString, isIncludeAllChildren } from "@pureadmin/utils"; |
| | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .header { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-evenly; |
| | | height: 80px; |
| | | width: 100%; |
| | | .middle { |
| | | width: 50%; |
| | | display: flex; |
| | | justify-content: space-around; |
| | | color: rgb(51, 51, 51); |
| | | font-family: 思源黑体; |
| | | } |
| | | .other { |
| | | display: flex; |
| | | .item { |
| | | display: flex; |
| | | justify-content: center; |
| | | width: 63px; |
| | | height: 48px; |
| | | color: rgb(51, 51, 51); |
| | | font-family: 思源黑体; |
| | | font-size: 12px; |
| | | font-weight: 400; |
| | | line-height: 20px; |
| | | letter-spacing: 0%; |
| | | text-align: left; |
| | | text-transform: capitalize; |
| | | flex-wrap: wrap; |
| | | margin-right: 10px; |
| | | } |
| | | } |
| | | } |
| | | .banner { |
| | | // left: -3.76px; |
| | | // top: 80px; |
| | |
| | | shifoufenbao: "false", // 是否分包(可选) |
| | | shifoutuisongxuanchuan: "true", // 是否推送宣传(可选) |
| | | caigourenmingcheng: null, // 采购人名称(可选) |
| | | xingzhengquyu: null, // 行政区域(可选) |
| | | xingzhengquyu: [], // 行政区域(可选) |
| | | xingzhengquyuName: null, // 行政区域名称(可选) |
| | | jigoudaima: null, // 机构代码(可选) |
| | | daimaleixing: null, // 代码类型(可选) |
| | |
| | | function getRef() { |
| | | return ruleFormRef.value; |
| | | } |
| | | |
| | | const handleChange = value => { |
| | | console.log(value); |
| | | }; |
| | | defineExpose({ getRef }); |
| | | onMounted(async () => {}); |
| | | </script> |
| | |
| | | </re-col> |
| | | <re-col :value="6" :xs="24" :sm="24"> |
| | | <el-form-item label="定制规划" prop="dingbiaoguize"> |
| | | <el-checkbox-group |
| | | <!-- <el-checkbox-group |
| | | v-model="newFormInline.dingbiaoguize" |
| | | placeholder="请选择状态" |
| | | clearable |
| | | class="w-[100%]!" |
| | | > |
| | | <el-checkbox label="最低价" :value="1" /> |
| | | <el-checkbox label="综合评分" :value="0" /> |
| | | </el-checkbox-group> |
| | | <el-checkbox label="最低价" value="最低价" /> |
| | | <el-checkbox label="综合评分" value="综合评分" /> |
| | | </el-checkbox-group> --> |
| | | <el-radio-group v-model="newFormInline.dingbiaoguize"> |
| | | <el-radio value="最低价">最低价</el-radio> |
| | | <el-radio value="综合评分">综合评分</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </re-col> |
| | | <re-col :value="6" :xs="24" :sm="24"> |
| | |
| | | class="w-full" |
| | | :options="state.regionList" |
| | | :props="{ |
| | | value: 'id', |
| | | value: 'code', |
| | | label: 'name', |
| | | emitPath: false, |
| | | children: 'regions' |
| | | }" |
| | | clearable |
| | | filterable |
| | | placeholder="请选择区域" |
| | | @change="handleChange" |
| | | /> |
| | | </el-form-item> |
| | | </re-col> |
| | |
| | | resetForm, |
| | | openDialog, |
| | | handleDelete, |
| | | handleSelectionChange |
| | | handleSelectionChange, |
| | | handleSizeChange, |
| | | handleCurrentChange, |
| | | pagination, |
| | | checkboxAsRadio |
| | | } = useDept(); |
| | | |
| | | function onFullscreen() { |
| | |
| | | v-model="form.zhiyi" |
| | | clearable |
| | | class="w-[100%]!" |
| | | @change="checkboxAsRadio(form.zhiyi)" |
| | | > |
| | | <el-checkbox label="有" :value="1" /> |
| | | <el-checkbox label="无" :value="0" /> |
| | | <el-checkbox label="有" value="true" /> |
| | | <el-checkbox label="无" value="false" /> |
| | | </el-checkbox-group> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | v-model="form.tousu" |
| | | clearable |
| | | class="w-[100%]!" |
| | | @change="checkboxAsRadio(form.tousu)" |
| | | > |
| | | <el-checkbox label="有" :value="1" /> |
| | | <el-checkbox label="无" :value="0" /> |
| | | <el-checkbox label="有" value="true" /> |
| | | <el-checkbox label="无" value="false" /> |
| | | </el-checkbox-group> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | row-key="id" |
| | | showOverflowTooltip |
| | | table-layout="auto" |
| | | default-expand-all |
| | | :loading="loading" |
| | | :data="dataList" |
| | | :columns="dynamicColumns" |
| | | :pagination="{ ...pagination, size }" |
| | | :header-cell-style="{ |
| | | background: 'var(--el-fill-color-light)', |
| | | color: 'var(--el-text-color-primary)' |
| | | }" |
| | | @selection-change="handleSelectionChange" |
| | | @page-size-change="handleSizeChange" |
| | | @page-current-change="handleCurrentChange" |
| | | > |
| | | <template #operation="{ row }"> |
| | | <el-button |
| | |
| | | getRegionList, |
| | | getDaimaleixingList, |
| | | caigourenAdd, |
| | | caigourenUpdate, |
| | | caigourenDelete |
| | | } from "@/api/item/index"; |
| | | import { usePublicHooks } from "../../hooks"; |
| | |
| | | // 新增日期范围,可为 null,类型为数组 |
| | | createDateRange: null, |
| | | // 行政区域,可为 null,类型为字符串 |
| | | xingzhengquyu: "", |
| | | xingzhengquyu: [], |
| | | // 行业品目,可为 null,类型为字符串 |
| | | hangyepinmu: "", |
| | | // 订单状态,可为 null,类型为 32 位整数 |
| | | orderStatus: "", |
| | | // 质疑有无,可为 null,类型为布尔值 |
| | | zhiyi: null, |
| | | zhiyi: [], |
| | | // 投诉有无,可为 null,类型为布尔值 |
| | | tousu: null, |
| | | tousu: [], |
| | | // 项目名称,可为 null,类型为字符串 |
| | | projectName: null, |
| | | // 代理机构名称,可为 null,类型为字符串 |
| | |
| | | orderStatusList: [], |
| | | regionList: [], |
| | | daimaleixingList: [] |
| | | }); |
| | | const pagination = reactive<PaginationProps>({ |
| | | total: 0, |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | background: true |
| | | }); |
| | | //获取采购方式 |
| | | const getCaigoufangshiListFun = async () => { |
| | |
| | | const res = state.orderStatusList.find(item => { |
| | | return row.orderStatus == item.status; |
| | | }); |
| | | return res.label; |
| | | return res?.label; |
| | | }; |
| | | const columns: TableColumnList = [ |
| | | { |
| | |
| | | function handleSelectionChange(val) { |
| | | console.log("handleSelectionChange", val); |
| | | } |
| | | function handleSizeChange(val: number) { |
| | | console.log(`${val} items per page`); |
| | | } |
| | | |
| | | function handleCurrentChange(val: number) { |
| | | console.log(`current page: ${val}`); |
| | | } |
| | | |
| | | function resetForm(formEl) { |
| | | if (!formEl) return; |
| | | formEl.resetFields(); |
| | | onSearch(); |
| | | } |
| | | |
| | | const checkboxAsRadio = data => { |
| | | if (data.length > 1) { |
| | | data.shift(); |
| | | } |
| | | }; |
| | | async function onSearch() { |
| | | loading.value = true; |
| | | const { result } = await zhaobiaoPageOrder(form); // 这里是返回一维数组结构,前端自行处理成树结构,返回格式要求:唯一id加父节点parentId,parentId取父节点id |
| | | const obj = cloneDeep(form); |
| | | obj.tousu = obj.tousu.join(""); |
| | | obj.zhiyi = obj.zhiyi.join(""); |
| | | obj.xingzhengquyu = obj.xingzhengquyu.join(""); |
| | | const { result } = await zhaobiaoPageOrder(obj); // 这里是返回一维数组结构,前端自行处理成树结构,返回格式要求:唯一id加父节点parentId,parentId取父节点id |
| | | const newData = result.items; |
| | | loading.value = false; |
| | | pagination.total = result.total; |
| | | pagination.pageSize = result.pageSize; |
| | | pagination.currentPage = result.page; |
| | | // if (!isAllEmpty(form.name)) { |
| | | // // 前端搜索部门名称 |
| | | // newData = newData.filter(item => item.name.includes(form.name)); |
| | |
| | | shifoufenbao: row?.shifoufenbao ?? false, // 是否分包(可选) |
| | | shifoutuisongxuanchuan: row?.shifoutuisongxuanchuan ?? true, // 是否推送宣传(可选) |
| | | caigourenmingcheng: row?.caigourenmingcheng ?? null, // 采购人名称(可选) |
| | | xingzhengquyu: row?.xingzhengquyu ?? null, // 行政区域(可选) |
| | | xingzhengquyu: row?.xingzhengquyu.split(",") ?? [], // 行政区域(可选) |
| | | xingzhengquyuName: row?.xingzhengquyuName ?? null, // 行政区域名称(可选) |
| | | jigoudaima: row?.jigoudaima ?? null, // 机构代码(可选) |
| | | daimaleixing: row?.daimaleixing ?? null, // 代码类型(可选) |
| | |
| | | contentRenderer: () => h(editForm, { ref: formRef, formInline: null }), |
| | | beforeSure: (done, { options }) => { |
| | | const FormRef = formRef.value.getRef(); |
| | | const curData = options.props.formInline as FormItemProps; |
| | | const curData = cloneDeep(options.props.formInline as FormItemProps); |
| | | async function chores() { |
| | | message(`您${title}了项目名称为${curData.projectName}的这条数据`, { |
| | | type: "success" |
| | | }); |
| | | const res = await caigourenAdd(curData); |
| | | // curData.dingbiaoguize = curData.dingbiaoguize.join(""); |
| | | curData.xingzhengquyu = curData.xingzhengquyu.join(","); |
| | | let res; |
| | | if (title == "新增") { |
| | | res = await caigourenAdd(curData); |
| | | } else { |
| | | res = await caigourenUpdate(curData); |
| | | } |
| | | if (res.code == "200") { |
| | | done(); // 关闭弹框 |
| | | onSearch(); // 刷新表格数据 |
| | |
| | | openDialog, |
| | | /** 删除部门 */ |
| | | handleDelete, |
| | | handleSelectionChange |
| | | handleSelectionChange, |
| | | handleSizeChange, |
| | | handleCurrentChange, |
| | | pagination, |
| | | checkboxAsRadio |
| | | }; |
| | | } |