18513069273 4 éve
szülő
commit
8041b051c7
2 módosított fájl, 372 hozzáadás és 150 törlés
  1. 209 150
      src/layout/index/top/index.vue
  2. 163 0
      src/views/contractManagement/salesContract.vue

+ 209 - 150
src/layout/index/top/index.vue

@@ -1,12 +1,12 @@
 <template>
-  <div class="winseaview-top"
-       id="winseaview-top">
+  <div class="winseaview-top" id="winseaview-top">
     <div class="top-bar__left">
       <!-- 伸缩icon -->
-      <div class="winseaview-breadcrumb"
-           :class="[{ 'winseaview-breadcrumb--active': isCollapse }]">
-        <i class="iconfont iconasideShowy"
-           @click="setCollapse"></i>
+      <div
+        class="winseaview-breadcrumb"
+        :class="[{ 'winseaview-breadcrumb--active': isCollapse }]"
+      >
+        <i class="iconfont iconasideShowy" @click="setCollapse"></i>
       </div>
       <!-- </div>
     <div class="top-bar__title"> -->
@@ -16,113 +16,130 @@
         <bread-crumb v-if="!showMenu" />
         <smallTips v-if="showTooltip" />
       </div>
-      <span class="top-bar__item"
-            v-if="showSearch">
+      <span class="top-bar__item" v-if="showSearch">
         <top-search></top-search>
       </span>
     </div>
     <div class="top-bar__right">
       <!-- 使用租户 -->
-      <div v-if="getDay"
-           class="right-menu-item hover-effect dayClass">{{$t('common.trialDays')}}
-        <span style="padding:0 2px">{{getDay}}</span>{{$t('common.days')}}
+      <div v-if="getDay" class="right-menu-item hover-effect dayClass">
+        {{ $t('common.trialDays') }}
+        <span style="padding: 0 2px">{{ getDay }}</span
+        >{{ $t('common.days') }}
       </div>
-      <el-tooltip v-if="showColor"
-                  effect="dark"
-                  :content="$t('navbar.color')"
-                  placement="bottom">
+      <el-tooltip
+        v-if="showColor"
+        effect="dark"
+        :content="$t('navbar.color')"
+        placement="bottom"
+      >
         <div class="top-bar__item">
           <top-color></top-color>
         </div>
       </el-tooltip>
 
-      <el-tooltip v-if="showTheme"
-                  effect="dark"
-                  :hide-after='1500'
-                  :content="$t('navbar.theme')"
-                  placement="bottom">
+      <el-tooltip
+        v-if="showTheme"
+        effect="dark"
+        :hide-after="1500"
+        :content="$t('navbar.theme')"
+        placement="bottom"
+      >
         <div class="top-bar__item top-bar__item--show">
           <top-theme></top-theme>
         </div>
       </el-tooltip>
 
-      <el-tooltip effect="dark"
+      <!-- <el-tooltip effect="dark"
                   :content="$t('navbar.language')"
                   placement="bottom">
         <div class="top-bar__item top-bar__item--show">
           <top-lang></top-lang>
         </div>
-      </el-tooltip>
-      <el-tooltip v-if="showFullScren"
-                  effect="dark"
-                  :content="isFullScren?$t('navbar.screenfull'):$t('navbar.screenfullF')"
-                  placement="bottom">
+      </el-tooltip> -->
+      <el-tooltip
+        v-if="showFullScren"
+        effect="dark"
+        :content="
+          isFullScren ? $t('navbar.screenfull') : $t('navbar.screenfullF')
+        "
+        placement="bottom"
+      >
         <div class="top-bar__item">
-          <i :class="isFullScren?'el-icon-full-screen':'el-icon-full-screen'"
-             @click="handleScreen"></i>
+          <i
+            :class="isFullScren ? 'el-icon-full-screen' : 'el-icon-full-screen'"
+            @click="handleScreen"
+          ></i>
         </div>
       </el-tooltip>
 
-      <img class="top-bar__img"
-           v-lazy="userInfo.avatar" />
+      <img class="top-bar__img" v-lazy="userInfo.avatar" />
       <el-dropdown>
         <span class="el-dropdown-link">
           <span>{{ userInfo.showRoleName }} : {{ userInfo.staffName }}</span>
           <i class="el-icon-arrow-down el-icon--right"></i>
         </span>
         <el-dropdown-menu slot="dropdown">
-          <el-dropdown-item icon="el-icon-s-custom"
-                            @click.native="personalFlag = true">
-            {{$t('navbar.personalInformation')}}
+          <el-dropdown-item
+            icon="el-icon-s-custom"
+            @click.native="personalFlag = true"
+          >
+            {{ $t('navbar.personalInformation') }}
           </el-dropdown-item>
-          <el-dropdown-item icon="el-icon-s-promotion"
-                            @click.native="passwordFlag = true">
-            {{$t('navbar.uploadPsw')}}
+          <el-dropdown-item
+            icon="el-icon-s-promotion"
+            @click.native="passwordFlag = true"
+          >
+            {{ $t('navbar.uploadPsw') }}
           </el-dropdown-item>
           <!-- <el-dropdown-item>
             <router-link to="/info/index">{{$t('navbar.userinfo')}}</router-link>
           </el-dropdown-item> -->
-          <el-dropdown-item v-if="showSetting"
-                            icon="el-icon-s-tools"
-                            @click.native="settingDrawer=true">{{$t('navbar.layoutSetting')}}</el-dropdown-item>
-          <el-dropdown-item @click.native="logout"
-                            divided>{{$t('navbar.logOut')}}</el-dropdown-item>
+          <el-dropdown-item
+            v-if="showSetting"
+            icon="el-icon-s-tools"
+            @click.native="settingDrawer = true"
+            >{{ $t('navbar.layoutSetting') }}</el-dropdown-item
+          >
+          <el-dropdown-item @click.native="logout" divided>{{
+            $t('navbar.logOut')
+          }}</el-dropdown-item>
         </el-dropdown-menu>
       </el-dropdown>
     </div>
 
-    <topSetting v-model="settingDrawer"
-                @close="()=>settingDrawer=!settingDrawer" />
+    <topSetting
+      v-model="settingDrawer"
+      @close="() => (settingDrawer = !settingDrawer)"
+    />
 
     <!--个人信息-->
-    <WinseaContentModal v-model='personalFlag'
-                        :title="$t('navbar.personalInformation')">
-      <el-form ref="personalMsg"
-               :model="passwordMsg"
-               label-position="right"
-               label-width="150px">
-        <el-form-item :label="$t('login.name')"
-                      prop="originalPassword">
-          {{userInfo.staffName}}
+    <WinseaContentModal
+      v-model="personalFlag"
+      :title="$t('navbar.personalInformation')"
+    >
+      <el-form
+        ref="personalMsg"
+        :model="passwordMsg"
+        label-position="right"
+        label-width="150px"
+      >
+        <el-form-item :label="$t('login.name')" prop="originalPassword">
+          {{ userInfo.staffName }}
         </el-form-item>
-        <el-form-item :label="$t('login.account')"
-                      prop="newPassword">
-          {{account}}
+        <el-form-item :label="$t('login.account')" prop="newPassword">
+          {{ account }}
         </el-form-item>
-        <el-form-item :label="$t('login.phone')"
-                      prop="newPassword">
-          {{userInfo.staffMobilePhone}}
+        <el-form-item :label="$t('login.phone')" prop="newPassword">
+          {{ userInfo.staffMobilePhone }}
         </el-form-item>
-        <el-form-item :label="$t('login.role')"
-                      prop="newPassword">
-          {{userInfo.showRoleName}}
+        <el-form-item :label="$t('login.role')" prop="newPassword">
+          {{ userInfo.showRoleName }}
         </el-form-item>
-        <el-form-item :label="$t('login.dept')"
-                      prop="newPassword">
-          {{userInfo.deptName}}
+        <el-form-item :label="$t('login.dept')" prop="newPassword">
+          {{ userInfo.deptName }}
         </el-form-item>
-        <el-form-item :label="$t('login.company')"
-                      prop="newPassword">
+        <el-form-item :label="$t('login.company')" prop="newPassword">
           <div class="company-info">
             {{ userInfo.compName }}
           </div>
@@ -130,41 +147,52 @@
       </el-form>
     </WinseaContentModal>
     <!--修改密码-->
-    <WinseaContentModal v-model='passwordFlag'
-                        :title="$t('navbar.uploadPsw')">
-      <el-form ref="passwordMsg"
-               :model="passwordMsg"
-               :label-width="language == 'en'?'156px':'100px'"
-               :rules="passwordMsgRules">
-        <el-form-item :label="$t('login.originalPassword') + $t('common.colon')"
-                      prop="originalPassword">
-          <ws-input type="password"
-                    :placeholder="$t('login.message04')"
-                    v-model="passwordMsg.originalPassword"
-                    style="width: 318px;" />
+    <WinseaContentModal v-model="passwordFlag" :title="$t('navbar.uploadPsw')">
+      <el-form
+        ref="passwordMsg"
+        :model="passwordMsg"
+        :label-width="language == 'en' ? '156px' : '100px'"
+        :rules="passwordMsgRules"
+      >
+        <el-form-item
+          :label="$t('login.originalPassword') + $t('common.colon')"
+          prop="originalPassword"
+        >
+          <ws-input
+            type="password"
+            :placeholder="$t('login.message04')"
+            v-model="passwordMsg.originalPassword"
+            style="width: 318px"
+          />
         </el-form-item>
-        <el-form-item :label="$t('login.newPassword') + $t('common.colon')"
-                      prop="newPassword">
-          <ws-input type="password"
-                    v-model="passwordMsg.newPassword"
-                    :placeholder="$t('login.verification01')"
-                    style="width: 318px;" />
+        <el-form-item
+          :label="$t('login.newPassword') + $t('common.colon')"
+          prop="newPassword"
+        >
+          <ws-input
+            type="password"
+            v-model="passwordMsg.newPassword"
+            :placeholder="$t('login.verification01')"
+            style="width: 318px"
+          />
         </el-form-item>
-        <el-form-item :label="$t('login.confirmPassword') + $t('common.colon')"
-                      prop="password">
-          <ws-input type="password"
-                    v-model="passwordMsg.password"
-                    :placeholder="$t('login.verification01')"
-                    style="width: 318px;" />
+        <el-form-item
+          :label="$t('login.confirmPassword') + $t('common.colon')"
+          prop="password"
+        >
+          <ws-input
+            type="password"
+            v-model="passwordMsg.password"
+            :placeholder="$t('login.verification01')"
+            style="width: 318px"
+          />
         </el-form-item>
       </el-form>
-      <span slot="footer"
-            class="dialog-footer">
+      <span slot="footer" class="dialog-footer">
         <ws-button @click="passwordFlag = false">{{
           $t('showMessage.cancel')
         }}</ws-button>
-        <ws-button type="primary"
-                   @click="savePassword('passwordMsg')">{{
+        <ws-button type="primary" @click="savePassword('passwordMsg')">{{
           $t('showMessage.confirm')
         }}</ws-button>
       </span>
@@ -173,16 +201,16 @@
 </template>
 <script>
 import { changePasswordByPwd } from '@/model/indexRx'
-import { mapActions, mapGetters, mapState } from 'vuex';
-import { fullscreenToggel, listenfullscreen } from '@/utils/util';
-import topMenu from './top-menu';
-import topSearch from './top-search';
-import topTheme from './top-theme';
-import topColor from './top-color';
-import topNotice from './top-notice';
-import topLang from './top-lang';
-import topSetting from './top-setting';
-import breadCrumb from '@/components/Breadcrumb';
+import { mapActions, mapGetters, mapState } from 'vuex'
+import { fullscreenToggel, listenfullscreen } from '@/utils/util'
+import topMenu from './top-menu'
+import topSearch from './top-search'
+import topTheme from './top-theme'
+import topColor from './top-color'
+import topNotice from './top-notice'
+import topLang from './top-lang'
+import topSetting from './top-setting'
+import breadCrumb from '@/components/Breadcrumb'
 import { EventBus } from 'base-core-lib'
 import { validPassword } from '@/utils/validate'
 import smallTips from '@/components/WinseaCom/smallTips'
@@ -213,10 +241,10 @@ export default {
     topLang,
     topSetting,
     breadCrumb,
-    smallTips
+    smallTips,
   },
   name: 'top',
-  data () {
+  data() {
     return {
       showList: [
         'maintenancePlanList',
@@ -230,7 +258,7 @@ export default {
         'maApplicationAdd',
         'maApplicationEdit',
         'maApplicationLabel',
-        'monthContrastList'
+        'monthContrastList',
       ],
       settingDrawer: false,
       personalFlag: false,
@@ -241,21 +269,21 @@ export default {
           {
             required: true,
             trigger: 'blur',
-            validator: validPasswordRule.bind(this)
-          }
+            validator: validPasswordRule.bind(this),
+          },
         ],
         password: [
           {
             required: true,
             trigger: 'blur',
-            validator: validPasswordRule2.bind(this)
-          }
-        ]
+            validator: validPasswordRule2.bind(this),
+          },
+        ],
       },
       passwordMsg: {
         originalPassword: '', // 原始密码
         newPassword: '', // 新密码
-        password: '' // 二次输入密码
+        password: '', // 二次输入密码
       },
       // roleName: '',
       // phone: '',
@@ -265,27 +293,27 @@ export default {
       // staffName: '',
       account: sessionStorage.getItem('ws-pf_account'),
       // compName: '',
-      companyId: sessionStorage.getItem('ws-pf_compId')
-    };
+      companyId: sessionStorage.getItem('ws-pf_compId'),
+    }
   },
   filters: {},
-  created () {
+  created() {
     // this.getUserInfo()
   },
-  mounted () {
-    listenfullscreen(this.setScreen);
+  mounted() {
+    listenfullscreen(this.setScreen)
   },
   computed: {
     ...mapState({
-      showDebug: state => state.commonStore.showDebug,
-      showTheme: state => state.commonStore.showTheme,
-      showLock: state => state.commonStore.showLock,
-      showFullScren: state => state.commonStore.showFullScren,
-      showCollapse: state => state.commonStore.showCollapse,
-      showSearch: state => state.commonStore.showSearch,
-      showSetting: state => state.commonStore.showSetting,
-      showMenu: state => state.commonStore.showMenu,
-      showColor: state => state.commonStore.showColor
+      showDebug: (state) => state.commonStore.showDebug,
+      showTheme: (state) => state.commonStore.showTheme,
+      showLock: (state) => state.commonStore.showLock,
+      showFullScren: (state) => state.commonStore.showFullScren,
+      showCollapse: (state) => state.commonStore.showCollapse,
+      showSearch: (state) => state.commonStore.showSearch,
+      showSetting: (state) => state.commonStore.showSetting,
+      showMenu: (state) => state.commonStore.showMenu,
+      showColor: (state) => state.commonStore.showColor,
     }),
     ...mapGetters([
       'userInfo',
@@ -296,39 +324,41 @@ export default {
       'tag',
       'logsLen',
       'logsFlag',
-      'language'
+      'language',
     ]),
-    getDay () {
-      const { statusFlag = -1, daysRemaining } = JSON.parse(sessionStorage.getItem('ws_login_getTenantInfoByUser')) || {}
+    getDay() {
+      const { statusFlag = -1, daysRemaining } =
+        JSON.parse(sessionStorage.getItem('ws_login_getTenantInfoByUser')) || {}
       return statusFlag * 1 === 2 ? daysRemaining + '' : ''
     },
-    showTooltip () {
+    showTooltip() {
       return this.showList.indexOf(this.$route.name) > -1 && !this.showMenu
-    }
+    },
   },
   methods: {
     ...mapActions('common', ['setLocalVessels']),
-    handleScreen () {
-      fullscreenToggel();
+    handleScreen() {
+      fullscreenToggel()
     },
-    setCollapse () {
-      this.$store.commit('SET_COLLAPSE');
+    setCollapse() {
+      this.$store.commit('SET_COLLAPSE')
     },
-    setScreen () {
-      this.$store.commit('SET_FULLSCREN');
+    setScreen() {
+      this.$store.commit('SET_FULLSCREN')
     },
-    cancelPaw () {
+    cancelPaw() {
       this.$refs.passwordMsg.resetFields()
     },
     // 修改管理员密码
-    savePassword (formName) {
-      this.$refs[formName].validate(valid => {
+    savePassword(formName) {
+      this.$refs[formName].validate((valid) => {
         if (valid) {
           const data = {
             originalPassword: this.passwordMsg.originalPassword,
-            password: this.passwordMsg.password
+            password: this.passwordMsg.password,
           }
-          changePasswordByPwd(data).toPromise()
+          changePasswordByPwd(data)
+            .toPromise()
             .then(() => {
               EventBus.$emit('success', this.$t('message.updateMessage'))
               this.passwordFlag = false
@@ -347,14 +377,14 @@ export default {
     //   this.roleId = this.userInfo.showRoleId
     //   this.compName = this.userInfo.compName
     // },
-    toggleSideBar () {
+    toggleSideBar() {
       this.$store.dispatch('app/toggleSideBar')
     },
-    logout () {
+    logout() {
       this.$confirm(this.$t('logoutTip'), this.$t('tip'), {
         confirmButtonText: this.$t('submitText'),
         cancelButtonText: this.$t('cancelText'),
-        type: 'warning'
+        type: 'warning',
       }).then(async () => {
         sessionStorage.removeItem('ws-pf_roleName')
         sessionStorage.removeItem('ws-pf_roleId')
@@ -369,13 +399,42 @@ export default {
         this.$router.push(
           process.env.VUE_APP_PACKAGE_ENV === 'ship' ? '/ship_login' : '/login'
         )
-      });
-    }
-  }
-};
+      })
+    },
+  },
+}
 </script>
 
 <style lang="scss" scoped>
+.taskType {
+  width: 100%;
+  background-color: #fff;
+  margin-top: 2px;
+  margin-bottom: 10px;
+  // padding-bottom: 20px;
+  li {
+    float: left;
+    border: 1px solid #6ea0f3;
+    border-radius: 5px;
+    max-width: 190px;
+    padding: 0 5px;
+    text-align: center;
+    margin-top: 20px;
+    margin-left: 20px;
+    cursor: pointer;
+    font-size: 14px;
+    p {
+      margin: 8px 0px;
+      span {
+        color: #e74c3c;
+      }
+    }
+  }
+  li:hover {
+    background-color: #e4eeff;
+    color: #1d6ced;
+  }
+}
 .dayClass {
   font-size: 14px !important;
   span {

+ 163 - 0
src/views/contractManagement/salesContract.vue

@@ -2,6 +2,88 @@
 <!--2019年5月30日 20:25:16 by jlx-->
 <template>
   <div>
+    <BaseHeaderLayout :leftSpan="18">
+      <template slot="left">
+        <ws-date-picker
+          :picker-options="pickerBeginDateBefore"
+          v-model="deptBudgetList.birthday"
+          type="date"
+          default-value="1980-01-01"
+          placeholder="起始日期"
+          format="yyyy-MM-dd"
+          value-format="yyyy-MM-dd"
+        />
+        <span>至</span>
+        <ws-date-picker
+          :picker-options="pickerBeginDateBefore"
+          v-model="deptBudgetList.birthday"
+          type="date"
+          default-value="1980-01-01"
+          placeholder="截止日期"
+          format="yyyy-MM-dd"
+          value-format="yyyy-MM-dd"
+        />
+        <ws-input
+          v-model="deptBudgetList.interviewOpinion"
+          placeholder="可按照合同编号、买方名称、卖方名称进行查找"
+          clearable
+          maxlength="500"
+          type="input"
+          class="findValue"
+        ></ws-input>
+        <!-- v-hasPermission="'procurement.sparepart.directShip'" -->
+        <ws-button
+          type="primary"
+          :disable="checkBtn"
+          @click="enquiry(3)"
+          v-hasPermission="
+            `${$permission('PERMISSIONS.PURSPAPPLINFO_CREATEINSTORE')}`
+          "
+          >查找</ws-button
+        >
+      </template>
+      <template slot="right">
+        <ws-button
+          :disable="checkBtn"
+          @click="enquiry(3)"
+          v-hasPermission="
+            `${$permission('PERMISSIONS.PURSPAPPLINFO_CREATEINSTORE')}`
+          "
+          >导出</ws-button
+        >
+      </template>
+    </BaseHeaderLayout>
+    <div>
+      <el-row>
+        <el-col :span="12">
+          <ul class="taskType clearfix" ref="taskTypeShow">
+            <li
+              v-for="(item, index) in taskTypeList"
+              :key="index"
+              @click="clickSearch(item, index)"
+              :class="{ active: categoryIndex == index }"
+            >
+              <p>
+                <!-- 类型名称 -->
+                {{ item.value }}
+              </p>
+            </li>
+            <div class="clear-both"></div>
+          </ul>
+        </el-col>
+        <el-col :span="12" class="padding-xs">
+          <ws-button
+            type="primary"
+            :disable="checkBtn"
+            @click="enquiry(3)"
+            v-hasPermission="
+              `${$permission('PERMISSIONS.PURSPAPPLINFO_CREATEINSTORE')}`
+            "
+            >添加</ws-button
+          >
+        </el-col>
+      </el-row>
+    </div>
     <el-table :data="tableData" style="width: 100%">
       <el-table-column type="index" />
       <el-table-column prop="date" label="合同编号" width="80">
@@ -75,7 +157,35 @@ export default {
       year: '',
       // 提交类型
       submitType: true,
+      contractForm: {},
+      categoryIndex: 0,
+      rulesVendor: {},
       tableData: [{ date: 1111, name: 'qqqq', address: 'errrtt' }],
+      taskTypeList: [
+        { value: '未完成(默认)' },
+        { value: '已完成' },
+        { value: '待回款' },
+        { value: '全部合同' },
+      ],
+      deptBudgetList: {
+        compId: sessionStorage.getItem('ws-pf_compId'),
+        seafarerName: '',
+        crtDutyId: '',
+        crtDutyName: '',
+        seafarerSexKey: '',
+        mobilePhone: '',
+        birthday: '',
+        dutyId: '',
+        dutyName: '',
+        intendedShipId: '',
+        intendedShipName: '',
+        interviewPersons: '',
+        interviewDates: '',
+        interviewType: '',
+        interviewResult: '1',
+        interviewOpinion: '',
+        aliasName: '',
+      },
     }
   },
   created() {
@@ -92,11 +202,64 @@ export default {
     handleExamine() {
       this.$router.push({ path: 'salesContractExamine' })
     },
+    filtlistQuery() {},
+    searchDialog() {},
+    vesselIdSelected() {},
+    seelctShips() {},
+    checkBtn() {},
     approve() {},
+    listQuery() {},
+    total() {},
+    clearfiltQuery() {},
   },
 }
 </script>
 <style lang="scss" scoped>
+.padding-xs {
+  padding: 15px;
+  text-align: right;
+}
+.clearfix:after {
+  content: '';
+  display: block;
+  clear: both;
+}
+.taskType {
+  width: 100%;
+  background-color: #fff;
+  margin-top: 2px;
+  margin-bottom: 10px;
+  list-style: none;
+  // padding-bottom: 20px;
+  li {
+    float: left;
+    border: 1px solid #6ea0f3;
+    border-radius: 5px;
+    max-width: 190px;
+    padding: 0 5px;
+    text-align: center;
+    margin: 10px 20px;
+    cursor: pointer;
+    font-size: 14px;
+
+    p {
+      margin: 8px 0px;
+      span {
+        color: #e74c3c;
+      }
+    }
+  }
+  li:hover {
+    background-color: #e4eeff;
+    color: #1d6ced;
+  }
+}
+.el-date-editor--date {
+  margin: 0 10px;
+}
+.findValue {
+  margin: 0 10px;
+}
 .button-container {
   display: flex;
   flex-wrap: nowrap;