Commit 16c90224e9693dc214603d1606c9618bdcfc7d11
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
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("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Alipay.AopSdk.AspnetCore", |
| 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