diff --git a/b/account/email_info.dspy b/b/account/email_info.dspy index 770a4f2..af6b3eb 100644 --- a/b/account/email_info.dspy +++ b/b/account/email_info.dspy @@ -90,7 +90,9 @@ async def email_info(msg, indent=0): index = find_data.index("<") name = find_data[:index] if price and name: - mail_code = await sor.R('mail_code',{'mailcode':name,'del_flg':'0'}) + mail_code_sql = """SELECT * FROM mail_code WHERE LOCATE(mailcode, name) > 0 and del_flg = '0';""" + mail_code = await sor.sqlExe(mail_code_sql, {}) + # mail_code = await sor.R('mail_code',{'mailcode':name,'del_flg':'0'}) date = await get_business_date(sor=None) recharge_log = {'customerid': mail_code[0]['customer_id'], 'recharge_amt': price, 'action': 'RECHARGE', 'recharge_path': '2', 'recharge_date': date} diff --git a/b/product/company_category_add.dspy b/b/product/company_category_add.dspy new file mode 100644 index 0000000..7e2b702 --- /dev/null +++ b/b/product/company_category_add.dspy @@ -0,0 +1,46 @@ +async def company_category_add(ns={}): + if not ns.get('url_link'): + return { + 'status': False, + 'msg': '请传递url_link' + } + domain_name = ns.get('url_link').split("//")[1].split("/")[0] + if 'localhost' in domain_name: + domain_name = 'dev.opencomputing.cn' + + ns_dic = { + 'id': uuid(), + 'domain_name': domain_name, + 'company_category': ns.get('company_category') + } + + db = DBPools() + async with db.sqlorContext('kboss') as sor: + if ns.get('userid'): + userid = ns.get('userid') + else: + userid = await get_user() + + # 区分运营和普通客户 + user_list = await sor.R('users', {'id': userid}) + if not user_list: + return { + 'status': False, + 'msg': '没有找到匹配的用户' + } + orgid = user_list[0]['orgid'] + ns_dic['orgid'] = orgid + try: + await sor.C('user_publish_company_category', ns_dic) + return { + 'status': True, + 'msg': 'Company category created successfully' + } + except Exception as e: + return { + 'status': False, + 'msg': 'Failed to create company category, %s' % str(e) + } + +ret = await company_category_add(params_kw) +return ret \ No newline at end of file diff --git a/b/product/company_category_delete.dspy b/b/product/company_category_delete.dspy new file mode 100644 index 0000000..954d8f2 --- /dev/null +++ b/b/product/company_category_delete.dspy @@ -0,0 +1,18 @@ +async def company_category_delete(ns={}): + db = DBPools() + async with db.sqlorContext('kboss') as sor: + try: + update_sql = """update user_publish_company_category set del_flg = '1' where id = '%s';""" % ns.get('id') + await sor.sqlExe(update_sql, {}) + return { + 'status': True, + 'msg': 'Company category deleted successfully' + } + except Exception as e: + return { + 'status': False, + 'msg': 'Failed to delete company category, %s' % str(e) + } + +ret = await company_category_delete(params_kw) +return ret \ No newline at end of file diff --git a/b/product/company_category_search.dspy b/b/product/company_category_search.dspy new file mode 100644 index 0000000..0c99182 --- /dev/null +++ b/b/product/company_category_search.dspy @@ -0,0 +1,27 @@ +async def company_category_search(ns={}): + if not ns.get('url_link'): + return { + 'status': False, + 'msg': '请传递url_link' + } + domain_name = ns.get('url_link').split("//")[1].split("/")[0] + if 'localhost' in domain_name: + domain_name = 'dev.opencomputing.cn' + + db = DBPools() + async with db.sqlorContext('kboss') as sor: + try: + result = await sor.R('user_publish_company_category', {'domain_name': domain_name, 'del_flg': '0'}) + return { + 'status': True, + 'msg': 'Company categories retrieved successfully', + 'data': result + } + except Exception as e: + return { + 'status': False, + 'msg': 'Failed to retrieve company categories, %s' % str(e) + } + +ret = await company_category_search(params_kw) +return ret \ No newline at end of file diff --git a/b/product/company_category_update.dspy b/b/product/company_category_update.dspy new file mode 100644 index 0000000..d0a039e --- /dev/null +++ b/b/product/company_category_update.dspy @@ -0,0 +1,18 @@ +async def company_category_update(ns={}): + db = DBPools() + async with db.sqlorContext('kboss') as sor: + try: + update_sql = """update user_publish_company_category set company_category = '%s' where id = '%s';""" % (ns.get('company_category'), ns.get('id')) + await sor.sqlExe(update_sql, {}) + return { + 'status': True, + 'msg': 'Company category updated successfully' + } + except Exception as e: + return { + 'status': False, + 'msg': 'Failed to update company category, %s' % str(e) + } + +ret = await company_category_update(params_kw) +return ret \ No newline at end of file diff --git a/b/product/product_category_add.dspy b/b/product/product_category_add.dspy new file mode 100644 index 0000000..9916a50 --- /dev/null +++ b/b/product/product_category_add.dspy @@ -0,0 +1,48 @@ +async def product_category_add(ns={}): + if not ns.get('url_link'): + return { + 'status': False, + 'msg': '请传递路由链接' + } + domain_name = ns.get('url_link').split("//")[1].split("/")[0] + if 'localhost' in domain_name: + domain_name = 'dev.opencomputing.cn' + ns_dic = { + 'id': uuid(), + 'domain_name': domain_name, + 'product_category': ns.get('product_category'), + 'parentid': ns.get('parentid') if ns.get('parentid') else None, + 'priority': ns['priority'] if ns.get('priority') else 99, + 'permission': ns.get('permission') if ns.get('permission') else '1', + 'cart_flag': ns.get('cart_flag') if ns.get('cart_flag') else None + } + + if ns.get('userid'): + userid = ns.get('userid') + else: + userid = await get_user() + db = DBPools() + async with db.sqlorContext('kboss') as sor: + # 区分运营和普通客户 + user_list = await sor.R('users', {'id': userid}) + if not user_list: + return { + 'status': False, + 'msg': '没有找到匹配的用户' + } + orgid = user_list[0]['orgid'] + ns_dic['orgid'] = orgid + try: + await sor.C('user_publish_product_category', ns_dic) + return { + 'status': True, + 'msg': 'product category created successfully' + } + except Exception as e: + return { + 'status': False, + 'msg': 'Failed to create product category, %s' % str(e) + } + +ret = await product_category_add(params_kw) +return ret \ No newline at end of file diff --git a/b/product/product_category_delete.dspy b/b/product/product_category_delete.dspy new file mode 100644 index 0000000..3964852 --- /dev/null +++ b/b/product/product_category_delete.dspy @@ -0,0 +1,18 @@ +async def product_category_delete(ns={}): + db = DBPools() + async with db.sqlorContext('kboss') as sor: + try: + update_sql = """update user_publish_product_category set del_flg = '1' where id = '%s';""" % ns.get('id') + await sor.sqlExe(update_sql, {}) + return { + 'status': True, + 'msg': 'product category deleted successfully' + } + except Exception as e: + return { + 'status': False, + 'msg': 'Failed to delete product category, %s' % str(e) + } + +ret = await product_category_delete(params_kw) +return ret \ No newline at end of file diff --git a/b/product/product_category_search.dspy b/b/product/product_category_search.dspy new file mode 100644 index 0000000..7894e9b --- /dev/null +++ b/b/product/product_category_search.dspy @@ -0,0 +1,85 @@ +async def build_tree(parent_id=None, all_cats=None): + return [{ + "id": cat['id'], + "name": cat['product_category'], + "cart_flag": cat['cart_flag'], + "children": await build_tree(cat['id'], all_cats) + } for cat in all_cats if cat['parentid'] == parent_id] + +async def get_user_role(ns={}): + sor = ns['sor'] + # get role + ns['del_flg'] = '0' + res_role = await sor.R('userrole', ns) + if res_role: + user_role = res_role[0] + else: + return { + "status": False, + "msg": "userrole table, user id can not find..." + } + roleid = user_role.get('roleid') + # get role name + role_name = await sor.R('role', {'id': roleid}) + if role_name: + role = role_name[0].get('role') + else: + return { + "status": False, + "msg": "role table, can not get role name" + } + return role + +async def product_category_search(ns={}): + domain_name = ns.get('url_link').split("//")[1].split("/")[0] + if 'localhost' in domain_name: + domain_name = 'dev.opencomputing.cn' + + to_page = ns.get('to_page') + db = DBPools() + async with db.sqlorContext('kboss') as sor: + # 首页不登录 通过域名筛选 + if to_page == 'show': + find_sql = """SELECT * FROM user_publish_product_category WHERE domain_name = '%s' AND del_flg = '0' ORDER BY priority;""" % domain_name + result = await sor.sqlExe(find_sql, {}) + return { + 'status': True, + 'msg': 'product categories retrieved successfully', + 'data': result + } + + # 发布弹窗中的产品种类通过用户筛选 普通用户/管理人员 + if ns.get('userid'): + userid = ns.get('userid') + else: + userid = await get_user() + + # 区分运营和普通客户 + user_list = await sor.R('users', {'id': userid}) + if not user_list: + return { + 'status': False, + 'msg': '没有找到匹配的用户' + } + orgid = user_list[0]['orgid'] + user_role = await get_user_role({'userid': userid, 'sor': sor}) + try: + if user_role == '客户': + find_sql = """SELECT * FROM user_publish_product_category WHERE domain_name = '%s' AND permission = '1' AND del_flg = '0' ORDER BY priority;""" % domain_name + else: + find_sql = """SELECT * FROM user_publish_product_category WHERE domain_name = '%s' AND del_flg = '0' ORDER BY priority;""" % domain_name + result = await sor.sqlExe(find_sql, {}) + # res = await build_tree(parent_id=None, all_cats=result) + return { + 'status': True, + 'msg': 'product categories retrieved successfully', + 'data': result + } + except Exception as e: + return { + 'status': False, + 'msg': 'Failed to retrieve product categories, %s' % str(e) + } + +ret = await product_category_search(params_kw) +return ret \ No newline at end of file diff --git a/b/product/product_category_update.dspy b/b/product/product_category_update.dspy new file mode 100644 index 0000000..96b279a --- /dev/null +++ b/b/product/product_category_update.dspy @@ -0,0 +1,18 @@ +async def product_category_update(ns={}): + db = DBPools() + async with db.sqlorContext('kboss') as sor: + try: + update_sql = """update user_publish_product_category set product_category = '%s' where id = '%s';""" % (ns.get('product_category'), ns.get('id')) + await sor.sqlExe(update_sql, {}) + return { + 'status': True, + 'msg': 'product category updated successfully' + } + except Exception as e: + return { + 'status': False, + 'msg': 'Failed to update product category, %s' % str(e) + } + +ret = await product_category_update(params_kw) +return ret \ No newline at end of file diff --git a/b/product/publish_product_add.dspy b/b/product/publish_product_add.dspy new file mode 100644 index 0000000..9502515 --- /dev/null +++ b/b/product/publish_product_add.dspy @@ -0,0 +1,107 @@ +async def get_user_role(ns={}): + sor = ns['sor'] + # get role + ns['del_flg'] = '0' + res_role = await sor.R('userrole', ns) + if res_role: + user_role = res_role[0] + else: + return { + "status": False, + "msg": "userrole table, user id can not find..." + } + roleid = user_role.get('roleid') + # get role name + role_name = await sor.R('role', {'id': roleid}) + if role_name: + role = role_name[0].get('role') + else: + return { + "status": False, + "msg": "role table, can not get role name" + } + return role + +async def publish_product_add(ns={}): + if ns.get('userid'): + userid = ns.get('userid') + else: + userid = await get_user() + db = DBPools() + async with db.sqlorContext('kboss') as sor: + # 区分运营和普通客户 + user_list = await sor.R('users', {'id': userid}) + if not user_list: + return { + 'status': False, + 'msg': '没有找到匹配的用户' + } + orgid = user_list[0]['orgid'] + domain_name = ns.get('url_link').split("//")[1].split("/")[0] + if 'localhost' in domain_name: + domain_name = 'dev.opencomputing.cn' + product_category = ns.get('product_category') + company_type = ns.get('company_type') + ns_dic = { + "id": uuid(), + "publish_type": ns.get("publish_type"), + "orgid": orgid, + "img": ns.get('img'), + "domain_name": domain_name, + "product_name": ns.get("product_name"), + "product_category": product_category, + "company_name": ns.get("company_name"), + "company_type": json.dumps(company_type) if isinstance(company_type, list) else company_type, + "contact_person": ns.get("contact_person"), + "job_title": ns.get("job_title"), + "phone_number": ns.get("phone_number"), + "email": ns.get("email"), + "cpu": ns.get("cpu"), + "memory": ns.get("memory"), + "gpu": ns.get("gpu"), + "sys_disk": ns.get("sys_disk"), + "data_disk": ns.get("data_disk"), + "net_card": ns.get("net_card"), + "price": ns.get("price"), + "unit": ns.get("unit"), + "discount": ns.get("discount"), + "short_term": ns.get("short_term"), + "priority": ns.get("priority") if ns.get("priority") else 1, + "status": ns.get("status") if ns.get("status") else '0', + "title": ns.get("title"), + "label": ns.get("label"), + "first_page": ns.get("first_page") if ns.get("first_page") else '0', + "requirement_summary": ns.get("requirement_summary"), + "related_parameters": ns.get("related_parameters"), + "application_scenario": ns.get("application_scenario"), + "audit_status": ns.get('audit_status', 'pending'), + } + if ns.get('discount') == '0': + ns['discount'] = None + ns_dic['discount'] = None + + if ns.get('price') and ns.get('discount'): + ns_dic['discount_price'] = float(ns.get('price')) * float(ns['discount']) / 10 + else: + ns_dic['discount_price'] = ns['price'] + user_role = await get_user_role({'userid': userid, 'sor': sor}) + # 非客户角色不需要审批 + if user_role != '客户': + ns['status'] = '1' + ns_dic['audit_status'] = 'approved' + ns_dic['first_page'] = '1' + try: + await sor.C('user_publish_product', ns_dic) + return { + 'status': True, + 'msg': 'publish product created successfully' + } + except Exception as e: + return { + 'status': False, + 'msg': 'Failed to publish product, %s' % str(e) + } + + +ret = await publish_product_add(params_kw) +return ret \ No newline at end of file diff --git a/b/product/publish_product_search.dspy b/b/product/publish_product_search.dspy new file mode 100644 index 0000000..995fb82 --- /dev/null +++ b/b/product/publish_product_search.dspy @@ -0,0 +1,68 @@ +async def publish_product_search(ns={}): + """ + 普通客户查看 + 运营查看自己提交内容 + 运营查看所有用户内容 + :param ns: + :return: + """ + offset = ns['offset'] + flag = ns.get('flag') + + if ns.get('userid'): + userid = ns.get('userid') + else: + userid = await get_user() + db = DBPools() + async with db.sqlorContext('kboss') as sor: + # 区分运营和普通客户 + user_list = await sor.R('users', {'id': userid}) + if not user_list: + return { + 'status': False, + 'msg': '没有找到匹配的用户' + } + orgid = user_list[0]['orgid'] + org_parentid_li = await sor.R('organization', {'id': orgid}) + org_parentid = org_parentid_li[0]['parentid'] + user_role = await get_user_role({'userid': userid, 'sor': sor}) + try: + # 非客户角色 + if user_role != '客户': + ns['del_flg'] = '0' + + # 业主机构角色并且是只查看业主机构自己 flag==single + if orgid == 'mIWUHBeeDM8mwAFPIQ8pS' and flag == 'single': + find_sql = """SELECT upr.* FROM user_publish_product AS upr LEFT JOIN organization AS org ON upr.orgid = org.id + WHERE org.parentid IS NULL AND upr.del_flg = '0' ORDER BY upr.create_at DESC LIMIT 20 OFFSET %s;""" % offset + # 业主机构角色并且是查看所有(包括业主机构自己) flag!=single + elif orgid == 'mIWUHBeeDM8mwAFPIQ8pS': + find_sql = """SELECT upr.* FROM user_publish_product AS upr LEFT JOIN organization AS org ON upr.orgid = org.id + WHERE org.id = '%s' or org.parentid = '%s' AND org.org_type != '1' AND upr.del_flg = '0' ORDER BY upr.create_at DESC LIMIT 20 OFFSET %s;""" % (orgid, orgid, offset) + # 其他机构非用户角色 只查看自己 + elif flag == 'single': + find_sql = """SELECT upr.* FROM user_publish_product AS upr LEFT JOIN organization AS org ON upr.orgid = org.id + WHERE org.id = '%s' AND upr.del_flg = '0' ORDER BY upr.create_at DESC LIMIT 20 OFFSET %s;""" % (orgid, offset) + # 其他机构非用户角色查看所有 + else: + find_sql = """SELECT upr.* FROM user_publish_product AS upr LEFT JOIN organization AS org ON upr.orgid = org.id + WHERE (org.id = '%s' or org.parentid = '%s') AND upr.del_flg = '0' ORDER BY upr.create_at DESC LIMIT 20 OFFSET %s;""" % (orgid, orgid, offset) + # 客户角色 + else: + ns['del_flg'] = '0' + ns['orgid'] = user_list[0]['id'] + find_sql = """SELECT * FROM user_publish_product WHERE orgid = '%s' AND del_flg = '0' ORDER BY create_at DESC LIMIT 20 OFFSET %s;""" % (orgid, offset) + result = await sor.sqlExe(find_sql, {}) + return { + 'status': True, + 'msg': 'Requirements retrieved successfully', + 'data': result + } + except Exception as e: + return { + 'status': False, + 'msg': 'Failed to retrieve requirements, %s' % str(e) + } + +ret = await publish_product_search(params_kw) +return ret \ No newline at end of file diff --git a/b/product/publish_product_search_first_page.dspy b/b/product/publish_product_search_first_page.dspy new file mode 100644 index 0000000..262b638 --- /dev/null +++ b/b/product/publish_product_search_first_page.dspy @@ -0,0 +1,83 @@ +async def publish_product_search_first_page(ns={}): + """ + 普通客户查看 + 运营查看自己提交内容 + 运营查看所有用户内容 + :param ns: + :return: + """ + publish_type = ns.get('publish_type') + page_size = int(ns['page_size']) if ns.get('page_size') else 8 + current_page_param = int(ns['current_page']) if ns.get('current_page') else 1 + current_page = (current_page_param - 1) * page_size + to_page = ns.get('to_page') if ns.get('to_page') else 'first_page' + domain_name = ns.get('url_link').split("//")[1].split("/")[0] + company_type = ns.get('company_type') + product_category = ns.get('product_category') + if 'localhost' in domain_name: + domain_name = 'dev.opencomputing.cn' + db = DBPools() + async with db.sqlorContext('kboss') as sor: + try: + ns['del_flg'] = '0' + if to_page == 'first_page': + count_sql = """SELECT COUNT(*) AS total_count FROM user_publish_product WHERE domain_name = '%s' AND first_page = '1' AND audit_status = 'approved' AND del_flg = '0' AND publish_type = '%s' ORDER BY create_at DESC;""" % (domain_name, publish_type) + find_sql = """SELECT upp.* FROM user_publish_product AS upp INNER JOIN user_publish_product_category AS uppc ON upp.product_category LIKE uppc.id WHERE upp.domain_name = '%s' AND upp.first_page = '1' AND upp.audit_status = 'approved' AND upp.del_flg = '0' AND upp.publish_type = '%s' ORDER BY uppc.priority ASC, upp.create_at DESC LIMIT %s OFFSET %s;""" % (domain_name, publish_type, page_size, current_page) + elif to_page == 'square' and product_category: + count_sql = """SELECT COUNT(*) AS total_count FROM user_publish_product WHERE domain_name = '%s' AND product_category LIKE """ % domain_name + """'%%""" + product_category + """%%'""" + """ AND audit_status = 'approved' AND del_flg = '0' AND publish_type = '%s' ORDER BY create_at DESC;""" % publish_type + find_sql = """SELECT * FROM user_publish_product WHERE domain_name = '%s' AND product_category LIKE """ % domain_name + """'%%""" + product_category + """%%'""" + """ AND audit_status = 'approved' AND del_flg = '0' AND publish_type = '%s' ORDER BY create_at DESC LIMIT %s OFFSET %s;""" % (publish_type, page_size, current_page) + elif to_page == 'square': + count_sql = """SELECT COUNT(*) AS total_count FROM user_publish_product WHERE domain_name = '%s' AND audit_status = 'approved' AND del_flg = '0' AND publish_type = '%s' ORDER BY create_at DESC;""" % (domain_name, publish_type) + find_sql = """SELECT * FROM user_publish_product WHERE domain_name = '%s' AND audit_status = 'approved' AND del_flg = '0' AND publish_type = '%s' ORDER BY create_at DESC LIMIT %s OFFSET %s;""" % (domain_name, publish_type, page_size, current_page) + else: + count_sql = '' + find_sql = '' + + total_count = (await sor.sqlExe(count_sql, {}))[0]['total_count'] + result = await sor.sqlExe(find_sql, {}) + category_all = await sor.R('user_publish_product_category', {}) + product_dic = {} + for res in result: + # 公司类别筛选 + if company_type: + list1 = [item.strip() for item in company_type.split(',')] + list2 = [item.strip() for item in res['company_type'].split(',')] + if not bool(set(list1) & set(list2)): + continue + + res['img'] = 'https://' + domain_name + '/idfile?path=' + res['img'] + + # 电话和邮箱模糊化处理 + if res.get('phone_number'): + res['phone_number'] = res['phone_number'][:3] + '****' + res['phone_number'][7:] + else: + res['phone_number'] = '198****8601' + + if res.get('email'): + res['email'] = res['email'][:2] + '****' + res['email'][6:] + else: + res['email'] = 'kawa@****.com' + + category_id = res['product_category'].split(',')[0] + category_name_li = [item['product_category'] for item in category_all if item['id'] == category_id] + category_name = category_name_li[0] if category_name_li else '其他' + if product_dic.get(category_name): + product_dic[category_name].append(res) + else: + product_dic[category_name] = [res] + product_list = [] + for key, value in product_dic.items(): + product_list.append({'id': uuid(), 'name': key, 'total_count': total_count, 'page_size': page_size, 'current_page': current_page_param, 'product_list': value}) + return { + 'status': True, + 'msg': 'Requirements retrieved successfully', + 'data': product_list + } + except Exception as e: + return { + 'status': False, + 'msg': 'Failed to retrieve requirements, %s' % str(e) + } + +ret = await publish_product_search_first_page(params_kw) +return ret \ No newline at end of file diff --git a/b/product/requirement_add.dspy b/b/product/requirement_add.dspy new file mode 100644 index 0000000..10571fc --- /dev/null +++ b/b/product/requirement_add.dspy @@ -0,0 +1,72 @@ +async def requirement_add(ns={}): + if ns.get('userid'): + userid = ns.get('userid') + else: + userid = await get_user() + db = DBPools() + async with db.sqlorContext('kboss') as sor: + # 区分运营和普通客户 + user_list = await sor.R('users', {'id': userid}) + if not user_list: + return { + 'status': False, + 'msg': '没有找到匹配的用户' + } + orgid = user_list[0]['orgid'] + domain_name = ns.get('url_link').split("//")[1].split("/")[0] + if 'localhost' in domain_name: + domain_name = 'dev.opencomputing.cn' + + product_category = ns.get('product_category') + company_type = ns.get('company_type') + ns_dic = { + "id": uuid(), + "orgid": orgid, + "domain_name": domain_name, + "requirement_name": ns.get("requirement_name"), + "product_category": product_category, + "company_name": ns.get("company_name"), + "company_type": json.dumps(company_type) if isinstance(company_type, list) else company_type, + "contact_person": ns.get("contact_person"), + "job_title": ns.get("job_title"), + "phone_number": ns.get("phone_number"), + "email": ns.get("email"), + "cpu": ns.get("cpu"), + "memory": ns.get("memory"), + "gpu": ns.get("gpu"), + "sys_disk": ns.get("sys_disk"), + "data_disk": ns.get("data_disk"), + "net_card": ns.get("net_card"), + "price": ns.get("price"), + "priority": ns.get("priority") if ns.get("priority") else 1, + "status": ns.get("status") if ns.get("status") else '0', + "title": ns.get("title"), + "label": ns.get("label"), + "first_page": ns.get("first_page") if ns.get("first_page") else '0', + "requirement_summary": ns.get("requirement_summary"), + "related_parameters": ns.get("related_parameters"), + "application_scenario": ns.get("application_scenario"), + "audit_status": ns.get('audit_status', 'pending'), + } + + user_role = await get_user_role({'userid': userid, 'sor': sor}) + # 非客户角色不需要审批 + if user_role != '客户': + ns['status'] = '1' + ns_dic['audit_status'] = 'approved' + ns_dic['first_page'] = '1' + + try: + await sor.C('user_publish_requirement', ns_dic) + return { + 'status': True, + 'msg': 'Requirement created successfully' + } + except Exception as e: + return { + 'status': False, + 'msg': 'Failed to create requirement, %s' % str(e) + } + +ret = await requirement_add(params_kw) +return ret \ No newline at end of file diff --git a/b/product/requirement_delete.dspy b/b/product/requirement_delete.dspy new file mode 100644 index 0000000..883168e --- /dev/null +++ b/b/product/requirement_delete.dspy @@ -0,0 +1,21 @@ +async def requirement_delete(ns={}): + ns_dic = { + 'id': ns.get('id'), + 'del_flg': '1' + } + db = DBPools() + async with db.sqlorContext('kboss') as sor: + try: + await sor.U('user_publish_requirement', ns_dic) + return { + 'status': True, + 'msg': 'Requirement delete successfully' + } + except Exception as e: + return { + 'status': False, + 'msg': 'Failed to delete requirement, %s' % str(e) + } + +ret = await requirement_delete(params_kw) +return ret \ No newline at end of file diff --git a/b/product/requirement_search.dspy b/b/product/requirement_search.dspy new file mode 100644 index 0000000..b48a8b4 --- /dev/null +++ b/b/product/requirement_search.dspy @@ -0,0 +1,93 @@ +async def get_user_role(ns={}): + sor = ns['sor'] + # get role + ns['del_flg'] = '0' + res_role = await sor.R('userrole', ns) + if res_role: + user_role = res_role[0] + else: + return { + "status": False, + "msg": "userrole table, user id can not find..." + } + roleid = user_role.get('roleid') + # get role name + role_name = await sor.R('role', {'id': roleid}) + if role_name: + role = role_name[0].get('role') + else: + return { + "status": False, + "msg": "role table, can not get role name" + } + return role + +async def requirement_search(ns={}): + """ + 普通客户查看 + 运营查看自己提交内容 + 运营查看所有用户内容 + :param ns: + :return: + """ + offset = ns['offset'] + flag = ns.get('flag') + + if ns.get('userid'): + userid = ns.get('userid') + else: + userid = await get_user() + db = DBPools() + async with db.sqlorContext('kboss') as sor: + # 区分运营和普通客户 + user_list = await sor.R('users', {'id': userid}) + if not user_list: + return { + 'status': False, + 'msg': '没有找到匹配的用户' + } + orgid = user_list[0]['orgid'] + org_parentid_li = await sor.R('organization', {'id': orgid}) + org_parentid = org_parentid_li[0]['parentid'] + user_role = await get_user_role({'userid': userid, 'sor': sor}) + try: + # 非客户角色 + if user_role != '客户': + ns['del_flg'] = '0' + + # 业主机构角色并且是只查看业主机构自己 flag==single + if orgid == 'mIWUHBeeDM8mwAFPIQ8pS' and flag == 'single': + find_sql = """SELECT upr.* FROM user_publish_requirement AS upr LEFT JOIN organization AS org ON upr.orgid = org.id + WHERE org.parentid IS NULL AND upr.del_flg = '0' ORDER BY upr.create_at DESC LIMIT 20 OFFSET %s;""" % offset + # 业主机构角色并且是查看所有(包括业主机构自己) flag!=single + elif orgid == 'mIWUHBeeDM8mwAFPIQ8pS': + find_sql = """SELECT upr.* FROM user_publish_requirement AS upr LEFT JOIN organization AS org ON upr.orgid = org.id + WHERE org.id = '%s' or org.parentid = '%s' AND org.org_type != '1' AND upr.del_flg = '0' ORDER BY upr.create_at DESC LIMIT 20 OFFSET %s;""" % (orgid, orgid, offset) + # 其他机构非用户角色 只查看自己 + elif flag == 'single': + find_sql = """SELECT upr.* FROM user_publish_requirement AS upr LEFT JOIN organization AS org ON upr.orgid = org.id + WHERE org.id = '%s' AND upr.del_flg = '0' ORDER BY upr.create_at DESC LIMIT 20 OFFSET %s;""" % (orgid, offset) + # 其他机构非用户角色查看所有 + else: + find_sql = """SELECT upr.* FROM user_publish_requirement AS upr LEFT JOIN organization AS org ON upr.orgid = org.id + WHERE (org.id = '%s' or org.parentid = '%s') AND upr.del_flg = '0' ORDER BY upr.create_at DESC LIMIT 20 OFFSET %s;""" % (orgid, orgid, offset) + # 客户角色 + else: + ns['del_flg'] = '0' + ns['orgid'] = user_list[0]['id'] + find_sql = """SELECT * FROM user_publish_requirement WHERE orgid = '%s' AND del_flg = '0' ORDER BY create_at DESC LIMIT 20 OFFSET %s;""" % (orgid, offset) + + result = await sor.sqlExe(find_sql, {}) + return { + 'status': True, + 'msg': 'Requirements retrieved successfully', + 'data': result + } + except Exception as e: + return { + 'status': False, + 'msg': 'Failed to retrieve requirements, %s' % str(e) + } + +ret = await requirement_search(params_kw) +return ret \ No newline at end of file diff --git a/b/product/requirement_update.dspy b/b/product/requirement_update.dspy new file mode 100644 index 0000000..40db1a5 --- /dev/null +++ b/b/product/requirement_update.dspy @@ -0,0 +1,23 @@ +async def requirement_update(ns={}): + product_category = ns.get('product_category') + company_type = ns.get('company_type') + if product_category: + ns['product_category'] = json.dumps(product_category) if isinstance(product_category, list) else product_category + if company_type: + ns['company_type'] = json.dumps(company_type) if isinstance(company_type, list) else company_type + db = DBPools() + async with db.sqlorContext('kboss') as sor: + try: + await sor.U('user_publish_requirement', ns) + return { + 'status': True, + 'msg': 'Requirement updated successfully' + } + except Exception as e: + return { + 'status': False, + 'msg': 'Failed to update requirement, %s' % str(e) + } + +ret = await requirement_update(params_kw) +return ret \ No newline at end of file diff --git a/b/reseller/get_ipc_logo.dspy b/b/reseller/get_ipc_logo.dspy index 0525298..512062a 100644 --- a/b/reseller/get_ipc_logo.dspy +++ b/b/reseller/get_ipc_logo.dspy @@ -60,7 +60,7 @@ async def get_ipc_logo(ns={}): # [{'name': '地址', 'value': '北京市朝阳区农展馆南路13号瑞辰国际'},{'name': '电话', 'value': '400-6150805 010-65917875'},{'name': '邮箱', 'value': 'Open-computing@kaiyuancloud.cn'},{'name': 'IPC备案号', 'value': '京ICP备2022001945号-2'},{'name': '版权所有', 'value': '@kaiyuanyun 2023'},{'name': '京公网安备', 'value': '11010502054007'},{'name': '经营许可证', 'value': '京B2-20232313'}] yezhu = json.loads(domain_res.replace("'", '"')) if not isinstance(domain_res, dict) else domain_res yezhu['domain_name'] = domain_url - if 'ncmatch' in domain_url or '9527' in domain_url: + if 'ncmatch' in domain_url or '9527' in domain_url or 'opencomputing' in domain_url: yezhu['logo'] = "https://www.kaiyuancloud.cn/idfile?path=logo_ncmatch.png" yezhu['additional_msg'] = { "home": { @@ -69,8 +69,8 @@ async def get_ipc_logo(ns={}): "adress": "北京市石景山区和平西路60号院1号楼11层1101-30", "footerTitle": "开元数智(北京)科技有限公司", 'qrCode': 'https://www.kaiyuancloud.cn/idfile?path=firstpagehot/ncmatch_inquiry.jpg', - 'footer_info': '京ICP备2022001945号-4 开元数智(北京)科技有限公司 版权所有 @kaiyuanyun 2023', - "copyright": "@kaiyuanyun 2023", + 'footer_info': '京ICP备2022001945号-4 开元数智(北京)科技有限公司', + "copyright": "", "domain_name": "ncmatch.cn", "email": "Open-computing@kaiyuancloud.cn", "license": "2022001945号-4", diff --git a/f/web-kboss/package.json b/f/web-kboss/package.json index c24521c..77b4fa5 100644 --- a/f/web-kboss/package.json +++ b/f/web-kboss/package.json @@ -51,6 +51,7 @@ "uuid": "^9.0.0", "vue": "2.6.10", "vue-count-to": "^1.0.13", + "vue-cropper": "^0.6.5", "vue-device-detector": "^1.1.6", "vue-infinite-scroll": "^2.0.2", "vue-router": "^3.0.2", diff --git a/f/web-kboss/src/api/ncmatch/index.js b/f/web-kboss/src/api/ncmatch/index.js new file mode 100644 index 0000000..d65504d --- /dev/null +++ b/f/web-kboss/src/api/ncmatch/index.js @@ -0,0 +1,91 @@ +import request from "@/utils/request"; +//获取商品分类 +export function reqGetProductCategorySearch(data) { + return request({ + url: '/product/product_category_search.dspy', + method: 'post', + headers: { + 'Content-Type': 'application/json' + }, + data + }) +} +//添加产品 publish_product_add +export function reqPublishProductAdd(data) { + return request({ + url: '/product/publish_product_add.dspy', + method: 'post', + headers: { 'Content-Type': 'multipart/form-data' }, + data + }) +} +//获公司类型 /product/company_category_search.dspy +export function reqCompanyCategorySearch(data) { + return request({ + url: '/product/company_category_search.dspy', + method: 'post', + headers: { 'Content-Type': 'application/json' }, + data + }) +} + +//获取全部产品/product/publish_product_search_first_page.dspy +export function reqPublishProductSearchFirstPage(data) { + return request({ + url: '/product/publish_product_search_first_page.dspy', + method: 'post', + headers: { 'Content-Type': 'application/json' }, + data + }) +} + +//算力供需广场 获取列表 +export function reqGetSupplyAndDemandSquareList(data) { + return request({ + url: '/product/publish_product_search_first_page.dspy', + method: 'post', + headers: { 'Content-Type': 'application/json' }, + data + }) +} + +//获取商品详情 +export function reqGetProductDetail(data) { + return request({ + url: '/product/publish_product_search_detail.dspy', + method: 'post', + headers: { 'Content-Type': 'application/json' }, + data + }) +} +//提交审批 ///user/enterprise_audit_info_add.dspy +export function reqApproveUser(data){ + return request({ + url: '/user/enterprise_audit_info_add.dspy', + method: 'post', + headers: { 'Content-Type': 'multipart/form-data' }, + data + }) +} + +//获取菜单ncmatch菜单 menu + +export function reqNcMatchMenu(data){ + return request({ + url: '/product/homepage_category_tree_search.dspy', + method: 'post', + headers: { 'Content-Type': 'application/json' }, + data + + }) +} +//运营查找商品|需求 +export function reqSearchByMangement(data){ + return request({ + url: '/product/publish_product_search.dspy', + method: 'post', + headers: { 'Content-Type': 'application/json' }, + data + + }) +} diff --git a/f/web-kboss/src/permission.js b/f/web-kboss/src/permission.js index c3da247..fe87c84 100644 --- a/f/web-kboss/src/permission.js +++ b/f/web-kboss/src/permission.js @@ -7,6 +7,7 @@ import {getToken} from "@/utils/auth"; // get token from cookie import getPageTitle from "@/utils/get-page-title"; import {asyncRoutes, constantRoutes} from "@/router"; import Layout from "@/layout"; +import {getHomePath} from "@/views/setting/tools"; NProgress.configure({showSpinner: false}); // NProgress Configuration @@ -74,6 +75,15 @@ router.beforeEach(async (to, from, next) => { const userid = sessionStorage.getItem("userId"); const user = sessionStorage.getItem("user"); const auths = sessionStorage.getItem("auths"); + const homePath =getHomePath() + if (to.path === homePath) { + next(); // 如果已经是目标路径,直接放行 + NProgress.done(); + return; + } + console.log("homePath",homePath); + // const homePath ='/homePage/index'; + // const homePath ='/ncmatchHome/index'; const hasRoutes = JSON.parse(sessionStorage.getItem("routes")) && JSON.parse(sessionStorage.getItem("routes")).length @@ -86,8 +96,8 @@ router.beforeEach(async (to, from, next) => { NProgress.done(); return } - if (to.path === '/homePage') { - next('/homePage/index'); + if (to.path === '/homePage'||to.path === '/ncmatchHome') { + next(homePath); NProgress.done(); return } @@ -96,7 +106,7 @@ router.beforeEach(async (to, from, next) => { // NProgress.done(); // return // } - if (to.path.includes("/kyyForm") || to.path.includes("/screen") || to.path.includes("/beforeLogin") || to.path.includes("/wxDetailPage") || to.path.includes("/wxPage") || to.path.includes("/login") || to.path.includes("/homePage") || to.path.includes("/registrationPage") || to.path.includes("/payPage") || to.path.includes("/paySuccess") || to.path.includes("/homePageImage")) { + if (to.path.includes("/ncmatchHome")||to.path.includes("/kyyForm") || to.path.includes("/screen") || to.path.includes("/beforeLogin") || to.path.includes("/wxDetailPage") || to.path.includes("/wxPage") || to.path.includes("/login") || to.path.includes("/homePage") || to.path.includes("/registrationPage") || to.path.includes("/payPage") || to.path.includes("/paySuccess") || to.path.includes("/homePageImage")) { console.log("to", to) try { if (to.path.includes("/beforeLogin") || to.path.includes("/registrationPage")) { @@ -125,7 +135,8 @@ router.beforeEach(async (to, from, next) => { } } // next(`/login?redirect=${to.path}`); - next('/homePage/index') + console.log("路由执行了2@@@") + next(homePath) // next(`/beforeLogin`); // console.log("111行被打印了") NProgress.done(); @@ -154,7 +165,7 @@ router.beforeEach(async (to, from, next) => { // console.log(error); Message.error(error || "Has Error"); // next(`/login?redirect=${to.path}`); - next('/homePage/index') + next(homePath) // console.log("137行被打印了") NProgress.done(); } diff --git a/f/web-kboss/src/router/index.js b/f/web-kboss/src/router/index.js index afcb984..657b6da 100644 --- a/f/web-kboss/src/router/index.js +++ b/f/web-kboss/src/router/index.js @@ -1,19 +1,8 @@ import Vue from "vue"; import Router from "vue-router"; import store from "@/store"; - -Vue.use(Router); - -// const originalPush = Router.prototype.push - -// Router.prototype.push = function push(location) { -// return originalPush.call(this, location).catch(err => err)} - /* Layout */ import Layout from "@/layout"; -import {loginUserAPI} from "@/api/login"; -import {Message} from "element-ui"; -import {logger} from "runjs/lib/common"; import GpuProduct from "@/views/product/productHome/capitalOnline/productItem/GpuProduct/index.vue"; import CreatePrivateNet from "@/views/product/productHome/capitalOnline/Net/privateNet/createPrivateNet/index.vue"; import ShowPrivateNet from "@/views/product/productHome/capitalOnline/Net/privateNet/showPrivateNet/index.vue"; @@ -29,6 +18,13 @@ import SecurityGroupDetail import ShowGpu from "@/views/product/productHome/capitalOnline/productItem/GpuProduct/ShowGpu/index.vue"; import ShowEip from "@/views/product/productHome/capitalOnline/Net/Eip/showEip/index.vue"; import CreateEip from "@/views/product/productHome/capitalOnline/Net/Eip/createEip/index.vue"; +import { getHomePath } from '@/views/setting/tools' +Vue.use(Router); + +// const originalPush = Router.prototype.push + +// Router.prototype.push = function push(location) { +// return originalPush.call(this, location).catch(err => err)} // import nestedRouter from '@/router/modules/nested' /** * Note: sub-menu only appear when route children.length >= 1 @@ -68,7 +64,28 @@ export const constantRoutes = [ title: 'beforeLogin', component: () => import('@/views/beforeLogin/index.vue'), hidden: true - }, { + }, + { + hidden: true, + alwaysShow: true, + path: "/productMangement", + component: Layout, + name: "productMangement", + redirect: "/productMangement/index", + meta: { fullPath: "/productMangement", title: "商品管理", noCache: true, icon: 'el-icon-s-home' }, + children: [ + { + path: "index", + component: () => import("@/views/customer/productMangement/productList/index.vue"), + name: "productList", + meta: { title: "商品清单", fullPath: "/productMangement/index" }, + }, + + ] + }, + + + { path: '/wxPage', name: 'wxPage', title: '热门产品', @@ -157,70 +174,94 @@ export const constantRoutes = [ component: () => import("@/views/registrationPage/indexNew.vue"), name: "registrationPage", hidden: true, - meta: {title: "注册"}, + meta: { title: "注册" }, }, { path: "/registrationPage/mobile", component: () => import("@/views/registrationPageMobile/index.vue"), name: "registrationPage", hidden: true, - meta: {title: "注册"}, + meta: { title: "注册" }, + }, + { + hidden: true, + path: "/ncmatchHome", + component: () => import("@/views/homePage/ncmatch/index.vue"), + name: "ncmatchHome", + redirect: "/ncmatchHome/index", + meta: { fullPath: "/ncmatchHome/index", title: "官网首页", noCache: true, icon: 'el-icon-s-home' }, + children: [ + { + path: "index", + component: () => import("@/views/homePage/ncmatch/mainPage/index.vue"), + name: "ncmatchPageIndex", + hidden: true, + meta: { title: "首页", fullPath: "/ncmatch/mainPage/index" }, + }, + { + path: "supplyAndDemandSquare", + component: () => import("@/views/homePage/ncmatch/supplyAndDemandSquare/index.vue"), + name: "supplyAndDemandSquare", + hidden: true, + meta: { title: "算力供需广场", fullPath: "/ncmatch/supplyAndDemandSquare" }, + }, + ] }, { path: "/homePage", component: () => import("@/views/homePage/indexLast.vue"), name: "homePage", hidden: true, - meta: {title: "首页", noCache: true}, + meta: { title: "首页", noCache: true }, children: [{ path: "index", component: () => import("@/views/homePage/mainPage/index.vue"), name: "homePageIndex", hidden: true, - meta: {title: "首页", onCache: true}, + meta: { title: "首页", onCache: true }, }, { path: "detail", component: () => import("@/views/homePage/detail/index.vue"), name: "detail", hidden: true, - meta: {title: "详情", onCache: true}, + meta: { title: "详情", onCache: true }, + }, + { + path: "new", + component: () => import("@/views/homePage/components/topBox/new/index.vue"), + name: "new", + hidden: true, + meta: { title: "政策解读", onCache: true }, + }, + { + path: "sale", + component: () => import("@/views/homePage/components/topBox/sale/index.vue"), + name: "sale", + hidden: true, + meta: { title: "促销活动", onCache: true }, }, - { - path: "new", - component: () => import("@/views/homePage/components/topBox/new/index.vue"), - name: "new", - hidden: true, - meta: {title: "政策解读", onCache: true}, - }, - { - path: "sale", - component: () => import("@/views/homePage/components/topBox/sale/index.vue"), - name: "sale", - hidden: true, - meta: {title: "促销活动", onCache: true}, - }, - { - path: "hospital", - component: () => import("@/views/homePage/solve/hospital/index.vue"), - name: "hospital", - hidden: true, - meta: {title: "灵医智能体"}, - }, { - path: "customerService", - component: () => import("@/views/homePage/solve/customerService/index.vue"), - name: "customerService", - hidden: true, - meta: {title: "客悦"}, + { + path: "hospital", + component: () => import("@/views/homePage/solve/hospital/index.vue"), + name: "hospital", + hidden: true, + meta: { title: "灵医智能体" }, + }, { + path: "customerService", + component: () => import("@/views/homePage/solve/customerService/index.vue"), + name: "customerService", + hidden: true, + meta: { title: "客悦" }, - }, { - path: "about", - component: () => import("@/views/homePage/about/index.vue"), - name: "about", - hidden: true, - meta: {title: "关于"}, + }, { + path: "about", + component: () => import("@/views/homePage/about/index.vue"), + name: "about", + hidden: true, + meta: { title: "关于" }, - }] + }] }, // { // path: "/homePage/mobile", @@ -235,19 +276,19 @@ export const constantRoutes = [ component: () => import("@/views/homePageImage/index"), name: "homePageImage", hidden: true, - meta: {title: "备案信息"}, + meta: { title: "备案信息" }, }, { path: "/paySuccess", component: () => import("@/views/paySuccess/index"), name: "paySuccess", hidden: true, - meta: {title: "支付成功"}, + meta: { title: "支付成功" }, }, { path: "/payPage", component: () => import("@/views/payPage/index"), name: "payPage", hidden: true, - meta: {title: "立即支付页面"}, + meta: { title: "立即支付页面" }, }, { path: "/auth-redirect", component: () => import("@/views/login/auth-redirect"), hidden: true, }, { @@ -272,45 +313,46 @@ export const asyncRoutes = [ // name: 'productHome', // meta: {title: "概览", fullPath: "/productHome", noCache: true} // }, + { - path: "/homePage", + path: getHomePath() == '/ncmatchHome/index' ? "/ncmatchHome" : "/homePage", component: () => import("@/views/homePage/indexLast.vue"), name: "homePage", redirect: "/homePage/index", - meta: {fullPath: "/homePage/index", title: "官网首页", noCache: true, icon: 'el-icon-s-home'}, + meta: { fullPath: "/homePage/index", title: "官网首页", noCache: true, icon: 'el-icon-s-home' }, children: [ { path: "index", component: () => import("@/views/homePage/mainPage/index.vue"), name: "homePageIndex", hidden: true, - meta: {title: "首页", fullPath: "/homePage/index"}, + meta: { title: "首页", fullPath: "/homePage/index" }, }, { path: "detail", component: () => import("@/views/homePage/detail/index.vue"), name: "detail", hidden: true, - meta: {title: "详情", cache: true}, + meta: { title: "详情", cache: true }, }, { path: "hospital", component: () => import("@/views/homePage/solve/hospital/index.vue"), name: "hospital", hidden: true, - meta: {title: "灵医智能体"}, + meta: { title: "灵医智能体" }, }, { path: "customerService", component: () => import("@/views/homePage/solve/customerService/index.vue"), name: "customerService", hidden: true, - meta: {title: "客悦"}, + meta: { title: "客悦" }, }, { path: "about", component: () => import("@/views/homePage/about/index.vue"), name: "about", hidden: true, - meta: {title: "关于"}, + meta: { title: "关于" }, }] }, @@ -319,370 +361,370 @@ export const asyncRoutes = [ name: 'product', component: Layout, redirect: "/product/productHome", - meta: {title: "", fullPath: "/product", noCache: true, icon: "el-icon-s-platform"}, + meta: { title: "", fullPath: "/product", noCache: true, icon: "el-icon-s-platform" }, children: [{ path: "productHome", component: () => import('@/views/product/productHome/productIndex/index.vue'), name: 'baiduProduct', - meta: {title: "概览", fullPath: "/product/productHome", noCache: true} + meta: { title: "概览", fullPath: "/product/productHome", noCache: true } }, - // { - // path: '/external-link', - // name: 'External Link', - // // 使用 meta 字段来标记这是一个外部链接 - // meta: {title: "首页", external: true, url: 'https://www.baidu.com'}, - // }, - // { - // - // path: "productHome", - // component: () => import('@/views/product/productHome/productIndex/index.vue'), - // name: 'baiduProduct', - // meta: {title: "首页", fullPath: "/product/productHome", noCache: true} - // }, - { - hidden: true, - path: "baiduProduct", - component: () => import('@/views/product/productHome/baiduProduct/index.vue'), - name: 'baiduProduct', - meta: {title: "百度智能云", fullPath: "/product/baiduProduct", noCache: true} - }, { - hidden: true, - path: "productHome/k8s/createK8s", - component: () => import('@/views/product/productHome/k8s/createK8s/index.vue'), - name: 'superComputingDomestic', - meta: {title: "容器云", fullPath: "/product/productHome/k8s/createK8s", noCache: true} - }, // { - // - // path: "jdProduct", - // component: () => import('@/views/product/productHome/jdProduct/index.vue'), - // name: 'jdProduct', - // meta: {title: "京东云", fullPath: "/product/jdProduct"} - // }, - { - hidden: true, - path: "productHome", - name: 'productHome', - component: () => import("@/views/product/productHome/productIndex/index.vue"), - meta: { - title: "产品", icon: "el-icon-s-data", fullPath: "/product/productHome/productIndex", - }, - }, { - hidden: true, - path: "superComputingCommon", - component: () => import('@/views/product/productHome/superComputingCommon/index.vue'), - name: 'superComputingCommon', - meta: {title: "通用计算", fullPath: "/product/superComputingCommon", noCache: true} - }, { - hidden: true, - path: "newPage", - component: () => import('@/views/product/productHome/productIndex/newPage'), - name: 'newPage', - meta: {title: "AI智算", fullPath: "/product/superComputingCommon", noCache: true} - }, { - hidden: true, - path: "superComputingDomestic", - component: () => import('@/views/product/productHome/superComputingDomestic/index.vue'), - name: 'superComputingDomestic', - meta: {title: "国产计算", fullPath: "/product/superComputingDomestic", noCache: true} - }, { - hidden: true, - path: "productHome/k8s/createK8s", - component: () => import('@/views/product/productHome/k8s/createK8s/index.vue'), - name: 'superComputingDomestic', - meta: {title: "k8s", fullPath: "/product/productHome/k8s/createK8s", noCache: true} + // { + // path: '/external-link', + // name: 'External Link', + // // 使用 meta 字段来标记这是一个外部链接 + // meta: {title: "首页", external: true, url: 'https://www.baidu.com'}, + // }, + // { + // + // path: "productHome", + // component: () => import('@/views/product/productHome/productIndex/index.vue'), + // name: 'baiduProduct', + // meta: {title: "首页", fullPath: "/product/productHome", noCache: true} + // }, + { + hidden: true, + path: "baiduProduct", + component: () => import('@/views/product/productHome/baiduProduct/index.vue'), + name: 'baiduProduct', + meta: { title: "百度智能云", fullPath: "/product/baiduProduct", noCache: true } + }, { + hidden: true, + path: "productHome/k8s/createK8s", + component: () => import('@/views/product/productHome/k8s/createK8s/index.vue'), + name: 'superComputingDomestic', + meta: { title: "容器云", fullPath: "/product/productHome/k8s/createK8s", noCache: true } + }, // { + // + // path: "jdProduct", + // component: () => import('@/views/product/productHome/jdProduct/index.vue'), + // name: 'jdProduct', + // meta: {title: "京东云", fullPath: "/product/jdProduct"} + // }, + { + hidden: true, + path: "productHome", + name: 'productHome', + component: () => import("@/views/product/productHome/productIndex/index.vue"), + meta: { + title: "产品", icon: "el-icon-s-data", fullPath: "/product/productHome/productIndex", }, + }, { + hidden: true, + path: "superComputingCommon", + component: () => import('@/views/product/productHome/superComputingCommon/index.vue'), + name: 'superComputingCommon', + meta: { title: "通用计算", fullPath: "/product/superComputingCommon", noCache: true } + }, { + hidden: true, + path: "newPage", + component: () => import('@/views/product/productHome/productIndex/newPage'), + name: 'newPage', + meta: { title: "AI智算", fullPath: "/product/superComputingCommon", noCache: true } + }, { + hidden: true, + path: "superComputingDomestic", + component: () => import('@/views/product/productHome/superComputingDomestic/index.vue'), + name: 'superComputingDomestic', + meta: { title: "国产计算", fullPath: "/product/superComputingDomestic", noCache: true } + }, { + hidden: true, + path: "productHome/k8s/createK8s", + component: () => import('@/views/product/productHome/k8s/createK8s/index.vue'), + name: 'superComputingDomestic', + meta: { title: "k8s", fullPath: "/product/productHome/k8s/createK8s", noCache: true } + }, - // { - // hidden: true, - // path: "jdProduct", - // component: () => import('@/views/product/productHome/jdProduct/index.vue'), - // name: 'jdProduct', - // meta: {title: "京东产品列表", fullPath: "/product/jdProduct", noCache: true} - // }, - { - hidden: true, - path: "capProduct", - component: () => import('@/views/product/productHome/capitalOnline/index.vue'), - name: 'capProduct', - meta: {title: "集群节点一产品列表", fullPath: "/product/productHome/capitalOnlineTwo", noCache: true}, - children: [{ - path: "capProductTwo", - component: () => import('@/views/product/productHome/capitalOnline/capitalOnlineTwo/index.vue'), - name: 'capProductTwo', - meta: {title: "集群节点一产品", fullPath: "/product/productHome/capitalOnlineTwo", noCache: true}, - }, { - path: "gpuProduct", - component: () => import('@/views/product/productHome/capitalOnline/productItem/GpuProduct/index.vue'), - name: 'gpuProduct', - meta: { - title: "GPU产品", fullPath: "/product/productHome/capitalOnline/productItem/GpuProduct", noCache: true - }, - }] + // { + // hidden: true, + // path: "jdProduct", + // component: () => import('@/views/product/productHome/jdProduct/index.vue'), + // name: 'jdProduct', + // meta: {title: "京东产品列表", fullPath: "/product/jdProduct", noCache: true} + // }, + { + hidden: true, + path: "capProduct", + component: () => import('@/views/product/productHome/capitalOnline/index.vue'), + name: 'capProduct', + meta: { title: "集群节点一产品列表", fullPath: "/product/productHome/capitalOnlineTwo", noCache: true }, + children: [{ + path: "capProductTwo", + component: () => import('@/views/product/productHome/capitalOnline/capitalOnlineTwo/index.vue'), + name: 'capProductTwo', + meta: { title: "集群节点一产品", fullPath: "/product/productHome/capitalOnlineTwo", noCache: true }, }, { - path: 'gpu', - name: 'Gpu', - title: '4090配置A', - meta: {title: '4090配置A', noCache: true, fullpath: '/gpu'}, - component: () => import('@/views/product/productHome/capitalOnline/Gpu/index.vue'), - children: [{ - path: 'showGpu', - name: 'showGpu', - component: ShowGpu, - meta: {title: 'Gpu', noCache: true, fullpath: '/gpu/showGpu'}, - }, { - path: 'createGpu', - name: 'createGpu', - component: GpuProduct, - meta: {title: '创建实例', noCache: true, fullpath: '/gpu/gpuIndex'}, - }, { - path: 'securityGroup', - name: 'securityGroup', - component: SecurityGroup, - meta: {title: '安全组', noCache: true, fullpath: '/net/securityGroup'}, - }, { - path: 'createSecurityGroup', - name: 'createSecurityGroup', - component: CreateSecurityGroup, - meta: {title: '创建安全组', noCache: true, fullpath: '/net/createSecurityGroup'}, - }, { - path: 'securityGroupDetail', - name: 'securityGroupDetail', - component: SecurityGroupDetail, - meta: {title: '安全组详情', noCache: true, fullpath: '/net/securityGroupDetail'}, - },], - hidden: true - }, { - path: 'net', - name: 'net', - title: '网络', - meta: {title: '私有网络', noCache: true, fullpath: '/net'}, - component: () => import('@/views/product/productHome/capitalOnline/Net/index.vue'), - children: [{ - path: 'netIndex', - name: 'netIndex', - component: CreatePrivateNet, - meta: {title: '创建私有网络', noCache: true, fullpath: '/net/netIndex'}, - }, - - { - path: 'showPrivateNet', - name: 'showPrivateNet', - component: ShowPrivateNet, - meta: {title: '网络列表', noCache: true, fullpath: '/net/showPrivateNet'}, - }, { - path: 'privateNetDetail', - name: 'privateNetDetail', - component: PrivateNetDetail, - meta: {title: '私有网络详情', noCache: true, fullpath: '/net/privateNetDetail'}, - }, { - path: 'childCreate', - name: 'childCreate', - component: CreateChildNet, - meta: {title: '创建子网', noCache: true, fullpath: '/net/childCreate'}, - }, { - path: 'showChildNet', - name: 'showChildNet', - component: ShowChildNet, - meta: {title: '展示子网', noCache: true, fullpath: '/net/showChildNet'}, - }, { - path: 'childDetail', - name: 'childDetail', - component: ChildDetail, - meta: {title: '子网详情', noCache: true, fullpath: '/net/childDetail'}, - }, { - path: 'showUEip', - name: 'showUEip', - component: ShowEip, - meta: {title: 'EIP列表', noCache: true, fullpath: '/net/showUEip'}, - }, { - path: 'createUEip', - name: 'createUEip', - component: CreateEip, - meta: {title: '创建EIP', noCache: true, fullpath: '/net/createUEip'}, - },], - hidden: true - }, { - hidden: true, - path: "ucloudProduct", - component: () => import('@/views/product/productHome/ucloud/index.vue'), - name: 'ucloudProduct', - meta: {title: "集群节点二产品列表", fullPath: "/product/productHome/ucloud", noCache: true}, - children: [{ - path: "ucloudProductTwo", - component: () => import('@/views/product/productHome/ucloud/ucloudTwo/index.vue'), - name: 'ucloudProductTwo', - meta: {title: "集群节点二产品列表", fullPath: "/product/productHome/ucloud/ucloudTwo", noCache: true}, - }, { - path: "showCloudHost", - component: () => import('@/views/product/productHome/ucloud/showCloudHost/index.vue'), - name: 'showUcloudProduct', - meta: {title: "集群节点二产品", fullPath: "/product/productHome/ucloud/showCloudHost", noCache: true}, - }, { - path: "createCloudHost", - component: () => import('@/views/product/productHome/ucloud/createCloudHost/index.vue'), - name: 'createCloudHost', - meta: {title: "集群节点二-购买", fullPath: "/product/productHome/ucloud/createCloudHost", noCache: true}, - }, { - path: "showFireWall", - component: () => import('@/views/product/productHome/ucloud/fireWall/showFireWall/index.vue'), - name: 'showFireWall', - meta: {title: "防火墙列表", fullPath: "/product/productHome/ucloud/fireWall/showFireWall", noCache: true}, - }, { - path: "detailFireWall", - component: () => import('@/views/product/productHome/ucloud/fireWall/detailFireWall/index.vue'), - name: 'detailFireWall', - meta: {title: "防火墙详情", fullPath: "/product/productHome/ucloud/fireWall/detailFireWall", noCache: true}, - }, { - path: "createUEip", - component: () => import('@/views/product/productHome/ucloud/Eip/createUEip'), - name: 'createUEip', - meta: {title: "创建Eip", fullPath: "/product/productHome/ucloud/Eip/createUEip", noCache: true}, - }, { - path: "showUEip", - component: () => import('@/views/product/productHome/ucloud/Eip/showUEip'), - name: 'showUEip', - meta: {title: "Eip列表", fullPath: "/product/productHome/ucloud/Eip/showUEip", noCache: true}, - },] - }, // { - // hidden: true, - // path: "baiduProduct", - // component: () => import('@/views/product/productHome/baiduProduct/index.vue'), - // name: 'baiduProduct', - // meta: {title: "百度产品列表", fullPath: "/product/baiduProduct", noCache: true} - // }, - { - hidden: true, - path: "baiduProductShow", - component: () => import('@/views/product/productHome/baiduProductShow/index.vue'), - name: 'baiduProductShow', - meta: {title: "资源购买", fullPath: "/product/baiduProductShow", noCache: true,} - }, { - path: "index", name: 'index', hidden: true, component: () => import("@/views/product/index.vue"), meta: { - title: "产品", icon: "el-icon-s-data", fullPath: "/product/index", - }, - }, { - hidden: true, - path: "cloudDatabaseMysql", - component: () => import("@/views/operation/volcanoSystem/cloudDatabaseMysql"), - name: "cloudDatabaseMysql", + path: "gpuProduct", + component: () => import('@/views/product/productHome/capitalOnline/productItem/GpuProduct/index.vue'), + name: 'gpuProduct', meta: { - title: "云数据库 Mysql版", fullPath: "/product/volcanoSystem/cloudDatabaseMysql", + title: "GPU产品", fullPath: "/product/productHome/capitalOnline/productItem/GpuProduct", noCache: true }, + }] + }, { + path: 'gpu', + name: 'Gpu', + title: '4090配置A', + meta: { title: '4090配置A', noCache: true, fullpath: '/gpu' }, + component: () => import('@/views/product/productHome/capitalOnline/Gpu/index.vue'), + children: [{ + path: 'showGpu', + name: 'showGpu', + component: ShowGpu, + meta: { title: 'Gpu', noCache: true, fullpath: '/gpu/showGpu' }, }, { - hidden: true, - path: "cloudDatabaseRedis", - component: () => import("@/views/operation/volcanoSystem/cloudDatabaseRedis"), - name: "cloudDatabaseRedis", - meta: { - title: "缓存数据库 Redis版", fullPath: "/product/volcanoSystem/cloudDatabaseRedis", - }, + path: 'createGpu', + name: 'createGpu', + component: GpuProduct, + meta: { title: '创建实例', noCache: true, fullpath: '/gpu/gpuIndex' }, }, { - hidden: true, - path: "cloudDatabaseMongoDB", - component: () => import("@/views/operation/volcanoSystem/cloudDatabaseMongoDB"), - name: "cloudDatabaseMongoDB", - meta: { - title: "文档数据库 MongoDB 版", fullPath: "/product/volcanoSystem/cloudDatabaseMongoDB", - }, + path: 'securityGroup', + name: 'securityGroup', + component: SecurityGroup, + meta: { title: '安全组', noCache: true, fullpath: '/net/securityGroup' }, + }, { + path: 'createSecurityGroup', + name: 'createSecurityGroup', + component: CreateSecurityGroup, + meta: { title: '创建安全组', noCache: true, fullpath: '/net/createSecurityGroup' }, + }, { + path: 'securityGroupDetail', + name: 'securityGroupDetail', + component: SecurityGroupDetail, + meta: { title: '安全组详情', noCache: true, fullpath: '/net/securityGroupDetail' }, + },], + hidden: true + }, { + path: 'net', + name: 'net', + title: '网络', + meta: { title: '私有网络', noCache: true, fullpath: '/net' }, + component: () => import('@/views/product/productHome/capitalOnline/Net/index.vue'), + children: [{ + path: 'netIndex', + name: 'netIndex', + component: CreatePrivateNet, + meta: { title: '创建私有网络', noCache: true, fullpath: '/net/netIndex' }, }, { - hidden: true, - path: "cloudServer", - component: () => import("@/views/operation/volcanoSystem/cloudServer"), - name: "cloudServer", - meta: { - title: "云数据库", fullPath: "/product/volcanoSystem/cloudServer", - }, + path: 'showPrivateNet', + name: 'showPrivateNet', + component: ShowPrivateNet, + meta: { title: '网络列表', noCache: true, fullpath: '/net/showPrivateNet' }, }, { - path: "shoppingCart", - component: () => import("@/views/management/shoppingCart"), - name: 'shoppingCart', - hidden: true, - meta: { - title: "购物车", fullPath: "/management/shoppingCart", - }, - }, // 智算 - // 产品-智算-a100 - { - hidden: true, - path: "a100Product", - component: () => import("@/views/product/productHome/intelligentCalculation/a100Product/index.vue"), - name: "a100Product", - meta: { - title: "a100", fullPath: "/product/productHome/intelligentCalculation/a100Product", noCache: true - }, + path: 'privateNetDetail', + name: 'privateNetDetail', + component: PrivateNetDetail, + meta: { title: '私有网络详情', noCache: true, fullpath: '/net/privateNetDetail' }, }, { - hidden: true, - path: "intelligentCalculation", - component: () => import("@/views/product/productHome/intelligentCalculation/index.vue"), - name: "intelligentCalculation", - meta: { - title: "智算", fullPath: "/product/productHome/intelligentCalculation", noCache: true - }, - }, // 产品-智算-a200 - { - hidden: true, - path: "a200Product", - component: () => import("@/views/product/productHome/intelligentCalculation/a200Product/index.vue"), - name: "a200Product", - meta: { - title: "a100", fullPath: "/product/productHome/intelligentCalculation/a200Product", noCache: true - }, - }, // 产品-智算-a800 - { - hidden: true, - path: "a800Product", - component: () => import("@/views/product/productHome/intelligentCalculation/a800Product/index.vue"), - name: "a800Product", - meta: { - title: "a800", fullPath: "/product/productHome/intelligentCalculation/a800Product", noCache: true - - }, - }, // 产品-超算-a - // H800 - { - hidden: true, - path: "h800Product", - component: () => import("@/views/product/productHome/intelligentCalculation/h800Product/index.vue"), - name: "h800Product", - meta: { - title: "h800", fullPath: "/product/productHome/intelligentCalculation/h800Product", noCache: true - }, + path: 'childCreate', + name: 'childCreate', + component: CreateChildNet, + meta: { title: '创建子网', noCache: true, fullpath: '/net/childCreate' }, + }, { + path: 'showChildNet', + name: 'showChildNet', + component: ShowChildNet, + meta: { title: '展示子网', noCache: true, fullpath: '/net/showChildNet' }, + }, { + path: 'childDetail', + name: 'childDetail', + component: ChildDetail, + meta: { title: '子网详情', noCache: true, fullpath: '/net/childDetail' }, + }, { + path: 'showUEip', + name: 'showUEip', + component: ShowEip, + meta: { title: 'EIP列表', noCache: true, fullpath: '/net/showUEip' }, + }, { + path: 'createUEip', + name: 'createUEip', + component: CreateEip, + meta: { title: '创建EIP', noCache: true, fullpath: '/net/createUEip' }, + },], + hidden: true + }, { + hidden: true, + path: "ucloudProduct", + component: () => import('@/views/product/productHome/ucloud/index.vue'), + name: 'ucloudProduct', + meta: { title: "集群节点二产品列表", fullPath: "/product/productHome/ucloud", noCache: true }, + children: [{ + path: "ucloudProductTwo", + component: () => import('@/views/product/productHome/ucloud/ucloudTwo/index.vue'), + name: 'ucloudProductTwo', + meta: { title: "集群节点二产品列表", fullPath: "/product/productHome/ucloud/ucloudTwo", noCache: true }, + }, { + path: "showCloudHost", + component: () => import('@/views/product/productHome/ucloud/showCloudHost/index.vue'), + name: 'showUcloudProduct', + meta: { title: "集群节点二产品", fullPath: "/product/productHome/ucloud/showCloudHost", noCache: true }, + }, { + path: "createCloudHost", + component: () => import('@/views/product/productHome/ucloud/createCloudHost/index.vue'), + name: 'createCloudHost', + meta: { title: "集群节点二-购买", fullPath: "/product/productHome/ucloud/createCloudHost", noCache: true }, + }, { + path: "showFireWall", + component: () => import('@/views/product/productHome/ucloud/fireWall/showFireWall/index.vue'), + name: 'showFireWall', + meta: { title: "防火墙列表", fullPath: "/product/productHome/ucloud/fireWall/showFireWall", noCache: true }, + }, { + path: "detailFireWall", + component: () => import('@/views/product/productHome/ucloud/fireWall/detailFireWall/index.vue'), + name: 'detailFireWall', + meta: { title: "防火墙详情", fullPath: "/product/productHome/ucloud/fireWall/detailFireWall", noCache: true }, + }, { + path: "createUEip", + component: () => import('@/views/product/productHome/ucloud/Eip/createUEip'), + name: 'createUEip', + meta: { title: "创建Eip", fullPath: "/product/productHome/ucloud/Eip/createUEip", noCache: true }, + }, { + path: "showUEip", + component: () => import('@/views/product/productHome/ucloud/Eip/showUEip'), + name: 'showUEip', + meta: { title: "Eip列表", fullPath: "/product/productHome/ucloud/Eip/showUEip", noCache: true }, + },] + }, // { + // hidden: true, + // path: "baiduProduct", + // component: () => import('@/views/product/productHome/baiduProduct/index.vue'), + // name: 'baiduProduct', + // meta: {title: "百度产品列表", fullPath: "/product/baiduProduct", noCache: true} + // }, + { + hidden: true, + path: "baiduProductShow", + component: () => import('@/views/product/productHome/baiduProductShow/index.vue'), + name: 'baiduProductShow', + meta: { title: "资源购买", fullPath: "/product/baiduProductShow", noCache: true, } + }, { + path: "index", name: 'index', hidden: true, component: () => import("@/views/product/index.vue"), meta: { + title: "产品", icon: "el-icon-s-data", fullPath: "/product/index", }, + }, { + hidden: true, + path: "cloudDatabaseMysql", + component: () => import("@/views/operation/volcanoSystem/cloudDatabaseMysql"), + name: "cloudDatabaseMysql", + meta: { + title: "云数据库 Mysql版", fullPath: "/product/volcanoSystem/cloudDatabaseMysql", + }, + }, { + hidden: true, + path: "cloudDatabaseRedis", + component: () => import("@/views/operation/volcanoSystem/cloudDatabaseRedis"), + name: "cloudDatabaseRedis", + meta: { + title: "缓存数据库 Redis版", fullPath: "/product/volcanoSystem/cloudDatabaseRedis", + }, + }, { + hidden: true, + path: "cloudDatabaseMongoDB", + component: () => import("@/views/operation/volcanoSystem/cloudDatabaseMongoDB"), + name: "cloudDatabaseMongoDB", + meta: { + title: "文档数据库 MongoDB 版", fullPath: "/product/volcanoSystem/cloudDatabaseMongoDB", + }, + }, - //网络 - //网络 - { - hidden: true, - path: "networkItem", - component: () => import("@/views/product/productHome/network/networkItem/index.vue"), - name: "networkItem", - meta: { - title: "网络", fullPath: "/product/productHome/network/networkItem", - }, - - }, //超算专用网络 - { - hidden: true, - path: "hypercomputingPrivateNetwork", - component: () => import("@/views/product/productHome/network/hypercomputingPrivateNetwork/index.vue"), - name: "networkItem", - meta: { - title: "超算专用网络", fullPath: "/product/productHome/network/hypercomputingPrivateNetwork", - }, - - }, //传输 - { - hidden: true, - path: "transmission", - component: () => import("@/views/product/productHome/network/transmission/index.vue"), - name: "transmission", - meta: { - title: "传输", fullPath: "/product/productHome/network/transmission", - }, + { + hidden: true, + path: "cloudServer", + component: () => import("@/views/operation/volcanoSystem/cloudServer"), + name: "cloudServer", + meta: { + title: "云数据库", fullPath: "/product/volcanoSystem/cloudServer", + }, + }, { + path: "shoppingCart", + component: () => import("@/views/management/shoppingCart"), + name: 'shoppingCart', + hidden: true, + meta: { + title: "购物车", fullPath: "/management/shoppingCart", + }, + }, // 智算 + // 产品-智算-a100 + { + hidden: true, + path: "a100Product", + component: () => import("@/views/product/productHome/intelligentCalculation/a100Product/index.vue"), + name: "a100Product", + meta: { + title: "a100", fullPath: "/product/productHome/intelligentCalculation/a100Product", noCache: true + }, + }, { + hidden: true, + path: "intelligentCalculation", + component: () => import("@/views/product/productHome/intelligentCalculation/index.vue"), + name: "intelligentCalculation", + meta: { + title: "智算", fullPath: "/product/productHome/intelligentCalculation", noCache: true + }, + }, // 产品-智算-a200 + { + hidden: true, + path: "a200Product", + component: () => import("@/views/product/productHome/intelligentCalculation/a200Product/index.vue"), + name: "a200Product", + meta: { + title: "a100", fullPath: "/product/productHome/intelligentCalculation/a200Product", noCache: true + }, + }, // 产品-智算-a800 + { + hidden: true, + path: "a800Product", + component: () => import("@/views/product/productHome/intelligentCalculation/a800Product/index.vue"), + name: "a800Product", + meta: { + title: "a800", fullPath: "/product/productHome/intelligentCalculation/a800Product", noCache: true }, + }, // 产品-超算-a + // H800 + { + hidden: true, + path: "h800Product", + component: () => import("@/views/product/productHome/intelligentCalculation/h800Product/index.vue"), + name: "h800Product", + meta: { + title: "h800", fullPath: "/product/productHome/intelligentCalculation/h800Product", noCache: true + }, + }, + + //网络 + //网络 + { + hidden: true, + path: "networkItem", + component: () => import("@/views/product/productHome/network/networkItem/index.vue"), + name: "networkItem", + meta: { + title: "网络", fullPath: "/product/productHome/network/networkItem", + }, + + }, //超算专用网络 + { + hidden: true, + path: "hypercomputingPrivateNetwork", + component: () => import("@/views/product/productHome/network/hypercomputingPrivateNetwork/index.vue"), + name: "networkItem", + meta: { + title: "超算专用网络", fullPath: "/product/productHome/network/hypercomputingPrivateNetwork", + }, + + }, //传输 + { + hidden: true, + path: "transmission", + component: () => import("@/views/product/productHome/network/transmission/index.vue"), + name: "transmission", + meta: { + title: "传输", fullPath: "/product/productHome/network/transmission", + }, + + }, ], }, @@ -702,25 +744,32 @@ export const asyncRoutes = [ path: "workOrderManagement", component: () => import("@/views/customer/workOrderManagement"), name: "WorkOrderManagement", - meta: {title: "工单管理", fullPath: "/customer/workOrderManagement"}, + meta: { title: "工单管理", fullPath: "/customer/workOrderManagement" }, + }, + { + hidden: true, + path: 'approve', + component: () => import('@/views/customer/ncApprove/index.vue'), + name: "Approve", + meta: { title: "信息审核", fullPath: "/customer/ncApprove" }, }, { hidden: true, path: "channelMangement", component: () => import("@/views/customer/channelMangement/index.vue"), name: "ChannelMangement", - meta: {title: "渠道管理", fullPath: "/customer/channelMangement"}, + meta: { title: "渠道管理", fullPath: "/customer/channelMangement" }, }, { hidden: true, path: "channelProductMangement", component: () => import("@/views/customer/channelMangement/channelProductMangement/index.vue"), name: "channelProductMangement", - meta: {title: "渠道产品管理", fullPath: "/customer/channelMangement/channelProductMangement", noCache: true}, + meta: { title: "渠道产品管理", fullPath: "/customer/channelMangement/channelProductMangement", noCache: true }, }, { hidden: true, path: "noChannelPermission", component: () => import("@/views/customer/channelMangement/noChannelPermission/index.vue"), name: "noChannelPermission", - meta: {title: "无权限", fullPath: "/customer/channelMangement/noChannelPermission", noCache: true}, + meta: { title: "无权限", fullPath: "/customer/channelMangement/noChannelPermission", noCache: true }, }, { hidden: true, path: "chat", @@ -730,93 +779,93 @@ export const asyncRoutes = [ title: "聊天", fullPath: "/product/productHome/chat", noCache: true }, }, // { - // path: "workOrderManagement/mobile", - // component: () => import("@/views/customer/mobile_workOrderManagement"), - // name: "mobile_workOrderManagement", - // meta: { title: "工单管理", fullPath: "/customer/workOrderManagement" , isMobile: true }, - // }, - { - hidden: true, - path: "customerInformation", - component: () => import("@/views/customer/customerInformation"), - name: "customerInformation", - meta: {title: "个人中心", fullPath: "/customer/customerInformation"}, - }, { - path: "rechargeRecord", - component: () => import("@/views/customer/rechargeRecord"), - name: "RechargeRecord", - meta: {title: "充值管理", fullPath: "/customer/rechargeRecord"}, - }, { - path: "orderManagement", - component: () => import("@/views/customer/orderManagement"), - name: "OrderManagement", - meta: {title: "产品订单", fullPath: "/customer/orderManagement", noCache: true,}, - }, { - path: "orderDetil", - component: () => import("@/views/customer/orderDetil"), - name: "orderDetil", - hidden: true, - meta: {title: "订单详情", fullPath: "/customer/orderDetil", noCache: true,}, - }, { - hidden: true, - path: "promotionalInvitationCode", - component: () => import("@/views/customer/promotionalInvitationCode"), - name: "PromotionalInvitationCode", - meta: {title: "促销邀请码", fullPath: "/customer/promotionalInvitationCode"}, - }, + // path: "workOrderManagement/mobile", + // component: () => import("@/views/customer/mobile_workOrderManagement"), + // name: "mobile_workOrderManagement", + // meta: { title: "工单管理", fullPath: "/customer/workOrderManagement" , isMobile: true }, + // }, + { + hidden: true, + path: "customerInformation", + component: () => import("@/views/customer/customerInformation"), + name: "customerInformation", + meta: { title: "个人中心", fullPath: "/customer/customerInformation" }, + }, { + path: "rechargeRecord", + component: () => import("@/views/customer/rechargeRecord"), + name: "RechargeRecord", + meta: { title: "充值管理", fullPath: "/customer/rechargeRecord" }, + }, { + path: "orderManagement", + component: () => import("@/views/customer/orderManagement"), + name: "OrderManagement", + meta: { title: "产品订单", fullPath: "/customer/orderManagement", noCache: true, }, + }, { + path: "orderDetil", + component: () => import("@/views/customer/orderDetil"), + name: "orderDetil", + hidden: true, + meta: { title: "订单详情", fullPath: "/customer/orderDetil", noCache: true, }, + }, { + hidden: true, + path: "promotionalInvitationCode", + component: () => import("@/views/customer/promotionalInvitationCode"), + name: "PromotionalInvitationCode", + meta: { title: "促销邀请码", fullPath: "/customer/promotionalInvitationCode" }, + }, - // { - // path: "bpmn", - // component: () => - // import( - // "@/views/customer/bpmn" - // ), - // name: "bpmn", - // meta: { title: "bpmn", fullPath: "/customer/bpmn" }, - // }, - // { - // path: "panel", - // component: () => - // import( - // "@/views/customer/panel" - // ), - // name: "panel", - // meta: { title: "panel", fullPath: "/customer/panel" }, - // }, - { - path: "userResource", component: () => import( - // "@/views/customer/userResource/iframeJiNan.vue"//iframe报错 - "@/views/customer/userResource" - ), name: "userResource", meta: {title: "资源实例", fullPath: "/customer/userResource", noCache: true}, - }, - { + // { + // path: "bpmn", + // component: () => + // import( + // "@/views/customer/bpmn" + // ), + // name: "bpmn", + // meta: { title: "bpmn", fullPath: "/customer/bpmn" }, + // }, + // { + // path: "panel", + // component: () => + // import( + // "@/views/customer/panel" + // ), + // name: "panel", + // meta: { title: "panel", fullPath: "/customer/panel" }, + // }, + { + path: "userResource", component: () => import( + // "@/views/customer/userResource/iframeJiNan.vue"//iframe报错 + "@/views/customer/userResource" + ), name: "userResource", meta: { title: "资源实例", fullPath: "/customer/userResource", noCache: true }, + }, + { + hidden: true, + path: "sshTerminal", + component: () => import( + // "@/views/customer/userResource/iframeJiNan.vue"//iframe报错 + "@/views/customer/userResource/SshTerminal.vue" + ), + name: "sshTerminal", + meta: { title: "ssh登录", fullPath: "/customer/SshTerminal", noCache: true }, + }, - path: "sshTerminal", - component: () => import( - // "@/views/customer/userResource/iframeJiNan.vue"//iframe报错 - "@/views/customer/userResource/SshTerminal.vue" - ), - name: "sshTerminal", - meta: {title: "ssh登录", fullPath: "/customer/SshTerminal", noCache: true}, - }, - - { - hidden: true, path: "approvalRecord", component: () => import( - // "@/views/customer/approvalRecord/iframeJiNan.vue"//iframe报错 - "@/views/customer/approvalRecord" - ), name: "approvalRecord", meta: {title: "审批记录", fullPath: "/customer/approvalRecord"}, - }, { - path: "invoice", - component: () => import("@/views/customer/invoice"), - name: "Invoice", - meta: {title: "发票管理", fullPath: "/customer/invoice"}, - }, { - hidden: true, - path: "productIndex", - component: () => import("@/views/product/productHome/productIndex/index.vue"), - name: "ProductIndex", - meta: {title: "产品最新页", fullPath: "/product/productHome/productIndex", noCache: true}, - },], + { + hidden: true, path: "approvalRecord", component: () => import( + // "@/views/customer/approvalRecord/iframeJiNan.vue"//iframe报错 + "@/views/customer/approvalRecord" + ), name: "approvalRecord", meta: { title: "审批记录", fullPath: "/customer/approvalRecord" }, + }, { + path: "invoice", + component: () => import("@/views/customer/invoice"), + name: "Invoice", + meta: { title: "发票管理", fullPath: "/customer/invoice" }, + }, { + hidden: true, + path: "productIndex", + component: () => import("@/views/product/productHome/productIndex/index.vue"), + name: "ProductIndex", + meta: { title: "产品最新页", fullPath: "/product/productHome/productIndex", noCache: true }, + },], }, { path: "/sales", component: Layout, @@ -826,12 +875,12 @@ export const asyncRoutes = [ path: "distributorManagement", component: () => import("@/views/sales/distributorManagement"), // component: () => import("@/views/sales/distributorManagement/lodIndex.vue"), name: "Distributor", - meta: {title: "分销商管理", fullPath: "/sales/distributorManagement"}, // hidden: true, + meta: { title: "分销商管理", fullPath: "/sales/distributorManagement" }, // hidden: true, }, { path: "intelligentNetworkConfig", component: () => import("@/views/sales/IntelligentNetworkConfig"), name: "intelligentNetworkConfig", - meta: {title: "智算网络配置", fullPath: "/sales/IntelligentNetworkConfig"}, + meta: { title: "智算网络配置", fullPath: "/sales/IntelligentNetworkConfig" }, }, { path: "chat", component: () => import("@/views/product/productHome/chat/index.vue"), name: "chat", meta: { title: "聊天", fullPath: "/sales/chat", noCache: true @@ -841,34 +890,34 @@ export const asyncRoutes = [ hidden: true, component: () => import("@/views/sales/rpRebate"), name: "rpRebate", - meta: {title: "返佣设置", fullPath: "/sales/rpRebate"}, + meta: { title: "返佣设置", fullPath: "/sales/rpRebate" }, }, { path: "rpDiscount", hidden: true, component: () => import("@/views/sales/rpDiscount"), name: "rpDiscount", - meta: {title: "折扣设置", fullPath: "/sales/rpDiscount"}, + meta: { title: "折扣设置", fullPath: "/sales/rpDiscount" }, }, { path: "floorPrice", hidden: true, component: () => import("@/views/sales/floorPrice"), name: "floorPrice", - meta: {title: "底价设置", fullPath: "/sales/floorPrice"}, + meta: { title: "底价设置", fullPath: "/sales/floorPrice" }, }, { path: "bdUserMangement", component: () => import("@/views/sales/BdUserMangement"), name: "floorPrice", - meta: {title: "百度用户管理", fullPath: "/sales/BdUserMangement"}, + meta: { title: "百度用户管理", fullPath: "/sales/BdUserMangement" }, children: [{ path: "orderManagement", component: () => import( "@/views/sales/BdUserMangement/orderMangement" - ), name: "orderManagement", meta: { + ), name: "orderManagement", meta: { title: "订单管理", fullPath: "/sales/BdUserMangement/orderManagement", }, }, { path: "billMangement", component: () => import( "@/views/sales/BdUserMangement/billMangement" - ), name: "billMangement", meta: { + ), name: "billMangement", meta: { title: "账单管理", fullPath: "/sales/BdUserMangement/billMangement", }, },] @@ -876,87 +925,87 @@ export const asyncRoutes = [ path: "customerManagement", component: () => import("@/views/sales/customerManagement"), name: "Customer", - meta: {title: "客户管理", fullPath: "/sales/customerManagement"}, + meta: { title: "客户管理", fullPath: "/sales/customerManagement" }, redirect: "/customerManagement/customerInformationList", children: [{ path: "intendedCustomers", component: () => import( "@/views/sales/customerManagement/intendedCustomers/index.vue" - ), name: "intendedCustomers", meta: { + ), name: "intendedCustomers", meta: { title: "意向客户", fullPath: "/sales/customerManagement/intendedCustomers", }, }, { path: "customerInformationList", component: () => import( "@/views/sales/customerManagement/customerInformationList" - ), name: "customerInformationList", meta: { + ), name: "customerInformationList", meta: { title: "客户信息列表", fullPath: "/sales/customerManagement/customerInformationList", }, }, { path: "zjUserList", hidden: true, component: () => import( "@/views/sales/customerManagement/zjUserList" - ), name: "zjUserList", meta: { + ), name: "zjUserList", meta: { title: "中金客户列表", fullPath: "/sales/customerManagement/zjUserList", }, }, - { - path: "jiNanChaoSuanUserList", component: () => import( - "@/views/sales/customerManagement/jiNanChaoSuanUserList" - ), // name: "jiNanChaoSuanUserList", - meta: { - title: "超算用户账号分配", fullPath: "/sales/customerManagement/jiNanChaoSuanUserList", + { + path: "jiNanChaoSuanUserList", component: () => import( + "@/views/sales/customerManagement/jiNanChaoSuanUserList" + ), // name: "jiNanChaoSuanUserList", + meta: { + title: "超算用户账号分配", fullPath: "/sales/customerManagement/jiNanChaoSuanUserList", + }, + }, { + path: "jiNanChaoSuanTonBu", component: () => import( + "@/views/sales/customerManagement/jiNanChaoSuanTonBu" + ), // name: "jiNanChaoSuanTonBu", + meta: { + title: "超算用户账号同步", fullPath: "/sales/customerManagement/jiNanChaoSuanTonBu", + }, + }, { + path: "promotion", + component: () => import("@/views/sales/customerManagement/promotion"), + name: "Promotion", + meta: { + title: "生成邀请码", fullPath: "/sales/customerManagement/promotion", + }, + }, { + path: "customerManagement", + component: () => import("@/views/sales/customerManagement/customerManagement"), + name: "customerManagement", + meta: { + title: "客户折扣设置", fullPath: "/sales/customerManagement/customerManagement", + }, + }, { + path: "clientPriceSet", component: () => import( + "@/views/sales/customerManagement/clientPriceSet" + ), name: "clientPriceSet", meta: { + title: "客户售价设置", fullPath: "/sales/customerManagement/clientPriceSet", + }, + }, { + path: "invoiceManage", component: () => import( + "@/views/sales/customerManagement/invoiceManage" + ), name: "InvoiceManage", meta: { + title: "发票管理", fullPath: "/sales/customerManagement/invoiceAndContract", + }, redirect: "/sales/customerManagement/invoiceManage/invoiceAndContract", children: [{ + path: "invoiceAndContract", component: () => import( + "@/views/sales/customerManagement/invoiceManage/children/invoiceAndContract" + ), name: "InvoiceAndContract", meta: { + title: "发票与合同", fullPath: "/sales/customerManagement/invoiceManage/invoiceAndContract", }, }, { - path: "jiNanChaoSuanTonBu", component: () => import( - "@/views/sales/customerManagement/jiNanChaoSuanTonBu" - ), // name: "jiNanChaoSuanTonBu", - meta: { - title: "超算用户账号同步", fullPath: "/sales/customerManagement/jiNanChaoSuanTonBu", + path: "historyBilling", component: () => import( + "@/views/sales/customerManagement/invoiceManage/children/historyBilling" + ), name: "HistoryBilling", meta: { + title: "审批记录", fullPath: "/sales/customerManagement/invoiceManage/historyBilling", }, - }, { - path: "promotion", - component: () => import("@/views/sales/customerManagement/promotion"), - name: "Promotion", - meta: { - title: "生成邀请码", fullPath: "/sales/customerManagement/promotion", - }, - }, { - path: "customerManagement", - component: () => import("@/views/sales/customerManagement/customerManagement"), - name: "customerManagement", - meta: { - title: "客户折扣设置", fullPath: "/sales/customerManagement/customerManagement", - }, - }, { - path: "clientPriceSet", component: () => import( - "@/views/sales/customerManagement/clientPriceSet" - ), name: "clientPriceSet", meta: { - title: "客户售价设置", fullPath: "/sales/customerManagement/clientPriceSet", - }, - }, { - path: "invoiceManage", component: () => import( - "@/views/sales/customerManagement/invoiceManage" - ), name: "InvoiceManage", meta: { - title: "发票管理", fullPath: "/sales/customerManagement/invoiceAndContract", - }, redirect: "/sales/customerManagement/invoiceManage/invoiceAndContract", children: [{ - path: "invoiceAndContract", component: () => import( - "@/views/sales/customerManagement/invoiceManage/children/invoiceAndContract" - ), name: "InvoiceAndContract", meta: { - title: "发票与合同", fullPath: "/sales/customerManagement/invoiceManage/invoiceAndContract", - }, - }, { - path: "historyBilling", component: () => import( - "@/views/sales/customerManagement/invoiceManage/children/historyBilling" - ), name: "HistoryBilling", meta: { - title: "审批记录", fullPath: "/sales/customerManagement/invoiceManage/historyBilling", - }, - },] - },], + },] + },], }, { path: "salesAnalysis", hidden: true, component: () => import("@/views/sales/salesAnalysis"), name: "salesAnalysis", - meta: {title: "销售分析", fullPath: "/sales/salesAnalysis"}, + meta: { title: "销售分析", fullPath: "/sales/salesAnalysis" }, },], }, @@ -977,31 +1026,34 @@ export const asyncRoutes = [ children: [{ path: "sustomerDiscountApproval", component: () => import( "@/views/operation/examinationManagement/sustomerDiscountApproval" - ), name: "MyOrganization", meta: { + ), name: "MyOrganization", meta: { title: "客户折扣审批", fullPath: "/operation/examinationManagement/sustomerDiscountApproval", }, }, { path: "supplierTransferApproval", component: () => import( "@/views/operation/examinationManagement/supplierTransferApproval" - ), name: "supplierTransferApproval", meta: { + ), name: "supplierTransferApproval", meta: { title: "供应商销售收入转账审批", fullPath: "/operation/examinationManagement/supplierTransferApproval", }, - }, { + }, + { path: "distributorDiscountSetting", component: () => import( "@/views/operation/examinationManagement/distributorDiscountSetting" - ), name: "DistributorDiscountSetting", meta: { + ), name: "DistributorDiscountSetting", meta: { title: "分销商折扣设置审批", fullPath: "/operation/examinationManagement/distributorDiscountSetting", }, - }, { + }, + { path: "distributorRebateSetUp", component: () => import( "@/views/operation/examinationManagement/distributorRebateSetUp" - ), name: "DistributorRebateSetUp", meta: { + ), name: "DistributorRebateSetUp", meta: { title: "分销商回佣率设置审批", fullPath: "/operation/examinationManagement/DistributorRebateSetUp", }, - }, { + }, + { path: "distributorCommissionTransferApproval", component: () => import( "@/views/operation/examinationManagement/distributorCommissionTransferApproval" - ), name: "DistributorCommissionTransferApproval", meta: { + ), name: "DistributorCommissionTransferApproval", meta: { title: "分销商回佣转账审批", fullPath: "/operation/examinationManagement/distributorCommissionTransferApproval", }, @@ -1170,12 +1222,12 @@ export const asyncRoutes = [ path: "saleActives", component: () => import("@/views/operation/saleActives"), name: "SaleActives", - meta: {title: "促销活动", fullPath: "/operation/saleActives"}, + meta: { title: "促销活动", fullPath: "/operation/saleActives" }, }, { path: "voucher", component: () => import("@/views/operation/voucher"), name: "voucher", - meta: {title: "算力券管理", fullPath: "/operation/voucher"}, + meta: { title: "算力券管理", fullPath: "/operation/voucher" }, }, { path: "customerTransfer", component: () => import("@/views/operation/customerTransfer"), @@ -1200,7 +1252,7 @@ export const asyncRoutes = [ { path: "bill", component: () => import( "@/views/operation/analyze/bill/index.vue" - ), name: "bill", meta: { + ), name: "bill", meta: { title: "消费KPI分析", fullPath: "/operation/analyze/bill", }, }, @@ -1208,31 +1260,31 @@ export const asyncRoutes = [ { path: "operationalAnalysis", component: () => import( "@/views/operation/analyze/operationalAnalysis" - ), name: "operationalAnalysis", meta: { + ), name: "operationalAnalysis", meta: { title: "运营KPI分析", fullPath: "/operation/analyze/operationalAnalysis", }, }, { path: "depementAnalysis", component: () => import( "@/views/operation/analyze/depementAnalysis" - ), name: "depementAnalysis", meta: { + ), name: "depementAnalysis", meta: { title: "部门KPI分析", fullPath: "/operation/analyze/depementAnalysis", }, }, { path: "saleAnalysis", component: () => import( "@/views/operation/analyze/saleAnalysis" - ), name: "saleAnalysis", meta: { + ), name: "saleAnalysis", meta: { title: "销售KPI分析", fullPath: "/operation/analyze/saleAnalysis", }, }, { path: "incomeAnalysis", component: () => import( "@/views/operation/analyze/incomeAnalysis" - ), name: "incomeAnalysis", meta: { + ), name: "incomeAnalysis", meta: { title: "收入分析", fullPath: "/operation/analyze/incomeAnalysis", }, }, { path: "profitAnalysis", component: () => import( "@/views/operation/analyze/profitAnalysis" - ), name: "profitAnalysis", meta: { + ), name: "profitAnalysis", meta: { title: "利润分析", fullPath: "/operation/analyze/profitAnalysis", }, }, @@ -1267,25 +1319,25 @@ export const asyncRoutes = [ children: [{ path: "device", component: () => import( "@/views/operation/deviceMangement/device/index.vue" - ), name: "device", meta: { + ), name: "device", meta: { title: "设备管理", fullPath: "/operation/deviceMangement/device", }, }, { path: "deviceBillList", component: () => import( "@/views/operation/deviceMangement/deviceBillList/index.vue" - ), name: "deviceBillList", meta: { + ), name: "deviceBillList", meta: { title: "设备订单", fullPath: "/operation/deviceMangement/deviceBillList", }, }, { path: "machineRoom", component: () => import( "@/views/operation/deviceMangement/machineRoom/index.vue" - ), name: "machineRoom", meta: { + ), name: "machineRoom", meta: { title: "机房信息", fullPath: "/operation/deviceMangement/machineRoom", }, }, { path: "deviceGrid", component: () => import( "@/views/operation/deviceMangement/deviceGrid/index.vue" - ), name: "deviceGrid", meta: { + ), name: "deviceGrid", meta: { title: "统计分析", fullPath: "/operation/deviceMangement/deviceGrid", }, children: [{ path: "machineRoomGrid", @@ -1315,7 +1367,7 @@ export const asyncRoutes = [ }, { hidden: true, path: "deviceContract", component: () => import( "@/views/operation/deviceMangement/deviceContract/index.vue" - ), name: "deviceContract", // beforeRouteEnter(to, from, next) { + ), name: "deviceContract", // beforeRouteEnter(to, from, next) { // // 在路由进入前执行逻辑 // // 可以访问组件实例 `this`,但是此时还无法访问到组件实例本身 // next(vm => { @@ -1340,38 +1392,39 @@ export const asyncRoutes = [ } }, - // { - // path: "approvalBusinessConfig", - // component: () => import("@/views/operation/approval/approveBusinessConfig"), - // name: "approvalBusinessConfig", - // meta: { - // title: "业务模板配置", - // fullPath: "/operation/approval/approveBusinessConfig" - // } - // }, + // { + // path: "approvalBusinessConfig", + // component: () => import("@/views/operation/approval/approveBusinessConfig"), + // name: "approvalBusinessConfig", + // meta: { + // title: "业务模板配置", + // fullPath: "/operation/approval/approveBusinessConfig" + // } + // }, - { - path: "approvalConfig", - component: () => import("@/views/operation/approval/approvalConfig"), - name: "approvalConfig", - meta: { - title: "审核人配置", fullPath: "/operation/approval/approvalConfig" - } - }, { - path: "approvalList", - component: () => import("@/views/operation/approval/approvalList"), - name: "approvalList", - meta: { - title: "流程列表", fullPath: "/operation/approval/approvalList" - } - }] + { + path: "approvalConfig", + component: () => import("@/views/operation/approval/approvalConfig"), + name: "approvalConfig", + meta: { + title: "审核人配置", fullPath: "/operation/approval/approvalConfig" + } + }, { + path: "approvalList", + component: () => import("@/views/operation/approval/approvalList"), + name: "approvalList", + meta: { + title: "流程列表", fullPath: "/operation/approval/approvalList" + } + }] }, { path: "test", name: 'test', component: () => import("@/views/Test/index"), meta: { title: "Test", icon: "el-icon-shopping-cart-2", noCache: true, fullPath: "/Test/index", }, },], - }, { + }, + { path: "/operationAndMaintenance", component: Layout, redirect: "/operationAndMaintenance/index", meta: { title: "运维", icon: "el-icon-s-tools", noCache: true, fullPath: "/operationAndMaintenance", }, children: [{ @@ -1406,13 +1459,13 @@ export const asyncRoutes = [ hidden: true, component: () => import( "@/views/finance/supplierSettlement" - ), + ), name: "SupplierSettlement", - meta: {title: "供应商结算", fullPath: "/finance/supplierSettlement"}, + meta: { title: "供应商结算", fullPath: "/finance/supplierSettlement" }, children: [{ path: "supplierSalesReconciliation", component: () => import( "@/views/finance/supplierSettlement/supplierSalesReconciliation" - ), name: "SupplierSalesReconciliation", meta: { + ), name: "SupplierSalesReconciliation", meta: { title: "供应商销售对账", fullPath: "/finance/supplierSettlement/supplierSalesReconciliation", }, }, { @@ -1427,47 +1480,47 @@ export const asyncRoutes = [ path: "supplierSettlementStatistics", component: () => import("@/views/endDay/supplierSettlementStatistics"), name: "supplierSettlementStatistics", - meta: {title: "供应商结算统计", fullPath: "/endDay/supplierSettlementStatistics"}, + meta: { title: "供应商结算统计", fullPath: "/endDay/supplierSettlementStatistics" }, }, // { - // path: "supplierSettlementStatistics/mobile", - // component: () => - // import("@/views/endDay/mobile_supplierSettlementStatistics"), - // name: "mbile_supplierSettlementStatistics", - // meta: { title: "供应商结算统计", fullPath: "/endDay/supplierSettlementStatistics", isMobile: true }, - // }, - { - path: "customerRechargeManagement", - component: () => import("@/views/finance/customerRechargeManagement"), - name: "CustomerRechargeManagement", - meta: { - title: "客户充值管理", fullPath: "/finance/customerRechargeManagement", - }, - children: [{ - path: "customersRechargeOnffline", component: () => import( - "@/views/finance/customerRechargeManagement/customersRechargeOnffline" - ), name: "CustomersRechargeOnffline", meta: { - title: "客户线下充值入账", fullPath: "/finance/customerRechargeManagement/customersRechargeOnffline", - }, - }, // { - // path: "customersRechargeOnline", - // component: () => - // import( - // "@/views/finance/customerRechargeManagement/customersRechargeOnline" - // ), - // name: "CustomersRechargeOnline", - // meta: { - // title: "客户线上充值核对入账", - // fullPath: - // "/finance/customerRechargeManagement/customersRechargeOnline", - // }, - // }, - ], - }, { - path: "financialAnalysis", - hidden: true, - component: () => import("@/views/finance/financialAnalysis"), - meta: {title: "财务分析", fullPath: "/finance/financialAnalysis"}, + // path: "supplierSettlementStatistics/mobile", + // component: () => + // import("@/views/endDay/mobile_supplierSettlementStatistics"), + // name: "mbile_supplierSettlementStatistics", + // meta: { title: "供应商结算统计", fullPath: "/endDay/supplierSettlementStatistics", isMobile: true }, + // }, + { + path: "customerRechargeManagement", + component: () => import("@/views/finance/customerRechargeManagement"), + name: "CustomerRechargeManagement", + meta: { + title: "客户充值管理", fullPath: "/finance/customerRechargeManagement", }, + children: [{ + path: "customersRechargeOnffline", component: () => import( + "@/views/finance/customerRechargeManagement/customersRechargeOnffline" + ), name: "CustomersRechargeOnffline", meta: { + title: "客户线下充值入账", fullPath: "/finance/customerRechargeManagement/customersRechargeOnffline", + }, + }, // { + // path: "customersRechargeOnline", + // component: () => + // import( + // "@/views/finance/customerRechargeManagement/customersRechargeOnline" + // ), + // name: "CustomersRechargeOnline", + // meta: { + // title: "客户线上充值核对入账", + // fullPath: + // "/finance/customerRechargeManagement/customersRechargeOnline", + // }, + // }, + ], + }, { + path: "financialAnalysis", + hidden: true, + component: () => import("@/views/finance/financialAnalysis"), + meta: { title: "财务分析", fullPath: "/finance/financialAnalysis" }, + }, ], }, @@ -1566,31 +1619,31 @@ export const asyncRoutes = [ children: [{ path: "userManagement", component: () => import("@/views/management/userRightsManagement"), - meta: {title: "用户权限管理", fullPath: "/management/userManagement"}, + meta: { title: "用户权限管理", fullPath: "/management/userManagement" }, redirect: "/management/userManagement/accountManagement", children: [{ path: "accountManagement", component: () => import( "@/views/management/userRightsManagement/accountManagement" - ), name: "accountManagement", meta: { + ), name: "accountManagement", meta: { title: "用户管理", fullPath: "/management/userManagement/accountManagement", }, }, { path: "authorityManagement", component: () => import( "@/views/management/userRightsManagement/authorityManagement" - ), name: "AuthorityManagement", meta: { + ), name: "AuthorityManagement", meta: { title: "权限管理", fullPath: "/management/userManagement/authorityManagement", }, }, { path: "organizationManagement", component: () => import( "@/views/management/userRightsManagement/organizationManagement" - ), name: "OrganizationManagement", meta: { + ), name: "OrganizationManagement", meta: { title: "组织管理", fullPath: "/management/userManagement/organizationManagement", }, },], }, { path: "serviceManagement", component: () => import("@/views/management/serviceManagement"), - meta: {title: "业务管理", fullPath: "/management/serviceManagement"}, + meta: { title: "业务管理", fullPath: "/management/serviceManagement" }, redirect: "/management/serviceManagement/orderManagement", children: [{ path: "billingManagement", @@ -1602,7 +1655,7 @@ export const asyncRoutes = [ }, { path: "financialManagement", component: () => import( "@/views/management/serviceManagement/financialManagement" - ), name: "FinancialManagement", meta: { + ), name: "FinancialManagement", meta: { title: "财务管理", fullPath: "/management/serviceManagement/financialManagement", }, },], @@ -1621,7 +1674,7 @@ export const asyncRoutes = [ title: "日末管理", component: () => import("@/views/management/dayDispose"), name: "dayDispose", - meta: {title: "日末管理", fullPath: "/management/dayDispose"}, + meta: { title: "日末管理", fullPath: "/management/dayDispose" }, },], }, @@ -1633,7 +1686,7 @@ export const asyncRoutes = [ path: "endDay", component: () => import("@/views/endDay/endDay"), name: "endDay", - meta: {title: "日末", fullPath: "/endDay/endDay"}, + meta: { title: "日末", fullPath: "/endDay/endDay" }, }, // { diff --git a/f/web-kboss/src/store/modules/ncmatch.js b/f/web-kboss/src/store/modules/ncmatch.js new file mode 100644 index 0000000..0354e74 --- /dev/null +++ b/f/web-kboss/src/store/modules/ncmatch.js @@ -0,0 +1,33 @@ + +const state = { + showProductDetail: false, + // 产品详情 + productDetail: { }, + //是否是审核 + isAudit: false, +} + +const mutations = { + SETPRODUCTDETAIL(state, productDetail) { + state.productDetail = productDetail + }, + GETPRODUCTDETAIL(state) { + return state.productDetail + }, + SHOWPRODUCTDETAIL(state, showProductDetail) { + state.showProductDetail = showProductDetail + }, + GETSHOWPRODUCTDETAIL(state) { + return state.showProductDetail + } +} +const actions = { + +} +const getters = {} +export default { + state, + actions, + mutations, + getters +} diff --git a/f/web-kboss/src/store/modules/user.js b/f/web-kboss/src/store/modules/user.js index c17939d..b0f6b7f 100644 --- a/f/web-kboss/src/store/modules/user.js +++ b/f/web-kboss/src/store/modules/user.js @@ -5,6 +5,7 @@ import {Message} from "element-ui"; import router, {resetRouter} from "@/router"; import store from "@/store"; import {myBalanceAPI} from "@/api/finance/customerRechargeManagement"; +import {testData} from "@/views/homePage/components/topBox/testData"; const state = { token: getToken(), @@ -86,7 +87,6 @@ const actions = { } ) resetRouter(); - console.log("挂载前的路由是:", accessRoutes) router.addRoutes(accessRoutes); resolve(response); } diff --git a/f/web-kboss/src/views/Test/testData.js b/f/web-kboss/src/views/Test/testData.js new file mode 100644 index 0000000..1fd8d52 --- /dev/null +++ b/f/web-kboss/src/views/Test/testData.js @@ -0,0 +1,7 @@ +import Layout from "@/layout/index.vue"; + +export const testData =[{"path":"operation", component: Layout, + + + + "hidden":true,"name":"Operation","meta":{"title":"审批管理","fullPath":"/operation/examinationManagement"},"redirect":"/operation/examinationManagement/sustomerDiscountApproval","children":[{"path":"sustomerDiscountApproval","name":"MyOrganization","meta":{"title":"客户折扣审批","fullPath":"/operation/examinationManagement/sustomerDiscountApproval"}},{"path":"supplierTransferApproval","name":"supplierTransferApproval","meta":{"title":"供应商销售收入转账审批","fullPath":"/operation/examinationManagement/supplierTransferApproval"}},{"path":"distributorDiscountSetting","name":"DistributorDiscountSetting","meta":{"title":"分销商折扣设置审批","fullPath":"/operation/examinationManagement/distributorDiscountSetting"}},{"path":"distributorRebateSetUp","name":"DistributorRebateSetUp","meta":{"title":"分销商回佣率设置审批","fullPath":"/operation/examinationManagement/DistributorRebateSetUp"}},{"path":"distributorCommissionTransferApproval","name":"DistributorCommissionTransferApproval","meta":{"title":"分销商回佣转账审批","fullPath":"/operation/examinationManagement/distributorCommissionTransferApproval"}}]},{"path":"supplierManagement","title":"供应商管理","name":"supplierManagement","meta":{"title":"供应商管理","fullPath":"/operation/supplierManagement"}},{"path":"computingCenterManagement","name":"computingCenterManagement","title":"容器云","meta":{"title":"容器云","fullPath":"/operation/computingCenterManagement/mainPage","noCache":true},"redirect":"/operation/computingCenterManagement","children":[{"path":"mainPage","title":"算力中心","name":"supplierManagement","meta":{"title":"算力中心","fullPath":"/operation/computingCenterManagement/mainPage","noCache":true}},{"path":"tagMangement","title":"标签管理","name":"tagMangement","meta":{"title":"标签管理","fullPath":"/operation/computingCenterManagement/tagMangement","noCache":true}},{"path":"sellingConfiguration","title":"出售配置","name":"sellingConfiguration","meta":{"title":"出售配置","fullPath":"/operation/computingCenterManagement/sellingConfiguration","noCache":true}},{"hidden":true,"path":"pod","title":"资源实例看板","name":"pod","meta":{"title":"资源实例看板","fullPath":"/operation/computingCenterManagement/pod","noCache":true}},{"hidden":true,"path":"childPod","title":"成员节点看板","name":"childPod","meta":{"title":"成员节点看板","fullPath":"/operation/computingCenterManagement/childPod","noCache":true}},{"hidden":true,"path":"clusterResourceInstanceConfiguration","title":"资源实例配置","name":"clusterResourceInstanceConfiguration","meta":{"title":"资源实例配置","fullPath":"/operation/computingCenterManagement/clusterResourceInstanceConfiguration","noCache":true}},{"hidden":true,"path":"colony","title":"管理集群","name":"supplierManagement","meta":{"title":"管理集群","fullPath":"/operation/computingCenterManagement/colony","noCache":true}},{"hidden":true,"path":"computingPowerNode","title":"算力设备","name":"computingPowerNode","meta":{"title":"算力设备","fullPath":"/operation/computingCenterManagement/computingPowerNode","noCache":true}},{"hidden":true,"path":"part","title":"算力部件管理","name":"part","meta":{"title":"算力部件管理","fullPath":"/operation/computingCenterManagement/Part","noCache":true}}]},{"path":"importSalesRevenue","title":"导入销售额","name":"ImportSalesRevenue","meta":{"title":"导入销售额","fullPath":"/operation/ImportSalesRevenue"}},{"path":"allProductManagement","title":"公共售价管理","name":"allProductManagement","meta":{"title":"公共售价管理","fullPath":"/operation/allProductManagement"}},{"path":"publicDiscountManagement","title":"公共折扣管理","name":"publicDiscountManagement","meta":{"title":"公共折扣管理","fullPath":"/operation/publicDiscountManagement"}},{"path":"publicCostomerManagement","name":"PublicCostomerManagement","meta":{"title":"公共客户管理","fullPath":"/operation/publicCostomerManagement"}},{"path":"productManagement","name":"productManagement","hidden":true,"meta":{"title":"供应商产品管理","fullPath":"/operation/productManagement"}},{"path":"specificationTemplateManagement","name":"specificationTemplateManagement","hidden":true,"meta":{"title":"产品规格模板管理","fullPath":"/operation/specificationTemplateManagement"}},{"path":"saleActives","name":"SaleActives","meta":{"title":"促销活动","fullPath":"/operation/saleActives"}},{"path":"voucher","name":"voucher","meta":{"title":"算力券管理","fullPath":"/operation/voucher"}},{"path":"customerTransfer","name":"CustomerTransfer","meta":{"title":"客户转移","fullPath":"/operation/customerTransfer"}},{"path":"turnoverHandover","name":"TurnoverHandover","meta":{"title":"离职交接","fullPath":"/operation/turnoverHandover"}},{"path":"analyze","name":"analyze","meta":{"title":"分析","fullPath":"/operation/analyze"},"redirect":"/operation/analyze","children":[{"path":"bill","name":"bill","meta":{"title":"消费KPI分析","fullPath":"/operation/analyze/bill"}},{"path":"operationalAnalysis","name":"operationalAnalysis","meta":{"title":"运营KPI分析","fullPath":"/operation/analyze/operationalAnalysis"}},{"path":"depementAnalysis","name":"depementAnalysis","meta":{"title":"部门KPI分析","fullPath":"/operation/analyze/depementAnalysis"}},{"path":"saleAnalysis","name":"saleAnalysis","meta":{"title":"销售KPI分析","fullPath":"/operation/analyze/saleAnalysis"}},{"path":"incomeAnalysis","name":"incomeAnalysis","meta":{"title":"收入分析","fullPath":"/operation/analyze/incomeAnalysis"}},{"path":"profitAnalysis","name":"profitAnalysis","meta":{"title":"利润分析","fullPath":"/operation/analyze/profitAnalysis"}}]},{"path":"channelCustomer","title":"渠道客户","name":"channelCustomer","meta":{"title":"渠道客户","fullPath":"/operation/channelCustomer","noCache":true}},{"hidden":true,"path":"intelligentConfigOpe","title":"智算产品配置","name":"intelligentConfigOpe","meta":{"title":"智算产品配置","fullPath":"/operation/IntelligentConfigOpe"}},{"path":"deviceMangement","name":"deviceMangement","meta":{"title":"产品租赁","fullPath":"/operation/deviceMangement"},"redirect":"/operation/deviceMangement","children":[{"path":"device","name":"device","meta":{"title":"设备管理","fullPath":"/operation/deviceMangement/device"}},{"path":"machineRoom","name":"machineRoom","meta":{"title":"机房信息","fullPath":"/operation/deviceMangement/machineRoom"}},{"path":"deviceGrid","name":"deviceGrid","meta":{"title":"统计分析","fullPath":"/operation/deviceMangement/deviceGrid"},"children":[{"path":"machineRoomGrid","name":"machineRoomGrid","meta":{"title":"机房统计","fullPath":"/operation/deviceMangement/deviceGrid/machineRoomGrid"}},{"path":"deviceExpiration","name":"deviceExpiration","meta":{"title":"设备统计","fullPath":"/operation/deviceMangement/deviceGrid/deviceExpiration"}},{"path":"supplierAndProductStatistics","name":"deviceExpiration","meta":{"title":"供需指数","fullPath":"/operation/deviceMangement/deviceGrid/supplierAndProductStatistics"}}]}]},{"path":"approval","name":"approval","meta":{"title":"审批配置","fullPath":"/operation/approval"},"children":[{"path":"approvalArgumentsConfig","name":"approvalArgumentsConfig","meta":{"title":"参数配置","fullPath":"/operation/approval/approvalArgumentsConfig"}},{"path":"approvalConfig","name":"approvalConfig","meta":{"title":"审核人配置","fullPath":"/operation/approval/approvalConfig"}},{"path":"approvalList","name":"approvalList","meta":{"title":"流程列表","fullPath":"/operation/approval/approvalList"}}]},{"path":"/endDay","component":{"name":"Layout","components":{"AppMain":{"name":"AppMain","computed":{},"staticRenderFns":[],"_compiled":true,"_scopeId":"data-v-078753dd","beforeCreate":[null],"beforeDestroy":[null],"__file":"src/layout/components/AppMain.vue","_Ctor":{}},"Navbar":{"components":{"PromotionalInvitationCode":{"name":"promotionalInvitationCode","methods":{},"staticRenderFns":[],"_compiled":true,"_scopeId":"data-v-49d4e0c0","beforeCreate":[null],"beforeDestroy":[null],"__file":"src/views/customer/promotionalInvitationCode/index.vue","_Ctor":{}},"Breadcrumb":{"watch":{},"methods":{},"staticRenderFns":[],"_compiled":true,"_scopeId":"data-v-b50ef614","beforeCreate":[null],"beforeDestroy":[null],"__file":"src/components/Breadcrumb/index.vue","_Ctor":{}},"Hamburger":{"name":"Hamburger","props":{"isActive":{"default":false}},"methods":{},"staticRenderFns":[],"_compiled":true,"_scopeId":"data-v-4e6f274c","beforeCreate":[null],"beforeDestroy":[null],"__file":"src/components/Hamburger/index.vue"},"Screenfull":{"name":"Screenfull","beforeDestroy":[null,null],"methods":{},"staticRenderFns":[],"_compiled":true,"_scopeId":"data-v-29234bee","beforeCreate":[null],"__file":"src/components/Screenfull/index.vue"},"SizeSelect":{"computed":{},"methods":{},"staticRenderFns":[],"_compiled":true,"beforeCreate":[null],"beforeDestroy":[null],"__file":"src/components/SizeSelect/index.vue"},"Search":{"name":"HeaderSearch","computed":{},"watch":{},"methods":{},"staticRenderFns":[],"_compiled":true,"_scopeId":"data-v-032bd1f0","beforeCreate":[null],"beforeDestroy":[null],"__file":"src/components/HeaderSearch/index.vue"},"InForm":{"name":"WebKbossIndex","methods":{},"staticRenderFns":[],"_compiled":true,"_scopeId":"data-v-5dcf58dc","beforeCreate":[null],"beforeDestroy":[null],"__file":"src/components/Inform/index.vue"},"messagedrawer":{"props":{"drawer":{"required":true,"default":false},"direction":{"default":"rtl"},"tableData":{"default":false}},"methods":{},"staticRenderFns":[],"_compiled":true,"beforeCreate":[null],"beforeDestroy":[null],"__file":"src/layout/components/inFram/message.vue"}},"computed":{},"methods":{},"watch":{"gridObj":{"user":true}},"staticRenderFns":[],"_compiled":true,"_scopeId":"data-v-d16d6306","beforeCreate":[null],"beforeDestroy":[null],"__file":"src/layout/components/Navbar.vue","_Ctor":{}},"RightPanel":{"name":"RightPanel","props":{"clickNotClose":{"default":false},"buttonTop":{"default":250}},"computed":{},"watch":{},"beforeDestroy":[null,null],"methods":{},"staticRenderFns":[],"_compiled":true,"_scopeId":"data-v-1e488bfb","beforeCreate":[null],"__file":"src/components/RightPanel/index.vue"},"Settings":{"components":{"ThemePicker":{"computed":{},"watch":{"defaultTheme":{"immediate":true}},"methods":{},"staticRenderFns":[],"_compiled":true,"beforeCreate":[null],"beforeDestroy":[null],"__file":"src/components/ThemePicker/index.vue"}},"computed":{"fixedHeader":{},"tagsView":{},"sidebarLogo":{}},"methods":{},"staticRenderFns":[],"_compiled":true,"_scopeId":"data-v-126b135a","beforeCreate":[null],"beforeDestroy":[null],"__file":"src/layout/components/Settings/index.vue"},"Sidebar":{"components":{"SidebarItem":{"name":"SidebarItem","components":{"Item":{"name":"MenuItem","functional":true,"props":{"icon":{"default":""},"title":{"default":""}},"_scopeId":"data-v-31ea41b3","__file":"src/layout/components/Sidebar/Item.vue","_Ctor":{}},"AppLink":{"props":{"to":{"required":true}},"computed":{},"methods":{},"staticRenderFns":[],"_compiled":true,"beforeCreate":[null],"beforeDestroy":[null],"__file":"src/layout/components/Sidebar/Link.vue","_Ctor":{}}},"mixins":[{"computed":{},"methods":{}}],"props":{"item":{"required":true},"isNest":{"default":false},"basePath":{"default":""}},"methods":{},"staticRenderFns":[],"_compiled":true,"_scopeId":"data-v-2d2bbdc2","beforeCreate":[null],"beforeDestroy":[null],"__file":"src/layout/components/Sidebar/SidebarItem.vue","_Ctor":{}},"Logo":{"name":"SidebarLogo","props":{"collapse":{"required":true}},"methods":{},"staticRenderFns":[],"_compiled":true,"_scopeId":"data-v-6494804b","beforeCreate":[null],"beforeDestroy":[null],"__file":"src/layout/components/Sidebar/Logo.vue","_Ctor":{}}},"computed":{},"methods":{},"staticRenderFns":[],"_compiled":true,"_scopeId":"data-v-33ec43fc","beforeCreate":[null],"beforeDestroy":[null],"__file":"src/layout/components/Sidebar/index.vue","_Ctor":{}},"TagsView":{"components":{"ScrollPane":{"name":"ScrollPane","computed":{},"beforeDestroy":[null,null],"methods":{},"staticRenderFns":[],"_compiled":true,"_scopeId":"data-v-be6b7bae","beforeCreate":[null],"__file":"src/layout/components/TagsView/ScrollPane.vue"}},"computed":{},"watch":{},"methods":{},"staticRenderFns":[],"_compiled":true,"_scopeId":"data-v-fac8ca64","beforeCreate":[null],"beforeDestroy":[null],"__file":"src/layout/components/TagsView/index.vue"}},"mixins":[{"watch":{},"methods":{}}],"computed":{},"watch":{"$route":{"deep":true,"immediate":true,"user":true}},"methods":{},"staticRenderFns":[],"_compiled":true,"_scopeId":"data-v-13877386","beforeCreate":[null],"beforeDestroy":[null],"__file":"src/layout/index.vue","_Ctor":{}},"redirect":"/endDay/endDay","hidden":true,"meta":{"title":"日末","icon":"el-icon-s-custom","noCache":true,"fullPath":"/endDay"},"children":[{"path":"endDay","name":"endDay","meta":{"title":"日末","fullPath":"/endDay/endDay"}}]}] diff --git a/f/web-kboss/src/views/customer/ncApprove/index.vue b/f/web-kboss/src/views/customer/ncApprove/index.vue new file mode 100644 index 0000000..98eb162 --- /dev/null +++ b/f/web-kboss/src/views/customer/ncApprove/index.vue @@ -0,0 +1,945 @@ + + + + diff --git a/f/web-kboss/src/views/customer/productMangement/commonBox/index.vue b/f/web-kboss/src/views/customer/productMangement/commonBox/index.vue new file mode 100644 index 0000000..a7d7278 --- /dev/null +++ b/f/web-kboss/src/views/customer/productMangement/commonBox/index.vue @@ -0,0 +1,350 @@ + + + diff --git a/f/web-kboss/src/views/customer/productMangement/commonDetail/index.vue b/f/web-kboss/src/views/customer/productMangement/commonDetail/index.vue new file mode 100644 index 0000000..84f428b --- /dev/null +++ b/f/web-kboss/src/views/customer/productMangement/commonDetail/index.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/f/web-kboss/src/views/customer/productMangement/index.vue b/f/web-kboss/src/views/customer/productMangement/index.vue new file mode 100644 index 0000000..1a1cfd4 --- /dev/null +++ b/f/web-kboss/src/views/customer/productMangement/index.vue @@ -0,0 +1,46 @@ + + \ No newline at end of file diff --git a/f/web-kboss/src/views/customer/productMangement/productList/index.vue b/f/web-kboss/src/views/customer/productMangement/productList/index.vue new file mode 100644 index 0000000..691ee2b --- /dev/null +++ b/f/web-kboss/src/views/customer/productMangement/productList/index.vue @@ -0,0 +1,26 @@ + + diff --git a/f/web-kboss/src/views/homePage/components/topBox/index.vue b/f/web-kboss/src/views/homePage/components/topBox/index.vue index 52f75ae..2c7d914 100644 --- a/f/web-kboss/src/views/homePage/components/topBox/index.vue +++ b/f/web-kboss/src/views/homePage/components/topBox/index.vue @@ -2,15 +2,15 @@
- 云筑企业基座 + 云筑企业基座 多云融合 让上云更简单
    -
  • - {{ menu.name }} +
  • + {{ menu.name }}
@@ -54,17 +51,14 @@ {{ baseItem.title }}

{{ baseItem.description }}

    -
  • - {{ item.name }} {{ item.content }} +
  • + {{ item.name }} {{ item.content }}
{{ baseItem.price }} - /{{ baseItem.price_unit }} + style="font-weight: bold;font-size: 48px">{{ baseItem.price }} + /{{ baseItem.price_unit }} @@ -72,50 +66,47 @@
立即购买 > + style="display: inline-block;margin-left: 5px;color: white">>
查看详情  > + style="display: inline-block;margin-left: 5px;">
- 官网折扣 {{ baseItem.discount }}折 + 官网折扣 {{ + baseItem.discount }}折
- 智算未来征程 + 智算未来征程 多元异构 灵活短租
{{ suanItem.title }}
    -
  • - {{ item.name }} {{ item.content }} +
  • + {{ item.name }} {{ item.content }}
{{ suanItem.price }} - /{{ suanItem.price_unit }} + style="font-weight: bold;font-size: 48px">{{ suanItem.price }} + /{{ suanItem.price_unit }} @@ -130,12 +121,12 @@
立即咨询 > + style="display: inline-block;margin-left: 5px;color: white">>
查看详情  > + style="display: inline-block;margin-left: 5px;">
@@ -146,13 +137,13 @@
- 网织智能经纬 + 网织智能经纬 云算网融合 让连接更简单
    -
  • - {{ menu.name }} +
  • + {{ menu.name }}
@@ -161,30 +152,29 @@

{{ netItem.description }}

产品优势
    -
  • +
  • {{ item.name - }} {{ item.content }} + }} {{ item.content }}
应用场景
    -
  • {{ i.name }}
  • +
  • {{ i.name }}
立即咨询 > + style="display: inline-block;margin-left: 5px;color: white">>
查看详情  > + style="display: inline-block;margin-left: 5px;">
- 合作伙伴 + 合作伙伴
@@ -195,7 +185,7 @@
- 算力资源 + 算力资源
@@ -227,8 +217,8 @@
  • 8 - + - + + + 算力中心接入
  • @@ -251,16 +241,16 @@
  • 2000 - P+ - + P+ + 算力
  • 10 - ms - + ms + 实时算力响应
  • @@ -269,8 +259,8 @@
  • 100,000 - + - + + + 注册用户
  • @@ -289,8 +279,8 @@ @@ -299,21 +289,13 @@ - + 官方申明

    尊敬用户:

    您好~~

    本平台公示的所有产品折扣活动均真实有效,价格体系严格遵循公开透明原则。

    -

    特别说明:云服务产品页面所示价格属参考性标价,实际交易金额须以资源清单订单页面为准。 +

    特别说明:云服务产品页面所示价格属参考性标价,实际交易金额须以资源清单订单页面为准。

    请您知悉上述条款并放心进行购买决策,如有任何疑问,可随时联系平台官方客服,我们将为您详细说明。

    @@ -336,15 +318,15 @@ + + + diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/aiApp.png b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/aiApp.png new file mode 100644 index 0000000..73210f9 Binary files /dev/null and b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/aiApp.png differ diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/btnBg.png b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/btnBg.png new file mode 100644 index 0000000..db40d36 Binary files /dev/null and b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/btnBg.png differ diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/cloud.png b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/cloud.png new file mode 100644 index 0000000..a815277 Binary files /dev/null and b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/cloud.png differ diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/collect.png b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/collect.png new file mode 100644 index 0000000..65be395 Binary files /dev/null and b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/collect.png differ diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/computer.png b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/computer.png new file mode 100644 index 0000000..c661502 Binary files /dev/null and b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/computer.png differ diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/computing.png b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/computing.png new file mode 100644 index 0000000..96467b8 Binary files /dev/null and b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/computing.png differ diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/eye.png b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/eye.png new file mode 100644 index 0000000..1d73192 Binary files /dev/null and b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/eye.png differ diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/gc.svg b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/gc.svg new file mode 100644 index 0000000..5f279e3 --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/gc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/history.svg b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/history.svg new file mode 100644 index 0000000..0b17ea5 --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/history.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/hot.svg b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/hot.svg new file mode 100644 index 0000000..025c1fc --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/hot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/like.png b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/like.png new file mode 100644 index 0000000..53caa2a Binary files /dev/null and b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/like.png differ diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/logo.png b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/logo.png new file mode 100644 index 0000000..32fad15 Binary files /dev/null and b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/logo.png differ diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/net.png b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/net.png new file mode 100644 index 0000000..ead9da9 Binary files /dev/null and b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/net.png differ diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/nvidia.png b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/nvidia.png new file mode 100644 index 0000000..65133dc Binary files /dev/null and b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/nvidia.png differ diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/product.svg b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/product.svg new file mode 100644 index 0000000..db96fa7 --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/product.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/robot.svg b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/robot.svg new file mode 100644 index 0000000..2220576 --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/robot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/star.svg b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/star.svg new file mode 100644 index 0000000..4c8f0f2 --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/xq.svg b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/xq.svg new file mode 100644 index 0000000..e78a925 --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/xq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/ying.png b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/ying.png new file mode 100644 index 0000000..8486e61 Binary files /dev/null and b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/ying.png differ diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/zan.svg b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/zan.svg new file mode 100644 index 0000000..fec4ed3 --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/mainPage/img/zan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/index.vue b/f/web-kboss/src/views/homePage/ncmatch/mainPage/index.vue new file mode 100644 index 0000000..db339cc --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/mainPage/index.vue @@ -0,0 +1,640 @@ + + + + + diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/menuAside/buildNcmatchTree.js b/f/web-kboss/src/views/homePage/ncmatch/mainPage/menuAside/buildNcmatchTree.js new file mode 100644 index 0000000..f2b130e --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/mainPage/menuAside/buildNcmatchTree.js @@ -0,0 +1,39 @@ +export function buildDynamicStructure(data, parentId = "None", currentLevel = 1) { + // 1. 找出当前层级的节点 + const currentNodes = data.filter(item => item.parentid === parentId); + if (currentNodes.length === 0) return []; + + // 2. 处理每个节点 + return currentNodes.map(node => { + const resultNode = {}; + + // 设置层级名称字段 + if (currentLevel === 1) { + resultNode.first_level_name = node.name; + resultNode.icon = node.icon || require('../img/cloud.png'); + } else if (currentLevel === 2) { + resultNode.second_level_name = node.name; + } else if (currentLevel === 3) { + resultNode.third_level_name = node.name; + } + + // 3. 递归处理子节点 + const children = buildDynamicStructure(data, node.id, currentLevel + 1); + + // 4. 根据当前层级设置子节点字段 + if (children.length > 0) { + if (currentLevel === 1) { + resultNode.secondaryClassification = children; + } else if (currentLevel === 2) { + resultNode.thirdClassification = children; + } else if (currentLevel === 3) { + // 第四级特殊处理为product_list + resultNode.product_list = children.map(child => ({ + first_level_name: child.third_level_name || child.name + })); + } + } + + return resultNode; + }); + } \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/menuAside/index.vue b/f/web-kboss/src/views/homePage/ncmatch/mainPage/menuAside/index.vue new file mode 100644 index 0000000..ad5c17f --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/mainPage/menuAside/index.vue @@ -0,0 +1,502 @@ + + + \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/productCard/index.vue b/f/web-kboss/src/views/homePage/ncmatch/mainPage/productCard/index.vue new file mode 100644 index 0000000..0411a2e --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/mainPage/productCard/index.vue @@ -0,0 +1,304 @@ + + + \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/sendProduct/buildCaTree.js b/f/web-kboss/src/views/homePage/ncmatch/mainPage/sendProduct/buildCaTree.js new file mode 100644 index 0000000..786eab6 --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/mainPage/sendProduct/buildCaTree.js @@ -0,0 +1,19 @@ +export const buildCaTree = (data,parentid=null) => { + const tree = []; + for (const item of data) { + if (item.parentid === parentid) { + const children = buildCaTree(data, item.id); + let i = { + label:item.product_category, + value:item.id, + cart_flag:item.cart_flag + } + if (children.length > 0) { + i.children = children; + } + + tree.push(i); + } + } + return tree; +}; \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/sendProduct/index.vue b/f/web-kboss/src/views/homePage/ncmatch/mainPage/sendProduct/index.vue new file mode 100644 index 0000000..dc14526 --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/mainPage/sendProduct/index.vue @@ -0,0 +1,986 @@ + + + \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/mainPage/sendProduct/indexBak.vue b/f/web-kboss/src/views/homePage/ncmatch/mainPage/sendProduct/indexBak.vue new file mode 100644 index 0000000..98e36dc --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/mainPage/sendProduct/indexBak.vue @@ -0,0 +1,564 @@ + + + \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/proDetail/index.vue b/f/web-kboss/src/views/homePage/ncmatch/proDetail/index.vue new file mode 100644 index 0000000..dba6aad --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/proDetail/index.vue @@ -0,0 +1,521 @@ + + + + + \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/search/index.vue b/f/web-kboss/src/views/homePage/ncmatch/search/index.vue new file mode 100644 index 0000000..31ebf08 --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/search/index.vue @@ -0,0 +1,161 @@ + + + + + \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/supplyAndDemandSquare/img/empty.svg b/f/web-kboss/src/views/homePage/ncmatch/supplyAndDemandSquare/img/empty.svg new file mode 100644 index 0000000..dcda393 --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/supplyAndDemandSquare/img/empty.svg @@ -0,0 +1,157 @@ + + Empty state_money + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f/web-kboss/src/views/homePage/ncmatch/supplyAndDemandSquare/index.vue b/f/web-kboss/src/views/homePage/ncmatch/supplyAndDemandSquare/index.vue new file mode 100644 index 0000000..98eee66 --- /dev/null +++ b/f/web-kboss/src/views/homePage/ncmatch/supplyAndDemandSquare/index.vue @@ -0,0 +1,491 @@ + + + + + \ No newline at end of file diff --git a/f/web-kboss/src/views/login/indexNew.vue b/f/web-kboss/src/views/login/indexNew.vue index c219f83..bf4c43e 100644 --- a/f/web-kboss/src/views/login/indexNew.vue +++ b/f/web-kboss/src/views/login/indexNew.vue @@ -198,7 +198,7 @@ import './js/wxLogin.js' import {Message} from "element-ui"; import router, {resetRouter} from "@/router"; import {reqNewHomeFestival} from "@/api/newHome"; - +import { getHomePath } from '@/views/setting/tools' export default { name: "indexNew", components: {BeforeLogin, promotionalInvitationCode}, @@ -597,7 +597,7 @@ export default { // } else { // window.location.href = 'https://www.opencomputing.cn/'; // } - this.$router.push('/homePage/index') + this.$router.push(getHomePath()) }, init() { // let params = { diff --git a/f/web-kboss/src/views/setting/tools.js b/f/web-kboss/src/views/setting/tools.js new file mode 100644 index 0000000..9ea8160 --- /dev/null +++ b/f/web-kboss/src/views/setting/tools.js @@ -0,0 +1,28 @@ +export function getHomePath() { + let homePath= "/homePage/index" + // let homePath= "/ncmatchHome/index" + + // 业主机构信息 + let url_link = window.location.href || ''; + let domain_url = ''; + if (url_link.includes('?domain_name=')) { + domain_url = url_link.split('?domain_name=')[1]; + } + + // 如果是业主机构 + if ((domain_url.includes('ncmatch') || + domain_url.includes('9527') || + domain_url.includes('8889') || + domain_url.includes('8891') || + ['xterm.kaiyuancloud.cn', 'www.kaiyuancloud.cn', 'dev.kaiyuancloud.cn', 'dev.opencomputing.cn', 'test.kaiyuancloud.cn', 'localhost'].includes(domain_url)) && + !url_link.includes('/domain/')) { + + if (domain_url.includes('ncmatch') || domain_url.includes('9527')) { + homePath = '/homePath/index' + } else if (domain_url.includes('kaiyuancloud') || domain_url.includes('opencomputing') || domain_url.includes('localhost')) { + homePath = '/ncmatchHome/index' + } + } + console.log("res是",homePath) + return "/homePage/index" +} diff --git a/f/web-kboss/src/views/setting/web_config.js b/f/web-kboss/src/views/setting/web_config.js new file mode 100644 index 0000000..e645634 --- /dev/null +++ b/f/web-kboss/src/views/setting/web_config.js @@ -0,0 +1,8 @@ +const webConfig={ + KYY:{ + homePath:"", + }, + NCMATCH:{ + homePath:"", + } +}