channel.vue 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813
  1. <template>
  2. <div class="app-container">
  3. <div class="flex">
  4. <div class="w_input">
  5. <span class="textSpan">通道名称:</span>
  6. <el-input v-model="body.channelName" style="width:200px" placeholder="通道名称" size="small" clearable />
  7. <el-button class="filter-item" icon="el-icon-search" type="primary" plain @click="Search">搜索</el-button>
  8. <el-button class="classitem" style="marginRight:50px" type="primary" plain icon="el-icon-plus" @click="dataFormAdd">新增</el-button>
  9. </div>
  10. <!-- <div class="w_input">
  11. <span class="textSpan">  通道ID:</span>
  12. <el-input v-model="body.channelId" style="width:200px" placeholder="通道ID" size="small" clearable />
  13. </div> -->
  14. </div>
  15. <!-- 表格数据 -->
  16. <el-table v-loading="loading" :data="tableData" border style="width: 100%">
  17. <el-table-column label="序号" width="60" align="center">
  18. <template slot-scope="scope">
  19. <span>{{ scope.$index + 1 }}</span>
  20. </template>
  21. </el-table-column>
  22. <el-table-column label="通道名称" align="center" show-overflow-tooltip>
  23. <template slot-scope="scope" @click="hookLook(scope.row)">
  24. <el-button type="text" @click="hookLook(scope.row)">{{ scope.row.channelName }}</el-button>
  25. </template>
  26. </el-table-column>
  27. <el-table-column label="折扣(%)" align="center" show-overflow-tooltip>
  28. <template slot-scope="scope">
  29. <span>{{ scope.row.discount }}</span>
  30. </template>
  31. </el-table-column>
  32. <el-table-column label="运营商" align="center" show-overflow-tooltip>
  33. <template slot-scope="scope">
  34. <span v-if="scope.row.operator==1">移动</span>
  35. <span v-if="scope.row.operator==3">电信</span>
  36. <span v-if="scope.row.operator==2">联通</span>
  37. </template>
  38. </el-table-column>
  39. <el-table-column label="是否有效" align="center" show-overflow-tooltip>
  40. <template slot-scope="scope">
  41. <el-tag v-if="scope.row.isValid==0" type="danger" size="warning">无效</el-tag>
  42. <el-tag v-if="scope.row.isValid==1" size="small">有效</el-tag>
  43. </template>
  44. </el-table-column>
  45. <el-table-column label="供应商名称" align="center" show-overflow-tooltip>
  46. <template slot-scope="scope">
  47. <span>{{ scope.row.supplierName }}</span>
  48. </template>
  49. </el-table-column>
  50. <el-table-column label="操作" fixed="right" width="280" align="center">
  51. <template slot-scope="scope">
  52. <el-button style="margin:5px" v-if="scope.row.isValid === 1" size="small" icon="el-icon-close" plain type="info" @click="ModifyStatus(scope.row,0)">无效</el-button>
  53. <el-button style="margin:5px" v-if="scope.row.isValid === 0" size="small" icon="el-icon-check" plain type="success" @click="ModifyStatus(scope.row,1)">有效</el-button>
  54. <el-button size="small" icon="el-icon-edit" type="warning" plain @click="handleEdit(scope.row)">编辑</el-button>
  55. <el-button size="small" icon="el-icon-delete" type="danger" plain @click="ModifyDelete(scope.row,$event)">删除</el-button>
  56. </template>
  57. </el-table-column>
  58. </el-table>
  59. <!-- 分页 -->
  60. <div class="pagination">
  61. <el-pagination
  62. current-page.sync="body.current"
  63. :current-page="body.current"
  64. :page-sizes="[10, 20, 30, 50]"
  65. :page-size="body.size"
  66. layout="total, sizes, prev, pager, next, jumper"
  67. background
  68. :total="total"
  69. @size-change="handleSizeChange"
  70. @current-change="handleCurrentChange"
  71. />
  72. </div>
  73. <!-- 新增与修改 -->
  74. <el-dialog :title="operation?'新增通道':'编辑通道'" :visible.sync="dialogFormVisible" width="85%" center>
  75. <el-form ref="dataForm" :model="dataForm" :rules="rules2" label-width="80px" size="small" label-position="right">
  76. <el-row :gutter="20">
  77. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  78. <el-form-item label="通道名称" prop="channelName" :label-width="formLabelWidth" >
  79. <el-input v-model="dataForm.channelName" placeholder="请输入通道名称" />
  80. </el-form-item>
  81. </el-col>
  82. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  83. <el-form-item label="运营商" prop="operator" :label-width="formLabelWidth">
  84. <el-select size="small" :disabled="!operation" v-model="dataForm.operator" clearable placeholder="请选择运营商" style="width: 100%" >
  85. <el-option
  86. v-for="item in mobileOperator"
  87. :key="item.id"
  88. :label="item.name"
  89. :value="item.id"
  90. />
  91. </el-select>
  92. </el-form-item>
  93. </el-col>
  94. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  95. <el-form-item label="是否有效" :label-width="formLabelWidth" prop="isValid" >
  96. <el-select size="small" v-model="dataForm.isValid" placeholder="请选择是否有效" style="width: 100%" >
  97. <el-option
  98. v-for="item in status"
  99. :key="item.id"
  100. :label="item.name"
  101. :value="item.id"
  102. />
  103. </el-select>
  104. </el-form-item>
  105. </el-col>
  106. </el-row>
  107. <el-row :gutter="20">
  108. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  109. <el-form-item label="供应商" prop="supplierId" :label-width="formLabelWidth">
  110. <el-select size="small" :disabled="!operation" value-key="relationId" filterable v-model="dataForm.supplierId" clearable placeholder="请选择供应商" style="width: 100%" >
  111. <el-option
  112. v-for="item in listSupplier"
  113. :key="item.supplierId"
  114. :label="item.supplierName"
  115. :value="item.supplierId"
  116. />
  117. </el-select>
  118. </el-form-item>
  119. </el-col>
  120. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  121. <el-form-item label="折扣(%)" :label-width="formLabelWidth" >
  122. <el-input v-model="dataForm.discount" placeholder="请输入折扣" @change="clicklong(dataForm.discount)" />
  123. </el-form-item>
  124. </el-col>
  125. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  126. <el-form-item label="备注" :label-width="formLabelWidth" >
  127. <el-input v-model="dataForm.remark" placeholder="请输入备注" />
  128. </el-form-item>
  129. </el-col>
  130. </el-row>
  131. <!-- 添加产品 -->
  132. <el-card shadow="hover" v-if="!operation">
  133. <div slot="header" class="clearfix">
  134. <span class="topClass">通道产品信息</span>
  135. <el-button style="float: right;" type="primary" plain @click="addprice(dataForm.operator)">添加通道产品</el-button>
  136. <el-button style="marginRight:20px;float: right;" type="success" plain @click="editpricing">结算价格批量定价</el-button>
  137. </div>
  138. <div>
  139. <!-- 添加 -->
  140. <el-table ref="multipleTable" :data="dataForm.channelProductInfos" @selection-change="handleSelectionChange">
  141. <el-table-column
  142. type="selection"
  143. width="55">
  144. </el-table-column>
  145. <el-table-column label="产品Id" align="center" width="100" show-overflow-tooltip>
  146. <template slot-scope="scope" >
  147. <!-- <el-input v-model="scope.row.packageId"></el-input> -->
  148. <span>{{ scope.row.packageId }}</span>
  149. </template>
  150. </el-table-column>
  151. <!--
  152. <el-table-column label="通道产品ID" width="150" align="center" show-overflow-tooltip>
  153. <template slot-scope="scope">
  154. <el-input v-model="scope.row.channelProductId"></el-input>
  155. </template>
  156. </el-table-column> -->
  157. <el-table-column label="通道产品名称" align="center" show-overflow-tooltip>
  158. <template slot-scope="scope" >
  159. <!-- <el-input v-model="scope.row.channelProductName"></el-input> -->
  160. <span >{{ scope.row.productName }}</span>
  161. </template>
  162. </el-table-column>
  163. <el-table-column label="面额" width="100" align="center" show-overflow-tooltip>
  164. <template slot-scope="scope" >
  165. <!-- <el-input v-model="scope.row.price"></el-input> -->
  166. <span >{{ scope.row.facePrice }}</span>
  167. </template>
  168. </el-table-column>
  169. <el-table-column label="结算价格" align="center" show-overflow-tooltip>
  170. <template slot-scope="scope" >
  171. <el-input v-model="scope.row.price "></el-input>
  172. <!-- <span >{{ scope.row.account }}</span> -->
  173. </template>
  174. </el-table-column>
  175. <el-table-column label="折扣" align="center" show-overflow-tooltip>
  176. <template slot-scope="scope" >
  177. <div v-if="scope.row.discount" >{{ parseFloat(scope.row.discount * 100).toFixed(4)}} %</div>
  178. <div v-else>{{ parseFloat(scope.row.price / scope.row.facePrice * 100).toFixed(4)}} %</div>
  179. <!-- <el-input v-model="scope.row.price"></el-input> -->
  180. </template>
  181. </el-table-column>
  182. <el-table-column label="是否有效" align="center" show-overflow-tooltip >
  183. <template slot-scope="scope" >
  184. <el-select size="small" v-model="scope.row.isValid" placeholder="请选择是否有效" style="width: 90%" >
  185. <el-option
  186. v-for="item in status"
  187. :key="item.id"
  188. :label="item.name"
  189. :value="item.id"
  190. />
  191. </el-select>
  192. <!-- <span >{{ scope.row.aaa }}</span> -->
  193. </template>
  194. </el-table-column>
  195. <el-table-column label="操作" width="165" min-width="150" align="center">
  196. <template slot-scope="scope">
  197. <el-button type="danger" plain icon="el-icon-delete" @click="priceDelete(scope.row,scope.$index,$event)">删除</el-button>
  198. </template>
  199. </el-table-column>
  200. </el-table>
  201. </div>
  202. </el-card>
  203. </el-form>
  204. <div slot="footer" class="dialog-footer">
  205. <el-button @click="dialogFormVisible = false">取 消</el-button>
  206. <el-button type="primary" @click="submitForm">确 定</el-button>
  207. </div>
  208. </el-dialog>
  209. <!-- 结算价格批量定价 -->
  210. <el-dialog
  211. title="结算价格批量定价"
  212. :visible.sync="pricingVisible"
  213. width="40%"
  214. modal
  215. :close-on-click-modal="false"
  216. center
  217. >
  218. <div style="text-align:center;">
  219. <el-input v-model="morePricing" @keyup.enter.native="pricingClike" style="width:200px"></el-input>
  220. <span>
  221. %
  222. </span>
  223. </div>
  224. <span slot="footer" class="dialog-footer">
  225. <!-- <el-button @click="">取 消</el-button> -->
  226. <el-button type="primary" @click="pricingClike">确 定</el-button>
  227. </span>
  228. </el-dialog>
  229. <!-- 产品选择 -->
  230. <el-dialog
  231. title="添加产品"
  232. :visible.sync="dialogVisible"
  233. width="58%"
  234. >
  235. <div class="edit_dev">
  236. <el-transfer
  237. v-model="value"
  238. filterable
  239. :props="{
  240. key: 'productId',
  241. label: 'productName'
  242. }"
  243. :format="{
  244. noChecked: '${total}',
  245. hasChecked: '${checked}/${total}'
  246. }"
  247. :titles="['话费','话费']"
  248. :data="data">
  249. </el-transfer>
  250. </div>
  251. <span slot="footer" class="dialog-footer">
  252. <el-button @click="dialogVisible = false">取 消</el-button>
  253. <el-button type="primary" @click="clickeAddprice">确 定</el-button>
  254. </span>
  255. </el-dialog>
  256. <!-- 查看 -->
  257. <el-dialog title="详情" :visible.sync="dialogFormLook" width="85%" center>
  258. <el-form ref="dataForm" :model="dataForm" :rules="rules2" label-width="80px" size="small" label-position="right">
  259. <el-row :gutter="20">
  260. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  261. <el-form-item label="通道名称" prop="channelName" :label-width="formLabelWidth" >
  262. <el-input v-model="dataForm.channelName" disabled placeholder="请输入供应商ID" />
  263. </el-form-item>
  264. </el-col>
  265. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  266. <el-form-item label="运营商" prop="operator" :label-width="formLabelWidth">
  267. <el-select size="small" disabled v-model="dataForm.operator" clearable placeholder="请选择运营商" style="width: 100%" >
  268. <el-option
  269. v-for="item in mobileOperator"
  270. :key="item.id"
  271. :label="item.name"
  272. :value="item.id"
  273. />
  274. </el-select>
  275. </el-form-item>
  276. </el-col>
  277. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  278. <el-form-item label="是否有效" :label-width="formLabelWidth" prop="isValid" >
  279. <el-select size="small" disabled v-model="dataForm.isValid" placeholder="请选择是否有效" style="width: 100%" >
  280. <el-option
  281. v-for="item in status"
  282. :key="item.id"
  283. :label="item.name"
  284. :value="item.id"
  285. />
  286. </el-select>
  287. </el-form-item>
  288. </el-col>
  289. </el-row>
  290. <el-row :gutter="20">
  291. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  292. <el-form-item label="供应商" prop="supplierId" :label-width="formLabelWidth">
  293. <el-select size="small" disabled value-key="relationId" filterable v-model="dataForm.supplierId" clearable placeholder="请选择供应商" style="width: 100%" >
  294. <el-option
  295. v-for="item in listSupplier"
  296. :key="item.supplierId"
  297. :label="item.supplierName"
  298. :value="item.supplierId"
  299. />
  300. </el-select>
  301. </el-form-item>
  302. </el-col>
  303. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  304. <el-form-item label="折扣(%)" :label-width="formLabelWidth" >
  305. <el-input v-model="dataForm.discount" disabled placeholder="请输入折扣" @change="clicklong(dataForm.discount)" />
  306. </el-form-item>
  307. </el-col>
  308. <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
  309. <el-form-item label="备注" :label-width="formLabelWidth" >
  310. <el-input v-model="dataForm.remark" disabled placeholder="请输入备注" />
  311. </el-form-item>
  312. </el-col>
  313. </el-row>
  314. <!-- 添加产品 -->
  315. <el-card shadow="hover" v-if="!operation">
  316. <div slot="header" class="clearfix">
  317. <span class="topClass">通道产品信息</span>
  318. </div>
  319. <div>
  320. <!-- 添加 -->
  321. <el-table ref="multipleTable" :data="dataForm.channelProductInfos" @selection-change="handleSelectionChange">
  322. <el-table-column
  323. type="selection"
  324. width="55">
  325. </el-table-column>
  326. <el-table-column label="产品Id" align="center" width="100" show-overflow-tooltip>
  327. <template slot-scope="scope" >
  328. <span>{{ scope.row.packageId }}</span>
  329. </template>
  330. </el-table-column>
  331. <el-table-column label="通道产品名称" align="center" show-overflow-tooltip>
  332. <template slot-scope="scope" >
  333. <span >{{ scope.row.productName }}</span>
  334. </template>
  335. </el-table-column>
  336. <el-table-column label="面额" width="100" align="center" show-overflow-tooltip>
  337. <template slot-scope="scope" >
  338. <span >{{ scope.row.facePrice }}</span>
  339. </template>
  340. </el-table-column>
  341. <el-table-column label="结算价格" align="center" show-overflow-tooltip>
  342. <template slot-scope="scope" >
  343. <span >{{ scope.row.price }}</span>
  344. </template>
  345. </el-table-column>
  346. <el-table-column label="折扣" align="center" show-overflow-tooltip>
  347. <template slot-scope="scope" >
  348. <!-- <div v-if="scope.row.disCount" >{{ ((scope.row.disCount ) * 100).toFixed(2)}} </div> -->
  349. <div >{{ parseFloat(scope.row.price / scope.row.facePrice * 100).toFixed(4)}} %</div>
  350. <!-- <div >{{ parseFloat(scope.row.discount * 100).toFixed(4)}} %</div> -->
  351. <!-- <el-input v-model="scope.row.price"></el-input> -->
  352. </template>
  353. </el-table-column>
  354. <el-table-column label="是否有效" align="center" show-overflow-tooltip >
  355. <template slot-scope="scope" >
  356. <span v-if=" scope.row.isValid == 0">无效</span>
  357. <span v-if=" scope.row.isValid == 1">有效</span>
  358. </template>
  359. </el-table-column>
  360. </el-table>
  361. </div>
  362. </el-card>
  363. </el-form>
  364. <div slot="footer" class="dialog-footer">
  365. <el-button @click="dialogFormLook = false">取 消</el-button>
  366. <el-button type="primary" @click="dialogFormLook = false">确 定</el-button>
  367. </div>
  368. </el-dialog>
  369. </div>
  370. </template>
  371. <script>
  372. import api from '@/api/channel.js'
  373. import Vue from 'vue'
  374. export default {
  375. data() {
  376. return {
  377. body:{
  378. channelId:"",
  379. size:10,
  380. current:1,
  381. channelName:""
  382. },
  383. data:[],
  384. value: [],
  385. tableData:[],
  386. total:0,
  387. operation: false, // true:新增, false:编辑
  388. dialogVisible:false, //新增产品
  389. dialogFormVisible: false, // 控制弹出框
  390. dialogFormLook:false, //查看弹出框
  391. pricingVisible:false, //结算价格批量定价弹出框
  392. formLabelWidth: '100px', //新增宽度
  393. loading:false,
  394. dataForm:{
  395. },
  396. mobileOperator:[
  397. {id:1,name:"移动"},
  398. {id:2,name:"联通"},
  399. {id:3,name:"电信"},
  400. ],
  401. listSupplier:[],
  402. rules2:{
  403. supplierId: [{ required: true, message: '请选择供应商名称', trigger: 'blur' }],
  404. channelName: [{ required: true, message: '请输入通道名称', trigger: 'blur' }],
  405. isValid: [{ required: true, message: '请选择是否有效', trigger: 'blur' }],
  406. operator: [{ required: true, message: '请选择运营商', trigger: 'blur' }],
  407. },
  408. status:[{
  409. id:1,
  410. name:"有效"
  411. },{
  412. id:0,
  413. name:"无效"
  414. }],
  415. morePricing:"", //结算价格批量定价
  416. batch:[] //批量所选的数据
  417. }
  418. },
  419. created(){
  420. this.reLoad()
  421. this.onsupplier()
  422. },
  423. methods: {
  424. onsupplier(){
  425. api.supplierInfo().then((res)=>{
  426. this.listSupplier =res.data.data
  427. })
  428. },
  429. // 重载数据
  430. reLoad(){
  431. this.loading = true
  432. api.channel(this.body).then((res) => {
  433. this.loading = false
  434. let list = res.data.data.records
  435. list.map((res)=>{
  436. // console.log(res)
  437. res.channelProductInfos.map((res=>{
  438. res.price = (res.price / 10000).toFixed(4)
  439. return res
  440. }))
  441. return res
  442. })
  443. // console.log(data)
  444. this.tableData = list
  445. this.total = res.data.data.total
  446. })
  447. },
  448. //新增弹框
  449. dataFormAdd(){
  450. this.operation = true // true:新增, false:编辑
  451. this.dialogFormVisible = true // 控制弹出框
  452. this.dataForm = {}
  453. if(this.$refs['dataForm']){
  454. this.$refs['dataForm'].resetFields();
  455. }
  456. },
  457. //编辑弹框
  458. handleEdit(row){
  459. this.operation = false // true:新增, false:编辑
  460. this.dialogFormVisible = true // 控制弹出框
  461. this.dataForm = JSON.parse(JSON.stringify(row))
  462. this.batch == []
  463. this.morePricing = ""
  464. if(this.$refs['dataForm']){
  465. this.$refs['dataForm'].resetFields();
  466. }
  467. },
  468. //文本框折扣编辑
  469. clicklong(row){
  470. let code = this.dataForm.channelProductInfos
  471. let info = []
  472. let arry= code.forEach((res)=>{
  473. //结算价格 * 折扣(%) * 0.01
  474. res.price=(res.facePrice * row * 0.01).toFixed(4)
  475. info.push(res)
  476. })
  477. this.dataForm.channelProductInfos = info
  478. console.log(info)
  479. // console.log(number)
  480. },
  481. //折扣批量
  482. pricingClike(){
  483. // console.log(this.batch)
  484. let morePricing = this.morePricing
  485. let code = this.batch
  486. if(!morePricing){
  487. this.$message({
  488. type: 'error',
  489. message: "请输入结算价格批量定价"
  490. })
  491. }else{
  492. let info = []
  493. let data = this.dataForm.channelProductInfos
  494. let arry= code.forEach((res)=>{
  495. //结算价格 * 折扣(%) * 0.01
  496. res.price=(res.facePrice * morePricing * 0.01).toFixed(4)
  497. // info.push(res)
  498. return res
  499. // let iscode = data.forEach(item=>{
  500. // if(res.productId == item.productId){
  501. // }
  502. // })
  503. })
  504. this.pricingVisible = false
  505. }
  506. this.$refs.multipleTable.clearSelection();
  507. },
  508. //删除API
  509. ModifyDelete(row,e){
  510. const that = this
  511. let target=e.target;
  512. if(target.nodeName == 'SPAN' || target.nodeName == 'I'){
  513. target = e.target.parentNode;
  514. }
  515. target.blur();
  516. that.$confirm('此操作将删除通道:' + row.channelName, '提示', {
  517. confirmButtonText: '确定',
  518. cancelButtonText: '取消',
  519. type: 'warning'
  520. })
  521. .then(() => {
  522. api.channelDelete(row.channelId).then((res)=>{
  523. if (res.status === 200) {
  524. that.$message({
  525. type: 'success',
  526. message: '删除成功'
  527. })
  528. that.reLoad()
  529. } else {
  530. that.$message({
  531. type: 'error',
  532. message: res.msg
  533. })
  534. }
  535. })
  536. })
  537. },
  538. //查看弹框
  539. hookLook(row){
  540. console.log(row)
  541. this.dialogFormLook = true
  542. this.dataForm={
  543. }
  544. let newObj=JSON.parse(JSON.stringify(row))
  545. this.dataForm = newObj
  546. },
  547. //通道产品删除
  548. priceDelete(row,index,e){
  549. console.log(e)
  550. let target=e.target;
  551. if(target.nodeName == 'SPAN' || target.nodeName == 'I'){
  552. target = e.target.parentNode;
  553. }
  554. target.blur();
  555. if(row.channelProductId){
  556. api.productDelete(row.channelProductId).then((res)=>{
  557. this.dataForm.channelProductInfos.splice(index,1)
  558. this.$message({
  559. type: 'success',
  560. message: '删除成功'
  561. })
  562. })
  563. }else{
  564. this.dataForm.channelProductInfos.splice(index,1)
  565. }
  566. console.log(this.dataForm.channelProductInfos)
  567. },
  568. //新增和修改API
  569. submitForm(){
  570. this.$refs['dataForm'].validate((valid) => {
  571. if (valid) {
  572. if (!this.operation) {
  573. let dataForm = this.dataForm
  574. let data=dataForm.channelProductInfos.map((res)=>{
  575. if(res.price > 10000){
  576. return res
  577. }else{
  578. res.price = res.price * 10000
  579. return res
  580. }
  581. })
  582. console.log(dataForm)
  583. // 编辑
  584. api.update(dataForm).then(response => {
  585. if (response.status === 200) {
  586. this.$message({
  587. type: 'success',
  588. message: '操作成功'
  589. })
  590. this.dialogFormVisible = false
  591. this.reLoad()
  592. } else {
  593. this.$message({
  594. type: 'error',
  595. message: response.data.msg
  596. })
  597. }
  598. })
  599. } else {
  600. console.log(this.dataForm)
  601. // // 添加
  602. api.axiosAdd(this.dataForm).then(response => {
  603. if (response.status === 200) {
  604. this.$message({
  605. type: 'success',
  606. message: '操作成功'
  607. })
  608. this.dialogFormVisible = false
  609. this.reLoad()
  610. } else {
  611. this.$message({
  612. type: 'error',
  613. message: response.data.msg
  614. })
  615. }
  616. })
  617. }
  618. }
  619. })
  620. },
  621. //结算价格批量定价
  622. editpricing(){
  623. console.log(this.batch)
  624. if(this.batch.length == 0){
  625. this.$message({
  626. type: 'error',
  627. message: "请至少选择一项"
  628. })
  629. }else{
  630. this.pricingVisible = true
  631. }
  632. },
  633. //新增产品
  634. addprice(row){
  635. if(this.dataForm.operator == null || this.dataForm.operator == ""){
  636. this.$message({
  637. type: 'error',
  638. message: "无产品"
  639. })
  640. }else{
  641. api.productAdd(row).then(res=>{
  642. let dataForm=this.dataForm.channelProductInfos
  643. let code = res.data.data
  644. if(dataForm.length == 0){
  645. this.data=code
  646. }else{
  647. // 去重产品
  648. var set=dataForm.map(item=>item.productName)
  649. var resArr=code.filter(item=>!set.includes(item.productName))
  650. this.data=resArr
  651. console.log(resArr)
  652. }
  653. // console.log(code)
  654. this.dialogVisible = true
  655. })
  656. }
  657. },
  658. //确认产品
  659. clickeAddprice(){
  660. let channelId=this.dataForm.channelId
  661. let value = this.value;
  662. let data =this.data;
  663. let code= value.map(item1=>{
  664. let arry= data.map(item2=>{
  665. console.log(item1)
  666. if(item1 == item2.productId){
  667. let form = {
  668. channelId:channelId,
  669. price : item2.productPrice,
  670. facePrice : item2.productPrice,
  671. productName:item2.productName,
  672. packageId:item2.packageId,
  673. isValid:1,
  674. }
  675. // console.log(form)
  676. this.dataForm.channelProductInfos.push(form)
  677. }
  678. // return info
  679. })
  680. })
  681. this.dialogVisible = false
  682. this.value = []
  683. },
  684. //是否有效
  685. ModifyStatus(row,i){
  686. this.$confirm('是否修改 '+row.channelName+' 的状态', '提示', {
  687. confirmButtonText: '确定',
  688. cancelButtonText: '取消',
  689. type: 'warning'
  690. }).then(()=>{
  691. let code = JSON.parse(JSON.stringify(row))
  692. code.isValid = i // 2:暂停 1:有效
  693. let info = {
  694. isValid:code.isValid,
  695. channelId:code.channelId
  696. }
  697. api.update(info).then(response => {
  698. if (response.status == "200") {
  699. this.$message({
  700. type: 'success',
  701. message: '操作成功'
  702. })
  703. this.reLoad()
  704. } else {
  705. this.$message({
  706. type: 'error',
  707. message: response.data.msg
  708. })
  709. }
  710. })
  711. }).catch(() => {
  712. this.$message({
  713. type: 'info',
  714. message: '已取消'
  715. });
  716. });
  717. },
  718. // 搜索
  719. Search(){
  720. this.body.current = 1
  721. this.reLoad()
  722. },
  723. // 修改状态
  724. ModifyState(operator){
  725. operator.isValid ^= 1
  726. },
  727. //多选
  728. handleSelectionChange(rows){
  729. this.batch = rows
  730. },
  731. ///分页
  732. handleSizeChange: function(val) {
  733. this.body.size = val
  734. this.reLoad()
  735. },
  736. handleCurrentChange: function(val) {
  737. this.body.current = val
  738. this.reLoad()
  739. }
  740. },
  741. }
  742. </script>
  743. <style scoped>
  744. .flex{
  745. width: 90%;
  746. display: flex;
  747. flex-direction: row;
  748. margin-bottom: 10px;
  749. /* flex-wrap: wrap; */
  750. justify-content: flex-start;
  751. }
  752. .flexend{
  753. display: flex;
  754. justify-content: flex-end;
  755. /* padding-right: 2rem; */
  756. width: 100%;
  757. /* margin: 0 auto; */
  758. padding-bottom: 20px;
  759. }
  760. .el-card {
  761. border: 0px solid #e6ebf5;
  762. margin-top: 20px;
  763. }
  764. .edit_dev >>> .el-transfer-panel {
  765. width:250px;
  766. }
  767. </style>