index.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423
  1. <template>
  2. <div class="app-container">
  3. <div class="filter-container" style="margin: 10px 0 10px 0">
  4. <span class="textSpan">客户名称:</span>
  5. <el-input v-model="body.customerName" style="width:200px;" placeholder="客户名称" size="small" clearable />
  6. <el-button class="filter-item" icon="el-icon-search" type="primary" plain @click="Search">搜索</el-button>
  7. <el-button class="classitem" style="marginRight:50px" type="primary" plain icon="el-icon-plus" @click="NewUser">新增</el-button>
  8. </div>
  9. <!-- 表格 -->
  10. <el-table v-loading="loading" :data="tableData" border style="width: 100%">
  11. <el-table-column label="序号" width="60" align="center">
  12. <template slot-scope="scope">
  13. <span>{{ scope.$index + 1 }}</span>
  14. </template>
  15. </el-table-column>
  16. <el-table-column label="客户名称" align="center" show-overflow-tooltip>
  17. <template slot-scope="scope">
  18. <span>{{ scope.row.customerName }}</span>
  19. </template>
  20. </el-table-column>
  21. <el-table-column label="客户简称" align="center" show-overflow-tooltip>
  22. <template slot-scope="scope">
  23. <span>{{ scope.row.shorterName }}</span>
  24. </template>
  25. </el-table-column>
  26. <el-table-column label="状态" align="center">
  27. <template slot-scope="scope">
  28. <el-tag v-if="scope.row.status === 1" >正常</el-tag>
  29. <el-tag v-if="scope.row.status === 2" type="warning">暂停</el-tag>
  30. </template>
  31. </el-table-column>
  32. <el-table-column label="帐号余额" align="center" show-overflow-tooltip>
  33. <template slot-scope="scope">
  34. <span>{{ scope.row.balance }}</span>
  35. </template>
  36. </el-table-column>
  37. <!-- <el-table-column label="Logo图片组ID" width="200" align="center">
  38. <template slot-scope="scope">
  39. <span>{{ scope.row.logoGroupId }}</span>
  40. </template>
  41. </el-table-column> -->
  42. <el-table-column label="授信额度" align="center" show-overflow-tooltip>
  43. <template slot-scope="scope">
  44. <span>{{ scope.row.creditAmount }}</span>
  45. </template>
  46. </el-table-column>
  47. <el-table-column label="当前费用" align="center" show-overflow-tooltip>
  48. <template slot-scope="scope">
  49. <span>{{ scope.row.currentAmount }}</span>
  50. </template>
  51. </el-table-column>
  52. <el-table-column label="创建时间" width="200" align="center" show-overflow-tooltip>
  53. <template slot-scope="scope">
  54. <span>{{ scope.row.createTime }}</span>
  55. </template>
  56. </el-table-column>
  57. <el-table-column label="操作" fixed="right" min-width="250" align="center">
  58. <template slot-scope="scope">
  59. <el-button v-if="scope.row.status === 1" size="small" icon="el-icon-close" type="warning" @click="ModifyStatus(scope.row,2)">暂停</el-button>
  60. <el-button v-if="scope.row.status === 2" size="small" icon="el-icon-check" @click="ModifyStatus(scope.row,1)">有效</el-button>
  61. <el-button size="small" icon="el-icon-edit" type="primary" @click="product(scope.row)">产品</el-button>
  62. <el-button size="small" icon="el-icon-edit" type="warning" @click="ModifyEdit(scope.row)">编辑</el-button>
  63. <el-button size="small" icon="el-icon-delete" type="danger" @click="ModifyDelete(scope.row)">删除</el-button>
  64. </template>
  65. </el-table-column>
  66. </el-table>
  67. <!-- 添加或修改对话框 -->
  68. <el-dialog :title="operation?'新增客户':'编辑客户'" width="85%" :visible.sync="dialogFormVisible" center>
  69. <el-form ref="dataForm" :model="dataForm" :rules="rules2" label-width="80px" size="small" label-position="right">
  70. <!-- 客户基本信息 -->
  71. <el-card shadow="never" >
  72. <!-- <el-card shadow="hover" > -->
  73. <div slot="header" class="clearfix">
  74. <span class="topClass">客户基本信息</span>
  75. </div>
  76. <div>
  77. <el-row :gutter="20">
  78. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  79. <el-form-item label="客户名称" prop="customerName" :label-width="formLabelWidth" >
  80. <el-input v-model="dataForm.customerName" />
  81. </el-form-item>
  82. </el-col>
  83. <el-col v-if="!operation" :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  84. <el-form-item label="客户ID" :label-width="formLabelWidth" >
  85. <el-input disabled v-model="dataForm.customerId" />
  86. </el-form-item>
  87. </el-col>
  88. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  89. <el-form-item label="客户简称" prop="shorterName" :label-width="formLabelWidth">
  90. <el-input v-model="dataForm.shorterName" />
  91. </el-form-item>
  92. </el-col>
  93. </el-row>
  94. </div>
  95. </el-card>
  96. <!-- 客户服务联系人信息 -->
  97. <el-card shadow="never" >
  98. <!-- <el-card shadow="hover" > -->
  99. <div slot="header" class="clearfix">
  100. <span class="topClass">客户服务联系人信息</span>
  101. </div>
  102. <div>
  103. <el-row :gutter="20">
  104. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  105. <el-form-item label="联系人姓名" :label-width="formLabelWidth" >
  106. <el-input v-model="dataForm.linkmanName" />
  107. </el-form-item>
  108. </el-col>
  109. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  110. <el-form-item label="联系人电话" :label-width="formLabelWidth" >
  111. <el-input v-model="dataForm.linkmanMobile" />
  112. </el-form-item>
  113. </el-col>
  114. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  115. <el-form-item label="联系人邮箱" :label-width="formLabelWidth">
  116. <el-input v-model="dataForm.linkmanEmail" />
  117. </el-form-item>
  118. </el-col>
  119. </el-row>
  120. <el-row :gutter="20">
  121. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  122. <el-form-item label="联系人地址" :label-width="formLabelWidth" >
  123. <el-input v-model="dataForm.address" />
  124. </el-form-item>
  125. </el-col>
  126. </el-row>
  127. </div>
  128. </el-card>
  129. <!-- 其他 -->
  130. <el-card shadow="never" >
  131. <!-- <el-card shadow="hover" > -->
  132. <div slot="header" class="clearfix">
  133. <span class="topClass">其他</span>
  134. </div>
  135. <div>
  136. <el-row :gutter="20">
  137. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  138. <el-form-item label="代理商提成比例" :label-width="formLabelWidth" >
  139. <el-input v-model="dataForm.partnerCommission" />
  140. </el-form-item>
  141. </el-col>
  142. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  143. <el-form-item label="合作伙伴ID" :label-width="formLabelWidth" >
  144. <el-input v-model="dataForm.partnerId" />
  145. </el-form-item>
  146. </el-col>
  147. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  148. <el-form-item label="价格校验" :label-width="formLabelWidth">
  149. <!-- <el-input v-model="dataForm.priceCheck" /> -->
  150. <el-select size="small" v-model="dataForm.priceCheck">
  151. <el-option
  152. v-for="item in priceCheck"
  153. :key="item.id"
  154. :label="item.name"
  155. :value="item.id"
  156. />
  157. </el-select>
  158. </el-form-item>
  159. </el-col>
  160. </el-row>
  161. <el-row :gutter="20">
  162. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  163. <el-form-item label="是否有效" :label-width="formLabelWidth" >
  164. <el-select size="small" v-model="dataForm.status">
  165. <el-option
  166. v-for="item in status"
  167. :key="item.id"
  168. :label="item.name"
  169. :value="item.id"
  170. />
  171. </el-select>
  172. </el-form-item>
  173. </el-col>
  174. </el-row>
  175. </div>
  176. </el-card>
  177. </el-form>
  178. <div slot="footer" class="dialog-footer">
  179. <el-button @click="dialogFormVisible = false">取 消</el-button>
  180. <el-button type="primary" @click="submitForm">确 定</el-button>
  181. </div>
  182. </el-dialog>
  183. <el-dialog :title="productData.customerName+' 产品'" width="85%" :visible.sync="productShow" center>
  184. test
  185. <div slot="footer" class="dialog-footer">
  186. <el-button @click="productShow = false">取 消</el-button>
  187. <el-button type="primary" @click="productSubmit">确 定</el-button>
  188. </div>
  189. </el-dialog>
  190. <!-- 分页 -->
  191. <div class="pagination">
  192. <el-pagination
  193. current-page.sync="body.current"
  194. :current-page="body.current"
  195. :page-sizes="[10, 20, 30, 50]"
  196. :page-size="body.size"
  197. layout="total, sizes, prev, pager, next, jumper"
  198. background
  199. :total="total"
  200. @size-change="handleSizeChange"
  201. @current-change="handleCurrentChange"
  202. />
  203. </div>
  204. </div>
  205. </template>
  206. <script>
  207. import api from '@/api/userList'
  208. export default {
  209. data() {
  210. return {
  211. body: {
  212. customerName:"",
  213. size: 10,
  214. current: 1
  215. },
  216. status:[
  217. {id:1,name:"正常"},
  218. {id:2,name:"暂停"}
  219. ],
  220. priceCheck:[
  221. {id:0,name:"关闭"},
  222. {id:1,name:"开启"}
  223. ],
  224. operation: false, // true:新增, false:编辑
  225. dialogFormVisible: false, // 控制弹出框
  226. formLabelWidth: '120px', //新增宽度
  227. dataForm:{
  228. userId:4,
  229. },
  230. productShow:false,
  231. productData:{}, // 产品查看时的基本数据的数据
  232. rules2:{
  233. shorterName: [{ required: true, message: '请输入客户简称', trigger: 'blur' }],
  234. customerName: [{ required: true, message: '请输入客户名称', trigger: 'blur' }],
  235. },
  236. loading:false,
  237. total: 1,
  238. tableData: [
  239. ]
  240. }
  241. },
  242. created() {
  243. this.getTenantList()
  244. },
  245. methods: {
  246. //新增弹框
  247. NewUser() {
  248. this.operation = true
  249. this.dialogFormVisible = true
  250. this.dataForm = {
  251. userId:4,
  252. }
  253. },
  254. //编辑弹框
  255. ModifyEdit(row) {
  256. this.operation = false
  257. this.dialogFormVisible = true
  258. this.dataForm = row
  259. },
  260. ModifyDelete(row) {
  261. this.$confirm('此操作将删除客户:' + row.customerName, '提示', {
  262. confirmButtonText: '确定',
  263. cancelButtonText: '取消',
  264. type: 'warning'
  265. }).then(() => {
  266. row.isDeleted = 1
  267. api.index.update(row).then((resp)=>{
  268. if (resp.status === 200) {
  269. this.$message({
  270. type: 'success',
  271. message: '操作成功'
  272. })
  273. this.getTenantList()
  274. } else {
  275. this.$message({
  276. type: 'error',
  277. message: resp.data.msg
  278. })
  279. }
  280. })
  281. }).catch(() => {
  282. this.$message({
  283. type: 'info',
  284. message: '已取消删除'
  285. })
  286. })
  287. },
  288. //数据
  289. getTenantList(){
  290. this.loading = true
  291. api.index.Search(this.body).then((res) => {
  292. this.loading =false
  293. this.tableData = res.data.data.records
  294. this.total = res.data.data.total
  295. })
  296. },
  297. product(row){
  298. this.productShow = true
  299. this.productData = row
  300. },
  301. productSubmit(){
  302. productShow = false
  303. },
  304. //新增或修改API
  305. submitForm(){
  306. this.$refs['dataForm'].validate((valid) => {
  307. if (valid) {
  308. if (!this.operation) {
  309. console.log(this.dataForm)
  310. // 编辑
  311. api.index.update(this.dataForm).then(response => {
  312. if (response.status === 200) {
  313. this.$message({
  314. type: 'success',
  315. message: '操作成功'
  316. })
  317. this.dialogFormVisible = false
  318. this.getTenantList()
  319. } else {
  320. this.$message({
  321. type: 'error',
  322. message: response.data.msg
  323. })
  324. }
  325. })
  326. } else {
  327. console.log(this.dataForm)
  328. // // 添加
  329. api.index.userAdd(this.dataForm).then(response => {
  330. if (response.status === 200) {
  331. this.$message({
  332. type: 'success',
  333. message: '操作成功'
  334. })
  335. this.dialogFormVisible = false
  336. this.getTenantList()
  337. } else {
  338. this.$message({
  339. type: 'error',
  340. message: response.data.msg
  341. })
  342. }
  343. })
  344. }
  345. }
  346. })
  347. },
  348. ModifyStatus(row,i){
  349. this.$confirm('是否修改 '+row.customerName+' 的状态', '提示', {
  350. confirmButtonText: '确定',
  351. cancelButtonText: '取消',
  352. type: 'warning'
  353. }).then(()=>{
  354. row.status = i
  355. api.index.update(row).then(response => {
  356. if (response.status === 200) {
  357. this.$message({
  358. type: 'success',
  359. message: '操作成功'
  360. })
  361. this.dialogFormVisible = false
  362. this.getTenantList()
  363. } else {
  364. this.$message({
  365. type: 'error',
  366. message: response.data.msg
  367. })
  368. }
  369. })
  370. }).catch(() => {
  371. this.$message({
  372. type: 'info',
  373. message: '已取消删除'
  374. });
  375. });
  376. },
  377. //搜索
  378. Search() {
  379. this.body.current = 1
  380. this.getTenantList()
  381. },
  382. //页码
  383. handleSizeChange(val) {
  384. this.body.size = val
  385. this.getTenantList()
  386. },
  387. //换页
  388. handleCurrentChange(val) {
  389. this.body.current = val
  390. this.getTenantList()
  391. }
  392. }
  393. }
  394. </script>
  395. <style scoped>
  396. .el-card {
  397. border: 0px solid #fff;
  398. }
  399. </style>