Supplierinfo.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546
  1. <template>
  2. <div class="supplierinfo-all">
  3. <el-dialog :close-on-click-modal="false" width="960px" class="supplierinfo-dialog" title="新增编辑" :visible.sync="supplierinfoVisible">
  4. <el-form :model="form" :rules="formrules" ref="form">
  5. <el-form-item label="供应商类型" prop="typeId" :label-width="formLabelWidth">
  6. <el-select v-model="form.typeId" placeholder="请选择供应商类型">
  7. <el-option v-for="item in mediaSupplierInitarr" :key="item.id" :label="item.text" :value="item.id"></el-option>
  8. </el-select>
  9. </el-form-item>
  10. <el-form-item label="地区" prop="privince" :label-width="formLabelWidth">
  11. <el-input v-model="form.privince" autocomplete="off"></el-input>
  12. </el-form-item>
  13. <el-form-item label="城市" prop="city" :label-width="formLabelWidth">
  14. <el-input v-model="form.city" autocomplete="off"></el-input>
  15. </el-form-item>
  16. <el-form-item label="单位名称" prop="unitName" :label-width="formLabelWidth">
  17. <el-input v-model="form.unitName" autocomplete="off"></el-input>
  18. </el-form-item>
  19. <el-form-item label="单位联系人" prop="contact" :label-width="formLabelWidth">
  20. <el-input v-model="form.contact" autocomplete="off"></el-input>
  21. </el-form-item>
  22. <el-form-item label="性别" prop="sex" :label-width="formLabelWidth">
  23. <el-radio-group v-model="form.sex">
  24. <el-radio label="男"></el-radio>
  25. <el-radio label="女"></el-radio>
  26. </el-radio-group>
  27. <!-- <el-input v-model="form.sex" autocomplete="off"></el-input> -->
  28. </el-form-item>
  29. <el-form-item label="联系电话" prop="tel" :label-width="formLabelWidth">
  30. <el-input v-model="form.tel" autocomplete="off"></el-input>
  31. </el-form-item>
  32. <el-form-item label="电子邮件" :label-width="formLabelWidth">
  33. <el-input v-model="form.email" autocomplete="off"></el-input>
  34. </el-form-item>
  35. <el-form-item label="单位缩写" :label-width="formLabelWidth">
  36. <el-input v-model="form.unitAbbreviation" autocomplete="off"></el-input>
  37. </el-form-item>
  38. <el-form-item label="职位" :label-width="formLabelWidth">
  39. <el-input v-model="form.post" autocomplete="off"></el-input>
  40. </el-form-item>
  41. <el-form-item label="传真号码" :label-width="formLabelWidth">
  42. <el-input v-model="form.fax" autocomplete="off"></el-input>
  43. </el-form-item>
  44. <el-form-item label="微信" :label-width="formLabelWidth">
  45. <el-input v-model="form.weChat" autocomplete="off"></el-input>
  46. </el-form-item>
  47. <el-form-item style="width:100%;" label="单位地址" :label-width="formLabelWidth">
  48. <el-input type="textarea" :rows="2" v-model="form.unitAddress" autocomplete="off"></el-input>
  49. </el-form-item>
  50. <el-form-item style="width:100%;" label="备注" :label-width="formLabelWidth">
  51. <el-input type="textarea" :rows="2" v-model="form.remark" autocomplete="off"></el-input>
  52. </el-form-item>
  53. </el-form>
  54. <div slot="footer" class="dialog-footer">
  55. <el-button @click="supplierinfoVisible = false">取 消</el-button>
  56. <el-button @click="resetForm('form')">清空</el-button>
  57. <el-button type="primary" @click="submitForm('form')">确 定</el-button>
  58. </div>
  59. </el-dialog>
  60. <div class="supplierinfo-screen">
  61. <div class="supplierinfo-screen-ul">
  62. <div class="supplierinfo-screen-li">
  63. <div class="supplierinfoscreen-li-title">供应商类型:&nbsp;</div>
  64. <el-select @change="valuechange" multiple collapse-tags size="small" v-model="value" filterable placeholder="请选择">
  65. <el-option
  66. v-for="item in mediaSupplierInitarr"
  67. :key="item.id"
  68. :label="item.text"
  69. :value="item.id">
  70. </el-option>
  71. </el-select>
  72. </div>
  73. <div class="supplierinfo-screen-li">
  74. <div class="supplierinfoscreen-li-title">供应商名称:&nbsp;</div>
  75. <el-input clearable size="small" v-model="search" placeholder="请输入内容"></el-input>
  76. </div>
  77. <!-- <div class="supplierinfo-screen-li">
  78. <div class="supplierinfoscreen-li-title">供应商单位:&nbsp;</div>
  79. <el-input size="small" v-model="value" placeholder="请输入内容"></el-input>
  80. </div>
  81. <div class="supplierinfo-screen-li">
  82. <div class="supplierinfoscreen-li-title">供应商电话:&nbsp;</div>
  83. <el-input size="small" v-model="value" placeholder="请输入内容"></el-input>
  84. </div> -->
  85. <el-button size="small" @click="MediaSupplierPageItemsearch" type="primary">查询</el-button>
  86. </div>
  87. <el-button size="small" @click="addsupplierinfo" type="primary">新增数据</el-button>
  88. </div>
  89. <div class="supplierinfo-table">
  90. <el-table :data="tableData" border style="width: 100%">
  91. <el-table-column prop="privince" label="地区" width="180">
  92. </el-table-column>
  93. <el-table-column prop="city" label="城市" width="180">
  94. </el-table-column>
  95. <el-table-column prop="unitName" label="单位名称">
  96. </el-table-column>
  97. <el-table-column prop="contact" label="联系人名称">
  98. </el-table-column>
  99. <el-table-column prop="tel" label="联系电话" width="180">
  100. </el-table-column>
  101. <el-table-column prop="createUserName" label="录入人" width="110">
  102. </el-table-column>
  103. <el-table-column prop="createTime" label="录入时间" width="180">
  104. </el-table-column>
  105. <el-table-column label="操作" width="180">
  106. <template slot-scope="scope">
  107. <el-button size="small" @click="MediaSupplierInfo(scope.row)">编辑</el-button>
  108. <el-button type="danger" size="small" @click="delbtn(scope.row)">删除</el-button>
  109. </template>
  110. </el-table-column>
  111. </el-table>
  112. <div class="block">
  113. <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
  114. :current-page="currentPage" :page-sizes="[10, 12, 14, 15, 20]" :page-size="pagesize"
  115. layout="total, sizes, prev, pager, next, jumper" :total="total">
  116. </el-pagination>
  117. </div>
  118. </div>
  119. </div>
  120. </template>
  121. <script>
  122. export default {
  123. data () {
  124. return {
  125. userId:'',
  126. token:'',
  127. options: [{
  128. value: '选项1',
  129. label: '黄金糕'
  130. }, {
  131. value: '选项2',
  132. label: '双皮奶'
  133. }, {
  134. value: '选项3',
  135. label: '蚵仔煎'
  136. }, {
  137. value: '选项4',
  138. label: '龙须面'
  139. }, {
  140. value: '选项5',
  141. label: '北京烤鸭'
  142. }],
  143. value: '',
  144. values: '',
  145. tableData: [],
  146. currentPage: 1,
  147. pagesize:12,
  148. total:0,
  149. search:'',
  150. supplierinfoVisible:false,
  151. form:{
  152. id:'',
  153. typeId:'',
  154. privince:'',
  155. city:'',
  156. unitName:'',
  157. unitAbbreviation:'',
  158. unitAddress:'',
  159. contact:'',
  160. sex:'',
  161. post:'',
  162. tel:'',
  163. email:'',
  164. weChat:'',
  165. fax:'',
  166. remark:'',
  167. },
  168. formLabelWidth:'100px',
  169. formrules: {
  170. typeId: [
  171. { required: true, message: '请选择', trigger: 'change' }
  172. ],
  173. privince: [
  174. { required: true, message: '请输入', trigger: 'blur' }
  175. ],
  176. city: [
  177. { required: true, message: '请输入', trigger: 'blur' }
  178. ],
  179. sex: [
  180. { required: true, message: '请选择', trigger: 'blur' }
  181. ],
  182. tel: [
  183. { required: true, message: '请输入', trigger: 'blur' }
  184. ],
  185. unitName: [
  186. { required: true, message: '请输入', trigger: 'blur' }
  187. ],
  188. contact: [
  189. { required: true, message: '请输入', trigger: 'blur' }
  190. ],
  191. },
  192. mediaSupplierInitarr:[],
  193. }
  194. },
  195. methods:{
  196. handleSizeChange(val) {
  197. this.pagesize=val;
  198. this.currentPage=1;
  199. this.MediaSupplierPageItem();
  200. },
  201. handleCurrentChange(val) {
  202. this.currentPage=val;
  203. this.MediaSupplierPageItem();
  204. },
  205. MediaSupplierPageItemsearch(){
  206. this.currentPage=1;
  207. this.MediaSupplierPageItem();
  208. },
  209. //获取基础数据
  210. MediaSupplierInit() {
  211. var url = "/api/Resource/MediaSupplierInit"
  212. var that = this
  213. this.$axios({
  214. method: 'get',
  215. url: url,
  216. headers: {
  217. Authorization: 'Bearer'
  218. }
  219. }).then(function (res) {
  220. if (res.data.code == 200) {
  221. that.mediaSupplierInitarr=res.data.data;
  222. }else{
  223. that.$message({
  224. message:res.data.msg,
  225. duration:1000,
  226. type:"error"
  227. });
  228. }
  229. }).catch(function (error) {
  230. that.$message.error('报错请联系信息部!');
  231. });
  232. },
  233. //获取列表
  234. MediaSupplierPageItem() {
  235. var url = "/api/Resource/MediaSupplierPageItem"
  236. var that = this
  237. this.$axios({
  238. method: 'post',
  239. url: url,
  240. headers: {
  241. Authorization: 'Bearer'
  242. },
  243. data: {
  244. portType:1,
  245. pageIndex: that.currentPage,
  246. pageSize:that.pagesize,
  247. search:that.search,
  248. typeLabel:that.values
  249. }
  250. }).then(function (res) {
  251. if (res.data.code == 200) {
  252. that.tableData=res.data.data;
  253. that.total=res.data.count;
  254. }else{
  255. that.$message({
  256. message:res.data.msg,
  257. duration:1000,
  258. type:"error"
  259. });
  260. }
  261. }).catch(function (error) {
  262. that.$message.error('报错请联系信息部!');
  263. });
  264. },
  265. //数据初始化
  266. infoinitialize(){
  267. this.form={
  268. id:'',
  269. currUserId:'',
  270. typeId:'',
  271. privince:'',
  272. city:'',
  273. unitName:'',
  274. unitAbbreviation:'',
  275. unitAddress:'',
  276. contact:'',
  277. sex:'',
  278. post:'',
  279. tel:'',
  280. email:'',
  281. weChat:'',
  282. fax:'',
  283. remark:'',
  284. }
  285. },
  286. //新增
  287. addsupplierinfo(){
  288. this.infoinitialize();
  289. this.supplierinfoVisible=true;
  290. },
  291. //
  292. delbtn(val){
  293. this.$confirm('此操作将删除该数据, 是否继续?', '提示', {
  294. confirmButtonText: '确定',
  295. cancelButtonText: '取消',
  296. type: 'warning'
  297. }).then(() => {
  298. this.MediaSupplierSoftDel(val);
  299. }).catch(() => {
  300. this.$message({
  301. type: 'info',
  302. message: '操作已取消!'
  303. });
  304. });
  305. },
  306. //删除
  307. MediaSupplierSoftDel(val) {
  308. var url = "/api/Resource/MediaSupplierSoftDel"
  309. var that = this
  310. this.$axios({
  311. method: 'post',
  312. url: url,
  313. headers: {
  314. Authorization: 'Bearer'
  315. },
  316. data: {
  317. portType:1,
  318. currUserId: that.userId,
  319. id:val.id,
  320. }
  321. }).then(function (res) {
  322. if (res.data.code == 200) {
  323. that.$message({
  324. message:res.data.msg,
  325. type:"success"
  326. });
  327. that.MediaSupplierPageItem();
  328. }else{
  329. that.$message({
  330. message:res.data.msg,
  331. duration:1000,
  332. type:"error"
  333. });
  334. }
  335. }).catch(function (error) {
  336. that.$message.error('报错请联系信息部!');
  337. });
  338. },
  339. //供应商查询
  340. valuechange(val){
  341. this.values=''
  342. for (let i = 0; i < val.length; i++) {
  343. this.values+=val[i]+','
  344. }
  345. this.values=this.values.substring(0,this.values.length-1);
  346. },
  347. //获取详情
  348. MediaSupplierInfo(val) {
  349. this.infoinitialize();
  350. this.supplierinfoVisible=true;
  351. var url = "/api/Resource/MediaSupplierInfo"
  352. var that = this
  353. this.$axios({
  354. method: 'post',
  355. url: url,
  356. headers: {
  357. Authorization: 'Bearer'
  358. },
  359. data: {
  360. portType:1,
  361. id: val.id,
  362. }
  363. }).then(function (res) {
  364. if (res.data.code == 200) {
  365. var formuinfo=res.data.data
  366. that.form={
  367. id:formuinfo.id,
  368. typeId:formuinfo.typeId,
  369. privince:formuinfo.privince,
  370. city:formuinfo.city,
  371. unitName:formuinfo.unitName,
  372. unitAbbreviation:formuinfo.unitAbbreviation,
  373. unitAddress:formuinfo.unitAddress,
  374. contact:formuinfo.contact,
  375. sex:formuinfo.sex==0?'男':'女',
  376. post:formuinfo.post,
  377. tel:formuinfo.tel,
  378. email:formuinfo.email,
  379. weChat:formuinfo.weChat,
  380. fax:formuinfo.fax,
  381. remark:formuinfo.remark,
  382. }
  383. }else{
  384. that.$message({
  385. message:res.data.msg,
  386. duration:1000,
  387. type:"error"
  388. });
  389. }
  390. }).catch(function (error) {
  391. that.$message.error('报错请联系信息部!');
  392. });
  393. },
  394. testfun(){
  395. var kvArray = [["key1", "value1"], ["key2", "value2"]];
  396. // Map 构造函数可以将一个 二维 键值对数组转换成一个 Map 对象
  397. var myMap = new Map(kvArray);
  398. console.log(myMap)
  399. // 使用 Array.from 函数可以将一个 Map 对象转换成一个二维键值对数组
  400. var outArray = Array.from(myMap);
  401. console.log(outArray)
  402. var first = new Map([[1, 'one'], [2, 'two'], [3, 'three'],]);
  403. var second = new Map([[1, 'uno'], [2, 'dos']]);
  404. // 合并两个 Map 对象时,如果有重复的键值,则后面的会覆盖前面的,对应值即 uno,dos, three
  405. var merged = new Map([...first, ...second]);
  406. console.log(merged);
  407. let mySet = new Set();
  408. // mySet.add(1); // Set(1) {1}
  409. // mySet.add(5); // Set(2) {1, 5}
  410. // mySet.add(5); // Set(2) {1, 5} 这里体现了值的唯一性
  411. // mySet.add("some text");
  412. // Set(3) {1, 5, "some text"} 这里体现了类型的多样性
  413. var o = {a: 1, b: 2};
  414. mySet.add(o);
  415. // mySet.add({a: 1, b: 2});
  416. console.log(mySet);
  417. },
  418. //新增接口
  419. MediaSupplierOp() {
  420. var url = "/api/Resource/MediaSupplierOp"
  421. var that = this
  422. this.$axios({
  423. method: 'post',
  424. url: url,
  425. headers: {
  426. Authorization: 'Bearer'
  427. },
  428. data: {
  429. portType:1,
  430. id: that.form.id==""?0:that.form.id,
  431. currUserId: that.userId,
  432. typeId: that.form.typeId,
  433. privince: that.form.privince,
  434. city: that.form.city,
  435. unitName: that.form.unitName,
  436. unitAbbreviation: that.form.unitAbbreviation,
  437. unitAddress: that.form.unitAddress,
  438. contact: that.form.contact,
  439. sex: that.form.sex=='男'?0:1,
  440. post: that.form.post,
  441. tel: that.form.tel,
  442. email: that.form.email,
  443. weChat: that.form.weChat,
  444. fax: that.form.fax,
  445. remark: that.form.remark,
  446. }
  447. }).then(function (res) {
  448. if (res.data.code == 200) {
  449. that.$message({
  450. message:res.data.msg,
  451. type:"success"
  452. });
  453. that.supplierinfoVisible=false;
  454. that.MediaSupplierPageItem();
  455. }else{
  456. that.$message({
  457. message:res.data.msg,
  458. duration:1000,
  459. type:"error"
  460. });
  461. }
  462. }).catch(function (error) {
  463. that.$message.error('报错请联系信息部!');
  464. });
  465. },
  466. submitForm(formName) {
  467. this.$refs[formName].validate((valid) => {
  468. if (valid) {
  469. this.MediaSupplierOp();
  470. } else {
  471. console.log('error submit!!');
  472. return false;
  473. }
  474. });
  475. },
  476. resetForm(formName) {
  477. this.$refs[formName].resetFields();
  478. }
  479. },
  480. created(){
  481. this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
  482. this.token = JSON.parse(localStorage.getItem('userinif')).token;
  483. this.MediaSupplierInit();
  484. },
  485. mounted(){
  486. this.testfun();
  487. this.MediaSupplierPageItem();
  488. }
  489. }
  490. </script>
  491. <style>
  492. .supplierinfo-all {
  493. background-color: #fff;
  494. padding: 10px;
  495. box-shadow: 0 0 5px #0005;
  496. border-radius: 10px;
  497. min-height: 830px;
  498. }
  499. .supplierinfo-screen{
  500. display: flex;
  501. justify-content: space-between;
  502. }
  503. .supplierinfo-screen-ul{
  504. display: flex;
  505. }
  506. .supplierinfo-screen-li{
  507. width: 280px;
  508. display: flex;
  509. align-items: center;
  510. }
  511. .supplierinfoscreen-li-title{
  512. width: 80px;
  513. text-align: end;
  514. font-size: 14px;
  515. color: #555;
  516. }
  517. .supplierinfo-screen-li .el-input{
  518. width: 195px;
  519. }
  520. .supplierinfo-screen-li .el-select{
  521. width: 195px;
  522. }
  523. .supplierinfo-table{
  524. margin-top: 15px;
  525. }
  526. .supplierinfo-table .block{
  527. margin-top: 20px;
  528. text-align: center;
  529. }
  530. .supplierinfo-all .el-dialog__title{
  531. font-size: 17px;
  532. font-weight: 600;
  533. }
  534. .supplierinfo-dialog .el-form-item{
  535. width: 300px;
  536. }
  537. .supplierinfo-dialog .el-form{
  538. display: flex;
  539. flex-wrap: wrap;
  540. justify-content: space-between;
  541. }
  542. </style>