From be23a9b6e30cf86ad8b951c243372634b759874e Mon Sep 17 00:00:00 2001 From: zty Date: Thu, 17 Apr 2025 16:49:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E4=BC=98=E5=9F=B9?= =?UTF-8?q?=E4=BC=81=E4=B8=9A=20=E5=A2=9E=E5=8A=A0=E9=93=BA=E8=A3=85?= =?UTF-8?q?=E5=B7=A5=E5=8C=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_client/src/api/cms.js | 31 +++ test_client/src/router/index.js | 8 +- test_client/src/views/youpei/artist.vue | 250 ++++++++++++++++++ test_client/src/views/youpei/index.vue | 10 +- .../cms/migrations/0020_auto_20250417_1538.py | 34 +++ test_server/cms/models.py | 15 +- test_server/cms/serializers.py | 7 +- test_server/cms/urls.py | 3 +- test_server/cms/views.py | 17 +- 9 files changed, 366 insertions(+), 9 deletions(-) create mode 100644 test_client/src/views/youpei/artist.vue create mode 100644 test_server/cms/migrations/0020_auto_20250417_1538.py diff --git a/test_client/src/api/cms.js b/test_client/src/api/cms.js index d1d5b49..ea1da70 100644 --- a/test_client/src/api/cms.js +++ b/test_client/src/api/cms.js @@ -152,6 +152,37 @@ export function deleteCompany(id) { }) } +//铺装工匠 +export function getArtList(query) { + return request({ + url: '/cms/userpz/', + method: 'get', + params: query + }) +} +export function createArt(data) { + return request({ + url: '/cms/userpz/', + method: 'post', + data + }) +} +export function updateArt(id, data) { + return request({ + url: `/cms/userpz/${id}/`, + method: 'put', + data + }) +} +export function deleteArt(id) { + return request({ + url: `/cms/userpz/${id}/`, + method: 'delete' + }) +} + + + export function getChildcompanyList(query) { return request({ url: '/cms/childcomany/', diff --git a/test_client/src/router/index.js b/test_client/src/router/index.js index e74d1ca..dc085a1 100644 --- a/test_client/src/router/index.js +++ b/test_client/src/router/index.js @@ -109,7 +109,13 @@ export const asyncRoutes = [ name: 'youpeiList', component: () => import('@/views/youpei/index.vue'), meta: { title: '优培企业', icon: 'documentation', perms: ['youpei_view'] } - } + }, + { + path: 'artist', + name: 'articleList', + component: () => import('@/views/youpei/artist.vue'), + meta: { title: '铺装工匠', icon: 'documentation', perms: ['youpei_view'] } + }, ] }, diff --git a/test_client/src/views/youpei/artist.vue b/test_client/src/views/youpei/artist.vue new file mode 100644 index 0000000..31f958e --- /dev/null +++ b/test_client/src/views/youpei/artist.vue @@ -0,0 +1,250 @@ + + + diff --git a/test_client/src/views/youpei/index.vue b/test_client/src/views/youpei/index.vue index 1eb4cc1..ffcc7c6 100644 --- a/test_client/src/views/youpei/index.vue +++ b/test_client/src/views/youpei/index.vue @@ -84,8 +84,9 @@ 点击上传 - - + + +
@@ -193,6 +194,7 @@ import { getCompanyList, createCompany, deleteCompany, updateCompany, getChildcompanyList, createChildcomany, deleteChildcomany, updateChildcomany } from '@/api/cms' import checkPermission from '@/utils/permission' import Pagination from '@/components/Pagination' +import Tinymce from '@/components/Tinymce' import { upUrl } from "@/api/file"; import { genTree, deepClone } from '@/utils' import { getToken } from "@/utils/auth"; @@ -208,7 +210,8 @@ const listQuery2 = { search: '' } export default { - components: { Pagination }, + name: 'TinymceDemo', + components: { Pagination, Tinymce}, data() { return { upUrl: upUrl(), @@ -224,6 +227,7 @@ export default { listQuery2: Object.assign({}, listQuery2), tableData: [], tableData2: [], + is_show: true, listLoading: true, dialogVisible: false, dialogType: 'new', diff --git a/test_server/cms/migrations/0020_auto_20250417_1538.py b/test_server/cms/migrations/0020_auto_20250417_1538.py new file mode 100644 index 0000000..e78840b --- /dev/null +++ b/test_server/cms/migrations/0020_auto_20250417_1538.py @@ -0,0 +1,34 @@ +# Generated by Django 3.2.12 on 2025-04-17 07:38 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('cms', '0019_auto_20250304_1552'), + ] + + operations = [ + migrations.CreateModel( + name='Userpz', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), + ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), + ('is_delete', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), + ('art_name', models.CharField(max_length=50, verbose_name='姓名')), + ('art_photo', models.CharField(max_length=100, verbose_name='照片')), + ('art_remark', models.TextField(blank=True, max_length=1000, null=True, verbose_name='备注')), + ], + options={ + 'abstract': False, + }, + ), + migrations.AlterField( + model_name='companyinfo', + name='remark', + field=models.TextField(blank=True, max_length=1000, null=True, verbose_name='备注'), + ), + ] diff --git a/test_server/cms/models.py b/test_server/cms/models.py index 867cc69..47163ad 100644 --- a/test_server/cms/models.py +++ b/test_server/cms/models.py @@ -64,13 +64,23 @@ class Threshold(CommonModel): cas = models.CharField('cas号', max_length=20) + +class Userpz(CommonModel): + art_name = models.CharField('姓名', max_length=50) + art_photo = models.CharField('照片', max_length=100) + art_remark = models.TextField('备注', null=True, blank=True, max_length=1000) + + def __str__(self): + return self.art_name + + class CompanyInfo(CommonModel): company_name = models.CharField('父公司名称', max_length=50) edu_points = models.FloatField('教育积分', null=True, blank=True) co_sponsor_points = models.FloatField('协办大赛积分', null=True, blank=True) sum_points = models.FloatField('总积分', null=True, blank=True) photo = models.CharField('公司图片', null=True, blank=True, max_length=100) - remark = models.TextField('备注', null=True, blank=True, max_length=500) + remark = models.TextField('备注', null=True, blank=True, max_length=1000) def __str__(self): return self.company_name @@ -83,6 +93,9 @@ class ChildrenCompany(CommonModel): def __str__(self): return self.child_company_name + + + diff --git a/test_server/cms/serializers.py b/test_server/cms/serializers.py index 1680800..3eac679 100644 --- a/test_server/cms/serializers.py +++ b/test_server/cms/serializers.py @@ -1,5 +1,5 @@ from rest_framework import serializers -from .models import Article, Material, Source, Threshold, CompanyInfo, ChildrenCompany +from .models import Article, Material, Source, Threshold, CompanyInfo, ChildrenCompany, Userpz from utils.constants import EXCLUDE_FIELDS_BASE @@ -50,6 +50,11 @@ class PathSerializer(serializers.Serializer): path = serializers.CharField(label='文件地址') +class UserpzSerializer(serializers.ModelSerializer): + class Meta: + model = Userpz + fields = '__all__' + class CompanyInfoSerializer(serializers.ModelSerializer): # children_companies = serializers.SerializerMethodField() diff --git a/test_server/cms/urls.py b/test_server/cms/urls.py index bb690d9..307fb42 100644 --- a/test_server/cms/urls.py +++ b/test_server/cms/urls.py @@ -1,5 +1,5 @@ from django.urls import path,include -from .views import ArticleViewSet, MaterialViewSet, SourceViewSet, ThresholdViewSet, ConpamyInfoViewSet, ChildrenCompanyViewSet +from .views import ArticleViewSet, MaterialViewSet, SourceViewSet, ThresholdViewSet, ConpamyInfoViewSet, ChildrenCompanyViewSet, UserpzViewSet from rest_framework import routers @@ -10,6 +10,7 @@ router.register('source', SourceViewSet, basename='source') router.register('threshold', ThresholdViewSet, basename='threshold') router.register('company', ConpamyInfoViewSet, basename='company') router.register('childcomany', ChildrenCompanyViewSet, basename='child_company') +router.register('userpz', UserpzViewSet, basename='userpz') urlpatterns = [ path('', include(router.urls)), diff --git a/test_server/cms/views.py b/test_server/cms/views.py index bad82e6..9073e3b 100644 --- a/test_server/cms/views.py +++ b/test_server/cms/views.py @@ -11,8 +11,8 @@ from openpyxl import load_workbook, Workbook from django.db import transaction # Create your views here. -from .models import Article, Material, Source, Threshold, CompanyInfo, ChildrenCompany -from .serializers import ArticelSerializer, ArticelListSerializer, MaterialSerializer, SourceSerializer, ThresholdSerializer, PathSerializer, CompanyInfoSerializer, ChildrenCompanySerializer +from .models import Article, Material, Source, Threshold, CompanyInfo, ChildrenCompany, Userpz +from .serializers import ArticelSerializer,UserpzSerializer, ArticelListSerializer, MaterialSerializer, SourceSerializer, ThresholdSerializer, PathSerializer, CompanyInfoSerializer, ChildrenCompanySerializer from utils.custom import CommonPagination class ArticleViewSet(ModelViewSet): """ @@ -62,6 +62,19 @@ class ConpamyInfoViewSet(ModelViewSet): ordering_fields = ['update_time'] ordering = ['-sum_points'] +class UserpzViewSet(ModelViewSet): + """ + 铺装工匠:增删改查 + """ + perms_map = [ + {'get': '*'}, {'post': 'article_create'}, + {'put': 'article_update'}, {'delete': 'article_delete'}] + queryset = Userpz.objects.filter(is_delete=0).all() + serializer_class = UserpzSerializer + pagination_class = CommonPagination + search_fields = ['name'] + ordering_fields = ['update_time'] + class ChildrenCompanyViewSet(ModelViewSet): """