materiel.vue 42 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165
  1. <template>
  2. <fullscreen :fullscreen.sync="fullscreen" class="container">
  3. <div class="container-box">
  4. <toolList @iconCli="iconCli" :tooltit="tooltit"></toolList>
  5. <div class="search">
  6. <mySearch
  7. :searchList="searchList"
  8. @searchInfo="searchInfo"
  9. ></mySearch>
  10. <el-button
  11. class="btn-check"
  12. size="medium" type="primary"
  13. @click="exportTempletelist" v-if="userInfo.duty <= 9" >下载导入模板
  14. </el-button>
  15. <el-button
  16. class="btn-check"
  17. size="medium"
  18. type="primary"
  19. @click="dialogCheck(3)" v-if="userInfo.loginNoStr == 'jiangshuai'"
  20. >添加
  21. </el-button>
  22. <myUpload style="display:inline-block;" :fileInfo="fileInfot" v-if="userInfo.loginNoStr == 'jiangshuai'"
  23. :fileList="fileInfot.fileList" @uploadBack='uploadBack'></myUpload>
  24. </div>
  25. <div class="tabbox">
  26. <el-table
  27. height="calc(100% - 40px)"
  28. class="com-table"
  29. ref="multipleTable"
  30. :data="tableData"
  31. tooltip-effect="dark"
  32. size="small"
  33. border
  34. style="width: 100%"
  35. v-loading="loading"
  36. >
  37. <el-table-column prop="sceneName" label="使用场景">
  38. </el-table-column>
  39. <el-table-column prop="proviceFlagName" label="下单模式">
  40. </el-table-column>
  41. <!-- <el-table-column prop="metirialType" label="细分类型">
  42. </el-table-column> -->
  43. <!-- <el-table-column prop="metirialType" label="类别">-->
  44. <!-- </el-table-column>-->
  45. <!-- <el-table-column prop="isAsic" label="基础数据">-->
  46. <!-- </el-table-column>-->
  47. <el-table-column
  48. prop="metirialCode"
  49. label="物料编码"
  50. show-overflow-tooltip
  51. >
  52. </el-table-column>
  53. <el-table-column prop="metirialName" label="物料名称">
  54. </el-table-column>
  55. <!-- <el-table-column prop="supplierCode" label="供应商">-->
  56. <!-- </el-table-column>-->
  57. <!-- <el-table-column prop="size" label="规格尺寸">-->
  58. <!-- </el-table-column>-->
  59. <!-- <el-table-column prop="coefficient" label="勾选后系数">-->
  60. <!-- </el-table-column>-->
  61. <!--<el-table-column prop="quality" label="材质" width="200" show-overflow-tooltip>
  62. </el-table-column> -->
  63. <!-- <el-table-column prop="size" label="规格" show-overflow-tooltip>
  64. </el-table-column> -->
  65. <el-table-column prop="unit" label="物料单位">
  66. </el-table-column>
  67. <el-table-column prop="price" label="不含税单价(元)">
  68. </el-table-column>
  69. <!-- <el-table-column prop="proviceFlagName" label="申请权限">
  70. </el-table-column> -->
  71. <el-table-column label="操作" width="160px" align="center">
  72. <template slot-scope="scope">
  73. <el-button
  74. size="mini"
  75. type="primary"
  76. @click="dialogCheck(1, scope.row)"
  77. >查看</el-button
  78. >
  79. <el-button
  80. size="mini"
  81. type="primary"
  82. @click="dialogCheck(2, scope.row)" v-if="userInfo.loginNoStr == 'jiangshuai'"
  83. >修改</el-button
  84. >
  85. <!-- v-if="userInfo.loginNo=='jiangshuai'" -->
  86. <el-button
  87. size="mini"
  88. type="danger"
  89. @click="delLine(scope.row)" v-if="userInfo.loginNoStr == 'jiangshuai'"
  90. >删除</el-button
  91. >
  92. </template>
  93. </el-table-column>
  94. </el-table>
  95. <el-pagination
  96. class="pageBox"
  97. @current-change="currchange"
  98. layout="prev, pager, next"
  99. background
  100. :total="total"
  101. >
  102. </el-pagination>
  103. </div>
  104. </div>
  105. <el-dialog
  106. :title="titname + '物料类型'"
  107. :visible.sync="dialogStatus"
  108. width="50%"
  109. :destroy-on-close="true"
  110. :modal-append-to-body="false"
  111. :close-on-click-modal="false"
  112. :before-close="closedia"
  113. >
  114. <div v-loading="loadinged">
  115. <el-form
  116. :model="infolist"
  117. ref="infolist"
  118. :rules="rules"
  119. style="height: 50vh;overflow-y: scroll;"
  120. >
  121. <div class="info-line">
  122. <el-form-item prop="sceneName">
  123. <span>使用场景</span>
  124. <el-select
  125. :disabled="disableStatus"
  126. :popper-append-to-body="false"
  127. multiple
  128. v-model="infolist.sceneName"
  129. placeholder="使用场景"
  130. @change="usePlance"
  131. >
  132. <el-option
  133. v-for="item in sceneopt"
  134. :key="item.dataName"
  135. :label="item.dataName"
  136. :value="item.dataName"
  137. >
  138. </el-option>
  139. </el-select>
  140. </el-form-item>
  141. <el-form-item prop="proviceFlag">
  142. <span>下单模式</span>
  143. <el-select
  144. :disabled="disableStatus"
  145. :popper-append-to-body="false"
  146. v-model="infolist.proviceFlag"
  147. placeholder="下单模式"
  148. >
  149. <el-option
  150. v-for="item in proviceopt"
  151. :key="item.id"
  152. :label="item.name"
  153. :value="item.id"
  154. >
  155. </el-option>
  156. </el-select>
  157. </el-form-item>
  158. <!-- <el-form-item prop="metirialType">-->
  159. <!-- <span>物料类别</span>-->
  160. <!-- <el-select-->
  161. <!-- :disabled="disableStatus"-->
  162. <!-- :popper-append-to-body="false"-->
  163. <!-- v-model="infolist.metirialType"-->
  164. <!-- placeholder="物料类别"-->
  165. <!-- >-->
  166. <!-- <el-option-->
  167. <!-- v-for="(item, index) in metirialTypeopt"-->
  168. <!-- :key="index"-->
  169. <!-- :label="item.dataName"-->
  170. <!-- :value="item.dataName"-->
  171. <!-- >-->
  172. <!-- </el-option>-->
  173. <!-- </el-select>-->
  174. <!-- </el-form-item>-->
  175. <!-- <el-form-item prop="isAsic">-->
  176. <!-- <span>基础数据</span>-->
  177. <!-- <el-select-->
  178. <!-- :disabled="disableStatus"-->
  179. <!-- :popper-append-to-body="false"-->
  180. <!-- v-model="infolist.isAsic"-->
  181. <!-- placeholder="基础数据"-->
  182. <!-- >-->
  183. <!-- <el-option-->
  184. <!-- v-for="item in isAsicopt"-->
  185. <!-- :key="item.id"-->
  186. <!-- :label="item.name"-->
  187. <!-- :value="item.name"-->
  188. <!-- >-->
  189. <!-- </el-option>-->
  190. <!-- </el-select>-->
  191. <!-- </el-form-item>-->
  192. <!-- <el-form-item prop="metirialType">
  193. <span>细分类型</span>
  194. <el-input v-model="infolist.metirialType" placeholder="细分类型" :disabled="disableStatus">
  195. </el-input>
  196. </el-form-item> -->
  197. <el-form-item prop="metirialCode">
  198. <span>物料编码</span>
  199. <el-input
  200. v-model="infolist.metirialCode"
  201. placeholder="物料编码"
  202. :disabled="metirialCodeDisableStatus"
  203. >
  204. </el-input>
  205. </el-form-item>
  206. <el-form-item prop="metirialName">
  207. <span>物料名称</span>
  208. <!-- <el-select :disabled="disableStatus" :popper-append-to-body="false"
  209. v-model="infolist.metirialName" placeholder="物料名称">
  210. <el-option v-for="item in nameopt" :key="item.dataCode" :label="item.dataName"
  211. :value="item.dataName">
  212. </el-option>
  213. </el-select> -->
  214. <el-input
  215. v-model="infolist.metirialName"
  216. placeholder="物料名称"
  217. :disabled="disableStatus"
  218. >
  219. </el-input>
  220. </el-form-item>
  221. <!-- <el-form-item prop="supplierCode">-->
  222. <!-- <span>供应商</span>-->
  223. <!-- <el-select-->
  224. <!-- :disabled="disableStatus"-->
  225. <!-- :popper-append-to-body="false"-->
  226. <!-- v-model="infolist.supplierCode"-->
  227. <!-- placeholder="供应商"-->
  228. <!-- @change="verifall"-->
  229. <!-- >-->
  230. <!-- <el-option-->
  231. <!-- v-for="item in suppOpt"-->
  232. <!-- :key="item.code"-->
  233. <!-- :label="item.name"-->
  234. <!-- :value="item.code"-->
  235. <!-- >-->
  236. <!-- </el-option>-->
  237. <!-- </el-select>-->
  238. <!-- </el-form-item>-->
  239. <!-- <el-form-item prop="size">-->
  240. <!-- <span>规格尺寸</span>-->
  241. <!-- <el-input-->
  242. <!-- v-model="infolist.size"-->
  243. <!-- placeholder="规格尺寸"-->
  244. <!-- :disabled="disableStatus"-->
  245. <!-- ></el-input>-->
  246. <!-- </el-form-item>-->
  247. <!-- <el-form-item prop="coefficient">-->
  248. <!-- <span>勾选后系数</span>-->
  249. <!-- <el-select-->
  250. <!-- :disabled="disableStatus"-->
  251. <!-- :popper-append-to-body="false"-->
  252. <!-- v-model="infolist.coefficient"-->
  253. <!-- placeholder="勾选后系数"-->
  254. <!-- >-->
  255. <!-- <el-option-->
  256. <!-- v-for="item in coefficientopt"-->
  257. <!-- :key="item.id"-->
  258. <!-- :label="item.name"-->
  259. <!-- :value="item.id"-->
  260. <!-- >-->
  261. <!-- </el-option>-->
  262. <!-- </el-select>-->
  263. <!-- </el-form-item>-->
  264. <el-form-item prop="unit">
  265. <span>物料单位</span>
  266. <!-- <el-input v-model="infolist.unit" placeholder="单位" :disabled="disableStatus"></el-input> -->
  267. <el-select
  268. :disabled="disableStatus"
  269. :popper-append-to-body="false"
  270. v-model="infolist.unit"
  271. placeholder="物料单位"
  272. >
  273. <el-option
  274. v-for="item in unitopt"
  275. :key="item.id"
  276. :label="item.name"
  277. :value="item.name"
  278. >
  279. </el-option>
  280. </el-select>
  281. </el-form-item>
  282. <el-form-item prop="price">
  283. <span>不含税单价(元)</span>
  284. <el-input
  285. type="number"
  286. v-model="infolist.price"
  287. placeholder="不含税单价(元)"
  288. :disabled="disableStatus"
  289. ></el-input>
  290. </el-form-item>
  291. <!-- <el-form-item>
  292. <span>税率</span>
  293. <el-input v-model="infolist.tax" placeholder="税率" :disabled="disableStatus"></el-input>
  294. </el-form-item> -->
  295. <!-- <el-form-item>
  296. <span>安装</span>
  297. <el-input v-model="infolist.install" placeholder="是否需要安装" :disabled="disableStatus"></el-input>
  298. </el-form-item> -->
  299. </div>
  300. <!-- <el-form-item class="info-line online" prop="quality">
  301. <span>物料材质</span>
  302. <el-input v-model="infolist.quality" placeholder="物料材质" :disabled="disableStatus"
  303. type="textarea" :rows="4"></el-input>
  304. </el-form-item> -->
  305. </el-form>
  306. <div slot="footer" class="dialog-footer myfooter">
  307. <el-button
  308. type="primary"
  309. @click="dialogCli(2)"
  310. v-if="titname !== '查看'"
  311. >确 定</el-button
  312. >
  313. <el-button @click="dialogCli(1)" v-if="titname === '查看'"
  314. >确 定</el-button
  315. >
  316. <el-button @click="dialogCli(1)">取 消</el-button>
  317. </div>
  318. </div>
  319. </el-dialog>
  320. <myMessage
  321. :messTit="messTit"
  322. @closeMessage="closeMessage"
  323. :centerDialogVisible="centerDialogVisible"
  324. v-if="centerDialogVisible"
  325. ></myMessage>
  326. </fullscreen>
  327. </template>
  328. <script>
  329. import mySearch from "../../../components/search.vue";
  330. import myMessage from "../../../components/myMessage.vue";
  331. import toolList from "../../../components/toolList";
  332. import myUpload from "../../../components/upload.vue";
  333. export default {
  334. components: {
  335. mySearch,
  336. myMessage,
  337. toolList,
  338. myUpload
  339. },
  340. data() {
  341. const sceneName = (rule, value, callback) => {
  342. if (!this.infolist.sceneName) {
  343. callback(new Error("不能为空"));
  344. } else {
  345. callback();
  346. }
  347. };
  348. const metirialName = (rule, value, callback) => {
  349. if (!this.infolist.metirialName) {
  350. callback(new Error("不能为空"));
  351. } else {
  352. callback();
  353. }
  354. };
  355. const metirialType = (rule, value, callback) => {
  356. if (!this.infolist.metirialType) {
  357. callback(new Error("不能为空"));
  358. } else {
  359. callback();
  360. }
  361. };
  362. const isAsic = (rule, value, callback) => {
  363. if (!this.infolist.isAsic) {
  364. callback(new Error("不能为空"));
  365. } else {
  366. callback();
  367. }
  368. };
  369. const metirialCode = (rule, value, callback) => {
  370. if (!this.infolist.metirialCode) {
  371. callback(new Error("不能为空"));
  372. } else {
  373. callback();
  374. }
  375. };
  376. const proviceFlag = (rule, value, callback) => {
  377. if (!this.infolist.proviceFlag) {
  378. callback(new Error("不能为空"));
  379. } else {
  380. callback();
  381. }
  382. };
  383. const proviceFlagName = (rule, value, callback) => {
  384. if (!this.infolist.proviceFlagName) {
  385. callback(new Error("不能为空"));
  386. } else {
  387. callback();
  388. }
  389. };
  390. const supplierCode = (rule, value, callback) => {
  391. if (!this.infolist.supplierCode) {
  392. callback(new Error("不能为空"));
  393. } else {
  394. callback();
  395. }
  396. };
  397. const size = (rule, value, callback) => {
  398. if (!this.infolist.size) {
  399. callback(new Error("不能为空"));
  400. } else {
  401. callback();
  402. }
  403. };
  404. const coefficient = (rule, value, callback) => {
  405. if (!this.infolist.coefficient) {
  406. callback(new Error("不能为空"));
  407. } else {
  408. callback();
  409. }
  410. };
  411. const unit = (rule, value, callback) => {
  412. if (!this.infolist.unit) {
  413. callback(new Error("不能为空"));
  414. } else {
  415. callback();
  416. }
  417. };
  418. const price = (rule, value, callback) => {
  419. if (!this.infolist.price) {
  420. callback(new Error("不能为空"));
  421. } else if (parseFloat(this.infolist.price) > 999999.99) {
  422. callback(new Error("数量过大"));
  423. } else {
  424. callback();
  425. }
  426. };
  427. const quality = (rule, value, callback) => {
  428. if (!this.infolist.quality) {
  429. callback(new Error("不能为空"));
  430. } else {
  431. callback();
  432. }
  433. };
  434. return {
  435. rules: {
  436. sceneName: [
  437. {
  438. required: true,
  439. trigger: "change",
  440. validator: sceneName
  441. }
  442. ],
  443. metirialName: [
  444. {
  445. required: true,
  446. trigger: "change",
  447. validator: metirialName
  448. }
  449. ],
  450. metirialType: [
  451. {
  452. required: true,
  453. trigger: "blur",
  454. validator: metirialType
  455. }
  456. ],
  457. isAsic: [
  458. {
  459. required: true,
  460. trigger: "blur",
  461. validator: isAsic
  462. }
  463. ],
  464. metirialCode: [
  465. {
  466. required: true,
  467. trigger: "blur",
  468. validator: metirialCode
  469. }
  470. ],
  471. proviceFlag: [
  472. {
  473. required: true,
  474. trigger: "change",
  475. validator: proviceFlag
  476. }
  477. ],
  478. proviceFlagName: [
  479. {
  480. required: true,
  481. trigger: "change",
  482. validator: proviceFlagName
  483. }
  484. ],
  485. supplierCode: [
  486. {
  487. required: true,
  488. trigger: "change",
  489. validator: supplierCode
  490. }
  491. ],
  492. size: [
  493. {
  494. required: true,
  495. trigger: "blur",
  496. validator: size
  497. }
  498. ],
  499. coefficient: [
  500. {
  501. required: true,
  502. trigger: "blur",
  503. validator: coefficient
  504. }
  505. ],
  506. unit: [
  507. {
  508. required: true,
  509. trigger: "blur",
  510. validator: unit
  511. }
  512. ],
  513. price: [
  514. {
  515. required: true,
  516. trigger: "change",
  517. validator: price
  518. }
  519. ],
  520. quality: [
  521. {
  522. required: true,
  523. trigger: "change",
  524. validator: quality
  525. }
  526. ]
  527. },
  528. searchList: [
  529. {
  530. type: "sel",
  531. tit: "使用场景",
  532. value: "",
  533. width: "31%",
  534. options: [
  535. {
  536. dataCode: "营业厅-VI改造-自有渠道",
  537. dataName: "营业厅-VI改造-自有渠道"
  538. },
  539. {
  540. dataCode: "营业厅-常规物料-自有渠道",
  541. dataName: "营业厅-常规物料-自有渠道"
  542. },
  543. {
  544. dataCode: "营业厅-VI改造-合作渠道",
  545. dataName: "营业厅-VI改造-合作渠道"
  546. },
  547. {
  548. dataCode: "营业厅-常规物料-合作渠道",
  549. dataName: "营业厅-常规物料-合作渠道"
  550. },
  551. {
  552. dataCode: "小区",
  553. dataName: "小区"
  554. },
  555. {
  556. dataCode: "校园",
  557. dataName: "校园"
  558. },
  559. {
  560. dataCode: "政企",
  561. dataName: "政企"
  562. }
  563. ]
  564. },
  565. {
  566. type: "sel",
  567. tit: "下单模式",
  568. value: "",
  569. width: "31%",
  570. options: [
  571. {
  572. dataCode: "省公司",
  573. dataName: "省公司"
  574. },
  575. {
  576. dataCode: "地市",
  577. dataName: "地市"
  578. },
  579. {
  580. dataCode: "省+地市",
  581. dataName: "省+地市"
  582. },
  583. {
  584. dataCode: "省+市",
  585. dataName: "省+市"
  586. }
  587. ]
  588. },
  589. { type: "input", tit: "物料名称", value: "", width: "31%" },
  590. { type: "input", tit: "物料编码", value: "", width: "31%" }
  591. ],
  592. fileInfot: {
  593. type: 'btn',
  594. typename: '导入',
  595. btntype: 'primary',
  596. limit: 1,
  597. url: '/market/cadvSecbuyMetirial/import',
  598. fileList: [],
  599. woNo: "",
  600. },
  601. tooltit: "宣传物料及印刷品类型建档",
  602. fullscreen: false,
  603. total: 0,
  604. pageSize: 1,
  605. tableData: [],
  606. dialogStatus: false,
  607. disableStatus: false,//是否禁用弹窗
  608. titname: "",
  609. infolist: {},
  610. userInfo: {},
  611. params: {},
  612. centerDialogVisible: false,
  613. messTit: "",
  614. delid: "",
  615. loading: false,
  616. loadinged: false,
  617. //下单模式
  618. proviceopt: [
  619. {
  620. id: "0",
  621. name: "省公司"
  622. },
  623. {
  624. id: "1",
  625. name: "地市"
  626. },
  627. {
  628. id: "2",
  629. name: "省+地市"
  630. },{
  631. id: "",
  632. name: "省+市"
  633. }
  634. ],
  635. //使用场景
  636. sceneopt: [
  637. {
  638. dataCode: "1",
  639. dataName: "小区"
  640. },
  641. {
  642. dataCode: "2",
  643. dataName: "校园"
  644. },
  645. {
  646. dataCode: "3",
  647. dataName: "营业厅-VI改造-自有渠道"
  648. },
  649. {
  650. dataCode: "4",
  651. dataName: "营业厅-常规物料-自有渠道"
  652. },
  653. {
  654. dataCode: "5",
  655. dataName:'营业厅-VI改造-合作渠道'
  656. },
  657. {
  658. dataCode: "6",
  659. dataName: '营业厅-常规物料-合作渠道'
  660. },
  661. {
  662. dataCode: "7",
  663. dataName: "政企"
  664. }
  665. ],
  666. // 基础数据
  667. isAsicopt: [
  668. {
  669. id: "0",
  670. name: "是"
  671. },
  672. {
  673. id: "1",
  674. name: "否"
  675. }
  676. ],
  677. coefficientopt: [
  678. {
  679. id: "0",
  680. name: "按需录入"
  681. },
  682. {
  683. id: "1",
  684. name: "1"
  685. }
  686. ],
  687. //单位
  688. unitopt: [
  689. {
  690. id: "0",
  691. name: "平方米"
  692. },
  693. {
  694. id: "1",
  695. name: "个"
  696. },
  697. {
  698. id: "2",
  699. name: "延长米"
  700. },
  701. {
  702. id: "3",
  703. name: "套"
  704. },
  705. {
  706. id: "4",
  707. name: "组"
  708. },{
  709. id: "5",
  710. name: "延米"
  711. },{
  712. id:'6',
  713. name:'张'
  714. }
  715. ],
  716. //物料名称
  717. nameopt: [],
  718. //供应商
  719. suppOpt: [],
  720. usePlanceArr: [],
  721. metirialTypeopt: [],
  722. metirialCodeDisableStatus: false,//物料编码是否禁用
  723. // scene:[]
  724. };
  725. },
  726. methods: {
  727. //处理所需数据
  728. verifall(v) {
  729. // for (let j = 0; j < this.suppOpt.length; j++) {
  730. // if (this.suppOpt[j].code == v) {
  731. // this.infolist.supplierName = this.suppOpt[j].name;
  732. // }
  733. // }
  734. },
  735. exportTempletelist() {
  736. let data = this.params;
  737. console.log(data);
  738. // return
  739. this.$http({
  740. url: "/market/cadvSecbuyMetirial/excelExportTemplete",
  741. method: "post",
  742. headers: {
  743. "Content-Type": "application/json",
  744. },
  745. responseType: "blob",
  746. data: data,
  747. }).then((response) => {
  748. if (window.navigator && window.navigator.msSaveOrOpenBlob) {
  749. let blob = new Blob([response.data], {
  750. type: 'application/vnd.ms-excel'
  751. })
  752. window.navigator.msSaveOrOpenBlob(blob,
  753. new Date().getTime() + '.xlsx')
  754. } else {
  755. /* 火狐谷歌的文件下载方式 */
  756. var blob = new Blob([response.data])
  757. var downloadElement = document.createElement('a')
  758. var href = window.URL.createObjectURL(blob)
  759. downloadElement.href = href
  760. downloadElement.download = new Date().getTime() + '.xlsx'
  761. document.body.appendChild(downloadElement)
  762. downloadElement.click()
  763. document.body.removeChild(downloadElement)
  764. window.URL.revokeObjectURL(href)
  765. }
  766. });
  767. },
  768. usePlance(v) {
  769. this.usePlanceArr = v;
  770. // let value = ''
  771. // if(v == '1'){
  772. // value = 'house';
  773. // }else if(v == '2'){
  774. // value = 'school';
  775. // }else if(v == '3'){
  776. // value = 'serviceHall';
  777. // }
  778. // this.$http({
  779. // url: "/market/cfgDataDict/queryList",
  780. // method: "post",
  781. // headers: {
  782. // "Content-Type": "application/json",
  783. // },
  784. // data: {
  785. // dictCode: value
  786. // },
  787. // }).then((res) => {
  788. // this.nameopt = res.data;
  789. // });
  790. },
  791. closedia() {
  792. this.infolist = {};
  793. this.dialogStatus = false;
  794. },
  795. //搜索数据
  796. searchInfo(v) {
  797. this.params = {};
  798. v[0] ? (this.params.sceneName = v[0]) : "";
  799. v[1] ? (this.params.proviceFlagName = v[1]) : "";
  800. v[2] ? (this.params.metirialName = v[2]) : "";
  801. v[3] ?(this.params.metirialCode = v[3]) :"";
  802. this.getList(this.params, this.pageSize);
  803. },
  804. uploadBack(v) {
  805. let that = this;
  806. console.log(v);
  807. console.log(v.data.desc);
  808. if(v.data.desc != "导入成功"){
  809. let timer = setTimeout(() => {
  810. this.$message.error("物料编码已存在,请更改物料编码");
  811. },800)
  812. }
  813. if(v.data.result==0){
  814. that.getList({}, 1);
  815. that.getUser();
  816. that.getMetirialType();
  817. that.getMetirialInfo();
  818. }
  819. },
  820. getMetirialInfo() {
  821. this.$http({
  822. url: "/market/cadvSecbuyMetirial/queryList",
  823. method: "post",
  824. headers: {
  825. "Content-Type": "application/json"
  826. },
  827. data: {
  828. dictCodePks: "metirialType"
  829. }
  830. }).then(res => {
  831. this.materialNameopt = res.data;
  832. });
  833. },
  834. getMetirialType() {
  835. this.$http({
  836. url: "/sysmgr/cfgDataDicts/queryMap",
  837. method: "post",
  838. headers: {
  839. "Content-Type": "application/json"
  840. },
  841. data: {
  842. dictCodePks: "metirialType"
  843. }
  844. }).then(res => {
  845. this.metirialTypeopt = res.data.body.metirialType;
  846. });
  847. },
  848. //获取列表
  849. getList(v, n) {
  850. this.pageSize = n;
  851. let _this = this;
  852. this.loading = true;
  853. this.tableData = [];
  854. this.$http({
  855. url: "/market/cadvSecbuyMetirial/queryPage",
  856. method: "post",
  857. headers: {
  858. "Content-Type": "application/json",
  859. page: '{"pageNo":"' + n + '","pageSize":"10"}'
  860. },
  861. data: v
  862. }).then(res => {
  863. res.data.data.forEach(item => {
  864. for (let i = 0; i < this.sceneopt.length; i++) {
  865. if (this.sceneopt[i].dataCode == item.sceneName) {
  866. item.sceneName = this.sceneopt[i].dataName;
  867. }
  868. }
  869. });
  870. this.tableData = res.data.data;
  871. this.total = res.data.totalRecord;
  872. this.loading = false;
  873. });
  874. },
  875. // 分页
  876. currchange(v) {
  877. this.pageSize = v;
  878. this.getList(this.params, this.pageSize);
  879. },
  880. //申请
  881. dialogCheck(v, n) {
  882. this.dialogStatus = true;
  883. this.infolist = Object.assign({}, n);
  884. if (v === 1) {
  885. this.titname = "查看";
  886. this.disableStatus = true;
  887. this.metirialCodeDisableStatus = true;
  888. this.infolist.sceneName = this.infolist.sceneName.split("/");
  889. return;
  890. } else if (v === 2) {
  891. this.titname = "修改";
  892. this.disableStatus = false;
  893. this.metirialCodeDisableStatus = true;
  894. this.infolist.sceneName = this.infolist.sceneName.split("/");
  895. // this.usePlance(n.scene);
  896. } else if (v === 3) {
  897. this.titname = "添加";
  898. this.disableStatus = false;
  899. }
  900. this.infolist.opNo = this.userInfo.loginNo;
  901. this.infolist.opName = this.userInfo.loginName;
  902. },
  903. //添加
  904. dialogCli(v) {
  905. if (v === 1) {
  906. this.infolist = {};
  907. this.dialogStatus = false;
  908. return;
  909. } else {
  910. this.infolist.opTime = this.$formatDate(
  911. new Date(),
  912. "YYYY-MM-DD"
  913. );
  914. this.infolist.sts = "0";
  915. this.infolist.stsDesc = "在用";
  916. // this.infolist.proviceFlagName = this.infolist.proviceFlag
  917. // this.infolist.proviceFlagName = this.infolist.proviceFlag == "0"?'省公司':'地市公司';
  918. if (this.infolist.proviceFlag == 0) {
  919. this.infolist.proviceFlagName = "省公司";
  920. } else if (this.infolist.proviceFlag == 1) {
  921. this.infolist.proviceFlagName = "地市公司";
  922. } else if (this.infolist.proviceFlag == 2) {
  923. this.infolist.proviceFlagName = "省+地市";
  924. }
  925. if (this.titname === "添加") {
  926. this.submitInfo("/market/cadvSecbuyMetirial/add");
  927. } else if (this.titname === "修改") {
  928. this.submitInfo("/market/cadvSecbuyMetirial/update", v);
  929. }
  930. }
  931. },
  932. submitInfo(u) {
  933. this.infolist.price = parseFloat(this.infolist.price).toFixed(2);
  934. let _this = this;
  935. this.$refs.infolist.validate(valid => {
  936. if (valid) {
  937. this.loadinged = true;
  938. let scene = "";
  939. this.infolist.sceneName.forEach((item, index) => {
  940. scene += item;
  941. if (index != this.infolist.sceneName.length - 1) {
  942. scene += "/";
  943. }
  944. });
  945. this.infolist.sceneName = scene;
  946. this.$http({
  947. url: u,
  948. method: "post",
  949. headers: {
  950. "Content-Type": "application/json"
  951. },
  952. data: this.infolist
  953. }).then(res => {
  954. this.loadinged = false;
  955. if (res.data.result === 1) {
  956. this.infolist.sceneName = this.infolist.sceneName.split(
  957. "/"
  958. );
  959. _this.$message({
  960. message: res.data.desc,
  961. type: "error"
  962. });
  963. } else if (res.data.result === -1) {
  964. this.infolist.sceneName = this.infolist.sceneName.split(
  965. "/"
  966. );
  967. _this.$message({
  968. message: res.data.desc,
  969. type: "fail"
  970. });
  971. } else {
  972. _this.$message({
  973. message: "成功",
  974. type: "success"
  975. });
  976. _this.infolist = {};
  977. _this.dialogStatus = false;
  978. _this.getList({}, _this.pageSize);
  979. }
  980. });
  981. }
  982. });
  983. },
  984. closeMessage(v) {
  985. this.centerDialogVisible = false;
  986. let _this = this;
  987. if (v === 1) {
  988. _this
  989. .$http({
  990. url: "/market/cadvSecbuyMetirial/del",
  991. method: "post",
  992. headers: {
  993. "Content-Type": "application/json"
  994. },
  995. data: {
  996. id: this.delid
  997. }
  998. })
  999. .then(res => {
  1000. if (res.data.result === 1) {
  1001. _this.$message({
  1002. message: res.data.desc,
  1003. type: "error"
  1004. });
  1005. } else if (res.data.result === -1) {
  1006. _this.$message({
  1007. message: res.data.desc,
  1008. type: "fail"
  1009. });
  1010. } else {
  1011. _this.$message({
  1012. message: "删除成功",
  1013. type: "success"
  1014. });
  1015. _this.getList(this.params, this.pageSize);
  1016. }
  1017. });
  1018. }
  1019. },
  1020. //删除
  1021. delLine(v) {
  1022. this.centerDialogVisible = true;
  1023. this.messTit = "即将删除此条数据, 是否删除?";
  1024. this.delid = v.id;
  1025. },
  1026. //文件返回值
  1027. //功能栏
  1028. iconCli(v) {
  1029. if (v === 1) {
  1030. this.getList(this.params, this.pageSize);
  1031. }
  1032. if (v === 2) {
  1033. this.fullscreen = !this.fullscreen;
  1034. }
  1035. },
  1036. getUser() {
  1037. this.userInfo = JSON.parse(window.sessionStorage.userInfo);
  1038. this.$http({
  1039. url: "/market/cadvSupplier/queryValidSupplierList",
  1040. method: "post",
  1041. headers: {
  1042. "Content-Type": "application/json"
  1043. },
  1044. // data: { buyTypeCode: "2" }
  1045. data: {}
  1046. }).then(res => {
  1047. this.suppOpt = res.data;
  1048. });
  1049. }
  1050. },
  1051. mounted() {
  1052. this.getList({}, 1);
  1053. this.getUser();
  1054. this.$http({
  1055. url: "/sysmgr/cfgDataDicts/queryMap",
  1056. method: "post",
  1057. headers: {
  1058. "Content-Type": "application/json"
  1059. },
  1060. data: {
  1061. dictCodePks: "metirialType"
  1062. }
  1063. }).then(res => {
  1064. this.metirialTypeopt = res.data.body.metirialType;
  1065. // this.stypeList = res.data.body.materType;
  1066. });
  1067. },
  1068. created() {}
  1069. };
  1070. </script>
  1071. <style scoped lang="scss">
  1072. .onetab {
  1073. margin-bottom: 20px;
  1074. padding: 0 20px;
  1075. }
  1076. .titbox {
  1077. div {
  1078. float: right;
  1079. i {
  1080. font-size: 22px;
  1081. margin-left: 20px;
  1082. cursor: pointer;
  1083. }
  1084. }
  1085. }
  1086. .tabbox {
  1087. margin-top: 15px;
  1088. }
  1089. .pageBox {
  1090. text-align: right;
  1091. margin-top: 10px;
  1092. }
  1093. .info-line {
  1094. width: 100%;
  1095. display: block;
  1096. padding-left: 20px;
  1097. div {
  1098. width: 50%;
  1099. display: inline-block;
  1100. }
  1101. span {
  1102. width: 80px;
  1103. display: inline-block;
  1104. text-align: left;
  1105. i {
  1106. color: red;
  1107. display: inline-block;
  1108. padding-right: 5px;
  1109. }
  1110. }
  1111. .el-select,
  1112. .el-input {
  1113. width: calc(100% - 100px);
  1114. }
  1115. }
  1116. .online {
  1117. width: 100%;
  1118. .el-select {
  1119. width: calc(100% - 100px);
  1120. }
  1121. span {
  1122. vertical-align: top;
  1123. }
  1124. .el-textarea {
  1125. width: calc(100% - 100px);
  1126. }
  1127. }
  1128. </style>