index.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453
  1. <template>
  2. <div id="deliveryAddressList">
  3. <div v-if="isList">
  4. <el-form class="search_area" label-width="120px">
  5. <el-row :gutter="10">
  6. <el-col :span="1.5">
  7. <el-form-item label="仓库属性">
  8. <el-select clearable v-model="queryParams.warehouseProperty" size="mini" style="width: 200px">
  9. <el-option v-for="dict in dict.type.sys_warehouse_attribute" :key="dict.value" :label="dict.label" :value="dict.value">
  10. </el-option>
  11. </el-select>
  12. </el-form-item>
  13. </el-col>
  14. <el-col :span="1.5">
  15. <el-form-item label="仓库档案名称">
  16. <el-select clearable size="mini" v-model="queryParams.warehouseName" @focus="chooseRefer('WAREHOUSE_PARAM', true, '仓库档案名称')" style="width: 200px">
  17. <el-option v-for="item in houseOptions" :key="item.id" :label="item.name" :value="item.name" />
  18. </el-select>
  19. </el-form-item>
  20. </el-col>
  21. <el-col :span="1.5">
  22. <el-form-item label="收货仓库编码">
  23. <el-input
  24. v-model="queryParams.code"
  25. size="mini"
  26. clearable
  27. style="width: 200px"
  28. />
  29. </el-form-item>
  30. </el-col>
  31. <el-col :span="1.5">
  32. <el-form-item label="收货仓库名称">
  33. <el-input
  34. v-model="queryParams.name"
  35. size="mini"
  36. clearable
  37. style="width: 200px"
  38. />
  39. </el-form-item>
  40. </el-col>
  41. <el-col :span="1.5">
  42. <el-form-item label="" label-width="20px">
  43. <el-button type="primary" size="mini" icon="el-icon-search" plain @click="searchList">搜索</el-button>
  44. <el-button size="mini" icon="el-icon-refresh" plain @click="resetList">重置</el-button>
  45. </el-form-item>
  46. </el-col>
  47. </el-row>
  48. <CollapseTransition>
  49. <div v-show="expanded">
  50. <el-row :gutter="10">
  51. <el-col :span="1.5">
  52. <el-form-item label="物料分类">
  53. <el-select
  54. v-model="queryParams.materialClassifyName"
  55. size="mini"
  56. clearable
  57. @focus="chooseTreeRefer('MATERIALCLASSIFY_PARAM', false, '物料分类')"
  58. style="width: 200px"
  59. >
  60. <el-option v-for="item in classOptions" :key="item.id" :label="item.name" :value="item.name" />
  61. </el-select>
  62. </el-form-item>
  63. </el-col>
  64. <el-col :span="1.5">
  65. <el-form-item label="详细地址">
  66. <el-input
  67. v-model="queryParams.address"
  68. size="mini"
  69. placeholder=""
  70. clearable
  71. style="width: 200px"
  72. />
  73. </el-form-item>
  74. </el-col>
  75. <el-col :span="1.5">
  76. <el-form-item label="联系人">
  77. <el-select clearable size="mini" v-model="queryParams.contactsName" clearable @focus="chooseRefer('CONTACTS_PARAM', true, '联系人')" style="width: 200px">
  78. <el-option v-for="item in contactsOptions" :key="item.id" :label="item.name" :value="item.name" />
  79. </el-select>
  80. </el-form-item>
  81. </el-col>
  82. <el-col :span="1.5">
  83. <el-form-item label="联系人电话">
  84. <el-input
  85. v-model="queryParams.contactsPhone"
  86. size="mini"
  87. clearable
  88. style="width: 200px"
  89. />
  90. </el-form-item>
  91. </el-col>
  92. </el-row>
  93. <el-row :gutter="10">
  94. <el-col :span="1.5">
  95. <el-form-item label="备注">
  96. <el-input
  97. v-model="queryParams.remark"
  98. size="mini"
  99. clearable
  100. style="width: 200px"
  101. />
  102. </el-form-item>
  103. </el-col>
  104. <el-col :span="1.5">
  105. <el-form-item label="同步状态">
  106. <el-select v-model="queryParams.sendStatus" size="mini" style="width: 200px" clearable>
  107. <el-option
  108. v-for="item in options2"
  109. :key="item.value"
  110. :label="item.label"
  111. :value="item.value">
  112. </el-option>
  113. </el-select>
  114. </el-form-item>
  115. </el-col>
  116. <el-col :span="1.5">
  117. <el-form-item label="启用">
  118. <el-select v-model="queryParams.status" size="mini" style="width: 200px" clearable>
  119. <el-option
  120. v-for="item in options"
  121. :key="item.value"
  122. :label="item.label"
  123. :value="item.value">
  124. </el-option>
  125. </el-select>
  126. </el-form-item>
  127. </el-col>
  128. </el-row>
  129. </div>
  130. </CollapseTransition>
  131. </el-form>
  132. <el-divider class="lines"><i style="cursor: pointer;" :class="expanded?'el-icon-arrow-up':'el-icon-arrow-down'" @click="drop"></i></el-divider>
  133. <el-card>
  134. <div class="btn_grooup">
  135. <el-button type="primary" size="mini" @click="addAddress">新增</el-button>
  136. <el-dropdown size="mini" @command="handleCommand">
  137. <el-button size="mini" type="primary" style="margin-left: 10px;">
  138. 导入<i class="el-icon-arrow-down el-icon--right"></i>
  139. </el-button>
  140. <el-dropdown-menu slot="dropdown">
  141. <el-dropdown-item command="数据导入">数据导入</el-dropdown-item>
  142. <el-dropdown-item command="模板下载">模板下载</el-dropdown-item>
  143. </el-dropdown-menu>
  144. </el-dropdown>
  145. <el-dropdown size="mini" @command="handleCommand">
  146. <el-button size="mini" type="primary" style="margin: 0 10px;">
  147. 导出<i class="el-icon-arrow-down el-icon--right"></i>
  148. </el-button>
  149. <el-dropdown-menu slot="dropdown">
  150. <el-dropdown-item command="Excel导出">Excel导出</el-dropdown-item>
  151. <el-dropdown-item command="导出明细">导出明细</el-dropdown-item>
  152. </el-dropdown-menu>
  153. </el-dropdown>
  154. <el-button type="primary" size="mini">启用</el-button>
  155. <el-button type="primary" size="mini">停用</el-button>
  156. <el-button type="primary" size="mini" @click="toNC">同步NC</el-button>
  157. <el-button type="primary" size="mini">删除</el-button>
  158. </div>
  159. <el-table
  160. :data="tableList"
  161. fit
  162. max-height="480"
  163. style="font-size: 12px;"
  164. @selection-change="handleSelectionChange"
  165. >
  166. <el-table-column show-overflow-tooltip type="selection" width="55" />
  167. <el-table-column show-overflow-tooltip label="仓库属性" align="center" prop="warehouseProperty"/>
  168. <el-table-column show-overflow-tooltip label="仓库档案名称" align="center" width="200" prop="warehouseName"/>
  169. <el-table-column show-overflow-tooltip label="收货仓库编码" align="center" prop="code" width="150"/>
  170. <el-table-column show-overflow-tooltip label="收货仓库名称" align="center" width="150" prop="name"/>
  171. <el-table-column show-overflow-tooltip label="详细地址" align="center" width="150" prop="address"/>
  172. <el-table-column show-overflow-tooltip label="物料分类" align="center" width="150" prop="materialClassifyName" />
  173. <el-table-column show-overflow-tooltip label="联系人" align="center" width="150" prop="contactsName" />
  174. <el-table-column show-overflow-tooltip label="联系人电话" align="center" prop="contactsPhone" width="150" />
  175. <el-table-column show-overflow-tooltip label="NC档案ID" align="center" width="150" prop="createTime" />
  176. <el-table-column show-overflow-tooltip label="备注" align="center" width="120" prop="remark" />
  177. <el-table-column show-overflow-tooltip label="创建人" align="center" width="150" prop="createByName" />
  178. <el-table-column show-overflow-tooltip label="创建时间" align="center" width="150" prop="createTime" />
  179. <el-table-column show-overflow-tooltip label="修改人" align="center" width="150" prop="updateByName" />
  180. <el-table-column show-overflow-tooltip label="修改时间" align="center" width="150" prop="updateTime" />
  181. <el-table-column show-overflow-tooltip label="同步状态" align="center" width="150" prop="sendStatus">
  182. <template slot-scope="scope">
  183. {{ scope.row.sendStatus == 'Y' ? '已同步' : '未同步'}}
  184. </template>
  185. </el-table-column>
  186. <el-table-column show-overflow-tooltip label="启用" align="center" width="150" prop="status">
  187. <template slot-scope="scope">
  188. {{ scope.row.status == 'Y' ? '启用' : '停用' }}
  189. </template>
  190. </el-table-column>
  191. <el-table-column
  192. fixed="right"
  193. label="操作"
  194. align="center"
  195. width="150"
  196. >
  197. <template slot-scope="scope">
  198. <el-button type="text" size="mini" @click="check(scope.row)">查看</el-button>
  199. <el-button type="text" size="mini" @click="edit(scope.row)">编辑</el-button>
  200. <el-button type="text" size="mini" @click="deleteids(scope.row)">删除</el-button>
  201. </template>
  202. </el-table-column>
  203. </el-table>
  204. <el-pagination
  205. background
  206. @size-change="handleSizeChange"
  207. @current-change="handleCurrentChange"
  208. :current-page="queryParams.pageNum"
  209. :page-sizes="[10, 15, 20]"
  210. :page-size="100"
  211. layout="total, sizes, prev, pager, next, jumper"
  212. :total=total>
  213. </el-pagination>
  214. </el-card>
  215. </div>
  216. <Add v-model="isList" v-if="!isList" :pageStu="page" :disable="disable" :row="rowDetail" @refresh="getList"/>
  217. <Refers ref="refer" @doSubmit="selectionsToInput" :single="true"/>
  218. <TreeRefers ref="tree" @doSubmit="selectionsToInput2" :single="true"/>
  219. </div>
  220. </template>
  221. <script>
  222. import Add from './add.vue'
  223. import CollapseTransition from '@/components/MyCollapse/collapse.vue'
  224. import {getAddressList, delAddress, toNc } from '@/api/purchase/deliveryAddress.js'
  225. import Refers from '@/components/Refers/refers.vue'
  226. import TreeRefers from '@/components/Refers/treeRefer.vue'
  227. export default {
  228. name: 'deliveryAddress',
  229. dicts: ['sys_warehouse_attribute'],
  230. components: {
  231. Add,
  232. CollapseTransition,
  233. Refers,
  234. TreeRefers
  235. },
  236. data() {
  237. return {
  238. expanded: false,
  239. // 页面配置
  240. isList: true,
  241. // 页面状态
  242. page: '',
  243. // 搜索框参数
  244. queryParams: {
  245. code: '',
  246. name: '',
  247. warehouse: '',
  248. warehouseName: '',
  249. warehouseCode: '',
  250. warehouseProperty: '',
  251. address: '',
  252. contacts: '',
  253. contactsName: '',
  254. contactsPhone: '',
  255. materialClassify: '',
  256. materialClassifyName: '',
  257. status: '',
  258. sendStatus: '',
  259. remark: '',
  260. pageNum: 1,
  261. pageSize: 10
  262. },
  263. options: [{
  264. value: 'Y', label: '是',
  265. }, {
  266. value: 'N', label: '否'
  267. }],
  268. options2: [{
  269. value: 'Y', label: '已同步',
  270. }, {
  271. value: 'N', label: '未同步'
  272. }],
  273. referCondition: {
  274. type: '',
  275. isPage: true,
  276. title: ''
  277. },
  278. houseOptions: [],
  279. classOptions: [],
  280. contactsOptions: [],
  281. tableList: [],
  282. total: 0,
  283. rowDetail: {},
  284. disable: false,
  285. allSelection:[]
  286. }
  287. },
  288. created() {
  289. this.getList(this.queryParams)
  290. },
  291. methods: {
  292. getList(params){
  293. getAddressList(params).then(res => {
  294. if (res.code === 200) {
  295. this.tableList = res.rows
  296. this.total = res.total
  297. }
  298. })
  299. },
  300. searchList() {
  301. this.getList(this.queryParams)
  302. },
  303. resetList() {
  304. this.queryParams = {
  305. code: '',
  306. name: '',
  307. warehouse: '',
  308. warehouseName: '',
  309. warehouseCode: '',
  310. warehouseProperty: '',
  311. address: '',
  312. contacts: '',
  313. contactsName: '',
  314. contactsPhone: '',
  315. materialClassify: '',
  316. materialClassifyName: '',
  317. status: '',
  318. sendStatus: '',
  319. remark: '',
  320. pageNum: 1,
  321. pageSize: 10
  322. }
  323. this.getList(this.queryParams)
  324. },
  325. toNC() {
  326. if (this.allSelection.length == 0 || this.allSelection.length > 1) {
  327. this.$modal.msgWarning("同步NC只能进行单条操作!");
  328. } else {
  329. console.log('参数', this.allSelection)
  330. toNc(this.allSelection[0]).then(res => {
  331. if (res.code === 200) {
  332. this.$modal.msgSuccess("操作成功!");
  333. this.getList(this.queryParams)
  334. }
  335. })
  336. }
  337. },
  338. handleSelectionChange(selection) {
  339. console.log('选中', selection)
  340. this.allSelection = selection
  341. },
  342. handleCommand(command) {
  343. alert(command)
  344. },
  345. addAddress() {
  346. this.isList = false
  347. this.page = 'add'
  348. this.disable = false
  349. },
  350. check(row) {
  351. this.isList = false
  352. this.page = 'check'
  353. this.rowDetail = row
  354. this.disable = true
  355. },
  356. edit(row) {
  357. this.isList = false
  358. this.page = 'edit'
  359. this.rowDetail = row
  360. this.disable = false
  361. },
  362. deleteids(row) {
  363. console.log('row', row)
  364. this.$modal.confirm('确认信息').then(() => {
  365. delAddress(row.id).then(res => {
  366. if (res.code === 200) {
  367. this.$modal.msgSuccess("删除成功");
  368. this.getList(this.queryParams)
  369. }
  370. })
  371. }).catch(() => {})
  372. },
  373. handleSizeChange(val) {
  374. console.log(`每页 ${val} 条`);
  375. this.queryParams.pageSize = val
  376. this.getList(this.queryParams)
  377. },
  378. handleCurrentChange(val) {
  379. console.log(`当前页: ${val}`);
  380. this.queryParams.pageNum = val
  381. this.getList(this.queryParams)
  382. },
  383. drop() {
  384. this.expanded = !this.expanded
  385. },
  386. chooseRefer(type, isPage, title) {
  387. this.referCondition.type = type
  388. this.referCondition.isPage = isPage
  389. this.referCondition.title = title
  390. this.$refs.refer.init(this.referCondition)
  391. },
  392. selectionsToInput(selection) {
  393. if (this.referCondition.type == 'WAREHOUSE_PARAM') {
  394. this.houseOptions = selection
  395. // this.queryParams.warehouse = selection[0].id
  396. this.queryParams.warehouseName = selection[0].name
  397. }
  398. if (this.referCondition.type == 'CONTACTS_PARAM') {
  399. this.contactsOptions = selection
  400. // this.queryParams.contacts = selection[0].code
  401. this.queryParams.contactsName = selection[0].name
  402. }
  403. },
  404. chooseTreeRefer(type, isPage, title) {
  405. this.referCondition.type = type
  406. this.referCondition.isPage = isPage
  407. this.referCondition.title = title
  408. this.$refs.tree.init(this.referCondition)
  409. },
  410. selectionsToInput2(selection) {
  411. this.classOptions.push(selection)
  412. // this.queryParams.materialClassify = selection.id
  413. this.queryParams.materialClassifyName = selection.name
  414. },
  415. }
  416. }
  417. </script>
  418. <style lang="scss" scoped>
  419. #deliveryAddressList {
  420. height: calc(100vh - 84px);
  421. padding: 12px;
  422. box-sizing: border-box;
  423. overflow-y: scroll;
  424. }
  425. .btn_grooup {
  426. margin-bottom: 10px;
  427. display: flex;
  428. justify-content: flex-end;
  429. }
  430. .lines {
  431. margin-top: 0;
  432. }
  433. .el-pagination {
  434. margin-top: 10px;
  435. text-align: right;
  436. }
  437. </style>