index.vue 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. <template>
  2. <el-card class="box-card" v-loading="loadingStatus" element-loading-text="数据同步中,请稍后" element-loading-background="rgba(0, 0, 0, 0.2)">
  3. <div style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 42vw">
  4. <div style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%)">
  5. <el-tabs v-model="activeName">
  6. <el-tab-pane label="重置时间" name="first" v-if="!userInfo.subsidiaryId">
  7. <div style="font-size: 24px; font-weight: 700; color: #e51717; text-align: center">最后一次同步时间: {{ synchroTime }}</div>
  8. <br />
  9. <el-form ref="ruleForm" :model="form" :rules="formRules" label-width="100px">
  10. <el-form-item label="重置同步时间:" prop="time">
  11. <el-date-picker
  12. type="datetime"
  13. v-model="form.time"
  14. placeholder="请选择重置同步时间"
  15. size="small"
  16. style="width: 100%"
  17. value-format="yyyy-MM-dd HH:mm:ss"
  18. :picker-options="pickerOptions"
  19. :default-time="time"
  20. >
  21. </el-date-picker>
  22. </el-form-item>
  23. <div style="width: 100%; padding-top: 16px; text-align: center">
  24. <el-button type="primary" @click="clickSubmit()" size="small" v-db-click>保 存</el-button>
  25. </div>
  26. </el-form>
  27. </el-tab-pane>
  28. <el-tab-pane label="已发货订单" name="second">
  29. <el-form ref="ruleFormTwo" :model="formTwo" :rules="formTwoRules" label-width="100px">
  30. <el-form-item label="开始时间:" prop="approve_time">
  31. <el-date-picker
  32. type="datetime"
  33. v-model="formTwo.approve_time"
  34. placeholder="请选择开始时间"
  35. size="small"
  36. style="width: 100%"
  37. value-format="yyyy-MM-dd HH:mm:ss"
  38. >
  39. </el-date-picker>
  40. </el-form-item>
  41. <el-form-item label="结束时间:" prop="end_time">
  42. <el-date-picker
  43. type="datetime"
  44. v-model="formTwo.end_time"
  45. placeholder="请选择结束时间"
  46. size="small"
  47. style="width: 100%"
  48. value-format="yyyy-MM-dd HH:mm:ss"
  49. >
  50. </el-date-picker>
  51. </el-form-item>
  52. <el-form-item label="订单号:" prop="bill_code">
  53. <el-input v-model="formTwo.bill_code" placeholder="请输入订单号" size="small"></el-input>
  54. </el-form-item>
  55. <el-form-item label="订单状态" prop="trade_status_arr">
  56. <el-select v-model="formTwo.trade_status_arr" multiple placeholder="请选择订单状态" style="width: 100%" size="small">
  57. <el-option v-for="item in tradeStatus" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
  58. </el-select>
  59. </el-form-item>
  60. <el-form-item label="仓库编码:" prop="storage_code">
  61. <el-input v-model="formTwo.storage_code" placeholder="请输入仓库编码" size="small"></el-input>
  62. </el-form-item>
  63. <el-form-item label="付款时间:" prop="pay_time">
  64. <el-date-picker
  65. type="datetime"
  66. v-model="formTwo.pay_time"
  67. placeholder="请选择付款时间"
  68. size="small"
  69. style="width: 100%"
  70. value-format="yyyy-MM-dd HH:mm:ss"
  71. >
  72. </el-date-picker>
  73. </el-form-item>
  74. <el-form-item label="完成时间:" prop="finish_time">
  75. <el-date-picker
  76. type="datetime"
  77. v-model="formTwo.finish_time"
  78. placeholder="请选择完成时间"
  79. size="small"
  80. style="width: 100%"
  81. value-format="yyyy-MM-dd HH:mm:ss"
  82. :picker-options="pickerOptionsTwo"
  83. >
  84. </el-date-picker>
  85. </el-form-item>
  86. <el-form-item label="发货时间:" prop="send_goods_time">
  87. <el-date-picker
  88. type="datetime"
  89. v-model="formTwo.send_goods_time"
  90. placeholder="请选择发货时间"
  91. size="small"
  92. style="width: 100%"
  93. value-format="yyyy-MM-dd HH:mm:ss"
  94. :picker-options="pickerOptionsTwo"
  95. >
  96. </el-date-picker>
  97. </el-form-item>
  98. <div style="width: 100%; padding-top: 16px; text-align: center">
  99. <el-button type="primary" @click="clickTwoSubmit()" size="small" v-db-click>保 存</el-button>
  100. </div>
  101. </el-form>
  102. </el-tab-pane>
  103. </el-tabs>
  104. </div>
  105. </div>
  106. </el-card>
  107. </template>
  108. <script>
  109. import * as API from '@/api/shengde/group/synchronization/order'
  110. import moment from 'moment'
  111. import { mapGetters } from 'vuex'
  112. export default {
  113. name: 'orderSynchronization',
  114. data() {
  115. return {
  116. synchroTime: '',
  117. form: {
  118. time: '',
  119. },
  120. formRules: {
  121. time: [{ required: true, message: '请选择重置同步时间', trigger: ['change', 'blur'] }],
  122. },
  123. formTwo: {
  124. approve_time: '',
  125. end_time: '',
  126. bill_code: '',
  127. trade_status: '',
  128. trade_status_arr: '',
  129. storage_code: '',
  130. pay_time: '',
  131. finish_time: '',
  132. send_goods_time: '',
  133. },
  134. tradeStatus: [
  135. {
  136. dictValue: '打单配货',
  137. dictKey: '1',
  138. },
  139. {
  140. dictValue: '验货',
  141. dictKey: '2',
  142. },
  143. {
  144. dictValue: '承重',
  145. dictKey: '3',
  146. },
  147. {
  148. dictValue: '待发货',
  149. dictKey: '4',
  150. },
  151. {
  152. dictValue: '财审',
  153. dictKey: '5',
  154. },
  155. {
  156. dictValue: '已发货',
  157. dictKey: '8',
  158. },
  159. {
  160. dictValue: '完成',
  161. dictKey: '9',
  162. },
  163. {
  164. dictValue: '关闭',
  165. dictKey: '10',
  166. },
  167. {
  168. dictValue: '配货中',
  169. dictKey: '13',
  170. },
  171. {
  172. dictValue: '打包',
  173. dictKey: '15',
  174. },
  175. ],
  176. formTwoRules: {
  177. approve_time: [{ required: true, message: '请选择开始时间', trigger: ['change', 'blur'] }],
  178. end_time: [{ required: true, message: '请选择结束时间', trigger: ['change', 'blur'] }],
  179. },
  180. time: '00:00:00',
  181. loadingStatus: false,
  182. pickerOptions: {
  183. disabledDate(time) {
  184. return time.getTime() < Date.now() - 8.64e7 - 8.64e7 - 8.64e7
  185. },
  186. },
  187. pickerOptionsTwo: {
  188. disabledDate(time) {
  189. return time.getTime() < Date.now() - 2592000000 - 2592000000 - 2592000000
  190. },
  191. },
  192. activeName: '',
  193. }
  194. },
  195. created() {
  196. this.time = moment().format('HH:mm:ss')
  197. },
  198. mounted() {
  199. if (this.userInfo.subsidiaryId) {
  200. this.activeName = 'second'
  201. } else {
  202. this.activeName = 'first'
  203. }
  204. this.getTime()
  205. },
  206. computed: mapGetters(['userInfo']),
  207. methods: {
  208. getTime() {
  209. API.synchroTimeDetails().then((res) => {
  210. this.synchroTime = moment(parseInt(res.data.data)).format('YYYY-MM-DD HH:mm:ss')
  211. })
  212. },
  213. clickSubmit() {
  214. this.$refs.ruleForm.validate((valid) => {
  215. if (valid) {
  216. this.loadingStatus = true
  217. API.resetTime({ time: new Date(this.form.time).getTime() }).then(
  218. () => {
  219. this.loadingStatus = false
  220. this.msgSuccess('同步完成')
  221. this.getTime()
  222. },
  223. (err) => {
  224. console.log('resetTime: ' + err)
  225. this.loadingStatus = false
  226. }
  227. )
  228. }
  229. })
  230. },
  231. clickTwoSubmit() {
  232. this.$refs.ruleFormTwo.validate((valid) => {
  233. if (valid) {
  234. if (this.formTwo.trade_status_arr && this.formTwo.trade_status_arr.length > 0) {
  235. this.formTwo.trade_status = this.formTwo.trade_status_arr.join(',')
  236. } else {
  237. this.formTwo.trade_status = ''
  238. }
  239. let data = JSON.parse(JSON.stringify(this.formTwo))
  240. let approve_time = new Date(this.formTwo.approve_time)
  241. data.approve_time = Date.parse(approve_time)
  242. let end_time = new Date(this.formTwo.end_time)
  243. data.end_time = Date.parse(end_time)
  244. this.loadingStatus = true
  245. API.importContract(data).then(
  246. () => {
  247. this.loadingStatus = false
  248. this.msgSuccess('同步完成')
  249. // this.resetForm('ruleFormTwo')
  250. },
  251. (err) => {
  252. console.log('importContract: ' + err)
  253. this.loadingStatus = false
  254. }
  255. )
  256. }
  257. })
  258. },
  259. },
  260. }
  261. </script>
  262. <style lang="scss" scoped>
  263. * {
  264. font-size: 12px;
  265. }
  266. .box-card {
  267. height: calc(100vh - 110px);
  268. overflow-y: auto;
  269. }
  270. .searchBtn {
  271. background: #20b2aa;
  272. color: #fff;
  273. border: 1px solid #20b2aa;
  274. }
  275. ::v-deep {
  276. .el-input__inner {
  277. border-radius: 1px;
  278. }
  279. .el-button--small {
  280. border-radius: 1px;
  281. }
  282. .tableHeader th {
  283. background-color: #edf0f5;
  284. height: 35px;
  285. padding: 0;
  286. }
  287. }
  288. </style>