Commit 16c90224e9693dc214603d1606c9618bdcfc7d11

Authored by 李宇
2 parents d66495a2 b12fd501

Merge branch 'master' of http://39.98.150.180/antissoft/lvqianmeiye_ERP

Showing 357 changed files with 4538 additions and 12596 deletions

Too many changes.

To preserve performance only 100 of 357 files are displayed.

.DS_Store
No preview for this file type
.gitignore
... ... @@ -275,4 +275,22 @@ __pycache__/
275 275 *.zip
276 276  
277 277 # Cursor IDE files
278   -.cursor/
279 278 \ No newline at end of file
  279 +.cursor/
  280 +
  281 +# 排除无效的 Windows 风格路径(在 Mac 上出现)
  282 +# 排除类似 /D:/wesley/project/git/antis-disk/netcore/src/Modular 的无效路径
  283 +D//
  284 +D//**
  285 +D//**/*
  286 +/D:*
  287 +/D:/**
  288 +/D:/**/*
  289 +
  290 +# macOS 系统文件
  291 +.DS_Store
  292 +.DS_Store?
  293 +._*
  294 +.Spotlight-V100
  295 +.Trashes
  296 +ehthumbs.db
  297 +Thumbs.db
... ...
antis-ncc-admin/.env.development
1 1 # 开发
2 2  
3 3 VUE_CLI_BABEL_TRANSPILE_MODULES = true
4   -VUE_APP_BASE_API = 'http://lvqian.antissoft.com'
  4 +VUE_APP_BASE_API = 'http://192.168.110.45:5000'
5 5 VUE_APP_BASE_WSS = 'ws://localhost:2011/websocket'
... ...
antis-ncc-admin/src/views/lqMdMdgs/index.vue
1 1 <template>
2 2 <div class="NCC-common-layout">
3 3 <div class="NCC-common-layout-center">
  4 + <!-- 搜索区域 -->
4 5 <el-row class="NCC-common-search-box" :gutter="16">
5 6 <el-form @submit.native.prevent>
6   - <el-col :span="6">
  7 + <el-col :span="5">
7 8 <el-form-item label="门店编码">
8   - <el-input v-model="query.id" placeholder="门店编码" clearable />
  9 + <el-input
  10 + v-model="query.mdbm"
  11 + placeholder="请输入门店编码"
  12 + clearable
  13 + prefix-icon="el-icon-search"
  14 + style="border-radius: 6px;"
  15 + />
9 16 </el-form-item>
10 17 </el-col>
11   - <el-col :span="6">
12   - <el-form-item label="单据门店编号">
13   - <el-input v-model="query.djmdbh" placeholder="单据门店编号" clearable />
  18 + <el-col :span="5">
  19 + <el-form-item label="门店名称">
  20 + <el-input
  21 + v-model="query.dm"
  22 + placeholder="请输入门店名称"
  23 + clearable
  24 + prefix-icon="el-icon-search"
  25 + style="border-radius: 6px;"
  26 + />
14 27 </el-form-item>
15 28 </el-col>
16   - <el-col :span="6">
  29 + <el-col :span="5">
17 30 <el-form-item label="单据门店">
18   - <el-input v-model="query.djmd" placeholder="单据门店" clearable />
19   - </el-form-item>
20   - </el-col>
21   - <template v-if="showAll">
22   - <el-col :span="6">
23   - <el-form-item label="事业部">
24   - <el-select v-model="query.syb" placeholder="事业部" clearable >
25   - <el-option v-for="(item, index) in sybOptions" :key="index" :label="item.fullName" :value="item.id" />
26   - </el-select>
27   - </el-form-item>
28   - </el-col>
29   - <el-col :span="6">
30   - <el-form-item label="教育部">
31   - <el-select v-model="query.jyb" placeholder="教育部" clearable >
32   - <el-option v-for="(item, index) in jybOptions" :key="index" :label="item.fullName" :value="item.id" />
33   - </el-select>
34   - </el-form-item>
35   - </el-col>
36   - <el-col :span="6">
37   - <el-form-item label="科技部">
38   - <el-select v-model="query.kjb" placeholder="科技部" clearable >
39   - <el-option v-for="(item, index) in kjbOptions" :key="index" :label="item.fullName" :value="item.id" />
40   - </el-select>
41   - </el-form-item>
42   - </el-col>
43   - <el-col :span="6">
44   - <el-form-item label="大项目部">
45   - <el-select v-model="query.dxmb" placeholder="大项目部" clearable >
46   - <el-option v-for="(item, index) in dxmbOptions" :key="index" :label="item.fullName" :value="item.id" />
47   - </el-select>
48   - </el-form-item>
49   - </el-col>
50   - <el-col :span="6">
51   - <el-form-item label="归属起始时间">
52   - <el-date-picker v-model="query.gsqssj" type="daterange" value-format="timestamp" format="yyyy-MM-dd" start-placeholder="开始日期" end-placeholder="结束日期">
53   - </el-date-picker>
54   - </el-form-item>
55   - </el-col>
56   - <el-col :span="6">
57   - <el-form-item label="归属终止时间">
58   - <el-date-picker v-model="query.gszzsj" type="daterange" value-format="timestamp" format="yyyy-MM-dd" start-placeholder="开始日期" end-placeholder="结束日期">
59   - </el-date-picker>
60   - </el-form-item>
61   - </el-col>
62   - <el-col :span="6">
63   - <el-form-item label="修改信息">
64   - <el-input v-model="query.xgxx" placeholder="修改信息" />
  31 + <el-input
  32 + v-model="query.djmd"
  33 + placeholder="请输入单据门店"
  34 + clearable
  35 + prefix-icon="el-icon-search"
  36 + style="border-radius: 6px;"
  37 + />
65 38 </el-form-item>
66 39 </el-col>
67   - <el-col :span="6">
68   - <el-form-item label="门店名称">
69   - <el-select v-model="query.mdmc" placeholder="门店名称" clearable >
70   - <el-option v-for="(item, index) in mdmcOptions" :key="index" :label="item.fullName" :value="item.id" />
  40 + <el-col :span="5">
  41 + <el-form-item label="新店状态">
  42 + <el-select
  43 + v-model="query.isNewStore"
  44 + placeholder="请选择新店状态"
  45 + clearable
  46 + style="width: 100%; border-radius: 6px;"
  47 + >
  48 + <el-option label="新店" :value="true" />
  49 + <el-option label="老店" :value="false" />
71 50 </el-select>
72 51 </el-form-item>
73 52 </el-col>
74   - </template>
75   - <el-col :span="6">
  53 + <el-col :span="4">
76 54 <el-form-item>
77   - <el-button type="primary" icon="el-icon-search" @click="search()">查询</el-button>
78   - <el-button icon="el-icon-refresh-right" @click="reset()">重置</el-button>
79   - <el-button type="text" icon="el-icon-arrow-down" @click="showAll=true" v-if="!showAll">展开</el-button>
80   - <el-button type="text" icon="el-icon-arrow-up" @click="showAll=false" v-else>收起</el-button>
  55 + <div class="search-buttons" style="height: 32px;">
  56 + <el-button type="primary" icon="el-icon-search" @click="search()">查询</el-button>
  57 + <el-button icon="el-icon-refresh-right" @click="reset()">重置</el-button>
  58 + </div>
81 59 </el-form-item>
82 60 </el-col>
83 61 </el-form>
84 62 </el-row>
85 63 <div class="NCC-common-layout-main NCC-flex-main">
86 64 <div class="NCC-common-head">
87   - <div>
88   - <el-button type="primary" icon="el-icon-plus" @click="addOrUpdateHandle()">新增</el-button>
89   - <el-button type="text" icon="el-icon-download" @click="exportData()">导出</el-button>
90   - <el-button type="text" icon="el-icon-delete" @click="handleBatchRemoveDel()">批量删除</el-button>
  65 + <div class="NCC-common-head-left">
  66 + <h3 class="NCC-common-head-title">
  67 + <i class="el-icon-office-building"></i>
  68 + 门店归属管理
  69 + </h3>
91 70 </div>
92 71 <div class="NCC-common-head-right">
93 72 <el-tooltip effect="dark" content="刷新" placement="top">
... ... @@ -96,133 +75,434 @@
96 75 <screenfull isContainer />
97 76 </div>
98 77 </div>
99   - <NCC-table v-loading="listLoading" :data="list" has-c @selection-change="handleSelectionChange">
100   - <el-table-column prop="id" label="门店编码" align="left" />
101   - <el-table-column prop="djmdbh" label="单据门店编号" align="left" />
102   - <el-table-column prop="djmd" label="单据门店" align="left" />
103   - <el-table-column label="事业部" prop="syb" align="left">
104   - <template slot-scope="scope">{{ scope.row.syb | dynamicText(sybOptions) }}</template>
  78 + <NCC-table
  79 + v-loading="listLoading"
  80 + :data="list"
  81 + >
  82 + <el-table-column prop="mdbm" label="门店编码" align="left" width="120" show-overflow-tooltip>
  83 + <template slot-scope="scope">
  84 + <el-tag size="small" type="primary">{{ scope.row.mdbm }}</el-tag>
  85 + </template>
105 86 </el-table-column>
106   - <el-table-column label="教育部" prop="jyb" align="left">
107   - <template slot-scope="scope">{{ scope.row.jyb | dynamicText(jybOptions) }}</template>
  87 + <el-table-column prop="dm" label="门店名称" align="left" min-width="150" show-overflow-tooltip>
  88 + <template slot-scope="scope">
  89 + <span class="store-name">{{ scope.row.dm }}</span>
  90 + </template>
108 91 </el-table-column>
109   - <el-table-column label="科技部" prop="kjb" align="left">
110   - <template slot-scope="scope">{{ scope.row.kjb | dynamicText(kjbOptions) }}</template>
  92 + <el-table-column prop="djmd" label="单据门店" align="left" width="150" show-overflow-tooltip />
  93 + <el-table-column label="事业部" prop="syb" align="left" width="120">
  94 + <template slot-scope="scope">
  95 + <el-tag v-if="scope.row.syb" size="small" type="success">
  96 + {{ getDepartmentName(scope.row.syb, sybOptions) }}
  97 + </el-tag>
  98 + <span v-else class="empty-text">无</span>
  99 + </template>
  100 + </el-table-column>
  101 + <el-table-column label="教育部" prop="jyb" align="left" width="120">
  102 + <template slot-scope="scope">
  103 + <el-tag v-if="scope.row.jyb" size="small" type="warning">
  104 + {{ getDepartmentName(scope.row.jyb, jybOptions) }}
  105 + </el-tag>
  106 + <span v-else class="empty-text">无</span>
  107 + </template>
  108 + </el-table-column>
  109 + <el-table-column label="科技部" prop="kjb" align="left" width="120">
  110 + <template slot-scope="scope">
  111 + <el-tag v-if="scope.row.kjb" size="small" type="info">
  112 + {{ getDepartmentName(scope.row.kjb, kjbOptions) }}
  113 + </el-tag>
  114 + <span v-else class="empty-text">无</span>
  115 + </template>
111 116 </el-table-column>
112   - <el-table-column label="大项目部" prop="dxmb" align="left">
113   - <template slot-scope="scope">{{ scope.row.dxmb | dynamicText(dxmbOptions) }}</template>
  117 + <el-table-column label="大项目部" prop="dxmb" align="left" width="120">
  118 + <template slot-scope="scope">
  119 + <el-tag v-if="scope.row.dxmb" size="small" type="danger">
  120 + {{ getDepartmentName(scope.row.dxmb, dxmbOptions) }}
  121 + </el-tag>
  122 + <span v-else class="empty-text">无</span>
  123 + </template>
114 124 </el-table-column>
115   - <el-table-column prop="gsqssj" label="归属起始时间" align="left" />
116   - <el-table-column prop="gszzsj" label="归属终止时间" align="left" />
117   - <el-table-column prop="xgxx" label="修改信息" align="left" />
118   - <el-table-column label="门店名称" prop="mdmc" align="left">
119   - <template slot-scope="scope">{{ scope.row.mdmc | dynamicText(mdmcOptions) }}</template>
  125 + <el-table-column label="新店状态" align="center" width="100">
  126 + <template slot-scope="scope">
  127 + <el-tag v-if="scope.row.isNewStore" type="success" size="small">
  128 + <i class="el-icon-star-on"></i> 新店
  129 + </el-tag>
  130 + <el-tag v-else type="info" size="small">
  131 + <i class="el-icon-star-off"></i> 老店
  132 + </el-tag>
  133 + </template>
120 134 </el-table-column>
121   - <el-table-column label="操作" fixed="right" width="100">
122   - <template slot-scope="scope">
123   - <el-button type="text" @click="addOrUpdateHandle(scope.row.id)" >编辑</el-button>
124   - <el-button type="text" @click="handleDel(scope.row.id)" class="NCC-table-delBtn" >删除</el-button>
  135 + <el-table-column label="操作" fixed="right" width="200" align="center">
  136 + <template slot-scope="scope">
  137 + <el-button
  138 + type="text"
  139 + icon="el-icon-edit"
  140 + @click="editHandle(scope.row)"
  141 + class="action-btn"
  142 + >
  143 + 编辑
  144 + </el-button>
  145 + <el-button
  146 + type="text"
  147 + icon="el-icon-view"
  148 + @click="viewHandle(scope.row)"
  149 + class="action-btn"
  150 + >
  151 + 查看
  152 + </el-button>
125 153 </template>
126 154 </el-table-column>
127 155 </NCC-table>
128 156 <pagination :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize" @pagination="initData" />
129 157 </div>
130 158 </div>
131   - <NCC-Form v-if="formVisible" ref="NCCForm" @refresh="refresh" />
132   - <ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download" />
  159 + <!-- 编辑弹窗 -->
  160 + <el-dialog
  161 + :title="dialogTitle"
  162 + :visible.sync="dialogVisible"
  163 + width="700px"
  164 + :close-on-click-modal="false"
  165 + :before-close="handleClose"
  166 + class="store-dialog"
  167 + >
  168 + <div class="dialog-header">
  169 + <div class="store-info">
  170 + <i class="el-icon-office-building"></i>
  171 + <span class="store-name">{{ editForm.dm }}</span>
  172 + <el-tag size="small" type="primary">{{ editForm.mdbm }}</el-tag>
  173 + </div>
  174 + </div>
  175 + <el-form :model="editForm" :rules="editRules" ref="editForm" label-width="120px" class="edit-form">
  176 + <el-row :gutter="20">
  177 + <el-col :span="12">
  178 + <el-form-item label="事业部" prop="syb">
  179 + <el-select
  180 + v-model="editForm.syb"
  181 + placeholder="请选择事业部"
  182 + clearable
  183 + style="width: 100%;"
  184 + filterable
  185 + >
  186 + <el-option
  187 + v-for="item in sybOptions"
  188 + :key="item.Id"
  189 + :label="item.FullName"
  190 + :value="item.Id"
  191 + >
  192 + <span style="float: left">{{ item.FullName }}</span>
  193 + <span style="float: right; color: #8492a6; font-size: 13px">{{ item.EnCode }}</span>
  194 + </el-option>
  195 + </el-select>
  196 + </el-form-item>
  197 + </el-col>
  198 + <el-col :span="12">
  199 + <el-form-item label="教育部" prop="jyb">
  200 + <el-select
  201 + v-model="editForm.jyb"
  202 + placeholder="请选择教育部"
  203 + clearable
  204 + style="width: 100%;"
  205 + filterable
  206 + >
  207 + <el-option
  208 + v-for="item in jybOptions"
  209 + :key="item.Id"
  210 + :label="item.FullName"
  211 + :value="item.Id"
  212 + >
  213 + <span style="float: left">{{ item.FullName }}</span>
  214 + <span style="float: right; color: #8492a6; font-size: 13px">{{ item.EnCode }}</span>
  215 + </el-option>
  216 + </el-select>
  217 + </el-form-item>
  218 + </el-col>
  219 + </el-row>
  220 + <el-row :gutter="20">
  221 + <el-col :span="12">
  222 + <el-form-item label="科技部" prop="kjb">
  223 + <el-select
  224 + v-model="editForm.kjb"
  225 + placeholder="请选择科技部"
  226 + clearable
  227 + style="width: 100%;"
  228 + filterable
  229 + >
  230 + <el-option
  231 + v-for="item in kjbOptions"
  232 + :key="item.Id"
  233 + :label="item.FullName"
  234 + :value="item.Id"
  235 + >
  236 + <span style="float: left">{{ item.FullName }}</span>
  237 + <span style="float: right; color: #8492a6; font-size: 13px">{{ item.EnCode }}</span>
  238 + </el-option>
  239 + </el-select>
  240 + </el-form-item>
  241 + </el-col>
  242 + <el-col :span="12">
  243 + <el-form-item label="大项目部" prop="dxmb">
  244 + <el-select
  245 + v-model="editForm.dxmb"
  246 + placeholder="请选择大项目部"
  247 + clearable
  248 + style="width: 100%;"
  249 + filterable
  250 + >
  251 + <el-option
  252 + v-for="item in dxmbOptions"
  253 + :key="item.Id"
  254 + :label="item.FullName"
  255 + :value="item.Id"
  256 + >
  257 + <span style="float: left">{{ item.FullName }}</span>
  258 + <span style="float: right; color: #8492a6; font-size: 13px">{{ item.EnCode }}</span>
  259 + </el-option>
  260 + </el-select>
  261 + </el-form-item>
  262 + </el-col>
  263 + </el-row>
  264 + </el-form>
  265 + <div slot="footer" class="dialog-footer">
  266 + <el-button @click="handleClose" :disabled="saveLoading">取消</el-button>
  267 + <el-button type="primary" @click="saveEdit" :loading="saveLoading">
  268 + <i class="el-icon-check"></i> 保存
  269 + </el-button>
  270 + </div>
  271 + </el-dialog>
  272 +
133 273 </div>
134 274 </template>
135 275 <script>
136 276 import request from '@/utils/request'
137   - import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
138   - import NCCForm from './Form'
139   - import ExportBox from './ExportBox'
140   - import { previewDataInterface } from '@/api/systemData/dataInterface'
141 277 export default {
142   - components: { NCCForm, ExportBox },
143 278 data() {
144 279 return {
145   - showAll: false,
146 280 query: {
147   - id:undefined,
148   - djmdbh:undefined,
149   - djmd:undefined,
150   - syb:undefined,
151   - jyb:undefined,
152   - kjb:undefined,
153   - dxmb:undefined,
154   - gsqssj:undefined,
155   - gszzsj:undefined,
156   - xgxx:undefined,
157   - mdmc:undefined,
  281 + mdbm: undefined,
  282 + dm: undefined,
  283 + djmd: undefined,
  284 + isNewStore: undefined
158 285 },
159 286 list: [],
160 287 listLoading: true,
161   - multipleSelection: [], total: 0,
  288 + total: 0,
162 289 listQuery: {
163 290 currentPage: 1,
164 291 pageSize: 20,
165 292 sort: "desc",
166 293 sidx: "",
167 294 },
168   - formVisible: false,
169   - exportBoxVisible: false,
  295 + dialogVisible: false,
  296 + saveLoading: false,
  297 + dialogTitle: '编辑门店归属',
  298 + editForm: {
  299 + id: '',
  300 + mdbm: '',
  301 + dm: '',
  302 + syb: '',
  303 + jyb: '',
  304 + kjb: '',
  305 + dxmb: ''
  306 + },
  307 + editRules: {
  308 + syb: [{ required: false, message: '请选择事业部', trigger: 'change' }],
  309 + jyb: [{ required: false, message: '请选择教育部', trigger: 'change' }],
  310 + kjb: [{ required: false, message: '请选择科技部', trigger: 'change' }],
  311 + dxmb: [{ required: false, message: '请选择大项目部', trigger: 'change' }]
  312 + },
170 313 columnList: [
171   - { prop: 'id', label: '门店编码' },
172   - { prop: 'djmdbh', label: '单据门店编号' },
  314 + { prop: 'mdbm', label: '门店编码' },
  315 + { prop: 'dm', label: '门店名称' },
173 316 { prop: 'djmd', label: '单据门店' },
174 317 { prop: 'syb', label: '事业部' },
175 318 { prop: 'jyb', label: '教育部' },
176 319 { prop: 'kjb', label: '科技部' },
177 320 { prop: 'dxmb', label: '大项目部' },
178   - { prop: 'gsqssj', label: '归属起始时间' },
179   - { prop: 'gszzsj', label: '归属终止时间' },
180   - { prop: 'xgxx', label: '修改信息' },
181   - { prop: 'mdmc', label: '门店名称' },
  321 + { prop: 'isNewStore', label: '是否新店' }
182 322 ],
183   - mdmcOptions : [],
184   - sybOptions : [],
185   - jybOptions : [],
186   - kjbOptions : [],
187   - dxmbOptions : [],
  323 + sybOptions: [],
  324 + jybOptions: [],
  325 + kjbOptions: [],
  326 + dxmbOptions: [],
188 327 }
189 328 },
190 329 computed: {},
191 330 created() {
192 331 this.initData()
193   - this.getmdmcOptions();
194   - this.getsybOptions();
195   - this.getjybOptions();
196   - this.getkjbOptions();
197   - this.getdxmbOptions();
  332 + this.loadDepartmentOptions()
198 333 },
199 334 methods: {
200   - getmdmcOptions(){
201   - previewDataInterface('730960205902251269').then(res => {
202   - this.mdmcOptions = res.data
203   - });
  335 + // 加载部门选项
  336 + loadDepartmentOptions() {
  337 + // 加载事业部
  338 + request({
  339 + url: '/api/Extend/Organize/GetByName',
  340 + method: 'GET',
  341 + data: { organizeName: '事业部' }
  342 + }).then(res => {
  343 + this.sybOptions = res.data || []
  344 + }).catch(() => {
  345 + this.sybOptions = []
  346 + })
  347 +
  348 + // 加载教育部
  349 + request({
  350 + url: '/api/Extend/Organize/GetByName',
  351 + method: 'GET',
  352 + data: { organizeName: '教育部' }
  353 + }).then(res => {
  354 + this.jybOptions = res.data || []
  355 + }).catch(() => {
  356 + this.jybOptions = []
  357 + })
  358 +
  359 + // 加载科技部
  360 + request({
  361 + url: '/api/Extend/Organize/GetByName',
  362 + method: 'GET',
  363 + data: { organizeName: '科技部' }
  364 + }).then(res => {
  365 + this.kjbOptions = res.data || []
  366 + }).catch(() => {
  367 + this.kjbOptions = []
  368 + })
  369 +
  370 + // 加载大项目部
  371 + request({
  372 + url: '/api/Extend/Organize/GetByName',
  373 + method: 'GET',
  374 + data: { organizeName: '大项目部' }
  375 + }).then(res => {
  376 + this.dxmbOptions = res.data || []
  377 + }).catch(() => {
  378 + this.dxmbOptions = []
  379 + })
  380 + },
  381 +
  382 + // 获取部门名称
  383 + getDepartmentName(id, options) {
  384 + const option = options.find(item => item.Id === id)
  385 + return option ? option.FullName : '未知'
204 386 },
205   - getsybOptions(){
206   - previewDataInterface('731056988015822085').then(res => {
207   - this.sybOptions = res.data
208   - });
  387 +
  388 + // 加载所有门店的新店保护状态
  389 + async loadNewStoreStatus() {
  390 + if (!this.list || this.list.length === 0) return
  391 +
  392 + // 并行查询所有门店的保护状态
  393 + const promises = this.list.map(async (row) => {
  394 + if (!row.id) {
  395 + this.$set(row, 'isNewStore', false)
  396 + return
  397 + }
  398 +
  399 + try {
  400 + const res = await request({
  401 + url: `/api/Extend/LqMdXdbhsj/GetByStoreId/${row.id}`,
  402 + method: 'GET'
  403 + })
  404 +
  405 + this.$set(row, 'isNewStore', res.data && res.data.hasProtection === true)
  406 +
  407 + } catch (error) {
  408 + console.error(`查询门店 ${row.dm} 保护时间失败:`, error)
  409 + this.$set(row, 'isNewStore', false)
  410 + }
  411 + })
  412 +
  413 + await Promise.all(promises)
209 414 },
210   - getjybOptions(){
211   - previewDataInterface('731056988015822085').then(res => {
212   - this.jybOptions = res.data
213   - });
  415 +
  416 + // 判断是否为新店(通过门店新店保护时间表查询)
  417 + async isNewStore(row) {
  418 + if (!row.id) return false
  419 +
  420 + try {
  421 + const res = await request({
  422 + url: `/api/Extend/LqMdXdbhsj/GetByStoreId/${row.id}`,
  423 + method: 'GET'
  424 + })
  425 +
  426 + const isNew = res.data && res.data.hasProtection === true
  427 + this.$set(row, 'isNewStore', isNew)
  428 + return isNew
  429 + } catch (error) {
  430 + console.error(`查询门店 ${row.dm} 保护时间失败:`, error)
  431 + this.$set(row, 'isNewStore', false)
  432 + return false
  433 + }
214 434 },
215   - getkjbOptions(){
216   - previewDataInterface('731056988015822085').then(res => {
217   - this.kjbOptions = res.data
218   - });
  435 +
  436 + // 编辑处理
  437 + editHandle(row) {
  438 + this.dialogTitle = '编辑门店归属'
  439 + this.editForm = {
  440 + id: row.id,
  441 + mdbm: row.mdbm,
  442 + dm: row.dm,
  443 + syb: row.syb || '',
  444 + jyb: row.jyb || '',
  445 + kjb: row.kjb || '',
  446 + dxmb: row.dxmb || ''
  447 + }
  448 + this.dialogVisible = true
219 449 },
220   - getdxmbOptions(){
221   - previewDataInterface('731056988015822085').then(res => {
222   - this.dxmbOptions = res.data
223   - });
  450 +
  451 + // 查看处理
  452 + viewHandle(row) {
  453 + this.dialogTitle = '查看门店归属'
  454 + this.editForm = {
  455 + id: row.id,
  456 + mdbm: row.mdbm,
  457 + dm: row.dm,
  458 + syb: row.syb || '',
  459 + jyb: row.jyb || '',
  460 + kjb: row.kjb || '',
  461 + dxmb: row.dxmb || ''
  462 + }
  463 + this.dialogVisible = true
224 464 },
225   - initData() {
  465 +
  466 +
  467 + // 弹窗关闭处理
  468 + handleClose() {
  469 + if (this.saveLoading) {
  470 + this.$message.warning('正在保存中,请稍候...')
  471 + return
  472 + }
  473 + this.dialogVisible = false
  474 + this.$refs.editForm && this.$refs.editForm.resetFields()
  475 + },
  476 +
  477 + // 保存编辑
  478 + saveEdit() {
  479 + this.$refs.editForm.validate((valid) => {
  480 + if (valid) {
  481 + this.saveLoading = true
  482 + request({
  483 + url: `/api/Extend/LqMdxx/${this.editForm.id}`,
  484 + method: 'PUT',
  485 + data: {
  486 + syb: this.editForm.syb,
  487 + jyb: this.editForm.jyb,
  488 + kjb: this.editForm.kjb,
  489 + dxmb: this.editForm.dxmb
  490 + }
  491 + }).then(res => {
  492 + this.$message.success('保存成功')
  493 + this.dialogVisible = false
  494 + this.initData()
  495 + }).catch(() => {
  496 + this.$message.error('保存失败')
  497 + }).finally(() => {
  498 + this.saveLoading = false
  499 + })
  500 + }
  501 + })
  502 + },
  503 +
  504 +
  505 + async initData() {
226 506 this.listLoading = true;
227 507 let _query = {
228 508 ...this.listQuery,
... ... @@ -236,92 +516,27 @@
236 516 query[key] = _query[key]
237 517 }
238 518 }
239   - request({
240   - url: `/api/Extend/LqMdMdgs`,
241   - method: 'GET',
242   - data: query
243   - }).then(res => {
  519 +
  520 + try {
  521 + const res = await request({
  522 + url: `/api/Extend/LqMdxx`,
  523 + method: 'GET',
  524 + data: query
  525 + })
  526 +
244 527 this.list = res.data.list
245 528 this.total = res.data.pagination.total
  529 +
  530 + // 为每个门店查询新店保护状态
  531 + await this.loadNewStoreStatus()
  532 +
  533 + } catch (error) {
  534 + console.error('加载门店数据失败:', error)
  535 + } finally {
246 536 this.listLoading = false
247   - })
248   - },
249   - handleDel(id) {
250   - this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
251   - type: 'warning'
252   - }).then(() => {
253   - request({
254   - url: `/api/Extend/LqMdMdgs/${id}`,
255   - method: 'DELETE'
256   - }).then(res => {
257   - this.$message({
258   - type: 'success',
259   - message: res.msg,
260   - onClose: () => {
261   - this.initData()
262   - }
263   - });
264   - })
265   - }).catch(() => {
266   - });
267   - },
268   - handleSelectionChange(val) {
269   - const res = val.map(item => item.id)
270   - this.multipleSelection = res
271   - },
272   - handleBatchRemoveDel() {
273   - if (!this.multipleSelection.length) {
274   - this.$message({
275   - type: 'error',
276   - message: '请选择一条数据',
277   - duration: 1500,
278   - })
279   - return
280 537 }
281   - const ids = this.multipleSelection
282   - this.$confirm('您确定要删除这些数据吗, 是否继续?', '提示', {
283   - type: 'warning'
284   - }).then(() => {
285   - request({
286   - url: `/api/Extend/LqMdMdgs/batchRemove`,
287   - method: 'POST',
288   - data: ids ,
289   - }).then(res => {
290   - this.$message({
291   - type: 'success',
292   - message: res.msg,
293   - onClose: () => {
294   - this.initData()
295   - }
296   - });
297   - })
298   - }).catch(() => { })
299   - },
300   - addOrUpdateHandle(id, isDetail) {
301   - this.formVisible = true
302   - this.$nextTick(() => {
303   - this.$refs.NCCForm.init(id, isDetail)
304   - })
305   - },
306   - exportData() {
307   - this.exportBoxVisible = true
308   - this.$nextTick(() => {
309   - this.$refs.ExportBox.init(this.columnList)
310   - })
311   - },
312   - download(data) {
313   - let query = { ...data, ...this.listQuery, ...this.query }
314   - request({
315   - url: `/api/Extend/LqMdMdgs/Actions/Export`,
316   - method: 'GET',
317   - data: query
318   - }).then(res => {
319   - if (!res.data.url) return
320   - window.location.href = this.define.comUrl + res.data.url
321   - this.$refs.ExportBox.visible = false
322   - this.exportBoxVisible = false
323   - })
324 538 },
  539 +
325 540 search() {
326 541 this.listQuery = {
327 542 currentPage: 1,
... ... @@ -331,10 +546,6 @@
331 546 }
332 547 this.initData()
333 548 },
334   - refresh(isrRefresh) {
335   - this.formVisible = false
336   - if (isrRefresh) this.reset()
337   - },
338 549 reset() {
339 550 for (let key in this.query) {
340 551 this.query[key] = undefined
... ... @@ -348,5 +559,124 @@
348 559 this.initData()
349 560 }
350 561 }
351   - }
352   -</script>
353 562 \ No newline at end of file
  563 + }
  564 +</script>
  565 +
  566 +<style lang="scss" scoped>
  567 + // 页面头部样式
  568 + .NCC-common-head-left {
  569 + display: flex;
  570 + align-items: center;
  571 + gap: 12px;
  572 + }
  573 +
  574 + .NCC-common-head-title {
  575 + margin: 0;
  576 + font-size: 18px;
  577 + font-weight: 600;
  578 + color: #303133;
  579 + display: flex;
  580 + align-items: center;
  581 + gap: 8px;
  582 +
  583 + i {
  584 + color: #409EFF;
  585 + font-size: 20px;
  586 + }
  587 + }
  588 +
  589 +
  590 + // 表格样式
  591 + .store-name {
  592 + font-weight: 500;
  593 + color: #303133;
  594 + }
  595 +
  596 + .empty-text {
  597 + color: #C0C4CC;
  598 + font-style: italic;
  599 + }
  600 +
  601 + .action-btn {
  602 + padding: 4px 8px;
  603 + margin: 0 2px;
  604 +
  605 + &:hover {
  606 + background-color: #f5f7fa;
  607 + }
  608 + }
  609 +
  610 + // 弹窗样式
  611 + .store-dialog {
  612 + .dialog-header {
  613 + padding: 16px 0;
  614 + border-bottom: 1px solid #EBEEF5;
  615 + margin-bottom: 20px;
  616 +
  617 + .store-info {
  618 + display: flex;
  619 + align-items: center;
  620 + gap: 12px;
  621 +
  622 + i {
  623 + font-size: 20px;
  624 + color: #409EFF;
  625 + }
  626 +
  627 + .store-name {
  628 + font-size: 16px;
  629 + font-weight: 600;
  630 + color: #303133;
  631 + }
  632 + }
  633 + }
  634 +
  635 + .edit-form {
  636 + .el-form-item {
  637 + margin-bottom: 20px;
  638 + }
  639 + }
  640 + }
  641 +
  642 +
  643 + // 搜索区域样式
  644 + .search-buttons {
  645 + display: flex;
  646 + align-items: center;
  647 + gap: 8px;
  648 + }
  649 +
  650 + // 响应式设计
  651 + @media (max-width: 768px) {
  652 + .NCC-common-head {
  653 + flex-direction: column;
  654 + align-items: flex-start;
  655 + gap: 12px;
  656 +
  657 + .NCC-common-head-right {
  658 + width: 100%;
  659 + justify-content: flex-start;
  660 + }
  661 + }
  662 +
  663 + .el-col {
  664 + margin-bottom: 16px;
  665 + }
  666 +
  667 + .store-dialog {
  668 + .el-dialog {
  669 + width: 95% !important;
  670 + margin: 0 auto;
  671 + }
  672 + }
  673 + }
  674 +
  675 + // 表格响应式
  676 + @media (max-width: 1200px) {
  677 + .NCC-table {
  678 + .el-table {
  679 + font-size: 12px;
  680 + }
  681 + }
  682 + }
  683 +</style>
354 684 \ No newline at end of file
... ...
antis-ncc-admin/src/views/lqYcsdJsj/Form.vue
1 1 <template>
2   - <el-dialog :title="!dataForm.id ? '新建' : isDetail ? '详情':'编辑'" :close-on-click-modal="false" :visible.sync="visible" class="NCC-dialog NCC-dialog_center" lock-scroll width="600px">
3   - <el-row :gutter="15" class="" >
4   - <el-form ref="elForm" :model="dataForm" size="small" label-width="100px" label-position="right" :disabled="!!isDetail" :rules="rules">
5   - <el-col :span="24" v-if="false" >
6   - <el-form-item label="主键" prop="id">
7   - <el-input v-model="dataForm.id" placeholder="请输入" clearable :style='{"width":"100%"}' >
8   - </el-input>
9   - </el-form-item>
10   - </el-col>
11   - <el-col :span="12">
12   - <el-form-item label="月份" prop="yf">
13   - <el-input v-model="dataForm.yf" placeholder="请输入" clearable :style='{"width":"100%"}' >
14   - </el-input>
15   - </el-form-item>
16   - </el-col>
17   - <el-col :span="12">
18   - <el-form-item label="门店" prop="md">
19   - <el-input v-model="dataForm.md" placeholder="请输入" clearable :style='{"width":"100%"}' >
20   - </el-input>
21   - </el-form-item>
22   - </el-col>
23   - <el-col :span="12">
24   - <el-form-item label="金三角" prop="jsj">
25   - <el-input v-model="dataForm.jsj" placeholder="请输入" clearable :style='{"width":"100%"}' >
26   - </el-input>
27   - </el-form-item>
28   - </el-col>
29   - <el-col :span="12">
30   - <el-form-item label="岗位" prop="gw">
31   - <el-input v-model="dataForm.gw" placeholder="请输入" clearable :style='{"width":"100%"}' >
32   - </el-input>
33   - </el-form-item>
34   - </el-col>
35   - <el-col :span="12">
36   - <el-form-item label="健康师" prop="jks">
37   - <el-input v-model="dataForm.jks" placeholder="请输入" clearable :style='{"width":"100%"}' >
38   - </el-input>
39   - </el-form-item>
40   - </el-col>
41   - <el-col :span="12">
42   - <el-form-item label="成交率" prop="cjl">
43   - <el-input v-model="dataForm.cjl" placeholder="请输入" clearable :style='{"width":"100%"}' >
44   - </el-input>
45   - </el-form-item>
46   - </el-col>
47   - <el-col :span="12">
48   - <el-form-item label="成交业绩" prop="cjyj">
49   - <el-input v-model="dataForm.cjyj" placeholder="请输入" clearable :style='{"width":"100%"}' >
50   - </el-input>
51   - </el-form-item>
52   - </el-col>
53   - <el-col :span="12">
54   - <el-form-item label="成交提点" prop="cjtd">
55   - <el-input v-model="dataForm.cjtd" placeholder="请输入" clearable :style='{"width":"100%"}' >
56   - </el-input>
57   - </el-form-item>
58   - </el-col>
59   - <el-col :span="12">
60   - <el-form-item label="剩余业绩" prop="syyj">
61   - <el-input v-model="dataForm.syyj" placeholder="请输入" clearable :style='{"width":"100%"}' >
62   - </el-input>
63   - </el-form-item>
64   - </el-col>
65   - <el-col :span="12">
66   - <el-form-item label="出勤天数" prop="cqts">
67   - <el-input v-model="dataForm.cqts" placeholder="请输入" clearable :style='{"width":"100%"}' >
68   - </el-input>
69   - </el-form-item>
70   - </el-col>
71   - <el-col :span="12">
72   - <el-form-item label="系统业绩" prop="xtyj">
73   - <el-input v-model="dataForm.xtyj" placeholder="请输入" clearable :style='{"width":"100%"}' >
74   - </el-input>
75   - </el-form-item>
76   - </el-col>
77   - <el-col :span="12">
78   - <el-form-item label="总业绩" prop="zyj">
79   - <el-input v-model="dataForm.zyj" placeholder="请输入" clearable :style='{"width":"100%"}' >
80   - </el-input>
81   - </el-form-item>
82   - </el-col>
83   - <el-col :span="12">
84   - <el-form-item label="基础业绩" prop="jcyj">
85   - <el-input v-model="dataForm.jcyj" placeholder="请输入" clearable :style='{"width":"100%"}' >
86   - </el-input>
87   - </el-form-item>
88   - </el-col>
89   - <el-col :span="12">
90   - <el-form-item label="合作业绩" prop="hzyj">
91   - <el-input v-model="dataForm.hzyj" placeholder="请输入" clearable :style='{"width":"100%"}' >
92   - </el-input>
93   - </el-form-item>
94   - </el-col>
95   - <el-col :span="12">
96   - <el-form-item label="奖励业绩" prop="jlyj">
97   - <el-input v-model="dataForm.jlyj" placeholder="请输入" clearable :style='{"width":"100%"}' >
98   - </el-input>
99   - </el-form-item>
100   - </el-col>
101   - <el-col :span="12">
102   - <el-form-item label="项目数" prop="xms">
103   - <el-input v-model="dataForm.xms" placeholder="请输入" clearable :style='{"width":"100%"}' >
104   - </el-input>
105   - </el-form-item>
106   - </el-col>
107   - <el-col :span="12">
108   - <el-form-item label="手工" prop="sg">
109   - <el-input v-model="dataForm.sg" placeholder="请输入" clearable :style='{"width":"100%"}' >
110   - </el-input>
111   - </el-form-item>
112   - </el-col>
113   - <el-col :span="12">
114   - <el-form-item label="是否属于战队" prop="sfsyzd">
115   - <el-input v-model="dataForm.sfsyzd" placeholder="请输入" clearable :style='{"width":"100%"}' >
116   - </el-input>
117   - </el-form-item>
118   - </el-col>
119   - <el-col :span="12">
120   - <el-form-item label="是否满足考勤" prop="fsmzkq">
121   - <el-input v-model="dataForm.fsmzkq" placeholder="请输入" clearable :style='{"width":"100%"}' >
122   - </el-input>
123   - </el-form-item>
124   - </el-col>
125   - <el-col :span="12">
126   - <el-form-item label="战队最终人数" prop="zdzzrs">
127   - <el-input v-model="dataForm.zdzzrs" placeholder="请输入" clearable :style='{"width":"100%"}' >
128   - </el-input>
129   - </el-form-item>
130   - </el-col>
131   - <el-col :span="12">
132   - <el-form-item label="视为单人" prop="kqhbsyzd">
133   - <el-input v-model="dataForm.kqhbsyzd" placeholder="考勤后不属于战队的" clearable :style='{"width":"100%"}' >
134   - </el-input>
135   - </el-form-item>
136   - </el-col>
137   - <el-col :span="12">
138   - <el-form-item label="战队提成" prop="zdtc">
139   - <el-input v-model="dataForm.zdtc" placeholder="请输入" clearable :style='{"width":"100%"}' >
140   - </el-input>
141   - </el-form-item>
142   - </el-col>
143   - <el-col :span="12">
144   - <el-form-item label="按1人提成" prop="ayrtc">
145   - <el-input v-model="dataForm.ayrtc" placeholder="请输入" clearable :style='{"width":"100%"}' >
146   - </el-input>
147   - </el-form-item>
148   - </el-col>
149   - <el-col :span="12">
150   - <el-form-item label="最终提成点" prop="zztcd">
151   - <el-input v-model="dataForm.zztcd" placeholder="请输入" clearable :style='{"width":"100%"}' >
152   - </el-input>
153   - </el-form-item>
154   - </el-col>
155   - <el-col :span="12">
156   - <el-form-item label="基础业绩提成" prop="jcyjtc">
157   - <el-input v-model="dataForm.jcyjtc" placeholder="请输入" clearable :style='{"width":"100%"}' >
158   - </el-input>
159   - </el-form-item>
160   - </el-col>
161   - <el-col :span="12">
162   - <el-form-item label="合作业绩提成" prop="hzyjtc">
163   - <el-input v-model="dataForm.hzyjtc" placeholder="请输入" clearable :style='{"width":"100%"}' >
164   - </el-input>
165   - </el-form-item>
166   - </el-col>
167   - <el-col :span="12">
168   - <el-form-item label="提成合计" prop="tchj">
169   - <el-input v-model="dataForm.tchj" placeholder="请输入" clearable :style='{"width":"100%"}' >
170   - </el-input>
171   - </el-form-item>
172   - </el-col>
173   - <el-col :span="12">
174   - <el-form-item label="个人占比" prop="grzb">
175   - <el-input v-model="dataForm.grzb" placeholder="请输入" clearable :style='{"width":"100%"}' >
176   - </el-input>
177   - </el-form-item>
178   - </el-col>
179   - <el-col :span="12">
180   - <el-form-item label="组员合计" prop="zyhj">
181   - <el-input v-model="dataForm.zyhj" placeholder="请输入" clearable :style='{"width":"100%"}' >
182   - </el-input>
183   - </el-form-item>
184   - </el-col>
185   - <el-col :span="12">
186   - <el-form-item label="顾问提成" prop="gwtc">
187   - <el-input v-model="dataForm.gwtc" placeholder="请输入" clearable :style='{"width":"100%"}' >
188   - </el-input>
189   - </el-form-item>
190   - </el-col>
191   - </el-form>
192   - </el-row>
  2 + <el-dialog
  3 + :title="dialogTitle"
  4 + :close-on-click-modal="false"
  5 + :visible.sync="visible"
  6 + class="NCC-dialog NCC-dialog_center"
  7 + lock-scroll
  8 + width="900px"
  9 + :before-close="handleClose">
  10 +
  11 + <!-- 基本信息 -->
  12 + <el-form ref="basicForm" :model="dataForm" size="small" label-width="100px" label-position="right" :disabled="!!isDetail" :rules="rules">
  13 + <el-row :gutter="15">
  14 + <el-col :span="12">
  15 + <el-form-item label="月份" prop="yf">
  16 + <el-date-picker
  17 + v-model="monthValue"
  18 + type="month"
  19 + placeholder="请选择月份"
  20 + format="yyyyMM"
  21 + value-format="yyyyMM"
  22 + :style='{"width":"100%"}'
  23 + @change="onMonthChange">
  24 + </el-date-picker>
  25 + </el-form-item>
  26 + </el-col>
  27 + <el-col :span="12">
  28 + <el-form-item label="门店" prop="md">
  29 + <el-select
  30 + v-model="dataForm.md"
  31 + placeholder="请选择门店"
  32 + clearable
  33 + :style='{"width":"100%"}'
  34 + @change="onStoreChange"
  35 + filterable>
  36 + <el-option
  37 + v-for="store in storeList"
  38 + :key="store.id"
  39 + :label="store.name"
  40 + :value="store.id">
  41 + </el-option>
  42 + </el-select>
  43 + </el-form-item>
  44 + </el-col>
  45 + <el-col :span="24">
  46 + <el-form-item label="金三角" prop="jsj">
  47 + <el-input
  48 + v-model="dataForm.jsj"
  49 + placeholder="请输入金三角名称"
  50 + clearable
  51 + :style='{"width":"100%"}'
  52 + maxlength="50">
  53 + </el-input>
  54 + </el-form-item>
  55 + </el-col>
  56 + </el-row>
  57 + </el-form>
  58 +
  59 + <!-- 成员管理 -->
  60 + <div class="member-section">
  61 + <div class="section-title">
  62 + <span>{{ isDetail ? '成员信息' : '成员管理' }}</span>
  63 + <div class="member-actions" v-if="!isDetail">
  64 + <el-button type="primary" icon="el-icon-plus" @click="addMember" size="small">添加成员</el-button>
  65 + <el-button type="warning" icon="el-icon-refresh" @click="refreshMembers" size="small">刷新</el-button>
  66 + <span class="member-count">共 {{ members.length }} 人</span>
  67 + </div>
  68 + <span class="member-count" v-if="isDetail">共 {{ members.length }} 人</span>
  69 + </div>
  70 +
  71 + <el-table :data="members" border style="width: 100%; margin-top: 10px;" :header-cell-style="{ background: '#f5f7fa', color: '#606266', fontWeight: 'bold' }">
  72 + <el-table-column type="index" label="序号" min-width="80" align="center" />
  73 + <el-table-column prop="userName" label="姓名" min-width="120">
  74 + <template slot-scope="scope">
  75 + <el-input v-if="!isDetail" v-model="scope.row.userName" size="small" placeholder="请输入姓名" />
  76 + <div v-else class="member-name">
  77 + <i class="el-icon-user"></i>
  78 + <span>{{ scope.row.userName }}</span>
  79 + </div>
  80 + </template>
  81 + </el-table-column>
  82 + <el-table-column prop="userId" label="用户" min-width="180">
  83 + <template slot-scope="scope">
  84 + <el-select
  85 + v-if="!isDetail"
  86 + v-model="scope.row.userId"
  87 + placeholder="选择用户"
  88 + size="small"
  89 + @change="onUserChange(scope.$index, $event)"
  90 + filterable
  91 + style="width: 100%;">
  92 + <el-option
  93 + v-for="user in availableUsers"
  94 + :key="user.id"
  95 + :label="user.name"
  96 + :value="user.id">
  97 + </el-option>
  98 + </el-select>
  99 + <div v-else class="user-info">
  100 + <i class="el-icon-user-solid"></i>
  101 + <span>{{ scope.row.userId }}</span>
  102 + </div>
  103 + </template>
  104 + </el-table-column>
  105 + <el-table-column label="是否顾问" min-width="120" align="center">
  106 + <template slot-scope="scope">
  107 + <el-radio-group v-if="!isDetail" v-model="scope.row.isLeader" size="small">
  108 + <el-radio :label="1">是</el-radio>
  109 + <el-radio :label="0">否</el-radio>
  110 + </el-radio-group>
  111 + <el-tag v-else :type="scope.row.isLeader === 1 ? 'success' : 'info'" size="small" effect="dark">
  112 + <i class="el-icon-star-on" v-if="scope.row.isLeader === 1"></i>
  113 + <i class="el-icon-star-off" v-else></i>
  114 + {{ scope.row.isLeader === 1 ? '是' : '否' }}
  115 + </el-tag>
  116 + </template>
  117 + </el-table-column>
  118 + <el-table-column label="排序" min-width="100" align="center">
  119 + <template slot-scope="scope">
  120 + <el-input-number
  121 + v-if="!isDetail"
  122 + v-model="scope.row.sortOrder"
  123 + :min="1"
  124 + :max="999"
  125 + size="small"
  126 + style="width: 100%;" />
  127 + <el-tag v-else type="info" size="small">{{ scope.row.sortOrder }}</el-tag>
  128 + </template>
  129 + </el-table-column>
  130 + <el-table-column prop="status" label="状态" min-width="100" align="center" v-if="isDetail">
  131 + <template slot-scope="scope">
  132 + <el-tag :type="scope.row.status === 'ACTIVE' ? 'success' : 'info'" size="small" effect="dark">
  133 + <i class="el-icon-check" v-if="scope.row.status === 'ACTIVE'"></i>
  134 + <i class="el-icon-close" v-else></i>
  135 + {{ scope.row.status === 'ACTIVE' ? '活跃' : '非活跃' }}
  136 + </el-tag>
  137 + </template>
  138 + </el-table-column>
  139 + <el-table-column label="操作" min-width="120" align="center" v-if="!isDetail">
  140 + <template slot-scope="scope">
  141 + <el-button type="danger" icon="el-icon-delete" @click="removeMember(scope.$index)" size="small" plain>删除</el-button>
  142 + </template>
  143 + </el-table-column>
  144 + </el-table>
  145 + </div>
  146 +
193 147 <span slot="footer" class="dialog-footer">
194   - <el-button @click="visible = false">取 消</el-button>
  148 + <el-button @click="handleClose">取 消</el-button>
195 149 <el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail">确 定</el-button>
196 150 </span>
197 151 </el-dialog>
198 152 </template>
  153 +
199 154 <script>
200 155 import request from '@/utils/request'
201 156 import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
202 157 import { previewDataInterface } from '@/api/systemData/dataInterface'
  158 +
203 159 export default {
204 160 components: {},
205 161 props: [],
... ... @@ -208,109 +164,430 @@
208 164 loading: false,
209 165 visible: false,
210 166 isDetail: false,
  167 + isManageMembers: false,
211 168 dataForm: {
212   - id:'',
213   - id:undefined,
214   - yf:undefined,
215   - md:undefined,
216   - jsj:undefined,
217   - gw:undefined,
218   - jks:undefined,
219   - cjl:undefined,
220   - cjyj:undefined,
221   - cjtd:undefined,
222   - syyj:undefined,
223   - cqts:undefined,
224   - xtyj:undefined,
225   - zyj:undefined,
226   - jcyj:undefined,
227   - hzyj:undefined,
228   - jlyj:undefined,
229   - xms:undefined,
230   - sg:undefined,
231   - sfsyzd:undefined,
232   - fsmzkq:undefined,
233   - zdzzrs:undefined,
234   - kqhbsyzd:undefined,
235   - zdtc:undefined,
236   - ayrtc:undefined,
237   - zztcd:undefined,
238   - jcyjtc:undefined,
239   - hzyjtc:undefined,
240   - tchj:undefined,
241   - grzb:undefined,
242   - zyhj:undefined,
243   - gwtc:undefined,
  169 + id: '',
  170 + yf: '',
  171 + md: '',
  172 + jsj: ''
244 173 },
  174 + members: [],
  175 + storeList: [],
  176 + availableUsers: [],
  177 + monthValue: null, // 月份选择器的值
245 178 rules: {
246   - },
  179 + yf: [
  180 + { required: true, message: '月份不能为空', trigger: 'blur' },
  181 + { pattern: /^\d{6}$/, message: '月份格式必须为yyyyMM', trigger: 'blur' }
  182 + ],
  183 + md: [
  184 + { required: true, message: '门店不能为空', trigger: 'change' }
  185 + ],
  186 + jsj: [
  187 + { required: true, message: '金三角名称不能为空', trigger: 'blur' }
  188 + ]
  189 + }
247 190 }
248 191 },
249   - computed: {},
250   - watch: {},
251   - created() {
  192 + computed: {
  193 + dialogTitle() {
  194 + if (this.isDetail) return '金三角详情'
  195 + if (this.isManageMembers) return '管理成员'
  196 + return this.dataForm.id ? '编辑金三角' : '新建金三角'
  197 + }
252 198 },
253   - mounted() {
254   - },
  199 + watch: {},
  200 + created() {},
  201 + mounted() {},
255 202 methods: {
256 203 goBack() {
257   - this.$emit('refresh')
258   - },
259   - init(id, isDetail) {
260   - this.dataForm.id = id || 0;
261   - this.visible = true;
262   - this.isDetail = isDetail || false;
  204 + this.$emit('refresh')
  205 + },
  206 + init(id, isDetail, isManageMembers) {
  207 + this.dataForm.id = id || 0
  208 + this.visible = true
  209 + this.isDetail = isDetail || false
  210 + this.isManageMembers = isManageMembers || false
  211 + this.members = []
  212 +
263 213 this.$nextTick(() => {
264   - this.$refs['elForm'].resetFields();
  214 + this.$refs['basicForm'] && this.$refs['basicForm'].resetFields()
  215 + this.loadStoreList()
265 216 if (this.dataForm.id) {
266   - request({
267   - url: '/api/Extend/LqYcsdJsj/' + this.dataForm.id,
268   - method: 'get'
269   - }).then(res =>{
270   - this.dataForm = res.data;
271   - })
  217 + this.loadData()
  218 + }
  219 + })
  220 + },
  221 + loadData() {
  222 + // 加载基本信息
  223 + request({
  224 + url: '/api/Extend/LqYcsdJsj/' + this.dataForm.id,
  225 + method: 'get'
  226 + }).then(res => {
  227 + this.dataForm = res.data
  228 + // 同步月份选择器的值
  229 + this.monthValue = this.dataForm.yf
  230 + // 门店变化后更新可用用户(不清空成员)
  231 + if (this.dataForm.md) {
  232 + this.loadUsersByStore(this.dataForm.md)
  233 + }
  234 + })
  235 +
  236 + // 加载成员信息
  237 + request({
  238 + url: '/api/Extend/LqYcsdJsj/' + this.dataForm.id + '/detail',
  239 + method: 'get'
  240 + }).then(res => {
  241 + this.members = res.data.members || []
  242 + })
  243 + },
  244 + loadStoreList() {
  245 + // 加载门店列表
  246 + request({
  247 + url: '/api/Extend/LqMdxx/Selector',
  248 + method: 'GET'
  249 + }).then(res => {
  250 + this.storeList = res.data.list.map(item => ({
  251 + id: item.id,
  252 + name: item.fullName
  253 + }))
  254 + }).catch(() => {
  255 + this.storeList = []
  256 + })
  257 + },
  258 + onStoreChange() {
  259 + // 门店变化时更新可用用户
  260 + if (this.dataForm.md) {
  261 + this.loadUsersByStore(this.dataForm.md)
  262 + } else {
  263 + this.availableUsers = []
  264 + }
  265 + // 清空已选择的成员
  266 + this.members = []
  267 + },
  268 + loadUsersByStore(storeId) {
  269 + // 根据门店ID加载用户
  270 + request({
  271 + url: '/api/Extend/User/Selector',
  272 + method: 'GET',
  273 + params: {
  274 + mdid: storeId
272 275 }
  276 + }).then(res => {
  277 + this.availableUsers = res.data.map(item => ({
  278 + id: item.id,
  279 + name: item.realName,
  280 + storeId: item.mdid
  281 + }))
  282 + }).catch(() => {
  283 + this.availableUsers = []
273 284 })
274 285 },
  286 + onUserChange(index, userId) {
  287 + // 用户选择变化时自动填充姓名
  288 + const selectedUser = this.availableUsers.find(user => user.id === userId)
  289 + if (selectedUser) {
  290 + this.$set(this.members[index], 'userName', selectedUser.name)
  291 + }
  292 + },
  293 + onMonthChange(value) {
  294 + // 月份选择器变化时更新dataForm.yf
  295 + this.dataForm.yf = value
  296 + },
275 297 dataFormSubmit() {
276   - this.$refs['elForm'].validate((valid) => {
277   - if (valid) {
278   - if (!this.dataForm.id) {
279   - request({
280   - url: `/api/Extend/LqYcsdJsj`,
281   - method: 'post',
282   - data: this.dataForm,
283   - }).then((res) => {
284   - this.$message({
285   - message: res.msg,
286   - type: 'success',
287   - duration: 1000,
288   - onClose: () => {
289   - this.visible = false,
290   - this.$emit('refresh', true)
291   - }
292   - })
293   - })
294   - } else {
295   - request({
296   - url: '/api/Extend/LqYcsdJsj/' + this.dataForm.id,
297   - method: 'PUT',
298   - data: this.dataForm
299   - }).then((res) => {
300   - this.$message({
301   - message: res.msg,
302   - type: 'success',
303   - duration: 1000,
304   - onClose: () => {
305   - this.visible = false
306   - this.$emit('refresh', true)
307   - }
308   - })
309   - })
310   - }
311   - }
312   - })
  298 + this.$refs['basicForm'].validate((valid) => {
  299 + if (valid) {
  300 + // 验证多人战队必须有顾问
  301 + if (this.members.length >= 2) {
  302 + const hasLeader = this.members.some(m => m.isLeader === 1)
  303 + if (!hasLeader) {
  304 + this.$message.error('两人或两人以上的战队必须有一个顾问')
  305 + this.activeTab = 'members'
  306 + return
  307 + }
  308 + }
  309 +
  310 + const submitData = {
  311 + ...this.dataForm,
  312 + members: this.members
  313 + }
  314 +
  315 + if (!this.dataForm.id) {
  316 + // 新建
  317 + request({
  318 + url: `/api/Extend/LqYcsdJsj`,
  319 + method: 'post',
  320 + data: submitData,
  321 + }).then((res) => {
  322 + this.$message({
  323 + message: res.msg,
  324 + type: 'success',
  325 + duration: 1000,
  326 + onClose: () => {
  327 + this.visible = false
  328 + this.$emit('refresh', true)
  329 + }
  330 + })
  331 + })
  332 + } else {
  333 + // 编辑
  334 + request({
  335 + url: '/api/Extend/LqYcsdJsj/' + this.dataForm.id,
  336 + method: 'PUT',
  337 + data: submitData
  338 + }).then((res) => {
  339 + this.$message({
  340 + message: res.msg,
  341 + type: 'success',
  342 + duration: 1000,
  343 + onClose: () => {
  344 + this.visible = false
  345 + this.$emit('refresh', true)
  346 + }
  347 + })
  348 + })
  349 + }
  350 + }
  351 + })
  352 + },
  353 + // 成员管理方法
  354 + addMember() {
  355 + if (!this.dataForm.md) {
  356 + this.$message.warning('请先选择门店')
  357 + return
  358 + }
  359 + this.members.push({
  360 + userId: '',
  361 + userName: '',
  362 + isLeader: 0,
  363 + sortOrder: this.members.length + 1
  364 + })
  365 + },
  366 + removeMember(index) {
  367 + this.$confirm('确定要删除这个成员吗?', '提示', {
  368 + type: 'warning'
  369 + }).then(() => {
  370 + this.members.splice(index, 1)
  371 + // 重新排序
  372 + this.members.forEach((member, index) => {
  373 + member.sortOrder = index + 1
  374 + })
  375 + })
313 376 },
  377 + refreshMembers() {
  378 + if (this.dataForm.id) {
  379 + this.loadData()
  380 + }
  381 + },
  382 + handleClose() {
  383 + this.visible = false
  384 + }
314 385 }
315 386 }
316 387 </script>
  388 +
  389 +<style scoped>
  390 +/* 基本信息区域 */
  391 +.el-form {
  392 + background: #f8f9fa;
  393 + padding: 20px;
  394 + border-radius: 8px;
  395 + margin-bottom: 20px;
  396 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  397 + border: 1px solid #e9ecef;
  398 +}
  399 +
  400 +.el-form-item__label {
  401 + font-weight: 600;
  402 + color: #2c3e50;
  403 +}
  404 +
  405 +/* 成员管理区域 */
  406 +.member-section {
  407 + margin-top: 20px;
  408 + padding: 20px;
  409 + border: 1px solid #e1e8ed;
  410 + border-radius: 8px;
  411 + background: #fff;
  412 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  413 +}
  414 +
  415 +.section-title {
  416 + display: flex;
  417 + align-items: center;
  418 + justify-content: space-between;
  419 + margin-bottom: 16px;
  420 + font-size: 18px;
  421 + font-weight: 700;
  422 + color: #2c3e50;
  423 + border-bottom: 2px solid #3498db;
  424 + padding-bottom: 8px;
  425 +}
  426 +
  427 +.member-actions {
  428 + display: flex;
  429 + align-items: center;
  430 + gap: 12px;
  431 +}
  432 +
  433 +.member-count {
  434 + color: #7f8c8d;
  435 + font-size: 14px;
  436 + font-weight: 500;
  437 + background: #ecf0f1;
  438 + padding: 4px 12px;
  439 + border-radius: 20px;
  440 +}
  441 +
  442 +/* 表格样式 */
  443 +.el-table {
  444 + margin-top: 16px;
  445 + border-radius: 8px;
  446 + overflow: hidden;
  447 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  448 +}
  449 +
  450 +.el-table th {
  451 + background: #409EFF !important;
  452 + color: #fff !important;
  453 + font-weight: 600;
  454 +}
  455 +
  456 +.el-table tbody tr:hover > td {
  457 + background-color: #f8f9fa !important;
  458 +}
  459 +
  460 +/* 成员信息显示 */
  461 +.member-name, .user-info {
  462 + display: flex;
  463 + align-items: center;
  464 + gap: 8px;
  465 + color: #2c3e50;
  466 + font-weight: 500;
  467 +}
  468 +
  469 +.member-name i, .user-info i {
  470 + color: #3498db;
  471 + font-size: 16px;
  472 +}
  473 +
  474 +/* 标签样式 */
  475 +.el-tag {
  476 + border-radius: 16px;
  477 + font-weight: 500;
  478 + padding: 4px 12px;
  479 +}
  480 +
  481 +.el-tag i {
  482 + margin-right: 4px;
  483 +}
  484 +
  485 +/* 按钮样式 */
  486 +.el-button {
  487 + border-radius: 6px;
  488 + font-weight: 500;
  489 + transition: all 0.3s ease;
  490 +}
  491 +
  492 +.el-button:hover {
  493 + transform: translateY(-1px);
  494 + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
  495 +}
  496 +
  497 +/* 输入框样式 */
  498 +.el-input, .el-select, .el-input-number {
  499 + border-radius: 6px;
  500 +}
  501 +
  502 +.el-input__inner, .el-textarea__inner {
  503 + border-radius: 6px;
  504 + transition: all 0.3s ease;
  505 +}
  506 +
  507 +.el-input__inner:focus, .el-textarea__inner:focus {
  508 + border-color: #3498db;
  509 + box-shadow: 0 0 0 2px rgba(52, 152, 219, 0.2);
  510 +}
  511 +
  512 +/* 对话框样式 */
  513 +.NCC-dialog {
  514 + border-radius: 8px;
  515 + overflow: hidden;
  516 +}
  517 +
  518 +.el-dialog__header {
  519 + background: #409EFF;
  520 + color: #fff;
  521 + padding: 20px;
  522 +}
  523 +
  524 +.el-dialog__title {
  525 + font-weight: 600;
  526 + font-size: 18px;
  527 +}
  528 +
  529 +.el-dialog__body {
  530 + padding: 30px;
  531 + background: #f8f9fa;
  532 +}
  533 +
  534 +.el-dialog__footer {
  535 + background: #fff;
  536 + padding: 20px 30px;
  537 + border-top: 1px solid #e9ecef;
  538 +}
  539 +
  540 +/* 响应式设计 */
  541 +@media (max-width: 768px) {
  542 + .member-actions {
  543 + flex-direction: column;
  544 + align-items: flex-start;
  545 + gap: 8px;
  546 + }
  547 +
  548 + .action-buttons {
  549 + flex-direction: column;
  550 + width: 100%;
  551 + }
  552 +
  553 + .action-buttons .el-button {
  554 + width: 100%;
  555 + }
  556 +}
  557 +
  558 +/* 动画效果 */
  559 +.member-section {
  560 + animation: fadeInUp 0.5s ease-out;
  561 +}
  562 +
  563 +@keyframes fadeInUp {
  564 + from {
  565 + opacity: 0;
  566 + transform: translateY(20px);
  567 + }
  568 + to {
  569 + opacity: 1;
  570 + transform: translateY(0);
  571 + }
  572 +}
  573 +
  574 +/* 滚动条样式 */
  575 +.el-table__body-wrapper::-webkit-scrollbar {
  576 + width: 6px;
  577 + height: 6px;
  578 +}
  579 +
  580 +.el-table__body-wrapper::-webkit-scrollbar-track {
  581 + background: #f1f1f1;
  582 + border-radius: 3px;
  583 +}
  584 +
  585 +.el-table__body-wrapper::-webkit-scrollbar-thumb {
  586 + background: #c1c1c1;
  587 + border-radius: 3px;
  588 +}
  589 +
  590 +.el-table__body-wrapper::-webkit-scrollbar-thumb:hover {
  591 + background: #a8a8a8;
  592 +}
  593 +</style>
317 594 \ No newline at end of file
... ...
antis-ncc-admin/src/views/lqYcsdJsj/MemberDialog.vue 0 → 100644
  1 +<template>
  2 + <el-dialog
  3 + title="成员管理"
  4 + :visible.sync="visible"
  5 + width="900px"
  6 + :close-on-click-modal="false"
  7 + @close="handleClose">
  8 +
  9 + <div class="member-dialog">
  10 + <!-- 操作栏 -->
  11 + <div class="member-toolbar">
  12 + <el-button type="primary" icon="el-icon-plus" @click="addMember" size="small">添加成员</el-button>
  13 + <el-button type="warning" icon="el-icon-refresh" @click="refreshMembers" size="small">刷新</el-button>
  14 + <el-button type="success" icon="el-icon-check" @click="saveAll" size="small">保存全部</el-button>
  15 + <span class="member-count">共 {{ members.length }} 人</span>
  16 + </div>
  17 +
  18 + <!-- 成员列表 -->
  19 + <el-table :data="members" border style="width: 100%; margin-top: 10px;" v-loading="loading">
  20 + <el-table-column type="index" label="序号" width="60" align="center" />
  21 + <el-table-column prop="userName" label="姓名" width="120">
  22 + <template slot-scope="scope">
  23 + <el-input v-model="scope.row.userName" size="mini" />
  24 + </template>
  25 + </el-table-column>
  26 + <el-table-column prop="userId" label="用户ID" width="150">
  27 + <template slot-scope="scope">
  28 + <el-input v-model="scope.row.userId" size="mini" />
  29 + </template>
  30 + </el-table-column>
  31 + <el-table-column label="是否顾问" width="120" align="center">
  32 + <template slot-scope="scope">
  33 + <el-radio-group v-model="scope.row.isLeader" size="mini">
  34 + <el-radio :label="1">是</el-radio>
  35 + <el-radio :label="0">否</el-radio>
  36 + </el-radio-group>
  37 + </template>
  38 + </el-table-column>
  39 + <el-table-column label="排序" width="100" align="center">
  40 + <template slot-scope="scope">
  41 + <el-input-number
  42 + v-model="scope.row.sortOrder"
  43 + :min="1"
  44 + :max="999"
  45 + size="mini"
  46 + style="width: 80px;" />
  47 + </template>
  48 + </el-table-column>
  49 + <el-table-column label="操作" width="100" align="center">
  50 + <template slot-scope="scope">
  51 + <el-button type="text" @click="removeMember(scope.$index)" class="NCC-table-delBtn" size="mini">删除</el-button>
  52 + </template>
  53 + </el-table-column>
  54 + </el-table>
  55 +
  56 + <!-- 批量操作 -->
  57 + <div class="batch-operations" v-if="members.length > 0">
  58 + <el-button type="info" @click="sortMembers" size="small">重新排序</el-button>
  59 + <el-button type="warning" @click="clearAll" size="small">清空全部</el-button>
  60 + </div>
  61 + </div>
  62 +
  63 + <span slot="footer" class="dialog-footer">
  64 + <el-button @click="handleClose">取 消</el-button>
  65 + <el-button type="primary" @click="saveAll">确 定</el-button>
  66 + </span>
  67 + </el-dialog>
  68 +</template>
  69 +
  70 +<script>
  71 + import request from '@/utils/request'
  72 +
  73 + export default {
  74 + name: 'MemberDialog',
  75 + props: {
  76 + jsjId: {
  77 + type: String,
  78 + default: ''
  79 + }
  80 + },
  81 + data() {
  82 + return {
  83 + visible: false,
  84 + loading: false,
  85 + members: []
  86 + }
  87 + },
  88 + methods: {
  89 + init(jsjId) {
  90 + this.jsjId = jsjId
  91 + this.visible = true
  92 + this.loadMembers()
  93 + },
  94 + loadMembers() {
  95 + if (!this.jsjId) return
  96 +
  97 + this.loading = true
  98 + request({
  99 + url: `/api/Extend/LqYcsdJsj/${this.jsjId}/detail`,
  100 + method: 'GET'
  101 + }).then(res => {
  102 + this.members = res.data.members || []
  103 + this.loading = false
  104 + }).catch(() => {
  105 + this.members = []
  106 + this.loading = false
  107 + })
  108 + },
  109 + addMember() {
  110 + this.members.push({
  111 + userId: '',
  112 + userName: '',
  113 + isLeader: 0,
  114 + sortOrder: this.members.length + 1
  115 + })
  116 + },
  117 + removeMember(index) {
  118 + this.$confirm('确定要删除这个成员吗?', '提示', {
  119 + type: 'warning'
  120 + }).then(() => {
  121 + this.members.splice(index, 1)
  122 + this.sortMembers()
  123 + })
  124 + },
  125 + sortMembers() {
  126 + this.members.forEach((member, index) => {
  127 + member.sortOrder = index + 1
  128 + })
  129 + },
  130 + clearAll() {
  131 + this.$confirm('确定要清空所有成员吗?', '提示', {
  132 + type: 'warning'
  133 + }).then(() => {
  134 + this.members = []
  135 + })
  136 + },
  137 + refreshMembers() {
  138 + this.loadMembers()
  139 + },
  140 + saveAll() {
  141 + // 验证数据
  142 + for (let i = 0; i < this.members.length; i++) {
  143 + const member = this.members[i]
  144 + if (!member.userId || !member.userName) {
  145 + this.$message.error(`第${i + 1}行成员信息不完整`)
  146 + return
  147 + }
  148 + }
  149 +
  150 + // 验证多人战队必须有顾问
  151 + if (this.members.length >= 2) {
  152 + const hasLeader = this.members.some(m => m.isLeader === 1)
  153 + if (!hasLeader) {
  154 + this.$message.error('两人或两人以上的战队必须有一个顾问')
  155 + return
  156 + }
  157 + }
  158 +
  159 + // 发送保存请求
  160 + this.$emit('save', this.members)
  161 + this.handleClose()
  162 + },
  163 + handleClose() {
  164 + this.visible = false
  165 + this.$emit('close')
  166 + }
  167 + }
  168 + }
  169 +</script>
  170 +
  171 +<style scoped>
  172 +.member-dialog {
  173 + padding: 10px 0;
  174 +}
  175 +
  176 +.member-toolbar {
  177 + display: flex;
  178 + align-items: center;
  179 + gap: 10px;
  180 +}
  181 +
  182 +.member-count {
  183 + color: #606266;
  184 + font-size: 14px;
  185 + margin-left: auto;
  186 +}
  187 +
  188 +.batch-operations {
  189 + margin-top: 15px;
  190 + padding-top: 15px;
  191 + border-top: 1px solid #ebeef5;
  192 +}
  193 +
  194 +.el-table {
  195 + margin-top: 10px;
  196 +}
  197 +</style>
... ...
antis-ncc-admin/src/views/lqYcsdJsj/index.vue
... ... @@ -4,168 +4,45 @@
4 4 <el-row class="NCC-common-search-box" :gutter="16">
5 5 <el-form @submit.native.prevent>
6 6 <el-col :span="6">
7   - <el-form-item label="主键">
8   - <el-input v-model="query.id" placeholder="主键" clearable />
9   - </el-form-item>
10   - </el-col>
11   - <el-col :span="6">
12 7 <el-form-item label="月份">
13   - <el-input v-model="query.yf" placeholder="月份" clearable />
  8 + <el-date-picker
  9 + v-model="monthQuery"
  10 + type="month"
  11 + placeholder="请选择月份"
  12 + format="yyyyMM"
  13 + value-format="yyyyMM"
  14 + @change="onMonthQueryChange"
  15 + clearable>
  16 + </el-date-picker>
14 17 </el-form-item>
15 18 </el-col>
16 19 <el-col :span="6">
17 20 <el-form-item label="门店">
18   - <el-input v-model="query.md" placeholder="门店" clearable />
  21 + <el-select
  22 + v-model="query.md"
  23 + placeholder="请选择门店"
  24 + clearable
  25 + filterable>
  26 + <el-option
  27 + v-for="store in storeList"
  28 + :key="store.id"
  29 + :label="store.name"
  30 + :value="store.id">
  31 + </el-option>
  32 + </el-select>
19 33 </el-form-item>
20 34 </el-col>
21   - <template v-if="showAll">
22 35 <el-col :span="6">
23 36 <el-form-item label="金三角">
24   - <el-input v-model="query.jsj" placeholder="金三角" clearable />
25   - </el-form-item>
26   - </el-col>
27   - <el-col :span="6">
28   - <el-form-item label="岗位">
29   - <el-input v-model="query.gw" placeholder="岗位" clearable />
30   - </el-form-item>
31   - </el-col>
32   - <el-col :span="6">
33   - <el-form-item label="健康师">
34   - <el-input v-model="query.jks" placeholder="健康师" clearable />
35   - </el-form-item>
36   - </el-col>
37   - <el-col :span="6">
38   - <el-form-item label="成交率">
39   - <el-input v-model="query.cjl" placeholder="成交率" clearable />
40   - </el-form-item>
41   - </el-col>
42   - <el-col :span="6">
43   - <el-form-item label="成交业绩">
44   - <el-input v-model="query.cjyj" placeholder="成交业绩" clearable />
45   - </el-form-item>
46   - </el-col>
47   - <el-col :span="6">
48   - <el-form-item label="成交提点">
49   - <el-input v-model="query.cjtd" placeholder="成交提点" clearable />
50   - </el-form-item>
51   - </el-col>
52   - <el-col :span="6">
53   - <el-form-item label="剩余业绩">
54   - <el-input v-model="query.syyj" placeholder="剩余业绩" clearable />
55   - </el-form-item>
56   - </el-col>
57   - <el-col :span="6">
58   - <el-form-item label="出勤天数">
59   - <el-input v-model="query.cqts" placeholder="出勤天数" clearable />
60   - </el-form-item>
61   - </el-col>
62   - <el-col :span="6">
63   - <el-form-item label="系统业绩">
64   - <el-input v-model="query.xtyj" placeholder="系统业绩" clearable />
65   - </el-form-item>
66   - </el-col>
67   - <el-col :span="6">
68   - <el-form-item label="总业绩">
69   - <el-input v-model="query.zyj" placeholder="总业绩" clearable />
70   - </el-form-item>
71   - </el-col>
72   - <el-col :span="6">
73   - <el-form-item label="基础业绩">
74   - <el-input v-model="query.jcyj" placeholder="基础业绩" clearable />
  37 + <el-input v-model="query.jsj" placeholder="金三角名称" clearable />
75 38 </el-form-item>
76 39 </el-col>
77 40 <el-col :span="6">
78   - <el-form-item label="合作业绩">
79   - <el-input v-model="query.hzyj" placeholder="合作业绩" clearable />
80   - </el-form-item>
81   - </el-col>
82   - <el-col :span="6">
83   - <el-form-item label="奖励业绩">
84   - <el-input v-model="query.jlyj" placeholder="奖励业绩" clearable />
85   - </el-form-item>
86   - </el-col>
87   - <el-col :span="6">
88   - <el-form-item label="项目数">
89   - <el-input v-model="query.xms" placeholder="项目数" clearable />
90   - </el-form-item>
91   - </el-col>
92   - <el-col :span="6">
93   - <el-form-item label="手工">
94   - <el-input v-model="query.sg" placeholder="手工" clearable />
95   - </el-form-item>
96   - </el-col>
97   - <el-col :span="6">
98   - <el-form-item label="是否属于战队">
99   - <el-input v-model="query.sfsyzd" placeholder="是否属于战队" clearable />
100   - </el-form-item>
101   - </el-col>
102   - <el-col :span="6">
103   - <el-form-item label="是否满足考勤">
104   - <el-input v-model="query.fsmzkq" placeholder="是否满足考勤" clearable />
105   - </el-form-item>
106   - </el-col>
107   - <el-col :span="6">
108   - <el-form-item label="战队最终人数">
109   - <el-input v-model="query.zdzzrs" placeholder="战队最终人数" clearable />
110   - </el-form-item>
111   - </el-col>
112   - <el-col :span="6">
113   - <el-form-item label="视为单人">
114   - <el-input v-model="query.kqhbsyzd" placeholder="视为单人" clearable />
115   - </el-form-item>
116   - </el-col>
117   - <el-col :span="6">
118   - <el-form-item label="战队提成">
119   - <el-input v-model="query.zdtc" placeholder="战队提成" clearable />
120   - </el-form-item>
121   - </el-col>
122   - <el-col :span="6">
123   - <el-form-item label="按1人提成">
124   - <el-input v-model="query.ayrtc" placeholder="按1人提成" clearable />
125   - </el-form-item>
126   - </el-col>
127   - <el-col :span="6">
128   - <el-form-item label="最终提成点">
129   - <el-input v-model="query.zztcd" placeholder="最终提成点" clearable />
130   - </el-form-item>
131   - </el-col>
132   - <el-col :span="6">
133   - <el-form-item label="基础业绩提成">
134   - <el-input v-model="query.jcyjtc" placeholder="基础业绩提成" clearable />
135   - </el-form-item>
136   - </el-col>
137   - <el-col :span="6">
138   - <el-form-item label="合作业绩提成">
139   - <el-input v-model="query.hzyjtc" placeholder="合作业绩提成" clearable />
140   - </el-form-item>
141   - </el-col>
142   - <el-col :span="6">
143   - <el-form-item label="提成合计">
144   - <el-input v-model="query.tchj" placeholder="提成合计" clearable />
145   - </el-form-item>
146   - </el-col>
147   - <el-col :span="6">
148   - <el-form-item label="个人占比">
149   - <el-input v-model="query.grzb" placeholder="个人占比" clearable />
150   - </el-form-item>
151   - </el-col>
152   - <el-col :span="6">
153   - <el-form-item label="组员合计">
154   - <el-input v-model="query.zyhj" placeholder="组员合计" clearable />
155   - </el-form-item>
156   - </el-col>
157   - <el-col :span="6">
158   - <el-form-item label="顾问提成">
159   - <el-input v-model="query.gwtc" placeholder="顾问提成" clearable />
160   - </el-form-item>
161   - </el-col>
162   - </template>
163   - <el-col :span="6">
164   - <el-form-item>
165   - <el-button type="primary" icon="el-icon-search" @click="search()">查询</el-button>
166   - <el-button icon="el-icon-refresh-right" @click="reset()">重置</el-button>
167   - <el-button type="text" icon="el-icon-arrow-down" @click="showAll=true" v-if="!showAll">展开</el-button>
168   - <el-button type="text" icon="el-icon-arrow-up" @click="showAll=false" v-else>收起</el-button>
  41 + <el-form-item label=" ">
  42 + <div class="search-buttons">
  43 + <el-button type="primary" icon="el-icon-search" @click="search()">查询</el-button>
  44 + <el-button icon="el-icon-refresh-right" @click="reset()">重置</el-button>
  45 + </div>
169 46 </el-form-item>
170 47 </el-col>
171 48 </el-form>
... ... @@ -185,41 +62,46 @@
185 62 </div>
186 63 </div>
187 64 <NCC-table v-loading="listLoading" :data="list" has-c @selection-change="handleSelectionChange">
188   - <el-table-column prop="id" label="主键" align="left" />
189   - <el-table-column prop="yf" label="月份" align="left" />
190   - <el-table-column prop="md" label="门店" align="left" />
191   - <el-table-column prop="jsj" label="金三角" align="left" />
192   - <el-table-column prop="gw" label="岗位" align="left" />
193   - <el-table-column prop="jks" label="健康师" align="left" />
194   - <el-table-column prop="cjl" label="成交率" align="left" />
195   - <el-table-column prop="cjyj" label="成交业绩" align="left" />
196   - <el-table-column prop="cjtd" label="成交提点" align="left" />
197   - <el-table-column prop="syyj" label="剩余业绩" align="left" />
198   - <el-table-column prop="cqts" label="出勤天数" align="left" />
199   - <el-table-column prop="xtyj" label="系统业绩" align="left" />
200   - <el-table-column prop="zyj" label="总业绩" align="left" />
201   - <el-table-column prop="jcyj" label="基础业绩" align="left" />
202   - <el-table-column prop="hzyj" label="合作业绩" align="left" />
203   - <el-table-column prop="jlyj" label="奖励业绩" align="left" />
204   - <el-table-column prop="xms" label="项目数" align="left" />
205   - <el-table-column prop="sg" label="手工" align="left" />
206   - <el-table-column prop="sfsyzd" label="是否属于战队" align="left" />
207   - <el-table-column prop="fsmzkq" label="是否满足考勤" align="left" />
208   - <el-table-column prop="zdzzrs" label="战队最终人数" align="left" />
209   - <el-table-column prop="kqhbsyzd" label="视为单人" align="left" />
210   - <el-table-column prop="zdtc" label="战队提成" align="left" />
211   - <el-table-column prop="ayrtc" label="按1人提成" align="left" />
212   - <el-table-column prop="zztcd" label="最终提成点" align="left" />
213   - <el-table-column prop="jcyjtc" label="基础业绩提成" align="left" />
214   - <el-table-column prop="hzyjtc" label="合作业绩提成" align="left" />
215   - <el-table-column prop="tchj" label="提成合计" align="left" />
216   - <el-table-column prop="grzb" label="个人占比" align="left" />
217   - <el-table-column prop="zyhj" label="组员合计" align="left" />
218   - <el-table-column prop="gwtc" label="顾问提成" align="left" />
219   - <el-table-column label="操作" fixed="right" width="100">
220   - <template slot-scope="scope">
221   - <el-button type="text" @click="addOrUpdateHandle(scope.row.id)" >编辑</el-button>
222   - <el-button type="text" @click="handleDel(scope.row.id)" class="NCC-table-delBtn" >删除</el-button>
  65 + <el-table-column prop="yf" label="月份" align="center" min-width="120">
  66 + <template slot-scope="scope">
  67 + <el-tag type="primary" size="small">{{ formatMonth(scope.row.yf) }}</el-tag>
  68 + </template>
  69 + </el-table-column>
  70 + <el-table-column prop="md" label="门店" align="left" min-width="150">
  71 + <template slot-scope="scope">
  72 + <div class="store-info">
  73 + <i class="el-icon-shop"></i>
  74 + <span>{{ getStoreName(scope.row.md) }}</span>
  75 + </div>
  76 + </template>
  77 + </el-table-column>
  78 + <el-table-column prop="jsj" label="金三角" align="left" min-width="180">
  79 + <template slot-scope="scope">
  80 + <div class="team-info">
  81 + <i class="el-icon-user-solid"></i>
  82 + <span>{{ scope.row.jsj }}</span>
  83 + </div>
  84 + </template>
  85 + </el-table-column>
  86 + <el-table-column label="成员数量" align="center" min-width="120">
  87 + <template slot-scope="scope">
  88 + <el-tag v-if="scope.row.memberCount > 0" type="success" size="small" effect="dark">
  89 + <i class="el-icon-user"></i>
  90 + {{ scope.row.memberCount }}人
  91 + </el-tag>
  92 + <el-tag v-else type="info" size="small">
  93 + <i class="el-icon-user"></i>
  94 + 0人
  95 + </el-tag>
  96 + </template>
  97 + </el-table-column>
  98 + <el-table-column label="操作" fixed="right" min-width="200">
  99 + <template slot-scope="scope">
  100 + <div class="action-buttons">
  101 + <el-button type="primary" icon="el-icon-edit" @click="addOrUpdateHandle(scope.row.id)" size="mini" plain>编辑</el-button>
  102 + <el-button type="info" icon="el-icon-view" @click="viewDetail(scope.row.id)" size="mini" plain>详情</el-button>
  103 + <el-button type="danger" icon="el-icon-delete" @click="handleDel(scope.row.id)" size="mini" plain>删除</el-button>
  104 + </div>
223 105 </template>
224 106 </el-table-column>
225 107 </NCC-table>
... ... @@ -230,6 +112,107 @@
230 112 <ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download" />
231 113 </div>
232 114 </template>
  115 +
  116 +<style scoped>
  117 +.store-info {
  118 + display: flex;
  119 + align-items: center;
  120 + gap: 8px;
  121 + color: #606266;
  122 +}
  123 +
  124 +.store-info i {
  125 + color: #409EFF;
  126 + font-size: 16px;
  127 +}
  128 +
  129 +.team-info {
  130 + display: flex;
  131 + align-items: center;
  132 + gap: 8px;
  133 + color: #303133;
  134 + font-weight: 500;
  135 +}
  136 +
  137 +.team-info i {
  138 + color: #67C23A;
  139 + font-size: 16px;
  140 +}
  141 +
  142 +.action-buttons {
  143 + display: flex;
  144 + gap: 8px;
  145 + flex-wrap: wrap;
  146 +}
  147 +
  148 +.action-buttons .el-button {
  149 + margin: 0;
  150 +}
  151 +
  152 +/* 表格行悬停效果 */
  153 +.el-table tbody tr:hover > td {
  154 + background-color: #f5f7fa !important;
  155 +}
  156 +
  157 +/* 标签样式优化 */
  158 +.el-tag {
  159 + border-radius: 12px;
  160 + font-weight: 500;
  161 +}
  162 +
  163 +.el-tag i {
  164 + margin-right: 4px;
  165 +}
  166 +
  167 +/* 搜索框样式优化 */
  168 +.NCC-common-search-box .el-input__inner {
  169 + border-radius: 6px;
  170 +}
  171 +
  172 +.NCC-common-search-box .el-button {
  173 + border-radius: 6px;
  174 +}
  175 +
  176 +.search-buttons {
  177 + display: flex;
  178 + gap: 8px;
  179 + align-items: center;
  180 + height: 32px;
  181 +}
  182 +
  183 +/* 表格容器样式 */
  184 +.NCC-common-layout-main {
  185 + background: #fff;
  186 + border-radius: 8px;
  187 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  188 + overflow: hidden;
  189 +}
  190 +
  191 +/* 头部操作区域 */
  192 +.NCC-common-head {
  193 + background: #f8f9fa;
  194 + padding: 16px 20px;
  195 + border-bottom: 1px solid #dee2e6;
  196 +}
  197 +
  198 +/* 按钮组样式 */
  199 +.NCC-common-head .el-button {
  200 + border-radius: 6px;
  201 + font-weight: 500;
  202 + transition: all 0.3s ease;
  203 +}
  204 +
  205 +.NCC-common-head .el-button:hover {
  206 + transform: translateY(-1px);
  207 + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
  208 +}
  209 +
  210 +/* 分页样式 */
  211 +.pagination {
  212 + margin-top: 20px;
  213 + text-align: center;
  214 +}
  215 +</style>
233 216 <script>
234 217 import request from '@/utils/request'
235 218 import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
... ... @@ -242,41 +225,17 @@
242 225 return {
243 226 showAll: false,
244 227 query: {
245   - id:undefined,
246 228 yf:undefined,
247 229 md:undefined,
248 230 jsj:undefined,
249   - gw:undefined,
250   - jks:undefined,
251   - cjl:undefined,
252   - cjyj:undefined,
253   - cjtd:undefined,
254   - syyj:undefined,
255   - cqts:undefined,
256   - xtyj:undefined,
257   - zyj:undefined,
258   - jcyj:undefined,
259   - hzyj:undefined,
260   - jlyj:undefined,
261   - xms:undefined,
262   - sg:undefined,
263   - sfsyzd:undefined,
264   - fsmzkq:undefined,
265   - zdzzrs:undefined,
266   - kqhbsyzd:undefined,
267   - zdtc:undefined,
268   - ayrtc:undefined,
269   - zztcd:undefined,
270   - jcyjtc:undefined,
271   - hzyjtc:undefined,
272   - tchj:undefined,
273   - grzb:undefined,
274   - zyhj:undefined,
275   - gwtc:undefined,
276 231 },
  232 + monthQuery: null, // 月份选择器的值
  233 + storeList: [], // 门店列表
277 234 list: [],
278 235 listLoading: true,
279   - multipleSelection: [], total: 0,
  236 + multipleSelection: [],
  237 + total: 0,
  238 + storeMap: {}, // 门店ID到名称的映射
280 239 listQuery: {
281 240 currentPage: 1,
282 241 pageSize: 20,
... ... @@ -290,38 +249,12 @@
290 249 { prop: 'yf', label: '月份' },
291 250 { prop: 'md', label: '门店' },
292 251 { prop: 'jsj', label: '金三角' },
293   - { prop: 'gw', label: '岗位' },
294   - { prop: 'jks', label: '健康师' },
295   - { prop: 'cjl', label: '成交率' },
296   - { prop: 'cjyj', label: '成交业绩' },
297   - { prop: 'cjtd', label: '成交提点' },
298   - { prop: 'syyj', label: '剩余业绩' },
299   - { prop: 'cqts', label: '出勤天数' },
300   - { prop: 'xtyj', label: '系统业绩' },
301   - { prop: 'zyj', label: '总业绩' },
302   - { prop: 'jcyj', label: '基础业绩' },
303   - { prop: 'hzyj', label: '合作业绩' },
304   - { prop: 'jlyj', label: '奖励业绩' },
305   - { prop: 'xms', label: '项目数' },
306   - { prop: 'sg', label: '手工' },
307   - { prop: 'sfsyzd', label: '是否属于战队' },
308   - { prop: 'fsmzkq', label: '是否满足考勤' },
309   - { prop: 'zdzzrs', label: '战队最终人数' },
310   - { prop: 'kqhbsyzd', label: '视为单人' },
311   - { prop: 'zdtc', label: '战队提成' },
312   - { prop: 'ayrtc', label: '按1人提成' },
313   - { prop: 'zztcd', label: '最终提成点' },
314   - { prop: 'jcyjtc', label: '基础业绩提成' },
315   - { prop: 'hzyjtc', label: '合作业绩提成' },
316   - { prop: 'tchj', label: '提成合计' },
317   - { prop: 'grzb', label: '个人占比' },
318   - { prop: 'zyhj', label: '组员合计' },
319   - { prop: 'gwtc', label: '顾问提成' },
320 252 ],
321 253 }
322 254 },
323 255 computed: {},
324 256 created() {
  257 + this.loadStoreList()
325 258 this.initData()
326 259 },
327 260 methods: {
... ... @@ -347,6 +280,11 @@
347 280 this.list = res.data.list
348 281 this.total = res.data.pagination.total
349 282 this.listLoading = false
  283 +
  284 + // 加载门店映射
  285 + this.loadStoreMap()
  286 + // 为每个金三角加载成员数量
  287 + this.loadMemberCounts()
350 288 })
351 289 },
352 290 handleDel(id) {
... ... @@ -368,6 +306,70 @@
368 306 }).catch(() => {
369 307 });
370 308 },
  309 + viewDetail(id) {
  310 + this.formVisible = true
  311 + this.$nextTick(() => {
  312 + this.$refs.NCCForm.init(id, true)
  313 + })
  314 + },
  315 + loadMemberCounts() {
  316 + // 批量加载成员数量
  317 + const promises = this.list.map(item => {
  318 + return request({
  319 + url: `/api/Extend/LqYcsdJsj/${item.id}/detail`,
  320 + method: 'GET'
  321 + }).then(res => {
  322 + this.$set(item, 'memberCount', res.data.members ? res.data.members.length : 0)
  323 + }).catch(() => {
  324 + this.$set(item, 'memberCount', 0)
  325 + })
  326 + })
  327 +
  328 + Promise.all(promises).then(() => {
  329 + // 所有成员数量加载完成
  330 + })
  331 + },
  332 + loadStoreMap() {
  333 + // 加载门店映射
  334 + request({
  335 + url: '/api/Extend/LqMdxx/Selector',
  336 + method: 'GET'
  337 + }).then(res => {
  338 + this.storeMap = {}
  339 + res.data.list.forEach(store => {
  340 + this.storeMap[store.id] = store.fullName
  341 + })
  342 + }).catch(() => {
  343 + this.storeMap = {}
  344 + })
  345 + },
  346 + getStoreName(storeId) {
  347 + return this.storeMap[storeId] || storeId || '未知门店'
  348 + },
  349 + formatMonth(monthStr) {
  350 + if (!monthStr || monthStr.length !== 6) return monthStr
  351 + const year = monthStr.substring(0, 4)
  352 + const month = monthStr.substring(4, 6)
  353 + return `${year}年${month}月`
  354 + },
  355 + onMonthQueryChange(value) {
  356 + // 月份选择器变化时更新query.yf
  357 + this.query.yf = value
  358 + },
  359 + loadStoreList() {
  360 + // 加载门店列表
  361 + request({
  362 + url: '/api/Extend/LqMdxx/Selector',
  363 + method: 'GET'
  364 + }).then(res => {
  365 + this.storeList = res.data.list.map(item => ({
  366 + id: item.id,
  367 + name: item.fullName
  368 + }))
  369 + }).catch(() => {
  370 + this.storeList = []
  371 + })
  372 + },
371 373 handleSelectionChange(val) {
372 374 const res = val.map(item => item.id)
373 375 this.multipleSelection = res
... ... @@ -442,6 +444,7 @@
442 444 for (let key in this.query) {
443 445 this.query[key] = undefined
444 446 }
  447 + this.monthQuery = null
445 448 this.listQuery = {
446 449 currentPage: 1,
447 450 pageSize: 20,
... ...
netcore/src/Modularity/Order/.DS_Store renamed to netcore/netcore/.DS_Store
No preview for this file type
netcore/.DS_Store renamed to netcore/netcore/src/.DS_Store
No preview for this file type
netcore/netcore/src/Modularity/.DS_Store 0 → 100644
No preview for this file type
netcore/netcore/src/Modularity/Extend/NCC.Extend.Entitys/.DS_Store 0 → 100644
No preview for this file type
netcore/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/.DS_Store 0 → 100644
No preview for this file type
netcore/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/.DS_Store 0 → 100644
No preview for this file type
netcore/smart.agriculture.platform.NET.sln
... ... @@ -111,14 +111,6 @@ Project(&quot;{9A19103F-16F7-4668-BE54-9A1E7A4F7556}&quot;) = &quot;Alipay.AopSdk.AspnetCore&quot;,
111 111 EndProject
112 112 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Alipay.AopSdk.Core", "src\Infrastructure\NCC.Pay\Alipay.AopSdk.Core\Alipay.AopSdk.Core.csproj", "{02564FAF-BFA6-48E3-B62F-BED6E0CD8B70}"
113 113 EndProject
114   -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "09-Order", "09-Order", "{71BB7B52-326C-4E81-80F4-A0568FF781A6}"
115   -EndProject
116   -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NCC.Order", "src\Modularity\Order\NCC.Order\NCC.Order.csproj", "{631D8B3D-5815-487C-AE2C-88ACE67129C1}"
117   -EndProject
118   -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NCC.Order.Entitys", "src\Modularity\Order\NCC.Order.Entitys\NCC.Order.Entitys.csproj", "{63A51937-AB99-4FD6-A03D-F831E2DA6E6C}"
119   -EndProject
120   -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NCC.Order.Interfaces", "src\Modularity\Order\NCC.Order.Interfaces\NCC.Order.Interfaces.csproj", "{F3323EB1-D5EF-4454-8A64-3A789959C2D9}"
121   -EndProject
122 114 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NCC.Core.Pay.Security", "src\Infrastructure\NCC.Pay\NCC.Security\NCC.Core.Pay.Security.csproj", "{240E0E13-FAB1-471C-8A50-903976D9BD40}"
123 115 EndProject
124 116 Global
... ... @@ -279,18 +271,6 @@ Global
279 271 {02564FAF-BFA6-48E3-B62F-BED6E0CD8B70}.Debug|Any CPU.Build.0 = Debug|Any CPU
280 272 {02564FAF-BFA6-48E3-B62F-BED6E0CD8B70}.Release|Any CPU.ActiveCfg = Release|Any CPU
281 273 {02564FAF-BFA6-48E3-B62F-BED6E0CD8B70}.Release|Any CPU.Build.0 = Release|Any CPU
282   - {631D8B3D-5815-487C-AE2C-88ACE67129C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
283   - {631D8B3D-5815-487C-AE2C-88ACE67129C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
284   - {631D8B3D-5815-487C-AE2C-88ACE67129C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
285   - {631D8B3D-5815-487C-AE2C-88ACE67129C1}.Release|Any CPU.Build.0 = Release|Any CPU
286   - {63A51937-AB99-4FD6-A03D-F831E2DA6E6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
287   - {63A51937-AB99-4FD6-A03D-F831E2DA6E6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
288   - {63A51937-AB99-4FD6-A03D-F831E2DA6E6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
289   - {63A51937-AB99-4FD6-A03D-F831E2DA6E6C}.Release|Any CPU.Build.0 = Release|Any CPU
290   - {F3323EB1-D5EF-4454-8A64-3A789959C2D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
291   - {F3323EB1-D5EF-4454-8A64-3A789959C2D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
292   - {F3323EB1-D5EF-4454-8A64-3A789959C2D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
293   - {F3323EB1-D5EF-4454-8A64-3A789959C2D9}.Release|Any CPU.Build.0 = Release|Any CPU
294 274 {240E0E13-FAB1-471C-8A50-903976D9BD40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
295 275 {240E0E13-FAB1-471C-8A50-903976D9BD40}.Debug|Any CPU.Build.0 = Debug|Any CPU
296 276 {240E0E13-FAB1-471C-8A50-903976D9BD40}.Release|Any CPU.ActiveCfg = Release|Any CPU
... ... @@ -351,10 +331,6 @@ Global
351 331 {8A09F335-0493-4FA9-A59E-8CA9E72EB1AD} = {BB9C0656-46CB-4E76-9829-46459CDE195A}
352 332 {27C679E3-46A2-4555-94D9-80532852863D} = {BB9C0656-46CB-4E76-9829-46459CDE195A}
353 333 {02564FAF-BFA6-48E3-B62F-BED6E0CD8B70} = {BB9C0656-46CB-4E76-9829-46459CDE195A}
354   - {71BB7B52-326C-4E81-80F4-A0568FF781A6} = {DEE60693-575B-43FA-B7AB-60B6045B632C}
355   - {631D8B3D-5815-487C-AE2C-88ACE67129C1} = {71BB7B52-326C-4E81-80F4-A0568FF781A6}
356   - {63A51937-AB99-4FD6-A03D-F831E2DA6E6C} = {71BB7B52-326C-4E81-80F4-A0568FF781A6}
357   - {F3323EB1-D5EF-4454-8A64-3A789959C2D9} = {71BB7B52-326C-4E81-80F4-A0568FF781A6}
358 334 {240E0E13-FAB1-471C-8A50-903976D9BD40} = {BB9C0656-46CB-4E76-9829-46459CDE195A}
359 335 EndGlobalSection
360 336 GlobalSection(ExtensibilityGlobals) = postSolution
... ...
netcore/src/.DS_Store
No preview for this file type
netcore/src/Application/NCC.API.Core/NCC.API.Core.csproj
... ... @@ -9,7 +9,6 @@
9 9 <ProjectReference Include="..\..\Modularity\Extend\NCC.Extend\NCC.Extend.csproj" />
10 10 <ProjectReference Include="..\..\Modularity\Message\NCC.Message\NCC.Message.csproj" />
11 11 <ProjectReference Include="..\..\Modularity\OAuth\NCC.OAuth\NCC.OAuth.csproj" />
12   - <ProjectReference Include="..\..\Modularity\Order\NCC.Order\NCC.Order.csproj" />
13 12 <ProjectReference Include="..\..\Modularity\System\NCC.System\NCC.System.csproj" />
14 13 <ProjectReference Include="..\..\Modularity\TaskSchedule\NCC.TaskScheduler\NCC.TaskScheduler.csproj" />
15 14 <ProjectReference Include="..\..\Modularity\VisualData\NCC.VisualData\NCC.VisualData.csproj" />
... ...
netcore/src/Modularity/.DS_Store
No preview for this file type
netcore/src/Modularity/Extend/NCC.Extend.Entitys/.DS_Store
No preview for this file type
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/.DS_Store 0 → 100644
No preview for this file type
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqBmzbCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqBmzb/LqBmzbCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqBmzbInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqBmzb/LqBmzbInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqBmzbListOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqBmzb/LqBmzbListOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqBmzbListQueryInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqBmzb/LqBmzbListQueryInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqBmzbUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqBmzb/LqBmzbUpInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqCpxxCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqCpxx/LqCpxxCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqCpxxInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqCpxx/LqCpxxInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqCpxxListOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqCpxx/LqCpxxListOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqCpxxListQueryInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqCpxx/LqCpxxListQueryInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqCpxxUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqCpxx/LqCpxxUpInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqGzCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqGz/LqGzCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqGzInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqGz/LqGzInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqGzListOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqGz/LqGzListOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqGzListQueryInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqGz/LqGzListQueryInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqGzUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqGz/LqGzUpInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHyglCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHygl/LqHyglCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHyglInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHygl/LqHyglInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHyglListOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHygl/LqHyglListOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHyglListQueryInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHygl/LqHyglListQueryInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHyglUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHygl/LqHyglUpInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytkCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytkInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytkListOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkListOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytkListQueryInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkListQueryInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytkUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkUpInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMxCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMxInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMxUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxUpInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHzfCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHzf/LqHzfCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHzfInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHzf/LqHzfInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHzfListOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHzf/LqHzfListOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHzfListQueryInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHzf/LqHzfListQueryInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHzfUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHzf/LqHzfUpInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJdqdCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJdqd/LqJdqdCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJdqdInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJdqd/LqJdqdInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJdqdListOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJdqd/LqJdqdListOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJdqdListQueryInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJdqd/LqJdqdListQueryInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJdqdUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJdqd/LqJdqdUpInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJinsanjiaoUser/LqJinsanjiaoUserCrInput.cs 0 → 100644
  1 +namespace NCC.Extend.Entitys.Dto.LqJinsanjiaoUser
  2 +{
  3 + /// <summary>
  4 + /// 金三角用户绑定关系创建输入参数
  5 + /// </summary>
  6 + public class LqJinsanjiaoUserCrInput
  7 + {
  8 + /// <summary>
  9 + /// 金三角ID
  10 + /// </summary>
  11 + public string jsjId { get; set; }
  12 +
  13 + /// <summary>
  14 + /// 用户ID
  15 + /// </summary>
  16 + public string userId { get; set; }
  17 +
  18 + /// <summary>
  19 + /// 用户姓名
  20 + /// </summary>
  21 + public string userName { get; set; }
  22 +
  23 + /// <summary>
  24 + /// 是否顾问
  25 + /// </summary>
  26 + public int isLeader { get; set; }
  27 +
  28 + /// <summary>
  29 + /// 状态
  30 + /// </summary>
  31 + public string status { get; set; }
  32 +
  33 + /// <summary>
  34 + /// 排序
  35 + /// </summary>
  36 + public int sortOrder { get; set; }
  37 + }
  38 +}
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJinsanjiaoUser/LqJinsanjiaoUserInfoOutput.cs 0 → 100644
  1 +using System;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqJinsanjiaoUser
  4 +{
  5 + /// <summary>
  6 + /// 金三角用户绑定关系详情输出参数
  7 + /// </summary>
  8 + public class LqJinsanjiaoUserInfoOutput
  9 + {
  10 + /// <summary>
  11 + /// 主键
  12 + /// </summary>
  13 + public string id { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 金三角ID
  17 + /// </summary>
  18 + public string jsjId { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 金三角名称
  22 + /// </summary>
  23 + public string jsjName { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 用户ID
  27 + /// </summary>
  28 + public string userId { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 用户姓名
  32 + /// </summary>
  33 + public string userName { get; set; }
  34 +
  35 + /// <summary>
  36 + /// 用户手机号
  37 + /// </summary>
  38 + public string mobilePhone { get; set; }
  39 +
  40 + /// <summary>
  41 + /// 用户职位
  42 + /// </summary>
  43 + public string position { get; set; }
  44 +
  45 + /// <summary>
  46 + /// 是否顾问
  47 + /// </summary>
  48 + public int isLeader { get; set; }
  49 +
  50 + /// <summary>
  51 + /// 状态
  52 + /// </summary>
  53 + public string status { get; set; }
  54 +
  55 + /// <summary>
  56 + /// 排序
  57 + /// </summary>
  58 + public int sortOrder { get; set; }
  59 +
  60 + /// <summary>
  61 + /// 创建时间
  62 + /// </summary>
  63 + public DateTime? creatorTime { get; set; }
  64 +
  65 + /// <summary>
  66 + /// 创建人ID
  67 + /// </summary>
  68 + public string creatorUserId { get; set; }
  69 +
  70 + /// <summary>
  71 + /// 最后修改时间
  72 + /// </summary>
  73 + public DateTime? lastModifyTime { get; set; }
  74 +
  75 + /// <summary>
  76 + /// 最后修改人ID
  77 + /// </summary>
  78 + public string lastModifyUserId { get; set; }
  79 + }
  80 +}
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJinsanjiaoUser/LqJinsanjiaoUserListOutput.cs 0 → 100644
  1 +using System;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqJinsanjiaoUser
  4 +{
  5 + /// <summary>
  6 + /// 金三角用户绑定关系列表输出参数
  7 + /// </summary>
  8 + public class LqJinsanjiaoUserListOutput
  9 + {
  10 + /// <summary>
  11 + /// 主键
  12 + /// </summary>
  13 + public string id { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 金三角ID
  17 + /// </summary>
  18 + public string jsjId { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 金三角名称
  22 + /// </summary>
  23 + public string jsjName { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 用户ID
  27 + /// </summary>
  28 + public string userId { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 用户姓名
  32 + /// </summary>
  33 + public string userName { get; set; }
  34 +
  35 + /// <summary>
  36 + /// 用户手机号
  37 + /// </summary>
  38 + public string mobilePhone { get; set; }
  39 +
  40 + /// <summary>
  41 + /// 用户职位
  42 + /// </summary>
  43 + public string position { get; set; }
  44 +
  45 + /// <summary>
  46 + /// 是否顾问
  47 + /// </summary>
  48 + public int isLeader { get; set; }
  49 +
  50 + /// <summary>
  51 + /// 状态
  52 + /// </summary>
  53 + public string status { get; set; }
  54 +
  55 + /// <summary>
  56 + /// 排序
  57 + /// </summary>
  58 + public int sortOrder { get; set; }
  59 +
  60 + /// <summary>
  61 + /// 创建时间
  62 + /// </summary>
  63 + public DateTime? creatorTime { get; set; }
  64 + }
  65 +}
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJinsanjiaoUser/LqJinsanjiaoUserListQueryInput.cs 0 → 100644
  1 +using NCC.Common.Entity;
  2 +using NCC.Common.Filter;
  3 +
  4 +namespace NCC.Extend.Entitys.Dto.LqJinsanjiaoUser
  5 +{
  6 + /// <summary>
  7 + /// 金三角用户绑定关系列表查询输入参数
  8 + /// </summary>
  9 + public class LqJinsanjiaoUserListQueryInput : PageInputBase
  10 + {
  11 + /// <summary>
  12 + /// 主键
  13 + /// </summary>
  14 + public string id { get; set; }
  15 +
  16 + /// <summary>
  17 + /// 金三角ID
  18 + /// </summary>
  19 + public string jsjId { get; set; }
  20 +
  21 + /// <summary>
  22 + /// 用户ID
  23 + /// </summary>
  24 + public string userId { get; set; }
  25 +
  26 + /// <summary>
  27 + /// 用户姓名
  28 + /// </summary>
  29 + public string userName { get; set; }
  30 +
  31 + /// <summary>
  32 + /// 是否顾问
  33 + /// </summary>
  34 + public int? isLeader { get; set; }
  35 +
  36 + /// <summary>
  37 + /// 状态
  38 + /// </summary>
  39 + public string status { get; set; }
  40 + }
  41 +}
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJinsanjiaoUser/LqJinsanjiaoUserUpInput.cs 0 → 100644
  1 +namespace NCC.Extend.Entitys.Dto.LqJinsanjiaoUser
  2 +{
  3 + /// <summary>
  4 + /// 金三角用户绑定关系更新输入参数
  5 + /// </summary>
  6 + public class LqJinsanjiaoUserUpInput
  7 + {
  8 + /// <summary>
  9 + /// 金三角ID
  10 + /// </summary>
  11 + public string jsjId { get; set; }
  12 +
  13 + /// <summary>
  14 + /// 用户ID
  15 + /// </summary>
  16 + public string userId { get; set; }
  17 +
  18 + /// <summary>
  19 + /// 用户姓名
  20 + /// </summary>
  21 + public string userName { get; set; }
  22 +
  23 + /// <summary>
  24 + /// 是否顾问
  25 + /// </summary>
  26 + public int isLeader { get; set; }
  27 +
  28 + /// <summary>
  29 + /// 状态
  30 + /// </summary>
  31 + public string status { get; set; }
  32 +
  33 + /// <summary>
  34 + /// 排序
  35 + /// </summary>
  36 + public int sortOrder { get; set; }
  37 + }
  38 +}
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJlmxbCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJlmxb/LqJlmxbCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJlmxbInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJlmxb/LqJlmxbInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJlmxbListOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJlmxb/LqJlmxbListOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJlmxbListQueryInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJlmxb/LqJlmxbListQueryInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJlmxbUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJlmxb/LqJlmxbUpInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJsfaCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJsfa/LqJsfaCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJsfaInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJsfa/LqJsfaInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJsfaListOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJsfa/LqJsfaListOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJsfaListQueryInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJsfa/LqJsfaListQueryInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJsfaUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqJsfa/LqJsfaUpInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdJksyjCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdJksyj/LqKdJksyjCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdJksyjInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdJksyj/LqKdJksyjInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdJksyjUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdJksyj/LqKdJksyjUpInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlbCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlbInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlbListOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlbListQueryInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListQueryInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlbUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbUpInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKjbsyjCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKjbsyj/LqKdKjbsyjCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKjbsyjInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKjbsyj/LqKdKjbsyjInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKjbsyjUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKjbsyj/LqKdKjbsyjUpInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmxCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmx/LqKdPxmxCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmxInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmx/LqKdPxmxInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmxUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmx/LqKdPxmxUpInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxxCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxxInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxxListOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxListOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxxListQueryInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxListQueryInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxxUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxUpInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKqhzbCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKqhzb/LqKqhzbCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKqhzbInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKqhzb/LqKqhzbInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKqhzbListOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKqhzb/LqKqhzbListOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKqhzbListQueryInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKqhzb/LqKqhzbListQueryInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKqhzbUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKqhzb/LqKqhzbUpInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqLssjCrInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqLssj/LqLssjCrInput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqLssjInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqLssj/LqLssjInfoOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqLssjListOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqLssj/LqLssjListOutput.cs
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqLssjListQueryInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqLssj/LqLssjListQueryInput.cs