index.vue 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951
  1. <template>
  2. <div class="winseaview-top" id="winseaview-top">
  3. <div class="top-bar__left">
  4. <!-- 伸缩icon -->
  5. <div class="winseaview-breadcrumb" :class="[{ 'winseaview-breadcrumb--active': isCollapse }]">
  6. <i class="iconfont icon-shouqi" @click="setCollapse"></i>
  7. </div>
  8. <!-- </div>
  9. <div class="top-bar__title"> -->
  10. <!-- 面包屑 -->
  11. <div class="top-bar__item top-bar__item--show">
  12. <top-menu v-if="showMenu"></top-menu>
  13. <bread-crumb v-if="!showMenu" />
  14. <smallTips v-if="showTooltip" />
  15. </div>
  16. <span class="top-bar__item" v-if="showSearch">
  17. <top-search></top-search>
  18. </span>
  19. </div>
  20. <div class="top-bar__right">
  21. <!-- 使用租户 -->
  22. <div class="hidden-content">
  23. <el-input ref="hiddenFocus" type="password" class="input-Style" v-model="barCode" size="small" @focus="focus" @blur="blur" autocomplete="off" auto-complete="new-password"
  24. @keyup.enter.native="payCode" placeholder="扫码枪内容"></el-input>
  25. <div v-show="isOpenCodeGun" class="code-scan-text">扫码枪已连接</div>
  26. <div v-show="!isOpenCodeGun" @click="setCodeGun" class="code-scan-text">点我扫码</div>
  27. <!-- -->
  28. <el-dialog title="扫描二维码" :visible.sync="smAlert" :before-close="cancel">
  29. <div class="btn-list">
  30. <el-button v-hasPermission="`acquisitionManagement.acquisitionQuality.initial`"
  31. v-if="btnStatus.status1" @click="goToPage(1)" class="btn_css">去初检
  32. </el-button>
  33. <el-button v-hasPermission="`acquisitionManagement.acquisitionQuality.con`"
  34. v-if="btnStatus.status2" v-show="toPageData.qualityInspectionManagement.confirm != '1'" @click="goToPage(2)" class="btn_css">去确认质检
  35. </el-button>
  36. <el-button v-hasPermission="`acquisitionManagement.acquisitionQuality.again`"
  37. v-if="btnStatus.status3" v-show="toPageData.qualityInspectionManagement.confirm != '1'" @click="goToPage(3)" class="btn_css">去复检
  38. </el-button>
  39. <el-button v-hasPermission="`acquisitionManagement.acquisitionWeight.mao`"
  40. v-if="btnStatus.status4" @click="goToPage(4)" class="btn_css" >去称毛重
  41. </el-button>
  42. <el-button v-hasPermission="`acquisitionManagement.acquisitionWeight.weight`"
  43. v-if="btnStatus.status5" @click="goToPage(6)" class="btn_css">去称皮重
  44. </el-button>
  45. <!-- <el-button @click="goToPage(6)" class="btn_css">去称皮重
  46. </el-button> -->
  47. <el-button v-hasPermission="`acquisitionManagement.acquisitionPay.add`" v-if="btnStatus.status6"
  48. @click="goToPage(5)" class="btn_css">去结算</el-button>
  49. <!-- </el-button> -->
  50. <!-- v-if="btnStatus.status2||btnStatus.status3||btnStatus.status4||btnStatus.status5" @click="goToPage(6)" class="btn_css">去称皮重 -->
  51. <!-- v-show="toPageData.qualityInspectionManagement.confirm != '1'" -->
  52. <el-button @click="cancel" class="btn" >关闭</el-button>
  53. </div>
  54. </el-dialog>
  55. </div>
  56. <div class="compName-row">
  57. <!-- <span class="compName">{{compName}}</span> -->
  58. <el-select style='width:260px;' @change='compNameChange' disabled v-model="compName" placeholder="请选择">
  59. <el-option
  60. v-for="item in compNameoptions"
  61. :key="item"
  62. :label="item"
  63. :value="item">
  64. </el-option>
  65. </el-select>
  66. </div>
  67. <div v-if="getDay" class="right-menu-item hover-effect dayClass">
  68. {{ $t('common.trialDays') }}
  69. <span style="padding: 0 2px">{{ getDay }}</span>{{ $t('common.days') }}
  70. </div>
  71. <!-- <el-tooltip v-if="showColor" effect="dark" :content="$t('navbar.color')" placement="bottom">
  72. <div class="top-bar__item">
  73. <top-color></top-color>
  74. </div>
  75. </el-tooltip> -->
  76. <el-tooltip v-if="showTheme" effect="dark" :hide-after="1500" :content="$t('navbar.theme')" placement="bottom">
  77. <div class="top-bar__item top-bar__item--show">
  78. <top-theme></top-theme>
  79. </div>
  80. </el-tooltip>
  81. <!-- <el-tooltip effect="dark"
  82. :content="$t('navbar.language')"
  83. placement="bottom">
  84. <div class="top-bar__item top-bar__item--show">
  85. <top-lang></top-lang>
  86. </div>
  87. </el-tooltip> -->
  88. <el-tooltip v-if="showFullScren" effect="dark" :content="
  89. isFullScren ? $t('navbar.screenfull') : $t('navbar.screenfullF')
  90. " placement="bottom">
  91. <div class="top-bar__item">
  92. <i :class="isFullScren ? 'el-icon-full-screen' : 'el-icon-full-screen'" @click="handleScreen"></i>
  93. </div>
  94. </el-tooltip>
  95. <img class="top-bar__img" v-lazy="userInfo.avatar" />
  96. <el-dropdown>
  97. <span class="el-dropdown-link">
  98. <span>{{ userInfo.showRoleName }} : {{ userInfo.staffName }}</span>
  99. <i class="el-icon-arrow-down el-icon--right"></i>
  100. </span>
  101. <el-dropdown-menu slot="dropdown">
  102. <el-dropdown-item icon="el-icon-s-custom" @click.native="personalFlag = true">
  103. {{ $t('navbar.personalInformation') }}
  104. </el-dropdown-item>
  105. <el-dropdown-item icon="el-icon-s-promotion" @click.native="passwordFlag = true">
  106. {{ $t('navbar.uploadPsw') }}
  107. </el-dropdown-item>
  108. <!-- <el-dropdown-item>
  109. <router-link to="/info/index">{{$t('navbar.userinfo')}}</router-link>
  110. </el-dropdown-item> -->
  111. <el-dropdown-item v-if="showSetting" icon="el-icon-s-tools" @click.native="settingDrawer = true">
  112. {{ $t('navbar.layoutSetting') }}
  113. </el-dropdown-item>
  114. <el-dropdown-item @click.native="logout" divided>{{
  115. $t('navbar.logOut')
  116. }}</el-dropdown-item>
  117. </el-dropdown-menu>
  118. </el-dropdown>
  119. </div>
  120. <topSetting v-model="settingDrawer" @close="() => (settingDrawer = !settingDrawer)" />
  121. <!--个人信息-->
  122. <WinseaContentModal v-model="personalFlag" :title="$t('navbar.personalInformation')">
  123. <el-form ref="personalMsg" :model="passwordMsg" label-position="right" label-width="150px">
  124. <el-form-item :label="$t('login.name')" prop="originalPassword">
  125. {{ userInfo.staffName }}
  126. </el-form-item>
  127. <el-form-item :label="$t('login.account')" prop="newPassword">
  128. {{ account }}
  129. </el-form-item>
  130. <el-form-item :label="$t('login.phone')" prop="newPassword">
  131. {{ userInfo.staffMobilePhone }}
  132. </el-form-item>
  133. <el-form-item :label="$t('login.role')" prop="newPassword">
  134. {{ userInfo.showRoleName }}
  135. </el-form-item>
  136. <el-form-item :label="$t('login.dept')" prop="newPassword">
  137. {{ userInfo.deptName }}
  138. </el-form-item>
  139. <el-form-item :label="$t('login.company')" prop="newPassword">
  140. <div class="company-info">
  141. {{ userInfo.compName }}
  142. </div>
  143. </el-form-item>
  144. </el-form>
  145. </WinseaContentModal>
  146. <!--修改密码-->
  147. <WinseaContentModal v-model="passwordFlag" :title="$t('navbar.uploadPsw')">
  148. <el-form ref="passwordMsg" :model="passwordMsg" :label-width="language == 'en' ? '156px' : '100px'"
  149. :rules="passwordMsgRules">
  150. <el-form-item :label="$t('login.originalPassword') + $t('common.colon')" prop="originalPassword">
  151. <ws-input type="password" :placeholder="$t('login.message04')" v-model="passwordMsg.originalPassword"
  152. style="width: 318px" />
  153. </el-form-item>
  154. <el-form-item :label="$t('login.newPassword') + $t('common.colon')" prop="newPassword">
  155. <ws-input type="password" v-model="passwordMsg.newPassword" :placeholder="$t('login.verification01')"
  156. style="width: 318px" />
  157. </el-form-item>
  158. <el-form-item :label="$t('login.confirmPassword') + $t('common.colon')" prop="password">
  159. <ws-input type="password" v-model="passwordMsg.password" :placeholder="$t('login.verification01')"
  160. style="width: 318px" />
  161. </el-form-item>
  162. </el-form>
  163. <span slot="footer" class="dialog-footer">
  164. <ws-button @click="passwordFlag = false">{{
  165. $t('showMessage.cancel')
  166. }}</ws-button>
  167. <ws-button type="primary" @click="savePassword('passwordMsg')">{{
  168. $t('showMessage.confirm')
  169. }}</ws-button>
  170. </span>
  171. </WinseaContentModal>
  172. </div>
  173. </template>
  174. <script>
  175. import {
  176. changePasswordByPwd,
  177. getcomp
  178. } from '@/model/indexRx'
  179. import { fastLogin, logout, login,complogin, getRoule, getCurrentUserInfo, companyInfo, isLandBased, getAccountLoginHistoryCount, updateShowInfo }
  180. from '@/model/indexRx'
  181. import Cookies from 'js-cookie'
  182. import { setToken, getCompanyId, clearStorage } from '@/utils/auth'
  183. import {
  184. mapActions,
  185. mapGetters,
  186. mapState
  187. } from 'vuex'
  188. import {
  189. fullscreenToggel,
  190. listenfullscreen
  191. } from '@/utils/util'
  192. import {
  193. getTenantInfoByUser,
  194. } from '@/model/signIn/index'
  195. import notification from '../../../notification'
  196. import topMenu from './top-menu'
  197. import topSearch from './top-search'
  198. import topTheme from './top-theme'
  199. import topColor from './top-color'
  200. import topNotice from './top-notice'
  201. import topLang from './top-lang'
  202. import topSetting from './top-setting'
  203. import breadCrumb from '@/components/Breadcrumb'
  204. import {
  205. EventBus
  206. } from 'base-core-lib'
  207. import {
  208. validPassword
  209. } from '@/utils/validate'
  210. import smallTips from '@/components/WinseaCom/smallTips'
  211. import {
  212. getLook
  213. } from '@/model/warehouse/index'
  214. import {
  215. getQRCodeData,
  216. getBaseId
  217. } from '@/model/houseSelfCollect/index'
  218. const validPasswordRule = function(rule, value, callback) {
  219. if (!validPassword(value)) {
  220. callback(new Error(this.$t('login.verification01')))
  221. } else {
  222. callback()
  223. }
  224. }
  225. const validPasswordRule2 = function(rule, value, callback) {
  226. if (!value) {
  227. callback(new Error(this.$t('login.verification02')))
  228. } else if (value !== this.passwordMsg.newPassword) {
  229. callback(new Error(this.$t('login.verification03')))
  230. } else {
  231. callback()
  232. }
  233. }
  234. export default {
  235. components: {
  236. topMenu,
  237. topSearch,
  238. topTheme,
  239. topColor,
  240. topNotice,
  241. topLang,
  242. topSetting,
  243. breadCrumb,
  244. smallTips,
  245. },
  246. name: 'top',
  247. data() {
  248. return {
  249. index:0,
  250. //status1:已初检未称毛重状态 status2:已初检且已称毛重状态 status3:已复检且已称毛重 status4:已复检且已称皮重状态
  251. //status5:已确认质检且已称皮重且未结算状态 status6:已结算状态
  252. btnStatus: {
  253. status1: false,
  254. status2: false,
  255. status3: false,
  256. status4: false,
  257. status5: false,
  258. status6: false,
  259. },
  260. toPageData: {},
  261. userINfo: {},
  262. barCode: '',
  263. compNameoptions:[],
  264. isOpenCodeGun: false,
  265. smAlert: false,
  266. showList: [
  267. 'maintenancePlanList',
  268. 'maintenanceReportList',
  269. 'navigationMaterialList',
  270. 'protectionEntry',
  271. 'protection',
  272. 'newlyIncreased',
  273. 'clientEdit',
  274. 'staticDetail',
  275. 'maApplicationAdd',
  276. 'maApplicationEdit',
  277. 'maApplicationLabel',
  278. 'monthContrastList',
  279. ],
  280. settingDrawer: false,
  281. personalFlag: false,
  282. passwordFlag: false,
  283. passwordMsgRules: {
  284. originalPassword: [{
  285. required: true,
  286. message: ' ',
  287. trigger: 'blur'
  288. }],
  289. // newPassword: [
  290. // {
  291. // required: true,
  292. // trigger: 'blur',
  293. // validator: validPasswordRule.bind(this),
  294. // },
  295. // ],
  296. // password: [
  297. // {
  298. // required: true,
  299. // trigger: 'blur',
  300. // validator: validPasswordRule2.bind(this),
  301. // },
  302. // ],
  303. },
  304. passwordMsg: {
  305. originalPassword: '', // 原始密码
  306. newPassword: '', // 新密码
  307. password: '', // 二次输入密码
  308. },
  309. loginForm:{},
  310. // roleName: '',
  311. // phone: '',
  312. // roleId: '',
  313. // deptName: '',
  314. // deptId: '',
  315. // staffName: '',
  316. account: localStorage.getItem('ws-pf_account'),
  317. compName: localStorage.getItem('ws-pf_compName'),
  318. companyId: localStorage.getItem('ws-pf_compId'),
  319. cangid:'',
  320. UserInfo:JSON.parse(localStorage.getItem('ws_login_getTenantInfoByUser')),
  321. tmp:{},
  322. }
  323. },
  324. filters: {},
  325. created() {
  326. // this.getUserInfo()
  327. this.getUserWorseHouse();
  328. this.userINfo = {
  329. userCompany: localStorage.getItem('ws-pf_compId'),
  330. userName: localStorage.getItem('ws-pf_staffName'),
  331. }
  332. listenfullscreen(this.setScreen)
  333. getcomp({userMobilePhone:this.UserInfo.loginInfo.userMobilePhone}).toPromise().then((res)=>{
  334. this.compNameoptions=res
  335. localStorage.setItem('compNameoptions',JSON.stringify(this.compNameoptions))
  336. })
  337. },
  338. mounted() {
  339. // this.complogin({username: Cookies.get('ws_login_account'),
  340. // password: Cookies.get('ws_login_pwd'),
  341. // companyName: this.compName})
  342. // var res=this.complogin({username: Cookies.get('ws_login_account'),
  343. // password: 111111,
  344. // companyName: this.compName})
  345. // console.log(res)
  346. },
  347. computed: {
  348. ...mapState({
  349. showDebug: (state) => state.commonStore.showDebug,
  350. showTheme: (state) => state.commonStore.showTheme,
  351. showLock: (state) => state.commonStore.showLock,
  352. showFullScren: (state) => state.commonStore.showFullScren,
  353. showCollapse: (state) => state.commonStore.showCollapse,
  354. showSearch: (state) => state.commonStore.showSearch,
  355. showSetting: (state) => state.commonStore.showSetting,
  356. showMenu: (state) => state.commonStore.showMenu,
  357. showColor: (state) => state.commonStore.showColor,
  358. }),
  359. ...mapGetters([
  360. 'userInfo',
  361. 'isFullScren',
  362. 'tagWel',
  363. 'tagList',
  364. 'isCollapse',
  365. 'tag',
  366. 'logsLen',
  367. 'logsFlag',
  368. 'language',
  369. ]),
  370. getDay() {
  371. const {
  372. statusFlag = -1, daysRemaining
  373. } =
  374. JSON.parse(localStorage.getItem('ws_login_getTenantInfoByUser')) || {}
  375. return statusFlag * 1 === 2 ? daysRemaining + '' : ''
  376. },
  377. showTooltip() {
  378. return this.showList.indexOf(this.$route.name) > -1 && !this.showMenu
  379. },
  380. },
  381. methods: {
  382. ...mapActions('common', ['setLocalVessels']),
  383. ...mapActions('user', ['getUserInfo','toSetShow']),
  384. payCode() {
  385. console.log('input', this.barCode)
  386. this.btnStatus = {
  387. status1: false,
  388. status2: false,
  389. status3: false,
  390. status4: false,
  391. status5: false,
  392. status6: false,
  393. }
  394. // let _userCompId = "2710b21efc1e4393930c5dc800010dc4"
  395. // let _qualityNo = "SGRK202112140060003"
  396. let _userCompId = this.barCode.split('&')[0].toLocaleLowerCase()
  397. let _qualityNo = this.barCode.split('&')[1]
  398. let _userHouseId = this.barCode.split('&')[2].toLocaleLowerCase()
  399. this.cangid = this.barCode.split('&')[2].toLocaleLowerCase()
  400. if(_userCompId.indexOf(',') != -1){
  401. _userCompId = _userCompId.split(',')[1]
  402. }
  403. if(!_userHouseId){
  404. this.obtainBaseId(_userCompId,_qualityNo)
  405. }
  406. this.tmp = {
  407. compId: _userCompId,
  408. number: _qualityNo,
  409. warehouseId: _userHouseId
  410. }
  411. // this.barCode = ''
  412. //判断当前账号公司是否是二维码上公司
  413. if (this.userINfo.userCompany != _userCompId) {
  414. console.log('请切换公司在试!')
  415. this.$message.error('当前身份不可操作');
  416. this.barCode = ''
  417. return
  418. }
  419. //判断二维码上的仓库当前账号是否有权限操作
  420. if(this.cangid){
  421. this.getLook(this.cangid,localStorage.getItem('ws-pf_staffName'))
  422. }
  423. },
  424. compNameChange(){
  425. // this.complogin({username:this.UserInfo.loginInfo.userMobilePhone,
  426. // password: localStorage.getItem('ws-pf_pass'),
  427. // companyName: this.compName})
  428. var userInfo={
  429. username:this.UserInfo.loginInfo.userMobilePhone,
  430. password: localStorage.getItem('ws-pf_pass'),
  431. companyName: this.compName
  432. }
  433. // var status=0
  434. const redirect = this.$route.query.redirect
  435. const { username, password, domainName, companyName } = userInfo
  436. complogin({
  437. username: username.trim(),
  438. password: password,
  439. domainName: domainName,
  440. companyName: companyName
  441. }).toPromise().then((res)=>{
  442. if(res.data.code=='AUTH_001'){
  443. Message({showClose: true,
  444. message: '公司不可切换',
  445. type: 'error'
  446. });
  447. this.compName=localStorage.getItem('ws-pf_compName')
  448. localStorage.setItem('status', 1)
  449. }else{
  450. const { compId,
  451. tenantId,
  452. vesselId,
  453. vesselBankFlag,
  454. clientFag,
  455. userId
  456. } = res.data.data
  457. // {TYPE='' MESSAGE} [第一次,失效].indexOf(type){type,msg,到期时间}
  458. // EventBus.$emit('success', '登录成功')
  459. localStorage.setItem('ws-pf_compId', compId)
  460. localStorage.setItem('status', 2)
  461. localStorage.setItem('ws-pf_userId', userId)
  462. localStorage.setItem('ws-pf_tenantId', tenantId)
  463. localStorage.setItem('ws-pf_vesselId', vesselId) // 仅适用于一条船
  464. localStorage.setItem('ws-pf_vesselBankFlag', vesselBankFlag) // 当前登录人是船端还是岸端的人员
  465. localStorage.setItem('ws-pf_clientFag', clientFag)
  466. notification.setSessionId(userId) // 设置通知唯一标识
  467. notification.start() // 开始监听通知
  468. // 查询当前租户服务类型
  469. isLandBased().toPromise().then(response => {
  470. localStorage.setItem('ws-pf_serviceTypeFlag', response)
  471. })
  472. companyInfo({ compId: compId }).toPromise().then((res1)=>{
  473. localStorage.setItem('ws-pf_organMonetaryKey', res1.organizationMonetaryKey)
  474. localStorage.setItem('ws-pf_compName', res1.compName)
  475. localStorage.setItem('ws-pf_compDomainName', res1.compDomainName)
  476. localStorage.setItem('ws-pf_organMonetaryValue', res1.organizationMonetaryValue)
  477. this.getUserInfo({ vesselBankFlag, compName:res1.compName })
  478. })
  479. this.toSetShow( userId)
  480. setToken('Admin-Token')
  481. localStorage.setItem('ws_login_type', 2)
  482. Cookies.set('ws_login_companyShortName', companyName, {
  483. expires: 365,
  484. })
  485. Cookies.set('ws_login_account', username, {
  486. expires: 365,
  487. })
  488. console.log(username, password, domainName, companyName)
  489. var rememberMe = Cookies.get('ws_login_rememberMe') === '1'
  490. if (rememberMe) {
  491. Cookies.set('ws_login_pwd', password, {
  492. expires: 365,
  493. })
  494. Cookies.set('ws_login_rememberMe', 1, {
  495. expires: 365
  496. })
  497. } else {
  498. Cookies.remove('ws_login_companyShortName')
  499. Cookies.remove('ws_login_account')
  500. Cookies.remove('ws_login_pwd')
  501. Cookies.set('ws_login_rememberMe', 0, {
  502. expires: 365
  503. })
  504. }
  505. console.log(redirect)
  506. if (redirect) {
  507. this.$router.push(redirect)
  508. } else {
  509. this.$router.push('/')
  510. }
  511. let newList = {
  512. companyName: companyName,
  513. username: username,
  514. password: password,
  515. }
  516. getTenantInfoByUser(newList).toPromise().then((res2)=>{
  517. console.log(res2)
  518. localStorage.setItem(
  519. 'ws_login_getTenantInfoByUser',
  520. JSON.stringify({
  521. ...res2,
  522. loginInfo: res.data.data
  523. }))
  524. var that=this
  525. setTimeout(function(){
  526. that.$router.go(0)
  527. },1000)
  528. })
  529. localStorage.setItem(
  530. 'ws_login_accountId',
  531. JSON.stringify(res.data.data.accountId)
  532. )
  533. }
  534. })
  535. console.log(localStorage.getItem('status'))
  536. // } else {
  537. // this.$message.error("您输入的用户名或密码错误!")
  538. // return false
  539. // }
  540. },
  541. cancel(){
  542. this.barCode = ''
  543. this.smAlert = false
  544. },
  545. // 查看二维码仓库负责人
  546. async getLook(compId, userName) {
  547. await getLook({
  548. id: compId,
  549. })
  550. .toPromise()
  551. .then((response) => {
  552. // if ( response.personCharge == userName || (response.otherPersonCharge && response.otherPersonCharge.indexOf(userName) != -1)) {
  553. //扫码枪扫码后显示弹框
  554. this.getQRCodeData(this.tmp)
  555. // }else{
  556. // console.log('你没有该权限,不可操作')
  557. // this.$message.error('当前身份不可操作');
  558. // this.barCode = ''
  559. // return
  560. // }
  561. })
  562. },
  563. //根据公司id、业务编号,获取仓库id
  564. async obtainBaseId(compId, qualityNo){
  565. await getBaseId({
  566. compId: compId,
  567. qualityNo: qualityNo,
  568. })
  569. .toPromise()
  570. .then((response) => {
  571. this.warehouseId = response.baseId
  572. this.cangid = response.baseId
  573. this.getLook(this.cangid,localStorage.getItem('ws-pf_staffName'))
  574. this.tmp = {
  575. compId: compId,
  576. number: qualityNo,
  577. warehouseId: this.warehouseId
  578. }
  579. // debugger
  580. // this.getQRCodeData(this.tmp)
  581. })
  582. },
  583. // 二维码获取数据
  584. async getQRCodeData(tmp) {
  585. await getQRCodeData(tmp)
  586. .toPromise()
  587. .then((response) => { debugger
  588. this.toPageData = response
  589. // 处理按钮显示状态
  590. // this.btnStatus
  591. // 检斤状态
  592. let _status1 = response.status
  593. //质检状态
  594. let _status2 = response.qualityInspectionManagement.status
  595. // 付款状态
  596. let _status3 = response.paymentManagement?response.paymentManagement.status:''
  597. if (_status2 == '已初检' && _status1 == '已质检') {
  598. this.btnStatus.status1 = true
  599. }
  600. if ((_status1 == '已称毛重' || _status1 == '已质检')) {
  601. this.btnStatus.status2 = true
  602. }
  603. if (this.toPageData.qualityInspectionManagement.confirm != '1' && (_status1 == '已称毛重' || _status1 == '已质检')) {
  604. this.btnStatus.status3 = true
  605. }
  606. if ( (_status1 == '已称毛重' || _status1 == '已质检')) {
  607. this.btnStatus.status4 = true
  608. }
  609. if ( this.toPageData.qualityInspectionManagement.confirm != '0' && (_status1 == '已称毛重' || _status1 == '已称皮重') && _status3 == '') {
  610. this.btnStatus.status5 = true
  611. }
  612. if (this.toPageData.qualityInspectionManagement.confirm != '0' && _status1 == '已称皮重' && _status3 == '待结算') {
  613. this.btnStatus.status6 = true
  614. }
  615. if (_status3 == '已结算') {
  616. this.$message.error('业务已完结');
  617. } else {
  618. this.smAlert = true
  619. }
  620. })
  621. },
  622. setCodeGun() {
  623. this.$refs['hiddenFocus'].focus()
  624. },
  625. focus(e) {
  626. setTimeout(() => {
  627. e.target.removeAttribute('readonly');
  628. }, 300)
  629. console.log('当前焦点状态')
  630. this.barCode = ''
  631. this.isOpenCodeGun = true
  632. },
  633. blur(e) {
  634. e.target.setAttribute('readonly', 'true');
  635. console.log('当前已失去焦点状态')
  636. this.isOpenCodeGun = false
  637. },
  638. goToPage(type) {
  639. var _saomadata = {}
  640. _saomadata.cangid = this.cangid
  641. _saomadata.id = this.toPageData.qualityInspectionManagement.id
  642. _saomadata.warehouseName = this.toPageData.qualityInspectionManagement.warehouseName
  643. _saomadata.managementType = this.toPageData.qualityInspectionManagement.serviceManagementType//贸易入库1 收购入库3
  644. this.barCode = ''
  645. let _url = ''
  646. if (type === 1) {
  647. _saomadata.type = 1
  648. localStorage.setItem('saoma_data',JSON.stringify(_saomadata))
  649. this.$router.push({
  650. name: 'inspectionManagementNew',query: { id:this.index++ }
  651. })
  652. } else if (type === 2) {
  653. _saomadata.type = 2
  654. localStorage.setItem('saoma_data',JSON.stringify(_saomadata))
  655. this.$router.push({
  656. name: 'inspectionManagementNew',query: { id:this.index++ }
  657. })
  658. } else if (type === 3) {
  659. _saomadata.type = 3
  660. localStorage.setItem('saoma_data',JSON.stringify(_saomadata))
  661. // this.$router.push({
  662. // name: 'inspectionManagementNew'
  663. // })
  664. this.$router.push({ name: 'inspectionManagementNew',query: { id:this.index++ }})
  665. } else if (type === 4) {
  666. _saomadata.typeNo = 1
  667. _saomadata.monitorUrl1 = this.toPageData.warehouseBaseInfo.monitorUrl1
  668. _saomadata.monitorUrl2 = this.toPageData.warehouseBaseInfo.monitorUrl2
  669. _saomadata.allowEdit = this.toPageData.warehouseBaseInfo.allowEdit
  670. _saomadata.number = this.toPageData.number
  671. //入库状态
  672. localStorage.setItem('saoma_data',JSON.stringify(_saomadata))
  673. this.$router.push({
  674. name: 'newWeighingManagement',query: { id:this.index++ }
  675. })
  676. } else if (type === 5) {
  677. localStorage.setItem('paymentManagementReturn', false)
  678. this.$router.push({
  679. name: 'settlement',
  680. query: {
  681. type: 1,
  682. id: this.toPageData.paymentManagement.id,
  683. },
  684. })
  685. } else if (type === 6) {
  686. _saomadata.typeNo = 2
  687. _saomadata.monitorUrl1 = this.toPageData.warehouseBaseInfo.monitorUrl1
  688. _saomadata.monitorUrl2 = this.toPageData.warehouseBaseInfo.monitorUrl2
  689. _saomadata.allowEdit = this.toPageData.warehouseBaseInfo.allowEdit
  690. _saomadata.number = this.toPageData.number
  691. localStorage.setItem('saoma_data',JSON.stringify(_saomadata))
  692. this.$router.push({
  693. name: 'newWeighingManagement'
  694. ,query: { id:this.index++ }
  695. })
  696. }
  697. this.smAlert = false
  698. },
  699. //获取当前用户管理的仓库
  700. getUserWorseHouse() {
  701. },
  702. handleScreen() {
  703. fullscreenToggel()
  704. },
  705. setCollapse() {
  706. this.$store.commit('SET_COLLAPSE')
  707. },
  708. setScreen() {
  709. this.$store.commit('SET_FULLSCREN')
  710. },
  711. cancelPaw() {
  712. this.$refs.passwordMsg.resetFields()
  713. },
  714. // 修改管理员密码
  715. savePassword(formName) {
  716. this.$refs[formName].validate((valid) => {
  717. if (valid) {
  718. const data = {
  719. originalPassword: this.passwordMsg.originalPassword,
  720. password: this.passwordMsg.password,
  721. }
  722. changePasswordByPwd(data)
  723. .toPromise()
  724. .then(async() => {
  725. EventBus.$emit('success', this.$t('message.updateMessage'))
  726. this.passwordFlag = false
  727. localStorage.removeItem('ws-pf_roleName')
  728. localStorage.removeItem('ws-pf_roleId')
  729. localStorage.removeItem('ws-pf_staffName')
  730. localStorage.removeItem('ws-pf_deptId')
  731. localStorage.removeItem('ws-pf_deptName')
  732. localStorage.removeItem('ws-pf_organMonetaryKey')
  733. localStorage.removeItem('ws-pf_organMonetaryValue')
  734. localStorage.removeItem('ws-pf_vessels')
  735. localStorage.removeItem('ws-pf_isLandBasedFlag')
  736. await this.$store.dispatch('user/logout')
  737. this.$router.push(
  738. process.env.VUE_APP_PACKAGE_ENV === 'ship' ? '/ship_login' : '/login'
  739. )
  740. })
  741. } else {
  742. EventBus.$emit('error', this.$t('showMessage.asteriskRequired'))
  743. return false
  744. }
  745. })
  746. },
  747. // async getUserInfo () {
  748. // this.staffName = this.userInfo.staffName
  749. // this.phone = this.userInfo.staffMobilePhone
  750. // this.deptName = this.userInfo.deptName
  751. // this.roleName = this.userInfo.showRoleName
  752. // this.roleId = this.userInfo.showRoleId
  753. // this.compName = this.userInfo.compName
  754. // },
  755. toggleSideBar() {
  756. this.$store.dispatch('app/toggleSideBar')
  757. },
  758. logout() {
  759. this.$confirm(this.$t('logoutTip'), this.$t('tip'), {
  760. confirmButtonText: this.$t('submitText'),
  761. cancelButtonText: this.$t('cancelText'),
  762. type: 'warning',
  763. }).then(async () => {
  764. localStorage.removeItem('ws-pf_roleName')
  765. localStorage.removeItem('ws-pf_roleId')
  766. localStorage.removeItem('ws-pf_staffName')
  767. localStorage.removeItem('ws-pf_deptId')
  768. localStorage.removeItem('ws-pf_deptName')
  769. localStorage.removeItem('ws-pf_organMonetaryKey')
  770. localStorage.removeItem('ws-pf_organMonetaryValue')
  771. localStorage.removeItem('ws-pf_vessels')
  772. localStorage.removeItem('ws-pf_isLandBasedFlag')
  773. await this.$store.dispatch('user/logout')
  774. this.$router.push(
  775. process.env.VUE_APP_PACKAGE_ENV === 'ship' ? '/ship_login' : '/login'
  776. )
  777. })
  778. },
  779. },
  780. }
  781. </script>
  782. <style lang="scss" scoped>
  783. .dayClass {
  784. font-size: 14px !important;
  785. span {
  786. font-weight: 600;
  787. font-size: 14px;
  788. color: #ff3838;
  789. }
  790. }
  791. .hamburger-container {
  792. line-height: 40px;
  793. height: 100%;
  794. float: left;
  795. cursor: pointer;
  796. transition: background 0.3s;
  797. -webkit-tap-highlight-color: transparent;
  798. &:hover {
  799. background: rgba(0, 0, 0, 0.025);
  800. }
  801. }
  802. .breadcrumb-container {
  803. float: left;
  804. position: relative;
  805. }
  806. .errLog-container {
  807. display: inline-block;
  808. vertical-align: top;
  809. }
  810. .right-menu {
  811. float: right;
  812. height: 100%;
  813. line-height: 40px;
  814. &:focus {
  815. outline: none;
  816. }
  817. .right-menu-item {
  818. display: inline-block;
  819. padding: 0 8px;
  820. height: 100%;
  821. font-size: 18px;
  822. color: #5a5e66;
  823. // vertical-align: text-bottom;
  824. &.hover-effect {
  825. cursor: pointer;
  826. transition: background 0.3s;
  827. &:hover {
  828. background: rgba(0, 0, 0, 0.025);
  829. }
  830. }
  831. }
  832. .avatar-container {
  833. margin-right: 30px;
  834. .avatar-wrapper {
  835. position: relative;
  836. span {
  837. height: 40px;
  838. line-height: 40px;
  839. font-size: 12px;
  840. }
  841. .user-avatar {
  842. cursor: pointer;
  843. width: 40px;
  844. height: 40px;
  845. border-radius: 10px;
  846. }
  847. .el-icon-caret-bottom {
  848. cursor: pointer;
  849. position: absolute;
  850. right: -20px;
  851. top: 15px;
  852. font-size: 12px;
  853. }
  854. }
  855. }
  856. }
  857. .hidden-content {
  858. display: flex;
  859. font-size: 16px;
  860. margin-right: 20px;
  861. align-items: center;
  862. }
  863. .input-Style {
  864. opacity: 1;
  865. margin-right: 20px;
  866. // visibility: hidden;
  867. }
  868. .btn {
  869. background: #5878e8;
  870. color: white;
  871. }
  872. .btn-list{
  873. display: flex;
  874. flex-direction: column;
  875. justify-content: center;
  876. align-items: center;
  877. }
  878. .btn_css ,.btn{
  879. width: 80%;
  880. margin: 20px;
  881. height: auto;
  882. padding: 20px!important;
  883. font-size: 40px;
  884. }
  885. .compName{
  886. font-size: 16px;
  887. }
  888. .compName-row{
  889. // background: red;
  890. display: flex;
  891. height: 100%;
  892. }
  893. .code-scan-text{
  894. height: 30px;
  895. line-height: 30px;
  896. background: #EFF7FD;
  897. border-radius: 20px;
  898. color:#5473E8 ;
  899. border: 1px solid #5473E8;
  900. padding: 0 15px;
  901. }
  902. </style>